function LanguageSpecificTerm(name, langInfo) 
{
    /**
     * add a value for a particular language
     * @param {String} language		the language
     * @param {String} val		value for that language expressed using
     *					the unified CM transliteration scheme.
     */
    this.add = function(language, val) {
	language = language.toLowerCase();
	this.fLanguageInfo[language] = val;
    }

    /**
     * get the value for a particular language, expressed in unified CM 
     * transliteration scheme
     * @param {String} language		the language
     * @type String
     */
    this.getVal = function(language, nodefault) {
	language = language.toLowerCase();
	for (l in this.fLanguageInfo) {
	    if( l == language ) return this.fLanguageInfo[l];
	}
	if( nodefault) return "";
	return this.fLanguageInfo["default"];
    }

    /**
     * return the name of the term
     * @type String
     */
    this.name = function() { return this.fName; }

    /*
     * the name of the term
     * @type String
     * @private
     */
    this.fName = name;

    /**
     * information about values for various languages, which would include
     * a default value (element whose index  is "default")
     * @type String[langName]
     * @private
     */
    this.fLanguageInfo = new Array();

    this.fLanguageInfo["default"] = name;
    if( langInfo && langInfo.length ) {
	for(var i = 0; i < langInfo.length; i+=2 )
	    this.fLanguageInfo[langInfo[i]] = langInfo[i+1];
    }
}
/**
 * @class
 * represents a language specific term
 * @constructor
 * @param {String} name		the term name
 * @param {String[langName]}	(optional) values for different languages, 
 *				represented as an associative array, which 
 *				must contain an element whose index is 
 *				"default"). The values are to be in the 
 *				unified CM transliteration scheme. If this 
 *				parameter is not provided, default value 
 *				is set to the term name itself (which usually
 *				is not appropriate for any language)
 */
@class
represents a language specific term
@constructor
@param {String} name         the term name
@param {String[langName]}    (optional) values for different languages,
represented as an associative array, which
must contain an element whose index is
"default"). The values are to be in the
unified CM transliteration scheme. If this
parameter is not provided, default value
is set to the term name itself (which usually
is not appropriate for any language)
@class represents a language specific term @constructor @param { String } name the term name @param { String [ langName ] } ( optional ) values for different languages represented as an associative array which must contain an element whose index is " default " ) . The values are to be in the unified CM transliteration scheme . If this parameter is not provided default value is set to the term name itself ( which usually is not appropriate for any language )
function LanguageSpecificTerm(name, langInfo) 
{
    this.add = function(language, val) {
	language = language.toLowerCase();
	this.fLanguageInfo[language] = val;
    }
    this.getVal = function(language, nodefault) {
	language = language.toLowerCase();
	for (l in this.fLanguageInfo) {
	    if( l == language ) return this.fLanguageInfo[l];
	}
	if( nodefault) return "";
	return this.fLanguageInfo["default"];
    }
    this.name = function() { return this.fName; }
    this.fName = name;
    this.fLanguageInfo = new Array();
    this.fLanguageInfo["default"] = name;
    if( langInfo && langInfo.length ) {
	for(var i = 0; i < langInfo.length; i+=2 )
	    this.fLanguageInfo[langInfo[i]] = langInfo[i+1];
    }
}
function LanguageSpecificTerm ( name , langInfo ) { this . add = function ( language , val ) { language = language . toLowerCase ( ) ; this . fLanguageInfo [ language ] = val ; } this . getVal = function ( language , nodefault ) { language = language . toLowerCase ( ) ; for ( l in this . fLanguageInfo ) { if ( l == language ) return this . fLanguageInfo [ l ] ; } if ( nodefault ) return "" ; return this . fLanguageInfo [ "default" ] ; } this . name = function ( ) { return this . fName ; } this . fName = name ; this . fLanguageInfo = new Array ( ) ; this . fLanguageInfo [ "default" ] = name ; if ( langInfo && langInfo . length ) { for ( var i = 0 ; i < langInfo . length ; i += 2 ) this . fLanguageInfo [ langInfo [ i ] ] = langInfo [ i + 1 ] ; } }
@class
 represents a language specific term
 @constructor
 @param {String} name         the term name
 @param {String[langName]}    (optional) values for different languages,
                              represented as an associative array, which
                              must contain an element whose index is
                              "default").
@class represents a language specific term @constructor @param { String } name the term name @param { String [ langName ] } ( optional ) values for different languages represented as an associative array which must contain an element whose index is " default " ) .
/**
     * add a value for a particular language
     * @param {String} language		the language
     * @param {String} val		value for that language expressed using
     *					the unified CM transliteration scheme.
     */ /**
     * get the value for a particular language, expressed in unified CM 
     * transliteration scheme
     * @param {String} language		the language
     * @type String
     */ /**
     * return the name of the term
     * @type String
     */ /*
     * the name of the term
     * @type String
     * @private
     */ /**
     * information about values for various languages, which would include
     * a default value (element whose index  is "default")
     * @type String[langName]
     * @private
     */