[smc-discuss] [Git][smc/hyphenation][master] Removing the Hyphenator.js based patterns

Santhosh Thottingal gitlab at mg.gitlab.com
Sat Jan 16 01:34:44 PST 2016


Santhosh Thottingal pushed to branch master at SMC / Hyphenation


Commits:
d38c035e by Santhosh Thottingal at 2016-01-16T15:03:44+05:30
Removing the Hyphenator.js based patterns

Since they are already present at https://github.com/mnater/hyphenator
no need to duplicate it in this repo.

- - - - -


12 changed files:

- − web/COPYING.LESSER.txt
- − web/Hyphenator.js
- − web/example.html
- − web/patterns/bn.js
- − web/patterns/gu.js
- − web/patterns/hi.js
- − web/patterns/kn.js
- − web/patterns/ml.js
- − web/patterns/or.js
- − web/patterns/pa.js
- − web/patterns/ta.js
- − web/patterns/te.js


Changes:

=====================================
web/COPYING.LESSER.txt deleted
=====================================
--- a/web/COPYING.LESSER.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.


=====================================
web/Hyphenator.js deleted
=====================================
--- a/web/Hyphenator.js
+++ /dev/null
@@ -1,1605 +0,0 @@
-/*!
- *  Hyphenator 2.3.0 - client side hyphenation for webbrowsers
- *  Copyright (C) 2009  Mathias Nater, Zürich (mathias at mnn dot ch)
- *  Project and Source hosted on http://code.google.com/p/hyphenator/
- * 
- *  This JavaScript code is free software: you can redistribute
- *  it and/or modify it under the terms of the GNU Lesser
- *  General Public License (GNU LGPL) as published by the Free Software
- *  Foundation, either version 3 of the License, or (at your option)
- *  any later version.  The code is distributed WITHOUT ANY WARRANTY;
- *  without even the implied warranty of MERCHANTABILITY or FITNESS
- *  FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
- *
- *  As additional permission under GNU GPL version 3 section 7, you
- *  may distribute non-source (e.g., minimized or compacted) forms of
- *  that code without the copy of the GNU GPL normally required by
- *  section 4, provided you include this license notice and a URL
- *  through which recipients can access the Corresponding Source.
- */
- 
-/* 
- *  Comments are jsdoctoolkit formatted. See jsdoctoolkit.org
- */
- 
-/* The following comment is for JSLint: */
-/*global window, ActiveXObject, unescape */
-/*jslint browser: true, eqeqeq: true, immed: true, newcap: true, nomen: true, onevar: true, undef: true, white: true, indent: 4*/
-
-/**
- * @fileOverview
- * A script that does hyphenation in (X)HTML files
- * @author Mathias Nater, <a href = "mailto:mathias at mnn.ch">mathias at mnn.ch</a>
- * @version 2.3.0
-  */
-
-/**
- * @constructor
- * @description Provides all functionality to do hyphenation, except the patterns that are loaded
- * externally.
- * @namespace Holds all methods and properties
- * @example
- * <script src = "Hyphenator.js" type = "text/javascript"></script>
- * <script type = "text/javascript">
- *   Hyphenator.run();
- * </script>
- */
-var Hyphenator = (function () {
-
-
-	/**
-	 * @name Hyphenator-languageHint
-	 * @fieldOf Hyphenator
-	 * @description
-	 * A string to be displayed in a prompt if the language can't be guessed.
-	 * If you add hyphenation patterns change this string.
-	 * Internally, this string is used to define languages that are supported by Hyphenator.
-	 * @see Hyphenator-supportedLang
-	 * @type string
-	 * @private
-	 * @see Hyphenator-autoSetMainLanguage
-	 */
-	var languageHint = 'cs, da, bn, de, en, es, fi, fr, gu, hi, hu, it, kn, ml, nl, or, pa, pl, pt, ru, sv, ta, te, uk',
-
-	/**
-	 * @name Hyphenator-supportedLang
-	 * @fieldOf Hyphenator
-	 * @description
-	 * A generated key-value object that stores supported languages.
-	 * The languages are retrieved from {@link Hyphenator-languageHint}.
-	 * @type object
-	 * @private
-	 * @example
-	 * Check if language lang is supported:
-	 * if (supportedLang[lang])
-	 */
-	supportedLang = (function () {
-		var k, i = 0, a = languageHint.split(', '), r = {};
-		while (!!(k = a[i++])) {
-			r[k] = true;
-		}
-		return r;
-	}()),
-
-	/**
-	 * @name Hyphenator-prompterStrings
-	 * @fieldOf Hyphenator
-	 * @description
-	 * A key-value object holding the strings to be displayed if the language can't be guessed
-	 * If you add hyphenation patterns change this string.
-	 * @type object
-	 * @private
-	 * @see Hyphenator-autoSetMainLanguage
-	 */	
-	prompterStrings = {
-		'cs': 'Jazyk této internetové stránky nebyl automaticky rozpoznán. Určete prosím její jazyk:',
-		'da': 'Denne websides sprog kunne ikke bestemmes. Angiv venligst sprog:',
-		'de': 'Die Sprache dieser Webseite konnte nicht automatisch bestimmt werden. Bitte Sprache angeben:',
-		'en': 'The language of this website could not be determined automatically. Please indicate the main language:',
-		'es': 'El idioma del sitio no pudo determinarse autom%E1ticamente. Por favor, indique el idioma principal:',
-		'fi': 'Sivun kielt%E4 ei tunnistettu automaattisesti. M%E4%E4rit%E4 sivun p%E4%E4kieli:',
-		'fr': 'La langue de ce site n%u2019a pas pu %EAtre d%E9termin%E9e automatiquement. Veuillez indiquer une langue, s.v.p.%A0:',
-		'hu': 'A weboldal nyelvét nem sikerült automatikusan megállapítani. Kérem adja meg a nyelvet:',
-		'it': 'Lingua del sito sconosciuta. Indicare una lingua, per favore:',
-		'ml': 'ഈ വെ%u0D2C%u0D4D%u200Cസൈറ്റിന്റെ ഭാഷ കണ്ടുപിടിയ്ക്കാ%u0D28%u0D4D%u200D കഴിഞ്ഞില്ല. ഭാഷ ഏതാണെന്നു തിരഞ്ഞെടുക്കുക:',
-		'nl': 'De taal van deze website kan niet automatisch worden bepaald. Geef de hoofdtaal op:',
-		'pt': 'A língua deste site não pôde ser determinada automaticamente. Por favor indique a língua principal:',
-		'ru': 'Язык этого сайта не может быть определен автоматически. Пожалуйста укажите язык:',
-		'sv': 'Spr%E5ket p%E5 den h%E4r webbplatsen kunde inte avg%F6ras automatiskt. V%E4nligen ange:',
-		'uk': 'Мова цього веб-сайту не може бути визначена автоматично. Будь ласка, вкажіть головну мову:'
-	},
-	
-	/**
-	 * @name Hyphenator-basePath
-	 * @fieldOf Hyphenator
-	 * @description
- 	 * A string storing the basepath from where Hyphenator.js was loaded.
-	 * This is used to load the patternfiles.
-	 * The basepath is determined dynamically by searching all script-tags for Hyphenator.js
-	 * If the path cannot be determined http://hyphenator.googlecode.com/svn/trunk/ is used as fallback.
-	 * @type string
-	 * @private
-	 * @see Hyphenator-loadPatterns
-	 */
-	basePath = (function () {
-		var s = document.getElementsByTagName('script'), i = 0, p, src, t;
-		while (!!(t = s[i++])) {
-			if (!t.src) {
-				continue;
-			}
-			src = t.src;
-			p = src.indexOf('Hyphenator.js');
-			if (p !== -1) {
-				return src.substring(0, p);
-			}
-		}
-		return 'http://hyphenator.googlecode.com/svn/trunk/';
-	}()),
-
-	/**
-	 * @name Hyphenator-isLocal
-	 * @fieldOf Hyphenator
-	 * @description
-	 * isLocal is true, if Hyphenator is loaded from the same domain, as the webpage, but false, if
-	 * it's loaded from an external source (i.e. directly from google.code)
-	 */
-	isLocal = (function () {
-		var re = false;
-		if (basePath.indexOf(window.location.hostname) !== -1) {
-			re = true;
-		}
-		return re;
-	}()),
-	
-	/**
-	 * @name Hyphenator-documentLoaded
-	 * @fieldOf Hyphenator
-	 * @description
-	 * documentLoaded is true, when the DOM has been loaded. This is set by runOnContentLoaded
-	 */
-	documentLoaded = false,
-	
-	/**
-	 * @name Hyphenator-dontHyphenate
-	 * @fieldOf Hyphenator
-	 * @description
-	 * A key-value object containing all html-tags whose content should not be hyphenated
-	 * @type object
-	 * @private
-	 * @see Hyphenator-hyphenateElement
-	 */
-	dontHyphenate = {'script': true, 'code': true, 'pre': true, 'img': true, 'br': true, 'samp': true, 'kbd': true, 'var': true, 'abbr': true, 'acronym': true, 'sub': true, 'sup': true, 'button': true, 'option': true, 'label': true, 'textarea': true},
-
-	/**
-	 * @name Hyphenator-enableCache
-	 * @fieldOf Hyphenator
-	 * @description
-	 * A variable to set if caching is enabled or not
-	 * @type boolean
-	 * @default true
-	 * @private
-	 * @see Hyphenator.config
-	 * @see hyphenateWord
-	 */
-	enableCache = true,
-	
-	/**
-	 * @name Hyphenator-enableRemoteLoading
-	 * @fieldOf Hyphenator
-	 * @description
-	 * A variable to set if pattern files should be loaded remotely or not
-	 * @type boolean
-	 * @default true
-	 * @private
-	 * @see Hyphenator.config
-	 * @see Hyphenator-loadPatterns
-	 */
-	enableRemoteLoading = true,
-	
-	/**
-	 * @name Hyphenator-displayToggleBox
-	 * @fieldOf Hyphenator
-	 * @description
-	 * A variable to set if the togglebox should be displayed or not
-	 * @type boolean
-	 * @default false
-	 * @private
-	 * @see Hyphenator.config
-	 * @see Hyphenator-toggleBox
-	 */
-	displayToggleBox = false,
-	
-	/**
-	 * @name Hyphenator-hyphenateClass
-	 * @fieldOf Hyphenator
-	 * @description
-	 * A string containing the css-class-name for the hyphenate class
-	 * @type string
-	 * @default 'hyphenate'
-	 * @private
-	 * @example
-	 * <p class = "hyphenate">Text</p>
-	 * @see Hyphenator.config
-	 */
-	hyphenateClass = 'hyphenate',
-
-	/**
-	 * @name Hyphenator-dontHyphenateClass
-	 * @fieldOf Hyphenator
-	 * @description
-	 * A string containing the css-class-name for elements that should not be hyphenated
-	 * @type string
-	 * @default 'donthyphenate'
-	 * @private
-	 * @example
-	 * <p class = "donthyphenate">Text</p>
-	 * @see Hyphenator.config
-	 */
-	dontHyphenateClass = 'donthyphenate',
-	
-	/**
-	 * @name Hyphenator-min
-	 * @fieldOf Hyphenator
-	 * @description
-	 * A number wich indicates the minimal length of words to hyphenate.
-	 * @type number
-	 * @default 6
-	 * @private
-	 * @see Hyphenator.config
-	 */	
-	min = 6,
-	
-	/**
-	 * @name Hyphenator-isBookmarklet
-	 * @fieldOf Hyphenator
-	 * @description
-	 * Indicates if Hyphanetor runs as bookmarklet or not.
-	 * @type boolean
-	 * @default false
-	 * @private
-	 */	
-	isBookmarklet = (function () {
-		var loc = null, re = false, jsArray = document.getElementsByTagName('script'), i, l;
-		for (i = 0, l = jsArray.length; i < l; i++) {
-			if (!!jsArray[i].getAttribute('src')) {
-				loc = jsArray[i].getAttribute('src');
-			}
-			if (!loc) {
-				continue;
-			} else if (loc.indexOf('Hyphenator.js?bm=true') !== -1) {
-				re = true;
-			}
-		}
-		return re;
-	}()),
-
-	/**
-	 * @name Hyphenator-mainLanguage
-	 * @fieldOf Hyphenator
-	 * @description
-	 * The general language of the document
-	 * @type number
-	 * @private
-	 * @see Hyphenator-autoSetMainLanguage
-	 */	
-	mainLanguage = null,
-
-	/**
-	 * @name Hyphenator-elements
-	 * @fieldOf Hyphenator
-	 * @description
-	 * An array holding all elements that have to be hyphenated. This var is filled by
-	 * {@link Hyphenator-gatherDocumentInfos}
-	 * @type array
-	 * @private
-	 */	
-	elements = [],
-	
-	/**
-	 * @name Hyphenator-exceptions
-	 * @fieldOf Hyphenator
-	 * @description
-	 * An object containing exceptions as comma separated strings for each language.
-	 * When the language-objects are loaded, their exceptions are processed, copied here and then deleted.
-	 * @see Hyphenator-prepareLanguagesObj
-	 * @type object
-	 * @private
-	 */	
-	exceptions = {},
-
-	/**
-	 * @name Hyphenator-docLanguages
-	 * @fieldOf Hyphenator
-	 * @description
-	 * An object holding all languages used in the document. This is filled by
-	 * {@link Hyphenator-gatherDocumentInfos}
-	 * @type object
-	 * @private
-	 */	
-	docLanguages = {},
-
-
-	/**
-	 * @name Hyphenator-state
-	 * @fieldOf Hyphenator
-	 * @description
-	 * A number that inidcates the current state of the script
-	 * 0: not initialized
-	 * 1: loading patterns
-	 * 2: ready
-	 * 3: hyphenation done
-	 * 4: hyphenation removed
-	 * @type number
-	 * @private
-	 */	
-	state = 0,
-
-	/**
-	 * @name Hyphenator-url
-	 * @fieldOf Hyphenator
-	 * @description
-	 * A string containing a RegularExpression to match URL's
-	 * @type string
-	 * @private
-	 */	
-	url = '(\\w*:\/\/)?((\\w*:)?(\\w*)@)?((([\\d]{1,3}\\.){3}([\\d]{1,3}))|(([\\w]*\\.)+([\\w]{2,4})))(:\\d*)?(\/[\\w#!:\\.?\\+=&%@!\\-]*)*',
-
-	/**
-	 * @name Hyphenator-mail
-	 * @fieldOf Hyphenator
-	 * @description
-	 * A string containing a RegularExpression to match mail-adresses
-	 * @type string
-	 * @private
-	 */	
-	mail = '[\\w-\\.]+@[\\w\\.]+',
-
-	/**
-	 * @name Hyphenator-urlRE
-	 * @fieldOf Hyphenator
-	 * @description
-	 * A RegularExpressions-Object for url- and mail adress matching
-	 * @type object
-	 * @private
-	 */		
-	urlOrMailRE = new RegExp('(' + url + ')|(' + mail + ')', 'i'),
-
-	/**
-	 * @name Hyphenator-zeroWidthSpace
-	 * @fieldOf Hyphenator
-	 * @description
-	 * A string that holds a char.
-	 * Depending on the browser, this is the zero with space or an empty string.
-	 * The zeroWidthSpace is inserted after a '-' in compound words, so even FF and IE
-	 * will break after a '-' if necessary.
-	 * zeroWidthSpace is also used to break URLs
-	 * @type string
-	 * @private
-	 */		
-	zeroWidthSpace = (function () {
-		var zws, ua = navigator.userAgent.toLowerCase();
-		if (ua.indexOf('msie 6') === -1) {
-			zws = String.fromCharCode(8203); //Unicode zero width space
-		} else {
-			zws = ''; //IE6 doesn't support zws
-		}
-		return zws;
-	}()),
-	
-	/**
-	 * @name Hyphenator-onHyphenationDone
-	 * @fieldOf Hyphenator
-	 * @description
-	 * A method to be called, when the last element has been hyphenated or the hyphenation has been
-	 * removed from the last element.
-	 * @see Hyphenator.config
-	 * @type function
-	 * @private
-	 */		
-	onHyphenationDone = function () {},
-
-	/**
-	 * @name Hyphenator-onError
-	 * @fieldOf Hyphenator
-	 * @description
-	 * A function that can be called upon an error.
-	 * @see Hyphenator.config
-	 * @type function
-	 * @private
-	 */		
-	onError = function (e) {
-		alert("Hyphenator.js says:\n\nAn Error ocurred:\n" + e.message);
-	},
-
-	/**
-	 * @name Hyphenator-selectorFunction
-	 * @fieldOf Hyphenator
-	 * @description
-	 * A function that has to return a HTMLNodeList of Elements to be hyphenated.
-	 * By default it uses the classname ('hyphenate') to select the elements.
-	 * @see Hyphenator.config
-	 * @type function
-	 * @private
-	 */		
-	selectorFunction = function () {
-		var tmp, el = [], i, l;
-		if (document.getElementsByClassName) {
-			el = document.getElementsByClassName(hyphenateClass);
-		} else {
-			tmp = document.getElementsByTagName('*');
-			l = tmp.length;
-			for (i = 0; i < l; i++)
-			{
-				if (tmp[i].className.indexOf(hyphenateClass) !== -1 && tmp[i].className.indexOf(dontHyphenateClass) === -1) {
-					el.push(tmp[i]);
-				}
-			}
-		}
-		return el;
-	},
-
-	/**
-	 * @name Hyphenator-intermediateState
-	 * @fieldOf Hyphenator
-	 * @description
-	 * The value of style.visibility of the text while it is hyphenated.
-	 * @see Hyphenator.config
-	 * @type string
-	 * @private
-	 */		
-	intermediateState = 'hidden',
-	
-	/**
-	 * @name Hyphenator-hyphen
-	 * @fieldOf Hyphenator
-	 * @description
-	 * A string containing the character for in-word-hyphenation
-	 * @type string
-	 * @default the soft hyphen
-	 * @private
-	 * @see Hyphenator.config
-	 */
-	hyphen = String.fromCharCode(173),
-	
-	/**
-	 * @name Hyphenator-urlhyphen
-	 * @fieldOf Hyphenator
-	 * @description
-	 * A string containing the character for url/mail-hyphenation
-	 * @type string
-	 * @default the zero width space
-	 * @private
-	 * @see Hyphenator.config
-	 * @see Hyphenator-zeroWidthSpace
-	 */
-	urlhyphen = zeroWidthSpace,
-	
-	/**
-	 * @name Hyphenator-Expando
-	 * @methodOf Hyphenator
-	 * @description
-	 * This custom object stores data for elements: storing data directly in elements
-	 * (DomElement.customData = foobar;) isn't a good idea. It would lead to conflicts
-	 * in form elements, when the form has a child with name="foobar". Therefore, this
-	 * solution follows the approach of jQuery: the data is stored in an object and
-	 * referenced by a unique attribute of the element. The attribute has a name that 
-	 * is built by the prefix "HyphenatorExpando_" and a random number, so if the very
-	 * very rare case occurs, that there's already an attribute with the same name, a
-	 * simple reload is enough to make it function.
-	 * @private
-	 */		
-	Expando = (function () {
-		var container = {},
-			name = "HyphenatorExpando_" + Math.random(),
-			uuid = 0;
-		return {
-			getDataForElem : function (elem) {
-				return container[elem[name]];
-			},
-			setDataForElem : function (elem, data) {
-				var id;
-				if (elem[name] && elem[name] !== '') {
-					id = elem[name];
-				} else {
-					id = uuid++;
-					elem[name] = id;
-				}
-				container[id] = data;
-			},
-			appendDataForElem : function (elem, data) {
-				var k;
-				for (k in data) {
-					if (data.hasOwnProperty(k)) {
-						container[elem[name]][k] = data[k];
-					}
-				}
-			},
-			delDataOfElem : function (elem) {
-				delete container[elem[name]];
-			}
-		};
-	}()),
-		
-	/*
-	 * ContentLoaded.js
-	 *
-	 * Author: Diego Perini (diego.perini at gmail.com)
-	 * Summary: Cross-browser wrapper for DOMContentLoaded
-	 * Updated: 17/05/2008
-	 * License: MIT
-	 * Version: 1.1
-	 *
-	 * URL:
-	 * http://javascript.nwbox.com/ContentLoaded/
-	 * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE
-	 *
-	 * Notes:
-	 * based on code by Dean Edwards and John Resig
-	 * http://dean.edwards.name/weblog/2006/06/again/
-	 */
-	// @w	window reference
-	// @f	function reference
-	//function ContentLoaded(w, f) {
-	/**
-	 * @name Hyphenator-runOnContentLoaded
-	 * @methodOf Hyphenator
-	 * @description
-	 * A crossbrowser solution for the DOMContentLoaded-Event
-	 * @author Diego Perini (diego.perini at gmail.com)
-	 * <a href = "http://javascript.nwbox.com/ContentLoaded/">http://javascript.nwbox.com/ContentLoaded/</a>
-	 * @param object the window-object
-	 * @param function-object the function to call onDOMContentLoaded
-	 * @private
- 	 */		
-	runOnContentLoaded = function (w, f) {
-		var	d = w.document,
-			D = 'DOMContentLoaded',
-			// user agent, version
-			u = w.navigator.userAgent.toLowerCase(),
-			v = parseFloat(u.match(/.+(?:rv|it|ml|ra|ie)[\/: ]([\d.]+)/)[1]),
-			oldonload = w.onload;
-				
-		function init(e) {
-			if (!documentLoaded) {
-				documentLoaded = true;
-				// pass a fake event if needed
-				f((e.type && e.type === D) ? e : {
-					type: D,
-					target: d,
-					eventPhase: 0,
-					currentTarget: d,
-					timeStamp: new Date().getTime(),
-					eventType: e.type || e
-				});
-			}
-		}
-	
-		// safari < 525.13
-		if (/webkit\//.test(u) && v < 525.13) {
-	
-			(function () {
-				if (/complete|loaded/.test(d.readyState)) {
-					init('khtml-poll');
-				} else {
-					setTimeout(arguments.callee, 10);
-				}
-			}());
-	
-		// internet explorer all versions
-		} else if (/msie/.test(u) && !w.opera) {
-	
-			d.attachEvent('onreadystatechange',
-				function (e) {
-					if (d.readyState === 'complete') {
-						d.detachEvent('on' + e.type, arguments.callee);
-						init(e);
-					}
-				}
-			);
-			if (w.self === top) {
-				(function () {
-					try {
-						d.documentElement.doScroll('left');
-					} catch (e) {
-						setTimeout(arguments.callee, 10);
-						return;
-					}
-					init('msie-poll');
-				}());
-			}
-	
-		// browsers having native DOMContentLoaded
-		} else if (d.addEventListener &&
-			(/opera\//.test(u) && v > 9) ||
-			(/gecko\//.test(u) && v >= 1.8) ||
-			(/khtml\//.test(u) && v >= 4.0) ||
-			(/webkit\//.test(u) && v >= 525.13)) {
-	
-			d.addEventListener(D,
-				function (e) {
-					d.removeEventListener(D, arguments.callee, false);
-					init(e);
-				}, false
-			);
-	
-		// fallback to last resort for older browsers
-		} else {
-	
-			// from Simon Willison
-			/**
-			 * @ignore
-			 */
-			w.onload = function (e) {
-				init(e || w.event);
-				if (typeof oldonload === 'function') {
-					oldonload(e || w.event);
-				}
-			};
-	
-		}
-	},
-	/* end ContentLoaded.js */
-
-	/**
-	 * @name Hyphenator-getLang
-	 * @methodOf Hyphenator
-	 * @description
-	 * Gets the language of an element. If no language is set, it may use the {@link Hyphenator-mainLanguage}.
-	 * @param object The first parameter is an DOM-Element-Object
-	 * @param boolean The second parameter is a boolean to tell if the function should return the {@link Hyphenator-mainLanguage}
-	 * if there's no language found for the element.
-	 * @private
-	 */
-	getLang = function (el, fallback) {
-		if (!!el.getAttribute('lang')) {
-			return el.getAttribute('lang').substring(0, 2).toLowerCase();
-		}
-		// The following doesn't work in IE due to a bug when getAttribute('xml:lang') in a table
-		/*if (!!el.getAttribute('xml:lang')) {
-			return el.getAttribute('xml:lang').substring(0, 2);
-		}*/
-		//instead, we have to do this (thanks to borgzor):
-		try {
-			if (!!el.getAttribute('xml:lang')) {
-				return el.getAttribute('xml:lang').substring(0, 2).toLowerCase();
-			}
-		} catch (ex) {}
-		if (el.tagName !== 'HTML') {
-			return getLang(el.parentNode, true);
-		}
-		if (fallback) {
-			return mainLanguage;
-		}
-		return null;
-	},
-	
-	/**
-	 * @name Hyphenator-autoSetMainLanguage
-	 * @methodOf Hyphenator
-	 * @description
-	 * Retrieves the language of the document from the DOM.
-	 * The function looks in the following places:
-	 * <ul>
-	 * <li>lang-attribute in the html-tag</li>
-	 * <li><meta http-equiv = "content-language" content = "xy" /></li>
-	 * <li><meta name = "DC.Language" content = "xy" /></li>
-	 * <li><meta name = "language" content = "xy" /></li>
-	 * </li>
-	 * If nothing can be found a prompt using {@link Hyphenator-languageHint} and {@link Hyphenator-prompterStrings} is displayed.
-	 * If the retrieved language is in the object {@link Hyphenator-supportedLang} it is copied to {@link Hyphenator-mainLanguage}
-	 * @private
-	 */		
-	autoSetMainLanguage = function () {
-		var el = document.getElementsByTagName('html')[0],
-			m = document.getElementsByTagName('meta'),
-			i, text, lang, e, ul;
-		mainLanguage = getLang(el);
-		if (!mainLanguage) {
-			for (i = 0; i < m.length; i++) {
-				//<meta http-equiv = "content-language" content="xy">	
-				if (!!m[i].getAttribute('http-equiv') && (m[i].getAttribute('http-equiv') === 'content-language')) {
-					mainLanguage = m[i].getAttribute('content').substring(0, 2).toLowerCase();
-				}
-				//<meta name = "DC.Language" content="xy">
-				if (!!m[i].getAttribute('name') && (m[i].getAttribute('name') === 'DC.language')) {
-					mainLanguage = m[i].getAttribute('content').substring(0, 2).toLowerCase();
-				}			
-				//<meta name = "language" content = "xy">
-				if (!!m[i].getAttribute('name') && (m[i].getAttribute('name') === 'language')) {
-					mainLanguage = m[i].getAttribute('content').substring(0, 2).toLowerCase();
-				}
-			}
-		}
-		if (!mainLanguage) {
-			text = '';
-			ul = navigator.language ? navigator.language : navigator.userLanguage;
-			ul = ul.substring(0, 2);
-			if (prompterStrings.hasOwnProperty(ul)) {
-				text = prompterStrings[ul];
-			} else {
-				text = prompterStrings.en;
-			}
-			text += ' (ISO 639-1)\n\n' + languageHint;
-			lang = window.prompt(unescape(text), ul).toLowerCase();
-			if (supportedLang[lang]) {
-				mainLanguage = lang;
-			} else {
-				e = new Error('The language "' + lang + '" is not yet supported.');
-				throw e;
-			}
-		}
-	},
-    
-	/**
-	 * @name Hyphenator-gatherDocumentInfos
-	 * @methodOf Hyphenator
-	 * @description
-	 * This method runs through the DOM and executes the process()-function on:
-	 * - every node returned by the {@link Hyphenator-selectorFunction}.
-	 * The process()-function copies the element to the elements-variable, sets its visibility
-	 * to intermediateState, retrieves its language and recursivly descends the DOM-tree until
-	 * the child-Nodes aren't of type 1
-	 * @private
-	 */		
-	gatherDocumentInfos = function () {
-		var elToProcess, tmp, i = 0,
-			process = function (el, hide, lang) {
-			var n, i = 0, hyphenatorSettings = {};
-			if (hide && intermediateState === 'hidden') {
-				if (!!el.getAttribute('style')) {
-					hyphenatorSettings.hasOwnStyle = true;
-				} else {
-					hyphenatorSettings.hasOwnStyle = false;					
-				}
-				hyphenatorSettings.isHidden = true;
-				el.style.visibility = 'hidden';
-			}
-			if (el.lang) {
-				hyphenatorSettings.language = el.lang.toLowerCase(); //copy attribute-lang to internal lang
-			} else if (lang) {
-				hyphenatorSettings.language = lang.toLowerCase();
-			} else {
-				hyphenatorSettings.language = getLang(el, true);
-			}
-			lang = hyphenatorSettings.language;
-			if (supportedLang[lang]) {
-				docLanguages[lang] = true;
-			} else {
-				onError(new Error('Language ' + lang + ' is not yet supported.'));
-			}
-			Expando.setDataForElem(el, hyphenatorSettings);
-			elements.push(el);
-			while (!!(n = el.childNodes[i++])) {
-				if (n.nodeType === 1 && !dontHyphenate[n.nodeName.toLowerCase()] &&
-					n.className.indexOf(dontHyphenateClass) === -1 && !(n in elToProcess)) {
-					process(n, false, lang);
-				}
-			}
-		};
-		if (Hyphenator.isBookmarklet()) {
-			elToProcess = document.getElementsByTagName('body')[0];
-			process(elToProcess, false, mainLanguage);
-		} else {
-			elToProcess = selectorFunction();
-			while (!!(tmp = elToProcess[i++]))
-			{
-				process(tmp, true);
-			}			
-		}
-		if (!Hyphenator.languages.hasOwnProperty(mainLanguage)) {
-			docLanguages[mainLanguage] = true;
-		} else if (!Hyphenator.languages[mainLanguage].prepared) {
-			docLanguages[mainLanguage] = true;
-		}
-		if (elements.length > 0) {
-			Expando.appendDataForElem(elements[elements.length - 1], {isLast : true});
-		}
-	},
-	
-	/*
-	registerOnCopy = function () {
-			document.getElementsByTagName('body')[0].oncopy = function (e) {
-				var text, h;
-				if (window.getSelection) {
-					text = window.getSelection().toString();
-				}
-				else if (document.selection) { // should come last; Opera!
-					text = document.selection.createRange().text;
-				}
-				switch (hyphen) {
-					case '|':
-						h = '\\|';
-						break;
-					case '+':
-						h = '\\+';
-						break;
-					case '*':
-						h = '\\*';
-						break;
-					case String.fromCharCode(173):
-						h = '\u00AD';
-						break;
-					default:
-						h = hyphen;
-					}
-				text = text.replace(new RegExp(h, 'g'), '');
-				text = text.replace(new RegExp(zeroWidthSpace, 'g'), '');
-				alert(text);
-				if (!!e && !!e.clipboardData) { //Safari
-					e.preventDefault();
-					e.clipboardData.setData('text/plain', text);
-				} else if (!!window.clipboardData) { // IE
-					window.preventDefault();
-					window.clipboardData.setData('Text', text);
-				}
-			}			
-	},
-	*/
-	 
-	/**
-	 * @name Hyphenator-convertPatterns
-	 * @methodOf Hyphenator
-	 * @description
-	 * Converts the patterns from string '_a6' to object '_a':'_a6'.
-	 * The result is stored in the {@link Hyphenator-patterns}-object.
-	 * @private
-	 * @param string the language whose patterns shall be converted
-	 */		
-	convertPatterns = function (lang) {
-		var plen, anfang, pats, pat, key, tmp = {};
-		pats = Hyphenator.languages[lang].patterns;
-		for (plen in pats) {
-			if (pats.hasOwnProperty(plen)) {
-				plen = parseInt(plen, 10);
-				anfang = 0;
-				while (!!(pat = pats[plen].substr(anfang, plen))) {
-					key = pat.replace(/\d/g, '');
-					tmp[key] = pat;
-					anfang += plen;
-				}
-			}
-		}
-		Hyphenator.languages[lang].patterns = tmp;
-		Hyphenator.languages[lang].patternsConverted = true;
-	},
-
-	/**
-	 * @name Hyphenator-convertExceptionsToObject
-	 * @methodOf Hyphenator
-	 * @description
-	 * Converts a list of comma seprated exceptions to an object:
-	 * 'Fortran,Hy-phen-a-tion' -> {'Fortran':'Fortran','Hyphenation':'Hy-phen-a-tion'}
-	 * @private
-	 * @param string a comma separated string of exceptions (without spaces)
-	 */		
-	convertExceptionsToObject = function (exc) {
-		var w = exc.split(', '),
-			r = {},
-			i, l, key;
-		for (i = 0, l = w.length; i < l; i++) {
-			key = w[i].replace(/-/g, '');
-			if (!r.hasOwnProperty(key)) {
-				r[key] = w[i];
-			}
-		}
-		return r;
-	},
-	
-	/**
-	 * @name Hyphenator-loadPatterns
-	 * @methodOf Hyphenator
-	 * @description
-	 * Adds a <script>-Tag to the DOM to load an externeal .js-file containing patterns and settings for the given language.
-	 * If the iven language is not in the {@link Hyphenator-supportedLang}-Object it returns.
-	 * One may ask why we are not using AJAX to load the patterns. The XMLHttpRequest-Object 
-	 * has a same-origin-policy. This makes the isBookmarklet-functionality impossible.
-	 * @param string The language to load the patterns for
-	 * @private
-	 * @see Hyphenator-basePath
-	 */
-	loadPatterns = function (lang) {
-		var url, xhr, head, script;
-		if (supportedLang[lang] && !Hyphenator.languages[lang]) {
-	        url = basePath + 'patterns/' + lang + '.js';
-		} else {
-			return;
-		}
-		if (isLocal && !isBookmarklet) {
-			//check if 'url' is available:
-			xhr = null;
-			if (typeof XMLHttpRequest !== 'undefined') {
-				xhr = new XMLHttpRequest();
-			}
-			if (!xhr) {
-				try {
-					xhr  = new ActiveXObject("Msxml2.XMLHTTP");
-				} catch (e) {
-					xhr  = null;
-				}
-			}
-			if (xhr) {
-				xhr.open('HEAD', url, false);
-				xhr.setRequestHeader('Cache-Control', 'no-cache');
-				xhr.send(null);
-				if (xhr.status === 404) {
-					onError(new Error('Could not load\n' + url));
-					delete docLanguages[lang];
-					return;
-				}
-			}
-		}
-		if (document.createElement) {
-			head = document.getElementsByTagName('head').item(0);
-			script = document.createElement('script');
-			script.src = url;
-			script.type = 'text/javascript';
-			head.appendChild(script);
-		}
-	},
-	
-	/**
-	 * @name Hyphenator-prepareLanguagesObj
-	 * @methodOf Hyphenator
-	 * @description
-	 * Adds a cache to each language and converts the exceptions-list to an object.
-	 * @private
-	 * @param string the language ob the lang-obj
-	 */		
-	prepareLanguagesObj = function (lang) {
-		var lo = Hyphenator.languages[lang], wrd;
-		if (!lo.prepared) {	
-			if (enableCache) {
-				lo.cache = {};
-			}
-			if (lo.hasOwnProperty('exceptions')) {
-				Hyphenator.addExceptions(lang, lo.exceptions);
-				delete lo.exceptions;
-			}
-			if (exceptions.hasOwnProperty('global')) {
-				if (exceptions.hasOwnProperty(lang)) {
-					exceptions[lang] += ', ' + exceptions.global;
-				} else {
-					exceptions[lang] = exceptions.global;
-				}
-			}
-			if (exceptions.hasOwnProperty(lang)) {
-				lo.exceptions = convertExceptionsToObject(exceptions[lang]);
-				delete exceptions[lang];
-			} else {
-				lo.exceptions = {};
-			}
-			convertPatterns(lang);
-			wrd = '[\\w' + lo.specialChars + '@' + String.fromCharCode(173) + '-]{' + min + ',}';
-			lo.genRegExp = new RegExp('(' + url + ')|(' + mail + ')|(' + wrd + ')', 'gi');
-			lo.prepared = true;
-		}
-	},
-	
-	/**
-	 * @name Hyphenator-prepare
-	 * @methodOf Hyphenator
-	 * @description
-	 * This funtion prepares the Hyphenator-Object: If RemoteLoading is turned off, it assumes
-	 * that the patternfiles are loaded, all conversions are made and the callback is called.
-	 * If RemoteLoading is on (default), it loads the pattern files and waits until they are loaded,
-	 * by repeatedly checking Hyphenator.languages. If a patterfile is loaded the patterns are
-	 * converted to their object style and the lang-object extended.
-	 * Finally the callback is called.
-	 * @param function-object callback to call, when all patterns are loaded
-	 * @private
-	 */
-	prepare = function (callback) {
-		var lang, docLangEmpty = true, interval;
-		if (!enableRemoteLoading) {
-			for (lang in Hyphenator.languages) {
-				if (Hyphenator.languages.hasOwnProperty(lang)) {
-					prepareLanguagesObj(lang);
-				}
-			}
-			state = 2;
-			callback();
-			return;
-		}
-		// get all languages that are used and preload the patterns
-		state = 1;
-		for (lang in docLanguages) {
-			if (docLanguages.hasOwnProperty(lang)) {
-				loadPatterns(lang);
-				docLangEmpty = false;
-			}
-		}
-		if (docLangEmpty) {
-			state = 2;
-			callback();
-			return;
-		}
-		// wait until they are loaded
-		interval = window.setInterval(function () {
-			var finishedLoading = false, lang;
-			for (lang in docLanguages) {
-				if (docLanguages.hasOwnProperty(lang)) {
-					if (!Hyphenator.languages[lang]) {
-						finishedLoading = false;
-						break;
-					} else {
-						finishedLoading = true;
-						delete docLanguages[lang];
-						//do conversion while other patterns are loading:
-						prepareLanguagesObj(lang);		
-					}
-				}
-			}
-			if (finishedLoading) {
-				window.clearInterval(interval);
-				state = 2;
-				callback();
-			}
-		}, 100);
-	},
-
-	/**
-	 * @name Hyphenator-switchToggleBox
-	 * @methodOf Hyphenator
-	 * @description
-	 * Creates or hides the toggleBox: a small button to turn off/on hyphenation on a page.
-	 * @param boolean true when hyphenation is on, false when it's off
-	 * @see Hyphenator.config
-	 * @private
-	 */		
-	toggleBox = function (s) {
-		var myBox, bdy, myIdAttribute, myTextNode, myClassAttribute;
-		if (!!(myBox = document.getElementById('HyphenatorToggleBox'))) {
-			if (s) {
-				myBox.firstChild.data = 'Hy-phe-na-ti-on';
-			} else {
-				myBox.firstChild.data = 'Hyphenation';
-			}
-		} else {
-			bdy = document.getElementsByTagName('body')[0];
-			myBox = document.createElement('div');
-			myIdAttribute = document.createAttribute('id');
-			myIdAttribute.nodeValue = 'HyphenatorToggleBox';
-			myClassAttribute = document.createAttribute('class');
-			myClassAttribute.nodeValue = dontHyphenateClass;
-			myTextNode = document.createTextNode('Hy-phe-na-ti-on');
-			myBox.appendChild(myTextNode);
-			myBox.setAttributeNode(myIdAttribute);
-			myBox.setAttributeNode(myClassAttribute);
-			myBox.onclick =  Hyphenator.toggleHyphenation;
-			myBox.style.position = 'absolute';
-			myBox.style.top = '0px';
-			myBox.style.right = '0px';
-			myBox.style.margin = '0';
-			myBox.style.backgroundColor = '#AAAAAA';
-			myBox.style.color = '#FFFFFF';
-			myBox.style.font = '6pt Arial';
-			myBox.style.letterSpacing = '0.2em';
-			myBox.style.padding = '3px';
-			myBox.style.cursor = 'pointer';
-			myBox.style.WebkitBorderBottomLeftRadius = '4px';
-			myBox.style.MozBorderRadiusBottomleft = '4px';
-			bdy.appendChild(myBox);
-		}
-	},
-
-	/**
-	 * @name Hyphenator-hyphenateWord
-	 * @methodOf Hyphenator
-	 * @description
-	 * This function is the heart of Hyphenator.js. It returns a hyphenated word.
-	 *
-	 * If there's already a {@link Hyphenator-hypen} in the word, the word is returned as it is.
-	 * If the word is in the exceptions list or in the cache, it is retrieved from it.
-	 * If there's a '-' put a zeroWidthSpace after the '-' and hyphenate the parts.
-	 * @param string The language of the word
-	 * @param string The word
-	 * @returns string The hyphenated word
-	 * @public
-	 */	
-	hyphenateWord = function (lang, word) {
-		var lo = Hyphenator.languages[lang],
-			parts, i, l, w, wl, s, hypos, p, maxwins, win, pat = false, patk, patl, c, digits, z, numb3rs, n, inserted, hyphenatedword;
-		if (word === '') {
-			return '';
-		}
-		if (word.indexOf(hyphen) !== -1) {
-			//word already contains shy; -> leave at it is!
-			return word;
-		}
-		if (enableCache && lo.cache.hasOwnProperty(word)) { //the word is in the cache
-			return lo.cache[word];
-		}
-		if (lo.exceptions.hasOwnProperty(word)) { //the word is in the exceptions list
-			return lo.exceptions[word].replace(/-/g, hyphen);
-		}
-		if (word.indexOf('-') !== -1) {
-			//word contains '-' -> put a zeroWidthSpace after it and hyphenate the parts separated with '-'
-			parts = word.split('-');
-			for (i = 0, l = parts.length; i < l; i++) {
-				parts[i] = hyphenateWord(lang, parts[i]);
-			}
-			return parts.join('-' + zeroWidthSpace);
-		}
-		//finally the core hyphenation algorithm
-		w = '_' + word + '_';
-		wl = w.length;
-		s = w.split('');
-		w = w.toLowerCase();
-		hypos = [];
-		numb3rs = {'0': true, '1': true, '2': true, '3': true, '4': true, '5': true, '6': true, '7': true, '8': true, '9': true}; //check for member is faster then isFinite()
-		n = wl - lo.shortestPattern;
-		for (p = 0; p <= n; p++) {
-			maxwins = Math.min((wl - p), lo.longestPattern);
-			for (win = lo.shortestPattern; win <= maxwins; win++) {
-				if (lo.patterns.hasOwnProperty(patk = w.substr(p, win))) {
-					pat = lo.patterns[patk];
-				} else {
-					continue;
-				}
-				digits = 1;
-				patl = pat.length;
-				for (i = 0; i < patl; i++) {
-					c = pat.charAt(i);
-					if (numb3rs[c]) {
-						if (i === 0) {
-							z = p - 1;
-							if (!hypos[z] || hypos[z] < c) {
-								hypos[z] = c;
-							}
-						} else {
-							z = p + i - digits;
-							if (!hypos[z] || hypos[z] < c) {
-								hypos[z] = c;
-							}
-						}
-						digits++;								
-					}
-				}
-			}
-		}
-		inserted = 0;
-		for (i = lo.leftmin; i <= (word.length - lo.rightmin); i++) {
-			if (!!(hypos[i] & 1)) {
-				s.splice(i + inserted + 1, 0, hyphen);
-				inserted++;
-			}
-		}
-		hyphenatedword = s.slice(1, -1).join('');
-		if (enableCache) {
-			lo.cache[word] = hyphenatedword;
-		}
-		return hyphenatedword;
-	},
-		
-	/**
-	 * @name Hyphenator-hyphenateURL
-	 * @methodOf Hyphenator
-	 * @description
-	 * Puts {@link Hyphenator-urlhyphen} after each no-alphanumeric char that my be in a URL.
-	 * @param string URL to hyphenate
-	 * @returns string the hyphenated URL
-	 * @public
-	 */
-	hyphenateURL = function (url) {
-		return url.replace(/([:\/\.\?#&_,;!@]+)/gi, '$&' + urlhyphen);
-	},
-
-	/**
-	 * @name Hyphenator-hyphenateElement
-	 * @methodOf Hyphenator
-	 * @description
-	 * Takes the content of the given element and - if there's text - replaces the words
-	 * by hyphenated words. If there's another element, the function is called recursively.
-	 * When all words are hyphenated, the visibility of the element is set to 'visible'.
-	 * @param object The element to hyphenate
-	 * @param string The language used in this element
-	 * @public
-	 */
-	hyphenateElement = function (el) {
-		var hyphenatorSettings = Expando.getDataForElem(el),
-			lang = hyphenatorSettings.language, hyphenate, n, i;
-		if (Hyphenator.languages.hasOwnProperty(lang)) {
-			hyphenate = function (word) {
-				if (urlOrMailRE.test(word)) {
-					return hyphenateURL(word);
-				} else {
-					return hyphenateWord(lang, word);
-				}
-			};
-			i = 0;
-			while (!!(n = el.childNodes[i++])) {
-				if (n.nodeType === 3 && n.data.length >= min) { //type 3 = #text -> hyphenate!
-					n.data = n.data.replace(Hyphenator.languages[lang].genRegExp, hyphenate);
-				}
-			}
-		}
-		if (hyphenatorSettings.isHidden && intermediateState === 'hidden') {
-			el.style.visibility = 'visible';
-			if (!hyphenatorSettings.hasOwnStyle) {
-				el.setAttribute('style', ''); // without this, removeAttribute doesn't work in Safari (thanks to molily)
-				el.removeAttribute('style');
-			} else {
-				if (el.style.removeProperty) {
-					el.style.removeProperty('visibility');
-				} else if (el.style.removeAttribute) { // IE
-					el.style.removeAttribute('visibility');
-				}  
-			}
-		}
-		if (hyphenatorSettings.isLast) {
-			state = 3;
-			onHyphenationDone();
-		}
-	},
-	
-	/**
-	 * @name Hyphenator-removeHyphenationFromElement
-	 * @methodOf Hyphenator
-	 * @description
-	 * Removes all hyphens from the element. If there are other elements, the function is
-	 * called recursively.
-	 * Removing hyphens is usefull if you like to copy text. Some browsers are buggy when the copy hyphenated texts.
-	 * @param object The element where to remove hyphenation.
-	 * @public
-	 */
-	removeHyphenationFromElement = function (el) {
-		var h, i = 0, n;
-		switch (hyphen) {
-		case '|':
-			h = '\\|';
-			break;
-		case '+':
-			h = '\\+';
-			break;
-		case '*':
-			h = '\\*';
-			break;
-		default:
-			h = hyphen;
-		}
-		while (!!(n = el.childNodes[i++])) {
-			if (n.nodeType === 3) {
-				n.data = n.data.replace(new RegExp(h, 'g'), '');
-				n.data = n.data.replace(new RegExp(zeroWidthSpace, 'g'), '');
-			} else if (n.nodeType === 1) {
-				removeHyphenationFromElement(n);
-			}
-		}
-	},
-
-	/**
-	 * @name Hyphenator-hyphenateDocument
-	 * @methodOf Hyphenator
-	 * @description
-	 * Calls hyphenateElement() for all members of elements. This is done with a setTimout
-	 * to prevent a "long running Script"-alert when hyphenating large pages.
-	 * Therefore a tricky bind()-function was necessary.
-	 * @public
-	 */
-	hyphenateDocument = function () {
-		function bind(fun, arg) {
-			return function () {
-				return fun(arg);
-			};
-		}
-		var i = 0, el;
-		while (!!(el = elements[i++])) {
-			window.setTimeout(bind(hyphenateElement, el), 0);
-
-		}
-	},
-
-	/**
-	 * @name Hyphenator-removeHyphenationFromDocument
-	 * @methodOf Hyphenator
-	 * @description
-	 * Does what it says ;-)
-	 * @public
-	 */
-	removeHyphenationFromDocument = function () {
-		var i = 0, el;
-		while (!!(el = elements[i++])) {
-			removeHyphenationFromElement(el);
-		}
-		state = 4;
-	};
-
-	return {
-		
-		/**
-		 * @name Hyphenator.version
-		 * @memberOf Hyphenator
-		 * @description
-		 * String containing the actual version of Hyphenator.js
-		 * [major release].[minor releas].[bugfix release]
-		 * major release: new API, new Features, big changes
-		 * minor release: new languages, improvements
-		 * @public
-         */		
-		version: '2.3.0',
-		
-		/**
-		 * @name Hyphenator.languages
-		 * @memberOf Hyphenator
-		 * @description
-		 * Objects that holds key-value pairs, where key is the language and the value is the
-		 * language-object loaded from (and set by) the pattern file.
-		 * The language object holds the following members:
-		 * <table>
-		 * <tr><th>key</th><th>desc></th></tr>
-		 * <tr><td>leftmin</td><td>The minimum of chars to remain on the old line</td></tr>
-		 * <tr><td>rightmin</td><td>The minimum of chars to go on the new line</td></tr>
-		 * <tr><td>shortestPattern</td><td>The shortes pattern (numbers don't count!)</td></tr>
-		 * <tr><td>longestPattern</td><td>The longest pattern (numbers don't count!)</td></tr>
-		 * <tr><td>specialChars</td><td>Non-ASCII chars in the alphabet.</td></tr>
-		 * <tr><td>patterns</td><td>the patterns</td></tr>
-		 * </table>
-		 * And optionally (or after prepareLanguagesObj() has been called):
-		 * <table>
-		 * <tr><td>exceptions</td><td>Excpetions for the secified language</td></tr>
-		 * </table>
-		 * @public
-         */		
-		languages: {},
-		
-
-		/**
-		 * @name Hyphenator.config
-		 * @methodOf Hyphenator
-		 * @description
-		 * Config function that takes an object as an argument. The object contains key-value-pairs
-		 * containig Hyphenator-settings. This is a shortcut for calling Hyphenator.set...-Methods.
-		 * @param object <table>
-		 * <tr><th>key</th><th>values</th><th>default</th></tr>
-		 * <tr><td>classname</td><td>string</td><td>'hyphenate'</td></tr>
-		 * <tr><td>minwordlength</td><td>integer</td><td>6</td></tr>
-		 * <tr><td>hyphenchar</td><td>string</td><td>'&shy;'</td></tr>
-		 * <tr><td>urlhyphenchar</td><td>string</td><td>'zero with space'</td></tr>
-		 * <tr><td>togglebox</td><td>function</td><td>see code</td></tr>
-		 * <tr><td>displaytogglebox</td><td>boolean</td><td>false</td></tr>
-		 * <tr><td>remoteloading</td><td>boolean</td><td>true</td></tr>
-		 * <tr><td>onhyphenationdonecallback</td><td>function</td><td>empty function</td></tr>
-		 * <tr><td>onerrorhandler</td><td>function</td><td>alert(onError)</td></tr>
-		 * <tr><td>intermediatestate</td><td>string</td><td>'hidden'</td></tr>
-		 * </table>
-		 * @public
-		 * @example <script src = "Hyphenator.js" type = "text/javascript"></script>
-         * <script type = "text/javascript">
-         *     Hyphenator.config({'minwordlength':4,'hyphenchar':'|'});
-         *     Hyphenator.run();
-         * </script>
-         */
-		config: function (obj) {
-			var assert = function (name, type) {
-					if (typeof obj[name] === type) {
-						return true;
-					} else {
-						onError(new Error('Config onError: ' + name + ' must be of type ' + type));
-						return false;
-					}
-				},
-				key;
-			for (key in obj) {
-				if (obj.hasOwnProperty(key)) {
-					switch (key) {
-					case 'classname':
-						if (assert('classname', 'string')) {
-							hyphenateClass = obj.classname;
-						}
-						break;
-					case 'donthyphenateclassname':
-						if (assert('donthyphenateclassname', 'string')) {
-							dontHyphenateClass = obj.donthyphenateclassname;
-						}						
-						break;
-					case 'minwordlength':
-						if (assert('minwordlength', 'number')) {
-							min = obj.minwordlength;
-						}
-						break;
-					case 'hyphenchar':
-						if (assert('hyphenchar', 'string')) {
-							if (obj.hyphenchar === '­') {
-								obj.hyphenchar = String.fromCharCode(173);
-							}
-							hyphen = obj.hyphenchar;
-						}
-						break;
-					case 'urlhyphenchar':
-						if (obj.hasOwnProperty('urlhyphenchar')) {
-							if (assert('urlhyphenchar', 'string')) {
-								urlhyphen = obj.urlhyphenchar;
-							}
-						}
-						break;
-					case 'togglebox':
-						if (assert('togglebox', 'function')) {
-							toggleBox = obj.togglebox;
-						}
-						break;
-					case 'displaytogglebox':
-						if (assert('displaytogglebox', 'boolean')) {
-							displayToggleBox = obj.displaytogglebox;
-						}
-						break;
-					case 'remoteloading':
-						if (assert('remoteloading', 'boolean')) {
-							enableRemoteLoading = obj.remoteloading;
-						}
-						break;
-					case 'enablecache':
-						if (assert('enablecache', 'boolean')) {
-							enableCache = obj.enablecache;
-						}
-						break;
-					case 'onhyphenationdonecallback':
-						if (assert('onhyphenationdonecallback', 'function')) {
-							onHyphenationDone = obj.onhyphenationdonecallback;
-						}
-						break;
-					case 'onerrorhandler':
-						if (assert('onerrorhandler', 'function')) {
-							onError = obj.onerrorhandler;
-						}
-						break;
-					case 'intermediatestate':
-						if (assert('intermediatestate', 'string')) {
-							intermediateState = obj.intermediatestate;
-						}
-						break;
-					case 'selectorfunction':
-						if (assert('selectorfunction', 'function')) {
-							selectorFunction = obj.selectorfunction;
-						}
-						break;
-					default:
-						onError(new Error('Hyphenator.config: property ' + key + ' not known.'));
-					}
-				}
-			}
-		},
-
-		/**
-		 * @name Hyphenator.run
-		 * @methodOf Hyphenator
-		 * @description
-		 * Bootstrap function that starts all hyphenation processes when called.
-		 * @public
-		 * @example <script src = "Hyphenator.js" type = "text/javascript"></script>
-         * <script type = "text/javascript">
-         *   Hyphenator.run();
-         * </script>
-         */
-		run: function () {
-			var process = function () {
-				try {
-					autoSetMainLanguage();
-					gatherDocumentInfos();
-					prepare(hyphenateDocument);
-					if (displayToggleBox) {
-						toggleBox(true);
-					}
-					//registerOnCopy();
-				} catch (e) {
-					onError(e);
-				}
-			};
-			if (!documentLoaded) {
-				runOnContentLoaded(window, process);
-			}
-			if (Hyphenator.isBookmarklet() || documentLoaded) {
-				process();
-			}
-		},
-		
-		/**
-		 * @name Hyphenator.addExceptions
-		 * @methodOf Hyphenator
-		 * @description
-		 * Adds the exceptions from the string to the appropriate language in the 
-		 * {@link Hyphenator-languages}-object
-		 * @param string The language
-		 * @param string A comma separated string of hyphenated words WITH spaces.
-		 * @public
-		 * @example <script src = "Hyphenator.js" type = "text/javascript"></script>
-         * <script type = "text/javascript">
-         *   Hyphenator.addExceptions('de','ziem-lich, Wach-stube');
-         *   Hyphenator.run();
-         * </script>
-         */
-		addExceptions: function (lang, words) {
-			if (lang === '') {
-				lang = 'global';
-			}
-			if (exceptions.hasOwnProperty[lang]) {
-				exceptions[lang] += ", " + words;
-			} else {
-				exceptions[lang] = words;
-			}
-		},
-		
-		/**
-		 * @name Hyphenator.hyphenate
-		 * @methodOf Hyphenator
-		 * @public
-		 * @description
-		 * Hyphenates the target. The language patterns must be loaded.
-		 * If the target is a string, the hyphenated string is returned,
-		 * if it's an object, the values are hyphenated directly.
-		 * @param mixed the target to be hyphenated
-		 * @param string the language of the target
-		 * @returns string
-		 * @example <script src = "Hyphenator.js" type = "text/javascript"></script>
-		 * <script src = "patterns/en.js" type = "text/javascript"></script>
-         * <script type = "text/javascript">
-		 * var t = Hyphenator.hyphenate('Hyphenation', 'en'); //Hy|phen|ation
-		 * </script>
-		 */
-		hyphenate: function (target, lang) {
-			var hyphenate, n, i;
-			if (Hyphenator.languages.hasOwnProperty(lang)) {
-				if (!Hyphenator.languages[lang].prepared) {
-					prepareLanguagesObj(lang);
-				}
-				hyphenate = function (word) {
-					if (urlOrMailRE.test(word)) {
-						return hyphenateURL(word);
-					} else {
-						return hyphenateWord(lang, word);
-					}
-				};
-				if (typeof target === 'string' || target.constructor === String) {
-					return target.replace(Hyphenator.languages[lang].genRegExp, hyphenate);
-				} else if (typeof target === 'object') {
-					i = 0;
-					while (!!(n = target.childNodes[i++])) {
-						if (n.nodeType === 3 && n.data.length >= min) { //type 3 = #text -> hyphenate!
-							n.data = n.data.replace(Hyphenator.languages[lang].genRegExp, hyphenate);
-						} else if (n.nodeType === 1) {
-							Hyphenator.hyphenate(n, lang);
-						}
-					}
-				}
-			} else {
-				onError(new Error('Language "' + lang + '" is not loaded.'));
-			}
-		},
-		
-		/**
-		 * @name Hyphenator.isBookmarklet
-		 * @methodOf Hyphenator
-		 * @description
-		 * Returns {@link Hyphenator-isBookmarklet}.
-		 * @returns boolean
-		 * @public
-         */
-		isBookmarklet: function () {
-			return isBookmarklet;
-		},
-
-
-		/**
-		 * @name Hyphenator.toggleHyphenation
-		 * @methodOf Hyphenator
-		 * @description
-		 * Checks the current state of the ToggleBox and removes or does hyphenation.
-		 * @public
-         */
-		toggleHyphenation: function () {
-			switch (state) {
-			case 3:
-				removeHyphenationFromDocument();
-				toggleBox(false);
-				break;
-			case 4:
-				hyphenateDocument();
-				toggleBox(true);
-				break;
-			}
-		}
-	};
-}());
-if (Hyphenator.isBookmarklet()) {
-	Hyphenator.config({displaytogglebox: true, intermediatestate: 'visible'});
-	Hyphenator.run();
-}


=====================================
web/example.html deleted
=====================================
--- a/web/example.html
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-    "http://www.w3.org/TR/html4/strict.dtd">
-<html lang="ml">
-    <head>
-        <title>Hphenation demo in Indian Languages</title>
-        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
-        <style type="text/css">
-            body {
-                width:80%;
-                margin-left:10%;
-                margin-right:10%;
-            }
-            div {
-                text-align:justify;
-            }
- 
-
-	.multiplecolumns {
-	-moz-column-width: 200px;;
-	-webkit-column-width: 130px;
-	-moz-column-gap: 20px;
-	-webkit-column-gap: 20px;
-	-moz-column-rule: 1px solid #111111;
-	-moz-column-rule-color: #ddccb5;
-	-moz-column-rule-style: ridge
-	-webkit-column-rule: 1px solid #ddccb5;
-	}
-
-
-        </style>
-		<script src="Hyphenator.js" type="text/javascript"></script>
-        <script type="text/javascript">
-        	Hyphenator.config({
-        		displaytogglebox : true,
-        		minwordlength : 4
-        	});
-        	Hyphenator.run();
-        </script>    </head>
-    <body>
- <div class="multiplecolumns hyphenate chapter"   lang="en"> 
-Resize the browser window and check how the column width and number of columns are changing. See how the hyphenation postion changes too...To toggle between hyphenated and non-hyphenated text, press the hyphenate link at the top right corner of this page.
-</div><hr/>
-  <div class="multiplecolumns hyphenate"   lang="ml"> 
-  
-<p>
-ശരിയ്ക്കും അങ്ങനെ ഒരു ലിനക്സ് ഉണ്ടു് എന്നു് മാത്രമല്ല ആളുകള്‍ അതു് ഉപയോഗിയ്ക്കുന്നുമുണ്ടു്, പക്ഷേ അതു് പ്രവര്‍ത്തക സംവിധാനത്തിന്റെ ഒരു ഭാഗം മാത്രമാണു്. ലിനക്സൊരു കെര്‍ണലാണു്: നിങ്ങള്‍ പ്രവര്‍ത്തിപ്പിയ്ക്കുന്ന മറ്റു് പ്രോഗ്രാമുകള്‍ക്കു് സിസ്റ്റത്തിന്റെ വിഭവങ്ങള്‍ വിട്ടുകൊടുക്കുന്ന പ്രോഗ്രാമാണതു്. ഒരു പ്രവര്‍ത്തക സംവിധാനത്തിന്റെ ഒഴിച്ചുകൂടാനാവാത്ത ഭാഗമാണു് കെര്‍ണല്‍, പക്ഷേ അതു് മാത്രം കൊണ്ടു് വലിയ പ്രയോജനമൊന്നുമില്ല; മുഴുവന്‍ പ്രവര്‍ത്തക സംവിധാനത്തിനൊപ്പമേ അതിനു് പ്രവര്‍ത്തിയ്ക്കാനാകൂ. ലിനക്സ് സാധാരണയായി ഗ്നു എന്ന പ്രവര്‍ത്തക സംവിധാനവുമായി ചേര്‍ന്നാണുപയോഗിയ്ക്കുന്നതു്: ലിനക്സ് കെര്‍ണലായി പ്രവര്‍ത്തിയ്ക്കുന്ന മുഴുവന്‍ സിസ്റ്റവും അടിസ്ഥാനപരമായി ഗ്നുവാണു് അഥവാ ഗ്നു/ലിനക്സ് ആണു്. “ലിനക്സ്” എന്നു് പറയപ്പെടുന്ന എല്ലാ വിതരണങ്ങളും ശരിയ്ക്കും, ഗ്നു/ലിനക്സ് വിതരണങ്ങളാണു്.
-</p>
- 
-</div>
-<hr/>
- <div class="multiplecolumns hyphenate"   lang="hi"> 
-  
-<p>
-चंद्रयान-प्रथम चांद पर पहुंच कर वहां एक उपग्रह स्थापित करेगा। चंद्रमा से १०० किमी ऊपर ५२५ किग्रा का एक उपग्रह ध्रुवीय कक्षा में स्थापित किया जाएगा। यह उपग्रह अपने रिमोट सेंसिंग (दूर संवेदी) उपकरणों के जरिये चंद्रमा की ऊपरी सतह के चित्र खींचेगा । चंद्रमा पर जाने वाला यह यान घरेलू ध्रुवीय उपग्रह प्रक्षेपण वाहन से भेजा जाएगा। चंद्रयान-प्रथम मिशन से अत्याधुनिक वैज्ञानिक शोध के नए रास्ते खुलने की आशा जताई जा रही है। स्वदेश निर्मित प्रक्षेपण वाहन और अंतरिक्षयान क्षमताओं के कारण भारत महत्वाकांक्षी अंतरिक्ष योजनाओं को अंजाम देने में सक्षम है। इससे भविष्य में चन्द्रमा और मंगल ग्रह पर मानव-सहित विमान भेजने के लिये रास्ता खुलेगा। भारतीय अंतरिक्षयान प्रक्षेपण के अनुक्रम में यह २७वाँ उपक्रम है।
-</p>
- 
-</div><hr/>
- <div class="multiplecolumns hyphenate"   lang="bn"> 
-  
-<p>
-সত্যজিৎ রায় একজন ভারতীয় চলচ্চিত্র নির্মাতা ও বিংশ শতাব্দীর অন্যতম শ্রেষ্ঠ চলচ্চিত্র পরিচালক। কলকাতা শহরে সাহিত্য ও শিল্পের জগতে খ্যাতনামা এক বাঙালী পরিবারে তাঁর জন্ম হয়। তিনি কলকাতার প্রেসিডেন্সি কলেজ ও শান্তিনিকেতনে রবীন্দ্রনাথ ঠাকুরের প্রতিষ্ঠিত বিশ্বভারতী বিশ্ববিদ্যালয়ে পড়াশোনা করেন। সত্যজিতের কর্মজীবন একজন বাণিজ্যিক চিত্রকর হিসেবে শুরু হলেও প্রথমে কলকাতায় ফরাসী চলচ্চিত্র নির্মাতা জঁ রনোয়ারের সাথে সাক্ষাৎ ও পরে লন্ডন শহরে সফররত অবস্থায় ইতালীয় নব্য বাস্তবতাবাদী ছবি লাদ্রি দি বিচিক্লেত্তে দেখার পর তিনি চলচ্চিত্র নির্মাণে উদ্বুদ্ধ হন। চলচ্চিত্র নির্মাতা হিসেবে সত্যজিৎ ছিলেন বহুমুখী এবং তাঁর কাজের পরিমাণ বিপুল। তিনি ৩৭টি পূর্ণদৈর্ঘ্য কাহিনীচিত্র, প্রামাণ্যচিত্র ও স্বল্পদৈর্ঘ্য চলচ্চিত্র নির্মাণ করেন।  
-</p>
- 
-</div>
- <hr/>
- <div class="multiplecolumns hyphenate"   lang="gu"> 
-  
-<p>
-લોથલ તથા ધોળાવીરા માંથી સીંધુ ખીણની સંસ્કૃતિના સમૃદ્ધ અવશેષો મળી આવ્યા છે. પુરાતન કાળથી ગુજરાત હંમેશા તેના દરિયાકિનારા માટે જાણીતુ રહ્યું છે. અહિંના નગરો મૌર્ય અને ગુપ્ત સામ્રાજ્યમાં બંદરો અને વ્યાપાર ના કેન્દ્રો રહેલા છે. ત્યારબાદ ગુજરાતમાં કચ્છ, સૌરાષ્ટ્ર, પાટણ અને લાટ (દક્ષીણ ગુજરાત) એમ ચાર અલગ રાજ્યો એક સાથે અસ્તિત્વમાં રહેલા છે. ગુજરાતની સલ્તનતની સ્થાપના ૧૩મી સદી દરમ્યાન થઇ હતી જે ૧૫૭૬ સુધી સત્તામાં રહી, જે સમયે અકબરે ગુજરાત પર વિજય મેળવી તેને મુઘલ સામ્રાજ્યમાં સમાવી લીધું હતું. ૧૮મી સદીમાં મરાઠાઓએ તેના પર વિજય મેળવ્યો હતો. અંગ્રેજ શાસન કાળમાં અને આઝાદી પછી પણ છેક ૧૯૬૦ની ૩૦મી એપ્રીલ સુધી તે બૃહદ્ મુંબઈ રાજ્યનો ભાગ હતું. 
-</p>
- 
-</div>
-<hr/>
- <div class="multiplecolumns hyphenate"   lang="ta"> 
- <p>
-தமிழ் தமிழர்களின் தாய்மொழி. தமிழ் திராவிட மொழிக் குடும்பத்தின் முக்கிய மொழிகளில் ஒன்றும் செம்மொழியும் ஆகும். தென்னிந்தியாவில் தமிழ் நாட்டிலும் இலங்கையிலும், சிங்கப்பூரிலும் அதிக அளவில் பேசப்படும் இம்மொழி, துபாய், மலேசியா, தென்னாபிரிக்கா, மொரீசியஸ், பிஜி, ரீயுனியன், டிரினிடாட் போன்ற பல நாடுகளிலும் சிறிய அளவில் பேசப்படுகிறது. 1996-ம் ஆண்டு புள்ளி விவரப்படி உலகம் முழுவதிலும் 7 கோடி 70 இலட்சம் (77 மில்லியன்) மக்களால் பேசப்பட்டு, ஒரு மொழியை, தாய்மொழியாகக் கொண்டு பேசும் மக்களின் எண்ணிக்கை அடிப்படையில் வரிசைப்படுத்தப்பட்ட மொழிகளின் பட்டியலில், தமிழ், பதினெட்டாவது இடத்தில் உள்ளது.
-</p>
- 
-</div>
-
-<hr/>
- <div class="multiplecolumns hyphenate"   lang="te"> 
- <p>
-భారతీయ అంతరిక్ష పరిశోధనా సంస్థ అంతరిక్ష పరిశోధనల కోసం భారత ప్రభుత్వం నెలకొల్పిన సంస్థ. ఇస్రో గా ప్రసిద్ధమైన ఈ సంస్థ దేశాభివృద్ధి లక్ష్యంగా అంతరిక్ష విజ్ఞాన్ని అభివృద్ధి చేసే ఉద్దేశ్యంతో ఏర్పాటైంది. బెంగుళూరు కేంద్రంగా ఏర్పాటైన ఇస్రో, దేశంలోని వివిధ ప్రదేశాల్లో పరిశోధన, అభివృద్ధి సౌకర్యాలు కలిగి ఉంది. విక్రం సారాభాయ్ని భారత అంతరిక్ష పరిశోధనా వ్యవస్థకు పితామహుడిగా అభివర్ణిస్తారు. 1957లో రష్యా మొట్టమొదటి శాటిలైట్ అయిన స్పుత్నిక్‌ను ప్రయోగించినపుడు శాటిలైట్ యొక్క ఆవశ్యకతను అప్పటి ప్రధాన మంత్రి అయిన నెహ్రూకు వివరించి, 1962లో హోమీ బాబా పర్యవేక్షణలో  INCOSPAR ఏర్పరిచాడు. కేరళలో త్రివేండ్రం వద్ద  TERLS నెలకొల్పి అమెరికా, రష్యా నుండి దిగుమతి చేసుకున్న రాకెట్లను ప్రయోగిస్తూ అనతికాలంలోనే స్వదేశీయంగా పూర్తి స్థాయి రాకెట్లను తయారు చేసి ఉపరితల అధ్యయంలో పురోగతి సాధించారు. 1969లో ఇస్రో, అనగా  ISRO, 1972లో ప్రత్యేక అంతరిక్ష విభాగం ఏర్పడ్డాయి.
-</p>
- 
-</div>
-<hr/>
- <div class="multiplecolumns hyphenate"   lang="or"> 
- <p>
-ଉଇକିପେଡିଆର ଓଡ଼ିଆ ସଂସ୍କରଣର କାର୍ଯ୍ୟ ପ୍ରଥମ ଥର ପାଇଁ ୨୦୦୪ ମସିହାରେ ପ୍ରାରମ୍ଭ ହୋଇଥିଲା ଏହା ଏବେ ମଧ୍ୟ ନିର୍ମାଣଧୀନ । ଆମେ ଏହା ଆଶା କରୁଛୁ ଯେ ବ୍ୟବାହାରକାରୀ ମାନେ ଏହାକୁ ସମୃଦ୍ଧ କରିପାରିବେ । ଓଡ଼ିଆ ଉଇକିପେଡିଆରେ ଆପଣ କିଛି ଯୋଗ କିମ୍ବା ସମ୍ପାଦନା କରିବା ପାଇଁ ଚାହିଁଲେ, ସର୍ବ ପ୍ରଥମେ ଆପଣଙ୍କ ନିକଟରେ ଗୋଟିଏ ୟୁନିକୋଡ୍ ଭିତ୍ତିକ ଓଡ଼ିଆ ଅନ୍ତରା ପୃଷ୍ଠ ଥିବା ଉଚିତ୍ । ଏହା ମୁକ୍ତ ସଙ୍କେତ ହୋଇଥିବାରୁ ଏହାକୁ ଆପଣ ଇଣ୍ଟରନେଟରୁ ମାଗଣାରେ ପାଇପାରିବେ । ଆପଣ ଇଂରାଜୀ ଉଇକିପେଡିଆକୁ ଅନୁବାଦ କରି କିମ୍ବା ନିକଟ ଅତୀତରେ ହୋଇଥିବା ଗୁରୁତ୍ଵପୂର୍ଣ୍ଣ ଘଟଣା ମାନଙ୍କୁ ଯୋଗ କରି, ଓଡ଼ିଆ ୱିକିପେଡିଆକୁ ସମୃଦ୍ଧ କରିପାରିବ । କୌଣସି ନୂତନ ପାଠ୍ୟ ଯୋଗ କରିବା ପୂର୍ବରୁ ଆପଣଙ୍କୁ ଏହା ଧ୍ୟାନ ରଖିବା ପାଇଁ ହେବ ଯେ, ଏହି ପୃଷ୍ଠାରେ ଅନ୍ୟ ବ୍ୟବାହାରକାରୀ ମାନଙ୍କ ପାଇଁ ସମ୍ପାଦନର ସୁଯୋଗ ରହିବା ଉଚିତ । କୌଣସି ବିଷୟବସ୍ତୁର ସ୍ବତଃ ସଂରକ୍ଷଣ ଉଇକିପେଡିଆର ନିୟମକୁ ଅବମାନନା କରିଥାଏ । ବ୍ୟବାହାରକାରୀ ମାନେ କେବଳ ତାଙ୍କର ନିଜ ଲେଖାକୁ ସମ୍ପାଦନ କରିପାରିବେ । ଉଇକିପେଡିଆର ନିୟମ, କର୍ମ ପଦ୍ଧତି ଏବଂ ଅନ୍ୟାନ୍ୟ ସୂଚନା ପାଇଁ Wikipedia:ଆଲୋଚନା ସଭା-- କୁ ଯାଇ ଆଲୋଚନା କରନ୍ତୁ।
-</p>
- 
-</div>
-<hr/>
- <div class="multiplecolumns hyphenate"   lang="pa"> 
- <p>
-ਵਿਕਿਪੀਡਿਆ ਇੱਕ ਬਹੁ-ਭਾਸ਼ਾਈ ਪਰਿਯੋਜਨਾ ਹੈ ਜਿਸ ਵਿਚ ਸਾਡੇ ਮੈਂਬਰ ਅਤੇ ਇਸ ਵੈੱਬ-ਸਾਇਟ ਦੇ ਦਰਸ਼ਕ ਹਰ ਤਰ੍ਹਾਂ ਦੇ ਲੇਖ, ਜੋ ਇੰਟਰਨੈੱਟ ਰਾਹੀਂ ਸਾਰੇ ਪੰਜਾਬੀਆਂ ਲਈ ਲਾਭਦਾਇਕ ਹੋਣ, ਲਿਖ ਸਕਦੇ ਹਨ। ਇਸ ਤਰ੍ਹਾਂ ਵਿਕਿਪੀਡਿਆ ਇਕ ਆਜ਼ਾਦ ਵਿਸ਼ਵਕੋਸ਼ ਦਾ ਕੰਮ ਦੇਵੇਗਾ, ਮਤਲਬ ਕਿ ਇਹ ਰਚਨਾ-ਮਲਕੀਅਤ ਤੋਂ ਮੁਕਤ ਹੋਵੇਗੀ।ਵਿਕਿਪੀਡਿਆ ਇੱਕ ਬਹੁ-ਭਾਸ਼ਾਈ ਪਰਿਯੋਜਨਾ ਹੈ ਜਿਸ ਵਿਚ ਸਾਡੇ ਮੈਂਬਰ ਅਤੇ ਇਸ ਵੈੱਬ-ਸਾਇਟ ਦੇ ਦਰਸ਼ਕ ਹਰ ਤਰ੍ਹਾਂ ਦੇ ਲੇਖ, ਜੋ ਇੰਟਰਨੈੱਟ ਰਾਹੀਂ ਸਾਰੇ ਪੰਜਾਬੀਆਂ ਲਈ ਲਾਭਦਾਇਕ ਹੋਣ, ਲਿਖ ਸਕਦੇ ਹਨ। ਇਸ ਤਰ੍ਹਾਂ ਵਿਕਿਪੀਡਿਆ ਇਕ ਆਜ਼ਾਦ ਵਿਸ਼ਵਕੋਸ਼ ਦਾ ਕੰਮ ਦੇਵੇਗਾ, ਮਤਲਬ ਕਿ ਇਹ ਰਚਨਾ-ਮਲਕੀਅਤ ਤੋਂ ਮੁਕਤ ਹੋਵੇਗੀ।
-</p>
- 
-</div>
-    </body>
-</html>


=====================================
web/patterns/bn.js deleted
=====================================
--- a/web/patterns/bn.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// For questions about the Bengali hyphenation patterns
-// ask Santhosh Thottingal (santhosh dot thottingal at gmail dot com)
-Hyphenator.languages.bn = {
-	leftmin : 2,
-	rightmin : 2,
-	shortestPattern : 1,
-	longestPattern : 1,
-	specialChars : unescape('আঅইঈউঊঋএঐঔকগখঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহিীাুূৃোোৈৌৗ্ঃং%u200D'),
-	patterns : {
-		2 : 'অ1আ1ই1ঈ1উ1ঊ1ঋ1এ1ঐ1ঔ1ি1া1ী1ু1ৃ1ে1ো1ৌ1ৗ1্2ঃ1ং11ক1গ1খ1ঘ1ঙ1চ1ছ1জ1ঝ1ঞ1ট1ঠ1ড1ঢ1ণ1ত1থ1দ1ধ1ন1প1ফ1ব1ভ1ম1য1র1ল1শ1ষ1স1হ',
-		3 : '2ঃ12ং1'	
-	}
-};


=====================================
web/patterns/gu.js deleted
=====================================
--- a/web/patterns/gu.js
+++ /dev/null
@@ -1,12 +0,0 @@
-// For questions about the Gujarati hyphenation patterns
-// ask Santhosh Thottingal (santhosh dot thottingal at gmail dot com)
-Hyphenator.languages.gu = {
-	leftmin : 2,
-	rightmin : 2,
-	shortestPattern : 1,
-	longestPattern : 1,
-	specialChars : unescape('આઅઇઈઉઊઋએઐઔકગખઘઙચછજઝઞટઠડઢણતથદધનપફબભમયરલવશષસહળિીાુૂૃેાોૈૌ્ઃં%u200D'),
-	patterns : {
-		2 : 'અ1આ1ઇ1ઈ1ઉ1ઊ1ઋ1એ1ઐ1ઔ1િ1ા1ી1ુ1ૂ1ૃ1ે1ો1ૌ1્2ઃ1ં11ક1ગ1ખ1ઘ1ઙ1ચ1છ1જ1ઝ1ઞ1ટ1ઠ1ડ1ઢ1ણ1ત1થ1દ1ધ1ન1પ1ફ1બ1ભ1મ1ય1ર1લ1વ1શ1ષ1સ1હ1ળ'
-	}
-};


=====================================
web/patterns/hi.js deleted
=====================================
--- a/web/patterns/hi.js
+++ /dev/null
@@ -1,12 +0,0 @@
-// For questions about the Hindi hyphenation patterns
-// ask Santhosh Thottingal (santhosh dot thottingal at gmail dot com)
-Hyphenator.languages.hi = {
-	leftmin : 2,
-	rightmin : 2,
-	shortestPattern : 1,
-	longestPattern : 1,
-	specialChars : unescape('आअइईउऊऋऎएऐऒऔकगखघङचछजझञटठडढणतथदधनपफबभमयरलवशषसहळऴऱिीाुूृॆेॊाोैौ्ःं%u200D'),
-	patterns : {
-		2 : 'अ1आ1इ1ई1उ1ऊ1ऋ1ऎ1ए1ऐ1ऒ1औ1ि1ा1ी1ु1ू1ृ1ॆ1े1ॊ1ो1ौ1्2ः1ं11क1ग1ख1घ1ङ1च1छ1ज1झ1ञ1ट1ठ1ड1ढ1ण1त1थ1द1ध1न1प1फ1ब1भ1म1य1र1ल1व1श1ष1स1ह1ळ1ऴ1ऱ'
-	}
-};


=====================================
web/patterns/kn.js deleted
=====================================
--- a/web/patterns/kn.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// For questions about the Kannada hyphenation patterns
-// ask Santhosh Thottingal (santhosh dot thottingal at gmail dot com)
-Hyphenator.languages.kn = {
-	leftmin : 2,
-	rightmin : 2,
-	shortestPattern : 1,
-	longestPattern : 3,
-	specialChars : 'ಆಅಇಈಉಊಋಎಏಐಒಔಕಗಖಘಙಚಛಜಝಞಟಠಡಢಣತಥದಧನಪಫಬಭಮಯರಲವಶಷಸಹಳಱಿೀಾುೂೃೆೇೊಾೋೈೌ್ಃಂ',
-	patterns : {
-		2 : 'ಅ1ಆ1ಇ1ಈ1ಉ1ಊ1ಋ1ಎ1ಏ1ಐ1ಒ1ಔ1ೀ1ು1ೂ1ೃ1ೆ1ೇ1ೊ1ೋ1ೌ1್2ಃ1ಂ11ಕ1ಗ1ಖ1ಘ1ಙ1ಚ1ಛ1ಜ1ಝ1ಞ1ಟ1ಠ1ಡ1ಢ1ಣ1ತ1ಥ1ದ1ಧ1ನ1ಪ1ಫ1ಬ1ಭ1ಮ1ಯ1ರ1ಲ1ವ1ಶ1ಷ1ಸ1ಹ1ಳ1ಱ',
-		3 : '2ಃ12ಂ1'
-	}
-};


=====================================
web/patterns/ml.js deleted
=====================================
--- a/web/patterns/ml.js
+++ /dev/null
@@ -1,14 +0,0 @@
-// For questions about the Malayalam hyphenation patterns
-// ask Santhosh Thottingal (santhosh dot thottingal at gmail dot com)
-Hyphenator.languages.ml = {
-	leftmin : 2,
-	rightmin : 2,
-	shortestPattern : 1,
-	longestPattern : 3,
-	specialChars : unescape("അആഇഈഉഊഋൠഌൡഎഏഐഒഓഔാിീുൂൃെേൈൊോൌൗകഖഗഘങചഛജഝഞടഠഡഢണതഥദധനപഫബഭമയരറലളഴവശഷസഹഃം്ൺൻർൽൾൿ%u200D"),
-	patterns : {
-		2 : "ാ1ി1ീ1ു1ൂ1ൃ1െ1േ1ൈ1ൊ1ോ1ൌ1ൗ11ക1ഖ1ഗ1ഘ1ങ1ച1ഛ1ജ1ഝ1ഞ1ട1ഠ1ഡ1ഢ1ണ1ത1ഥ1ദ1ധ1ന1പ1ഫ1ബ1ഭ1മ1യ1ര1റ1ല1ള1ഴ1വ1ശ1ഷ1സ1ഹ2ൺ2ൻ2ർ2ൽ2ൾ2ൿ",
-        3 : "1അ11ആ11ഇ11ഈ11ഉ11ഊ11ഋ11ൠ11ഌ11ൡ11എ11ഏ11ഐ11ഒ11ഓ11ഔ12ഃ12ം12്2ന്2ര്2ള്2ല്2ക്2ണ്2",
-		4 : unescape("2ന്%u200D2ര്%u200D2ല്%u200D2ള്%u200D2ണ്%u200D")
-	}
-};


=====================================
web/patterns/or.js deleted
=====================================
--- a/web/patterns/or.js
+++ /dev/null
@@ -1,14 +0,0 @@
-// For questions about the Oriya hyphenation patterns
-// ask Santhosh Thottingal (santhosh dot thottingal at gmail dot com)
-Hyphenator.languages.or = {
-	leftmin : 2,
-	rightmin : 2,
-	shortestPattern : 1,
-	longestPattern : 3,
-	specialChars : unescape('ଆଅଇଈଉଊଋଏଐଔକଗଖଘଙଚଛଜଝଞଟଠଡଢଣତଥଦଧନପଫବଭମଯରଲଵଶଷସହଳିୀାୁୂୃୋୋୈୌୗ୍ଃଂ%u200D'),
-	patterns : {
-		2 : 'ଅ1ଆ1ଇ1ଈ1ଉ1ଊ1ଋ1ଏ1ଐ1ଔ1ି1ା1ୀ1ୁ1ୂ1ୃ1େ1ୋ1ୌ1ୗ1୍2ଃ1ଂ11କ1ଖ1ଘ1ଙ1ଚ1ଛ1ଜ1ଝ1ଞ1ଟ1ଠ1ଡ1ଢ1ଣ1ତ1ଥ1ଦ1ଧ1ନ1ପ1ଫ1ବ1ଭ1ମ1ଯ1ର1ଲ1ଵ1ଶ1ଷ1ସ1ହ1ଳ',
-		3 : '1ଗ1',
-		4 : unescape('2ନ୍%u200D2ର୍%u200D2ଲ୍%u200D2ଳ୍%u200D2ଣ୍%u200D')
-	}
-};
\ No newline at end of file


=====================================
web/patterns/pa.js deleted
=====================================
--- a/web/patterns/pa.js
+++ /dev/null
@@ -1,12 +0,0 @@
-// For questions about the Panjabi hyphenation patterns
-// ask Santhosh Thottingal (santhosh dot thottingal at gmail dot com)
-Hyphenator.languages.pa = {
-	leftmin : 2,
-	rightmin : 2,
-	shortestPattern : 1,
-	longestPattern : 1,
-	specialChars : unescape('ਆਅਇਈਉਊਏਐਔਕਗਖਘਙਚਛਜਝਞਟਠਡਢਣਤਥਦਧਨਪਫਬਭਮਯਰਲਵਸ਼ਸਹਲ਼ਿੀਾੁੂੇਾੋੈੌ੍ਃ%u0A02%u200D'),
-	patterns : {
-		2 : unescape('ਅ1ਆ1ਇ1ਈ1ਉ1ਊ1ਏ1ਐ1ਔ1ਿ1ਾ1ੀ1ੁ1ੂ1ੇ1ੋ1ੌ1੍2ਃ1%u0A0211ਕ1ਗ1ਖ1ਘ1ਙ1ਚ1ਛ1ਜ1ਝ1ਞ1ਟ1ਠ1ਡ1ਢ1ਣ1ਤ1ਥ1ਦ1ਧ1ਨ1ਪ1ਫ1ਬ1ਭ1ਮ1ਯ1ਰ1ਲ1ਵ1ਸ਼1ਸ1ਹ1ਲ਼')
-		}
-};


=====================================
web/patterns/ta.js deleted
=====================================
--- a/web/patterns/ta.js
+++ /dev/null
@@ -1,12 +0,0 @@
-// For questions about the Tamil hyphenation patterns
-// ask Santhosh Thottingal (santhosh dot thottingal at gmail dot com)
-Hyphenator.languages.ta = {
-	leftmin : 2,
-	rightmin : 2,
-	shortestPattern : 1,
-	longestPattern : 1,
-	specialChars : 'ஆஅஇஈஉஊஎஏஐஒஔகஙசஜஞடணதநபமயரலவஶஷஸஹளழறிீாுூெேொாோைௌௗ்ஃஂ',
-	patterns : {
-		2 : 'அ1ஆ1இ1ஈ1உ1ஊ1எ1ஏ1ஐ1ஒ1ஔ1ி1ா1ீ1ு1ூ1ெ1ே1ொ1ோ1ௌ1ௗ1்2ஃ1ஂ11க1ங1ச1ஜ1ஞ1ட1ண1த1ந1ப1ம1ய1ர1ல1வ1ஶ1ஷ1ஸ1ஹ1ள1ழ1ற'
-	}
-};
\ No newline at end of file


=====================================
web/patterns/te.js deleted
=====================================
--- a/web/patterns/te.js
+++ /dev/null
@@ -1,12 +0,0 @@
-// For questions about the Telugu hyphenation patterns
-// ask Santhosh Thottingal (santhosh dot thottingal at gmail dot com)
-Hyphenator.languages.te = {
-	leftmin : 2,
-	rightmin : 2,
-	shortestPattern : 1,
-	longestPattern : 1,
-	specialChars : 'ఆఅఇఈఉఊఋఎఏఐఒఔకగఖఘఙచఛజఝఞటఠడఢణతథదధనపఫబభమయరలవశషసహళఱిీాుూృెేొాోైౌ్ఃం',
-	patterns : {
-		2 : 'అ1ఆ1ఇ1ఈ1ఉ1ఊ1ఋ1ఎ1ఏ1ఐ1ఒ1ఔ1ి1ా1ీ1ు1ూ1ృ1ె1ే1ొ1ో1ౌ1్2ః1ం11క1గ1ఖ1ఘ1ఙ1చ1ఛ1జ1ఝ1ఞ1ట1ఠ1డ1ఢ1ణ1త1థ1ద1ధ1న1ప1ఫ1బ1భ1మ1య1ర1ల1వ1శ1ష1స1హ1ళ1ఱ'
-	}
-};



View it on GitLab: https://gitlab.com/smc/hyphenation/commit/d38c035e18322d90cbae5680d29bb29d2d51da33
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.smc.org.in/pipermail/discuss-smc.org.in/attachments/20160116/9e0576b6/attachment.html>


More information about the discuss mailing list