// custom srmtoupper() function, powered by srm inc.
function srmtoupper(value)
{
	value = value.toUpperCase();

	// A
	value = value.replace(/À/g, "A");
	value = value.replace(/Á/g, "A");
	value = value.replace(/Â/g, "A");
	value = value.replace(/Ã/g, "A");
	value = value.replace(/Ä/g, "A");
	value = value.replace(/Å/g, "A");
	value = value.replace(/Ǻ/g, "A");
	value = value.replace(/Ā/g, "A");
	value = value.replace(/Ă/g, "A");
	value = value.replace(/Ą/g, "A");
	value = value.replace(/Ǎ/g, "A");

	// B
	value = value.replace(/ß/g, "B");

	// C
	value = value.replace(/Ç/g, "C");
	value = value.replace(/Ć/g, "C");
	value = value.replace(/Ĉ/g, "C");
	value = value.replace(/Ċ/g, "C");
	value = value.replace(/Č/g, "C");

	// D
	value = value.replace(/Ð/g, "D");
	value = value.replace(/Ď/g, "D");
	value = value.replace(/Đ/g, "D");

	// E
	value = value.replace(/È/g, "E");
	value = value.replace(/É/g, "E");
	value = value.replace(/Ê/g, "E");
	value = value.replace(/Ë/g, "E");
	value = value.replace(/Ē/g, "E");
	value = value.replace(/Ĕ/g, "E");
	value = value.replace(/Ė/g, "E");
	value = value.replace(/Ę/g, "E");
	value = value.replace(/Ě/g, "E");

	// F
	value = value.replace(/ƒ/g, "F");

	// G
	value = value.replace(/Ĝ/g, "G");
	value = value.replace(/Ğ/g, "G");
	value = value.replace(/Ġ/g, "G");
	value = value.replace(/Ģ/g, "G");

	// H
	value = value.replace(/Ĥ/g, "H");
	value = value.replace(/Ħ/g, "H");

	// I
	value = value.replace(/Ì/g, "I");
	value = value.replace(/Í/g, "I");
	value = value.replace(/Î/g, "I");
	value = value.replace(/Ï/g, "I");
	value = value.replace(/Ĩ/g, "I");
	value = value.replace(/Ī/g, "I");
	value = value.replace(/Ĭ/g, "I");
	value = value.replace(/Į/g, "I");
	// value = value.replace(/İ/g, "I");
	value = value.replace(/Ǐ/g, "I");

	// J
	value = value.replace(/Ĵ/g, "J");

	// K
	value = value.replace(/Ķ/g, "K");

	// L
	value = value.replace(/Ĺ/g, "L");
	value = value.replace(/Ļ/g, "L");
	value = value.replace(/Ľ/g, "L");
	value = value.replace(/Ŀ/g, "L");
	value = value.replace(/Ł/g, "L");

	// N
	value = value.replace(/Ñ/g, "N");
	value = value.replace(/Ń/g, "N");
	value = value.replace(/Ņ/g, "N");
	value = value.replace(/Ň/g, "N");

	// O
	value = value.replace(/Ò/g, "O");
	value = value.replace(/Ó/g, "O");
	value = value.replace(/Ô/g, "O");
	value = value.replace(/Õ/g, "O");
	value = value.replace(/Ö/g, "O");
	value = value.replace(/Ø/g, "O");
	value = value.replace(/Ǒ/g, "O");
	value = value.replace(/Ǿ/g, "O");
	value = value.replace(/Ơ/g, "O");
	value = value.replace(/Ő/g, "O");
	value = value.replace(/Ō/g, "O");
	value = value.replace(/Ŏ/g, "O");

	// R
	value = value.replace(/Ŕ/g, "R");
	value = value.replace(/Ŗ/g, "R");
	value = value.replace(/Ř/g, "R");

	// S
	value = value.replace(/Ś/g, "S");
	value = value.replace(/Ŝ/g, "S");
	value = value.replace(/Ş/g, "S");
	value = value.replace(/Š/g, "S");
	value = value.replace(/ſ/g, "S");

	// T
	value = value.replace(/Ţ/g, "T");
	value = value.replace(/Ť/g, "T");
	value = value.replace(/Ŧ/g, "T");

	// U
	value = value.replace(/Ù/g, "U");
	value = value.replace(/Ú/g, "U");
	value = value.replace(/Û/g, "U");
	value = value.replace(/Ü/g, "U");
	value = value.replace(/Ǔ/g, "U");
	value = value.replace(/Ǖ/g, "U");
	value = value.replace(/Ǘ/g, "U");
	value = value.replace(/Ǚ/g, "U");
	value = value.replace(/Ǜ/g, "U");
	value = value.replace(/Ũ/g, "U");
	value = value.replace(/Ū/g, "U");
	value = value.replace(/Ŭ/g, "U");
	value = value.replace(/Ů/g, "U");
	value = value.replace(/Ű/g, "U");
	value = value.replace(/Ų/g, "U");
	value = value.replace(/Ư/g, "U");

	// W
	value = value.replace(/Ŵ/g, "W");

	// Y
	value = value.replace(/Ý/g, "Y");
	value = value.replace(/Ÿ/g, "Y");
	value = value.replace(/Ŷ/g, "Y");

	// Z
	value = value.replace(/Ź/g, "Z");
	value = value.replace(/Ż/g, "Z");
	value = value.replace(/Ž/g, "Z");

	// AE
	value = value.replace(/Æ/g, "AE");

	// AE
	value = value.replace(/Ǽ/g, "AE");

	// OE
	value = value.replace(/Œ/g, "OE");

	// IJ
	value = value.replace(/Ĳ/g, "IJ");

	return value;
}

// new custom srmtoupper() function, with better performances
// see http://stackoverflow.com/questions/990904/javascript-remove-accents-in-strings
function srmtoupper2(s)
{
   var r = s.toUpperCase();
   
   //r = r.replace(new RegExp("\\s",                'g'), ""); // any blank character
   r = r.replace(new RegExp("[ÀÁÂÃÄÅǺĀĂĄǍ]",      'g'), "A");
   r = r.replace(new RegExp("[ÆǼ]",               'g'), "AE");
   r = r.replace(new RegExp("[ß]",                'g'), "B");
   r = r.replace(new RegExp("[ÇĆĈĊČ]",            'g'), "C");
   r = r.replace(new RegExp("[ÐĎĐ]",              'g'), "D");
   r = r.replace(new RegExp("[ÈÉÊËĒĔĖĘĚ]",        'g'), "E");
   r = r.replace(new RegExp("[ƒ]",                'g'), "F");
   r = r.replace(new RegExp("[ÌÍÎÏĨĪĬĮİǏ]",       'g'), "I");
   r = r.replace(new RegExp("[Ĳ]",                'g'), "IJ");
   r = r.replace(new RegExp("[Ĵ]",                'g'), "J");
   r = r.replace(new RegExp("[Ķ]",                'g'), "K");
   r = r.replace(new RegExp("[ĹĻĽĿŁ]",            'g'), "L");
   r = r.replace(new RegExp("[ÑŃŅŇ]",             'g'), "N");
   r = r.replace(new RegExp("[ÒÓÔÕÖØǑǾƠŐŌŎ]",     'g'), "O");
   r = r.replace(new RegExp("[Œ]",                'g'), "OE");
   r = r.replace(new RegExp("[ÙÚÛÜǓǕǗǙǛŨŪŬŮŰŲƯ]", 'g'), "U");
   r = r.replace(new RegExp("[ÝŸŶ]",              'g'), "Y");
   r = r.replace(new RegExp("[ŹŻŽ]",              'g'), "Z");
   //r = r.replace(new RegExp("\\w",                'g'), ""); // any other non alpha character
   
   return r;
}

function scztoupper(value)
{
	value = value.toUpperCase();

	// A
	value = value.replace(/à/g, "À");
	value = value.replace(/á/g, "Á");
	value = value.replace(/â/g, "Â");
	value = value.replace(/ã/g, "Ã");
	value = value.replace(/ä/g, "Ä");
	value = value.replace(/å/g, "Å");
	value = value.replace(/ǻ/g, "Ǻ");
	value = value.replace(/ā/g, "Ā");
	value = value.replace(/ă/g, "Ă");
	value = value.replace(/ą/g, "Ą");
	value = value.replace(/ǎ/g, "Ǎ");

	// C
	value = value.replace(/ç/g, "Ç");
	value = value.replace(/ć/g, "Ć");
	value = value.replace(/ĉ/g, "Ĉ");
	value = value.replace(/ċ/g, "Ċ");
	value = value.replace(/č/g, "Č");

	// D
	value = value.replace(/ď/g, "Ď");
	value = value.replace(/đ/g, "Ð");

	// E
	value = value.replace(/è/g, "È");
	value = value.replace(/é/g, "É");
	value = value.replace(/ê/g, "Ê");
	value = value.replace(/ë/g, "Ë");
	value = value.replace(/ē/g, "Ē");
	value = value.replace(/ĕ/g, "Ĕ");
	value = value.replace(/ė/g, "Ė");
	value = value.replace(/ę/g, "Ę");
	value = value.replace(/ě/g, "Ě");

	// G
	value = value.replace(/ĝ/g, "Ĝ");
	value = value.replace(/ğ/g, "Ğ");
	value = value.replace(/ġ/g, "Ġ");
	value = value.replace(/ģ/g, "Ģ");

	// H
	value = value.replace(/ĥ/g, "Ĥ");
	value = value.replace(/ħ/g, "Ħ");

	// I
	value = value.replace(/ì/g, "Ì");
	value = value.replace(/í/g, "Í");
	value = value.replace(/î/g, "Î");
	value = value.replace(/ï/g, "Ï");
	value = value.replace(/ĩ/g, "Ĩ");
	value = value.replace(/ī/g, "Ī");
	value = value.replace(/ĭ/g, "Ĭ");
	value = value.replace(/į/g, "Į");
	value = value.replace(/ı/g, "İ");
	value = value.replace(/ǐ/g, "Ǐ");

	// J
	value = value.replace(/ĵ/g, "Ĵ");

	// K
	value = value.replace(/ķ/g, "Ķ");

	// L
	value = value.replace(/ĺ/g, "Ĺ");
	value = value.replace(/ļ/g, "Ļ");
	value = value.replace(/ľ/g, "Ľ");
	value = value.replace(/ŀ/g, "Ŀ");
	value = value.replace(/ł/g, "Ł");

	// N
	value = value.replace(/ñ/g, "Ñ");
	value = value.replace(/ń/g, "Ń");
	value = value.replace(/ņ/g, "Ņ");
	value = value.replace(/ň/g, "Ň");

	// O
	value = value.replace(/ò/g, "Ò");
	value = value.replace(/ó/g, "Ó");
	value = value.replace(/ô/g, "Ô");
	value = value.replace(/ő/g, "Õ");
	value = value.replace(/ö/g, "Ö");
	value = value.replace(/ø/g, "Ø");
	value = value.replace(/ǒ/g, "Ǒ");
	value = value.replace(/ǿ/g, "Ǿ");
	value = value.replace(/ơ/g, "Ơ");
	value = value.replace(/õ/g, "Ő");
	value = value.replace(/ō/g, "Ō");
	value = value.replace(/ŏ/g, "Ŏ");

	// R
	value = value.replace(/ŕ/g, "Ŕ");
	value = value.replace(/ŗ/g, "Ŗ");
	value = value.replace(/ř/g, "Ř");

	// S
	value = value.replace(/ś/g, "Ś");
	value = value.replace(/ŝ/g, "Ŝ");
	value = value.replace(/ş/g, "Ş");
	value = value.replace(/š/g, "Š");

	// T
	value = value.replace(/ţ/g, "Ţ");
	value = value.replace(/ť/g, "Ť");
	value = value.replace(/ŧ/g, "Ŧ");

	// U
	value = value.replace(/ù/g, "Ù");
	value = value.replace(/ú/g, "Ú");
	value = value.replace(/û/g, "Û");
	value = value.replace(/ü/g, "Ü");
	value = value.replace(/ǔ/g, "Ǔ");
	value = value.replace(/ǖ/g, "Ǖ");
	value = value.replace(/ǘ/g, "Ǘ");
	value = value.replace(/ǚ/g, "Ǚ");
	value = value.replace(/ǜ/g, "Ǜ");
	value = value.replace(/ũ/g, "Ũ");
	value = value.replace(/ū/g, "Ū");
	value = value.replace(/ŭ/g, "Ŭ");
	value = value.replace(/ů/g, "Ů");
	value = value.replace(/ű/g, "Ű");
	value = value.replace(/ų/g, "Ų");
	value = value.replace(/ư/g, "Ư");

	// W
	value = value.replace(/ŵ/g, "Ŵ");

	// Y
	value = value.replace(/ý/g, "Ý");
	value = value.replace(/ÿ/g, "Ÿ");
	value = value.replace(/ŷ/g, "Ŷ");

	// Z
	value = value.replace(/ź/g, "Ź");
	value = value.replace(/ż/g, "Ż");
	value = value.replace(/ž/g, "Ž");

	// AE
	value = value.replace(/æ/g, "Æ");

	// AE
	value = value.replace(/ǽ/g, "Ǽ");

	// OE
	value = value.replace(/œ/g, "Œ");

	// IJ
	value = value.replace(/ĳ/g, "Ĳ");

	return value;
}
