
/*****************************************************************************/

  This README is an attempt to keep the house clean under the 'js' directory.

/*****************************************************************************/

Directory contents
-------------------
+ js/

  - admin.js :
    Code for tasks performed in the administration area.

    Also sorts select elements (both normal and multiple) where language names are
    involved. This is done in JavaScript because currently it's not possible
    to sort them within Django.
    To sort a new select element, add the end of the element id to the 'ids'
    array.

  - captcha.js :
    Code for interacting with the site-wide captcha.

  - common.js :
    Common code that is included in every page.

  - contact.js :
    Contact form code.

  - dropdown.js :
    Generic drop-down functionality.

  - editor.js :
    Code that sets up the editor and handles all the actions involved there.
    This includes unit navigation, submission, suggestions' handling, copying
    functions, fuzzy/unfuzzy, and several other helper stuff.

  - msg.js :
    Generic alert messages.

  - stats.js :
    Statistics/overview browser page code.

  - search.js :
    Search functionality, shared across pages.

  - user.js :
    User profile editing.

  - utils.js :
    Common utilities.

  + mt/

    - apertium.js :
      Script to load translation suggestions using the Apertium service.

    - google-translate.js :
      Script to load translation suggestions using the Google Translate service.

    - yandex-translate.js :
      Script to load translation suggestions using the Yandex.Translate service

  + vendor/

    - diff_match_patch.js :
      Google's Diff, Match, and Patch libraries for plain text.
      It's used for suggestion's diff highlighting.

      Version 20120106.

      https://code.google.com/p/google-diff-match-patch/

    - iso8601.js :
      Date.parse with progressive enhancement for ISO 8601.

      https://github.com/csnover/js-iso8601

    - levenshtein.js :
      Library to calculate Levenshtein edit distance/similarity ratio.

      https://github.com/julen/levenshtein.js

    - odometer.js :
      Smooth transitions between numbers.

      Using version 0.4.6, with customizations from
      julen/odometer@added-event.

      https://github.com/HubSpot/odometer

    - shortcut.js :
      Small library to ease adding keyboard shortcuts.

      http://www.openjs.com/scripts/events/keyboard_shortcuts/

    - sorttable.js :
      Sorts tables according to its values. Used in the homepage as well as on the
      languages and projects listings. It has some customisations to support
      zebra stripes once the sort is done (using jQuery). The icons used on the
      table headings are custom code too.

      http://www.kryogenix.org/code/browser/sorttable/

    - spin.js :
      A spinning activity indicator.

      Version 1.3.2

      http://fgnass.github.io/spin.js/

    - underscore.js :
      Utility library providing functional programming support.

      Version 1.6

      http://underscorejs.org/

    + backbone/

      - backbone.js :
        Library for providing structure to web applications.

        Version 1.1.2

        http://backbonejs.org

      - backbone.move.js :
        Small extension script to allow moving the position of a model
        within a collection.

      - backbone-relational.js :
        Relationships for Backbone models.

        Version 0.8.8

        http://backbonerelational.org

      - backbone.queryparameters.js :
        Proper support for routing using query parameters.

        Using 12e9f46c from git along with the shim required for Backbone
        1.1.

        https://github.com/jhudson8/backbone-query-parameters

      - backbone.safesync.js :
        Prevents duplicated fetches in models and collections.

        https://github.com/amccloud/backbone-safesync

    + jquery/

      - jquery.js :
        The jQuery library, version 2.0.3.

        https://github.com/jquery/jquery

      - jquery.bidi.js :
        jQuery plugin used to automatically set line direction of news
        item based on their content.

        http://plugins.jquery.com/project/bidi

      - jquery.caret.js :
        jQuery plugin to write text on top of the selected text or just after
        the caret position.

        Using patched version to remove `$.browser` calls.

        http://www.jquery-plugin.buss.hk/my-plugins/jquery-caret-plugin

      - jquery.easing.js :
        jQuery plugin that provides dfferent easing (animation) formulas.

        http://gsgd.co.uk/sandbox/jquery/easing/

      - jquery.flot.js :
        Plotting library for jQuery.

        https://github.com/flot/flot/blob/master/jquery.flot.js

      - jquery.flot.marks.js :
        Flot plugin for rendering x-axis marks on plot canvas.

        https://code.google.com/p/flot-marks/

      - jquery.flot.stack.js :
        Flot plugin for stacking data sets rather than overlyaing them.

        https://github.com/flot/flot/blob/master/jquery.flot.stack.js

      - jquery.flot.time.js :
        Flot plugin for pretty handling of time axes.

        https://github.com/flot/flot/blob/master/jquery.flot.time.js

      - jquery.highlighRegex.js :
        Plugin to highlight text on selected elements using regular expressions.

        https://github.com/jbr/jQuery.highlightRegex

      - jquery.history.js :
        Plugin to handle AJAX history using hashes.

        Using patched version to remove `$.browser` calls.

        http://github.com/tkyk/jquery-history-plugin/

      - jquery.jsonp.js :
        Alternative solution to jQuery's JSONP support.

        jQuery's JSONP support has some limitations (the abort method doesn't
        really abort), and this plugin tries to address those issues.

        These features may be implemented in jQuery core at some stage.

        Using version 2.4.0.

        https://github.com/jaubourg/jquery-jsonp

      - jquery.magnific-popup.js :
        Lightbox overlay popups to display all sorts of content: images,
        HTML, AJAX data, ...

        Using v0.9.9 built with their 'Build Tool' with the following features:
        Inline, Image, Ajax, Iframe, Gallery, High-DPI.

        http://dimsemenov.com/plugins/magnific-popup/

      - jquery.select2.js :
        jQuery-based replacement for select boxes.

        Using version f235a84aa8 (prior to 3.4) from the master branch.

        https://github.com/ivaynberg/select2/

      - jquery.serializeObject.js :
        A method for serializing forms directly into objects.

        Whereas jQuery’s built-in .serializeArray() method serializes a form
        into an array, .serializeObject() serializes a form into an
        (arguably more useful) object.

        http://benalman.com/projects/jquery-misc-plugins/#serializeobject

      - jquery.tipsy.js :
        Facebook-style tooltips for jQuery.

        Using revision 718b348872 from branch bugfix/remnant-tips @ julen/tipsy fork.

        https://github.com/julen/tipsy

      - jquery.utils.js :
        Custom utilities that extend jQuery's capabilities.
