/*
 * Handlers.cs - Implementation of the "I18N.Common.Handlers" class.
 *
 * Copyright (c) 2002  Southern Storm Software, Pty Ltd
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the "Software"),
 * to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 * and/or sell copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included
 * in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 * OTHER DEALINGS IN THE SOFTWARE.
 */

namespace I18N.Common
{

using System;
using System.Collections;

// This class provides an internal list of handlers, for runtime
// engines that do not implement the altered "GetFile" semantics.
// The list must be kept up to date manually.

public sealed class Handlers
{
    public static readonly String[] List = {
        "I18N.CJK.CP932",
        "I18N.CJK.CP936",
        "I18N.CJK.CP949",
        "I18N.CJK.CP950",
        "I18N.CJK.ENCbig5",
        "I18N.CJK.ENCgb2312",
        "I18N.CJK.ENCshift_jis",
        "I18N.CJK.ENCuhc",
        "I18N.MidEast.CP1254",
        "I18N.MidEast.ENCwindows_1254",
        "I18N.MidEast.CP1255",
        "I18N.MidEast.ENCwindows_1255",
        "I18N.MidEast.CP1256",
        "I18N.MidEast.ENCwindows_1256",
        "I18N.MidEast.CP28596",
        "I18N.MidEast.ENCiso_8859_6",
        "I18N.MidEast.CP28598",
        "I18N.MidEast.ENCiso_8859_8",
        "I18N.MidEast.CP28599",
        "I18N.MidEast.ENCiso_8859_9",
        "I18N.MidEast.CP38598",
        "I18N.MidEast.ENCwindows_38598",
        "I18N.Other.CP1251",
        "I18N.Other.ENCwindows_1251",
        "I18N.Other.CP1257",
        "I18N.Other.ENCwindows_1257",
        "I18N.Other.CP1258",
        "I18N.Other.ENCwindows_1258",
        "I18N.Other.CP20866",
        "I18N.Other.ENCkoi8_r",
        "I18N.Other.CP21866",
        "I18N.Other.ENCkoi8_u",
        "I18N.Other.CP28594",
        "I18N.Other.ENCiso_8859_4",
        "I18N.Other.CP28595",
        "I18N.Other.ENCiso_8859_5",
        "I18N.Other.ISCIIEncoding",
        "I18N.Other.CP57002",
        "I18N.Other.CP57003",
        "I18N.Other.CP57004",
        "I18N.Other.CP57005",
        "I18N.Other.CP57006",
        "I18N.Other.CP57007",
        "I18N.Other.CP57008",
        "I18N.Other.CP57009",
        "I18N.Other.CP57010",
        "I18N.Other.CP57011",
        "I18N.Other.ENCx_iscii_de",
        "I18N.Other.ENCx_iscii_be",
        "I18N.Other.ENCx_iscii_ta",
        "I18N.Other.ENCx_iscii_te",
        "I18N.Other.ENCx_iscii_as",
        "I18N.Other.ENCx_iscii_or",
        "I18N.Other.ENCx_iscii_ka",
        "I18N.Other.ENCx_iscii_ma",
        "I18N.Other.ENCx_iscii_gu",
        "I18N.Other.ENCx_iscii_pa",
        "I18N.Other.CP874",
        "I18N.Other.ENCwindows_874",
        "I18N.Rare.CP1026",
        "I18N.Rare.ENCibm1026",
        "I18N.Rare.CP1047",
        "I18N.Rare.ENCibm1047",
        "I18N.Rare.CP1140",
        "I18N.Rare.ENCibm01140",
        "I18N.Rare.CP1141",
        "I18N.Rare.ENCibm01141",
        "I18N.Rare.CP1142",
        "I18N.Rare.ENCibm01142",
        "I18N.Rare.CP1143",
        "I18N.Rare.ENCibm01143",
        "I18N.Rare.CP1144",
        "I18N.Rare.ENCibm1144",
        "I18N.Rare.CP1145",
        "I18N.Rare.ENCibm1145",
        "I18N.Rare.CP1146",
        "I18N.Rare.ENCibm1146",
        "I18N.Rare.CP1147",
        "I18N.Rare.ENCibm1147",
        "I18N.Rare.CP1148",
        "I18N.Rare.ENCibm1148",
        "I18N.Rare.CP1149",
        "I18N.Rare.ENCibm1149",
        "I18N.Rare.CP20273",
        "I18N.Rare.ENCibm273",
        "I18N.Rare.CP20277",
        "I18N.Rare.ENCibm277",
        "I18N.Rare.CP20278",
        "I18N.Rare.ENCibm278",
        "I18N.Rare.CP20280",
        "I18N.Rare.ENCibm280",
        "I18N.Rare.CP20284",
        "I18N.Rare.ENCibm284",
        "I18N.Rare.CP20285",
        "I18N.Rare.ENCibm285",
        "I18N.Rare.CP20290",
        "I18N.Rare.ENCibm290",
        "I18N.Rare.CP20297",
        "I18N.Rare.ENCibm297",
        "I18N.Rare.CP20420",
        "I18N.Rare.ENCibm420",
        "I18N.Rare.CP20424",
        "I18N.Rare.ENCibm424",
        "I18N.Rare.CP20871",
        "I18N.Rare.ENCibm871",
        "I18N.Rare.CP21025",
        "I18N.Rare.ENCibm1025",
        "I18N.Rare.CP37",
        "I18N.Rare.ENCibm037",
        "I18N.Rare.CP500",
        "I18N.Rare.ENCibm500",
        "I18N.Rare.CP708",
        "I18N.Rare.ENCasmo_708",
        "I18N.Rare.CP852",
        "I18N.Rare.ENCibm852",
        "I18N.Rare.CP855",
        "I18N.Rare.ENCibm855",
        "I18N.Rare.CP857",
        "I18N.Rare.ENCibm857",
        "I18N.Rare.CP858",
        "I18N.Rare.ENCibm00858",
        "I18N.Rare.CP862",
        "I18N.Rare.ENCibm862",
        "I18N.Rare.CP864",
        "I18N.Rare.ENCibm864",
        "I18N.Rare.CP866",
        "I18N.Rare.ENCibm866",
        "I18N.Rare.CP869",
        "I18N.Rare.ENCibm869",
        "I18N.Rare.CP870",
        "I18N.Rare.ENCibm870",
        "I18N.Rare.CP875",
        "I18N.Rare.ENCibm875",
        "I18N.West.CP10000",
        "I18N.West.ENCmacintosh",
        "I18N.West.CP10079",
        "I18N.West.ENCx_mac_icelandic",
        "I18N.West.CP1250",
        "I18N.West.ENCwindows_1250",
        "I18N.West.CP1252",
        "I18N.West.ENCwindows_1252",
        "I18N.West.CP1253",
        "I18N.West.ENCwindows_1253",
        "I18N.West.CP28592",
        "I18N.West.ENCiso_8859_2",
        "I18N.West.CP28593",
        "I18N.West.ENCiso_8859_3",
        "I18N.West.CP28597",
        "I18N.West.ENCiso_8859_7",
        "I18N.West.CP28605",
        "I18N.West.ENCiso_8859_15",
        "I18N.West.CP437",
        "I18N.West.ENCibm437",
        "I18N.West.CP850",
        "I18N.West.ENCibm850",
        "I18N.West.CP860",
        "I18N.West.ENCibm860",
        "I18N.West.CP861",
        "I18N.West.ENCibm861",
        "I18N.West.CP863",
        "I18N.West.ENCibm863",
        "I18N.West.CP865",
        "I18N.West.ENCibm865"
    };
	
	static Hashtable aliases;
	public static string GetAlias (string name)
	{
		if (aliases == null)
			BuildHash ();

		return aliases [name] as string;
	}

	static void BuildHash ()
	{
		aliases = new Hashtable (new CaseInsensitiveHashCodeProvider (),
					 new CaseInsensitiveComparer ());

		aliases.Add ("arabic", "iso_8859_6");
		aliases.Add ("csISOLatinArabic", "iso_8859_6");
		aliases.Add ("ECMA_114", "iso_8859_6");
		aliases.Add ("ISO_8859_6:1987", "iso_8859_6");
		aliases.Add ("iso_ir_127", "iso_8859_6");

		aliases.Add ("cp1256" ,"windows_1256");

		aliases.Add ("csISOLatin4", "iso_8859_4");
		aliases.Add ("ISO_8859_4:1988", "iso_8859_4");
		aliases.Add ("iso_ir_110", "iso_8859_4");
		aliases.Add ("l4", "iso_8859_4");
		aliases.Add ("latin4", "iso_8859_4");

		aliases.Add ("cp852" ,"ibm852");

		aliases.Add ("csISOLatin2", "iso_8859_2");
		aliases.Add ("iso_8859_2:1987", "iso_8859_2");
		aliases.Add ("iso8859_2", "iso_8859_2");
		aliases.Add ("iso_ir_101", "iso_8859_2");
		aliases.Add ("l2", "iso_8859_2");
		aliases.Add ("latin2", "iso_8859_2");

		aliases.Add ("x-cp1250", "windows_1250");

		aliases.Add ("chinese", "gb2312");
		aliases.Add ("CN-GB", "gb2312");
		aliases.Add ("csGB2312", "gb2312");
		aliases.Add ("csGB231280", "gb2312");
		aliases.Add ("csISO58GB231280", "gb2312");
		aliases.Add ("GB_2312_80", "gb2312");
		aliases.Add ("GB231280", "gb2312");
		aliases.Add ("GB2312_80", "gb2312");
		aliases.Add ("GBK", "gb2312");
		aliases.Add ("iso_ir_58", "gb2312");

		aliases.Add ("cn-big5", "big5");
		aliases.Add ("csbig5", "big5");
		aliases.Add ("x-x-big5", "big5");

		aliases.Add ("cp866", "ibm866");

		aliases.Add ("csISOLatin5", "iso_8859_5");
		aliases.Add ("csISOLatinCyrillic", "iso_8859_5");
		aliases.Add ("cyrillic", "iso_8859_5");
		aliases.Add ("ISO_8859_5:1988", "iso_8859_5");
		aliases.Add ("iso_ir_144", "iso_8859_5");
		aliases.Add ("l5", "iso_8859_5");

		aliases.Add ("csKOI8R", "koi8_r");
		aliases.Add ("koi", "koi8_r");
		aliases.Add ("koi8", "koi8_r");
		aliases.Add ("koi8r", "koi8_r");

		aliases.Add ("koi8ru", "koi8_u");

		aliases.Add ("x-cp1251", "windows_1251");

		aliases.Add ("csISOLatinGreek", "iso_8859_7");
		aliases.Add ("ECMA_118", "iso_8859_7");
		aliases.Add ("ELOT_928", "iso_8859_7");
		aliases.Add ("greek", "iso_8859_7");
		aliases.Add ("greek8", "iso_8859_7");
		aliases.Add ("ISO_8859_7:1987", "iso_8859_7");
		aliases.Add ("iso_ir_126", "iso_8859_7");

		aliases.Add ("csISOLatinHebrew", "iso_8859_8");
		aliases.Add ("hebrew", "iso_8859_8");
		aliases.Add ("ISO_8859_8:1988", "iso_8859_8");
		aliases.Add ("iso_ir_138", "iso_8859_8");

		aliases.Add ("csShiftJIS", "shift_jis");
		aliases.Add ("csWindows31J", "shift_jis");
		aliases.Add ("ms_Kanji", "shift_jis");
		aliases.Add ("shift-jis", "shift_jis");
		aliases.Add ("x-ms-cp932", "shift_jis");
		aliases.Add ("x-sjis", "shift_jis");

		aliases.Add ("csISOLatin3", "iso_8859_3");
		aliases.Add ("ISO_8859_3:1988", "iso_8859_3");
		aliases.Add ("iso_ir_109", "iso_8859_3");
		aliases.Add ("l3", "iso_8859_3");
		aliases.Add ("latin3", "iso_8859_3");

		aliases.Add ("csISOLatin9", "iso_8859_15");
		aliases.Add ("l9", "iso_8859_15");
		aliases.Add ("latin9", "iso_8859_15");

		aliases.Add ("cp437", "ibm437");
		aliases.Add ("csPC8", "ibm437");
		aliases.Add ("CodePage437", "ibm437");

		aliases.Add ("DOS_874", "windows_874");
		aliases.Add ("iso_8859_11", "windows_874");
		aliases.Add ("TIS_620", "windows_874");
	}

	
}; // class Handlers

}; // namespace I18N.Common
