
var emo_keys = null;
var emo_icons = null;
var emo_iconsCount = 0;
var emo_pageCount =1;
var emo_initOK = false;
var emo_iconWidth = 36;
var emo_iconHeight =36;
var emo_row = 5;
var emo_col = 10;

// 初始化首先定义表情快捷表，格式是 emo_keys[KeyString] = new Array(图片文件名(无扩展名), Tooltip文字)
// 注意 KeyString 的字符串中，使用特定符号时，前面必须增加2个反斜杠"\"，包括 ( ) [ ] | / * + ^ ，
// 而如果 KeyString 中需要使用反斜杠 \ ，则每个 \ 使用4个 \ 代替，即 "\\\\"。

function emoInit() {
	emo_keys = new Array();
	// 以下复杂的定义是为了支持多语言，可以将 langTxt_... 摘到语言串中
	emo_keys[":\\)"]			= new Array("001"		,typeof(langTxt_emo_Smile)!="undefined"?		langTxt_emo_Smile:		"微笑  :)  :-");
	emo_keys[":-\\)"]			= new Array("001"		,typeof(langTxt_emo_Smile)!="undefined"?		langTxt_emo_Smile:		"微笑  :)  :-)");
	emo_keys[":D"]				= new Array("003"		,typeof(langTxt_emo_Yock)!="undefined"?			langTxt_emo_Yock:		"笑得肚子都疼了  :D  :-D");
	emo_keys[":-D"]				= new Array("003"		,typeof(langTxt_emo_Yock)!="undefined"?			langTxt_emo_Yock:		"笑得肚子都疼了  :D  :-D");
	emo_keys[":B"]				= new Array("007"		,typeof(langTxt_emo_Simper)!="undefined"?		langTxt_emo_Simper:		"装傻,傻笑  :B  :-B");
	emo_keys[":-B"]				= new Array("007"		,typeof(langTxt_emo_Simper)!="undefined"?		langTxt_emo_Simper:		"装傻,傻笑  :B  :-B");
	emo_keys[";\\)"]			= new Array("012"		,typeof(langTxt_emo_Smirk)!="undefined"?		langTxt_emo_Smirk:		"得意地笑  ;)  ;-)");
	emo_keys[";-\\)"]			= new Array("012"		,typeof(langTxt_emo_Smirk)!="undefined"?		langTxt_emo_Smirk:		"得意地笑  ;)  ;-)");
	emo_keys[":P"]				= new Array("005"		,typeof(langTxt_emo_TongueOut)!="undefined"?	langTxt_emo_TongueOut:	"吐舌  :P  :-P");
	emo_keys[":-P"]				= new Array("005"		,typeof(langTxt_emo_TongueOut)!="undefined"?	langTxt_emo_TongueOut:	"吐舌  :P  :-P");
	emo_keys["\\[snicker\\]"]	= new Array("snicker"	,typeof(langTxt_emo_Snicker)!="undefined"?		langTxt_emo_Snicker:	"偷着乐  [snicker]");
	emo_keys["\\[simper\\]"]	= new Array("simper"	,typeof(langTxt_emo_Simper)!="undefined"?		langTxt_emo_Simper:		"傻乎乎的  [simper]");
	emo_keys["\\[expect\\]"]	= new Array("expect"	,typeof(langTxt_emo_Expect)!="undefined"?		langTxt_emo_Expect:		"好感动  [expect]");
	emo_keys[":\\$"]			= new Array("004"		,typeof(langTxt_emo_Shy)!="undefined"?			langTxt_emo_Shy:		"不好意思了  :$  :-$");
	emo_keys[":-\\$"]			= new Array("004"		,typeof(langTxt_emo_Shy)!="undefined"?			langTxt_emo_Shy:		"不好意思了  :$  :-$");
	emo_keys["\\(H\\)"]			= new Array("006"		,typeof(langTxt_emo_Cool)!="undefined"?			langTxt_emo_Cool:		"酷毙了  (H)  B-)");
	emo_keys["B-\\)"]			= new Array("006"		,typeof(langTxt_emo_Cool)!="undefined"?			langTxt_emo_Cool:		"酷毙了  (H)  B-)");
	emo_keys["\\[welcome\\]"]	= new Array("welcome"	,typeof(langTxt_emo_Welcome)!="undefined"?		langTxt_emo_Welcome:	"欢迎  [welcome]");
	emo_keys["\\[battered\\]"]	= new Array("battered"	,typeof(langTxt_emo_Battered)!="undefined"?		langTxt_emo_Battered:	"狠狠地扁  [battered]");
	emo_keys["\\[pitiful\\]"]	= new Array("pitiful"	,typeof(langTxt_emo_Pitiful)!="undefined"?		langTxt_emo_Pitiful:	"可怜,被欺负了  [pitiful]");
	emo_keys[":#"]				= new Array("009"		,typeof(langTxt_emo_DonNotTell)!="undefined"?	langTxt_emo_DonNotTell:	"别说了  :#  :-#   :X   :-X");
	emo_keys[":-#"]				= new Array("009"		,typeof(langTxt_emo_DonNotTell)!="undefined"?	langTxt_emo_DonNotTell:	"别说了  :#  :-#   :X   :-X");
	emo_keys[":X"]				= new Array("009"		,typeof(langTxt_emo_DonNotTell)!="undefined"?	langTxt_emo_DonNotTell:	"别说了  :#  :-#   :X   :-X");
	emo_keys[":-X"]				= new Array("009"		,typeof(langTxt_emo_DonNotTell)!="undefined"?	langTxt_emo_DonNotTell:	"别说了  :#  :-#   :X   :-X");
	emo_keys["\\[no\\]"]		= new Array("no"		,typeof(langTxt_emo_No)!="undefined"?			langTxt_emo_No:			"不  [no]");
	emo_keys[":~~"]				= new Array("016"		,typeof(langTxt_emo_Embarrassed)!="undefined"?	langTxt_emo_Embarrassed:	"汗  :~~");
	emo_keys["\\[coy\\]"]		= new Array("coy"		,typeof(langTxt_emo_Coy)!="undefined"?			langTxt_emo_Coy:		"扭捏  [coy]");
	emo_keys["\\[complaint\\]"]	= new Array("complaint"	,typeof(langTxt_emo_Complaint)!="undefined"?	langTxt_emo_Complaint:	"好委屈  [complaint]");
	emo_keys[":'\\("]			= new Array("011"		,typeof(langTxt_emo_Cry)!="undefined"?			langTxt_emo_Cry:		"痛哭流涕  :'(");
	emo_keys["\\[happy\\]"]		= new Array("happy"		,typeof(langTxt_emo_Happy)!="undefined"?		langTxt_emo_Happy:		"高兴  [happy]");
	emo_keys["\\/YB"]			= new Array("024"		,typeof(langTxt_emo_Hug)!="undefined"?			langTxt_emo_Hug:		"来抱抱  /YB  [hug]");
	emo_keys["\\[hug\\]"]		= new Array("024"		,typeof(langTxt_emo_Hug)!="undefined"?			langTxt_emo_Hug:		"来抱抱  /YB  [hug]");
	emo_keys["\\[nosebleed\\]"]	= new Array("nosebleed"	,typeof(langTxt_emo_Nosebleed)!="undefined"?	langTxt_emo_Nosebleed:	"喷鼻血了  [nosebleed]");
	emo_keys["\\[infatuated\\]"]= new Array("infatuated",typeof(langTxt_emo_Infatuated)!="undefined"?	langTxt_emo_Infatuated:	"迷恋  [infatuated]");
	emo_keys["\\[bemused\\]"]	= new Array("bemused"	,typeof(langTxt_emo_Bemused)!="undefined"?		langTxt_emo_Bemused:	"一头雾水  [bemused]");
	emo_keys[":-&"]				= new Array("053"		,typeof(langTxt_emo_Vomit)!="undefined"?		langTxt_emo_Vomit:		"吐  :-&");
	emo_keys[":-\\/"]			= new Array("010"		,typeof(langTxt_emo_Hit)!="undefined"?			langTxt_emo_Hit:		"揍你  :-/");
	emo_keys[":@"]				= new Array("021"		,typeof(langTxt_emo_Mad)!="undefined"?			langTxt_emo_Mad:		"愤怒  :@");
	emo_keys[":-O"]				= new Array("027"		,typeof(langTxt_emo_Exclaim)!="undefined"?		langTxt_emo_Exclaim:	"惊讶  :-O");
	emo_keys["@\\^@"]			= new Array("022"		,typeof(langTxt_emo_Dizzy)!="undefined"?		langTxt_emo_Dizzy:		"晕  @-)  @^@  @~@");
	emo_keys["@~@"]				= new Array("022"		,typeof(langTxt_emo_Dizzy)!="undefined"?		langTxt_emo_Dizzy:		"晕  @-)  @^@  @~@");
	emo_keys["@-\\)"]			= new Array("022"		,typeof(langTxt_emo_Dizzy)!="undefined"?		langTxt_emo_Dizzy:		"晕  @-)  @^@  @~@");
	emo_keys["\\+o\\("]			= new Array("Sick"		,typeof(langTxt_emo_Sick)!="undefined"?			langTxt_emo_Sick:		"病了  +o(");
	emo_keys[":\\?"]			= new Array("018"		,typeof(langTxt_emo_Question)!="undefined"?		langTxt_emo_Question:	"有疑问  :? :-?");
	emo_keys[":-\\?"]			= new Array("018"		,typeof(langTxt_emo_Question)!="undefined"?		langTxt_emo_Question:	"有疑问  :? :-?");
	emo_keys["\\(Y\\)"]			= new Array("ThumbsUp"	,typeof(langTxt_emo_ThumbsUp)!="undefined"?		langTxt_emo_ThumbsUp:	"牛！  (Y) ");
	emo_keys["\\[V\\]"]			= new Array("045"		,typeof(langTxt_emo_Great)!="undefined"?		langTxt_emo_Great:		"噢耶！  [V]");
	emo_keys["\\(F\\)"]			= new Array("flower"	,typeof(langTxt_emo_Flower)!="undefined"?		langTxt_emo_Flower:		"献花  (F) ");
	emo_keys["\\(K\\)"]			= new Array("kiss"		,typeof(langTxt_emo_Kiss)!="undefined"?			langTxt_emo_Kiss:		"吻你  (K)  :*  :-*");
	emo_keys[":\\*"]			= new Array("kiss"		,typeof(langTxt_emo_Kiss)!="undefined"?			langTxt_emo_Kiss:		"吻你  (K)  :*  :-*");
	emo_keys[":-\\*"]			= new Array("kiss"		,typeof(langTxt_emo_Kiss)!="undefined"?			langTxt_emo_Kiss:		"吻你  (K)  :*  :-*");
	emo_keys["\\[ok\\]"]		= new Array("ok"		,typeof(langTxt_emo_OK)!="undefined"?			langTxt_emo_OK:			"OK  [ok]");
	emo_keys["\\(HS\\)"]		= new Array("handshake"	,typeof(langTxt_emo_Handshake)!="undefined"?	langTxt_emo_Handshake:	"来握握手  (HS)  /WS	");
	emo_keys["\\/WS"]			= new Array("handshake"	,typeof(langTxt_emo_Handshake)!="undefined"?	langTxt_emo_Handshake:	"来握握手  (HS)  /WS");
	emo_keys["=D"]				= new Array("034"		,typeof(langTxt_emo_Handclap)!="undefined"?		langTxt_emo_Handclap:	"鼓掌  =D");
	emo_keys["\\[cheers\\]"]	= new Array("cheers"	,typeof(langTxt_emo_Cheers)!="undefined"?		langTxt_emo_Cheers:		"干杯庆祝  [cheers]");
	emo_keys["\\(L\\)"]			= new Array("heart"		,typeof(langTxt_emo_Heart)!="undefined"?		langTxt_emo_Heart:		"心  (L) ");
	emo_keys["\\[congratulate\\]"] = new Array("congratulate" 	,typeof(langTxt_emo_Congratulate)!="undefined"?	langTxt_emo_Congratulate:	"恭喜啦、谢谢啊  [congratulate] [thanks]");
	emo_keys["\\[thanks\\]"]	= new Array("congratulate"  	,typeof(langTxt_emo_Congratulate)!="undefined"?	langTxt_emo_Congratulate:	"恭喜啦、谢谢啊  [congratulate] [thanks]");
	emo_keys["\\[moneygrubber\\]"] = new Array("moneygrubber" 	,typeof(langTxt_emo_Moneygrubber)!="undefined"?	langTxt_emo_Moneygrubber:	"财迷  [moneygrubber]");
	emo_keys["\\(T\\)"]			= new Array("telephone"	,typeof(langTxt_emo_Telephone)!="undefined"?	langTxt_emo_Telephone:	"打电话  :-C (T) [p] [pp]");
	emo_keys[":-C"]				= new Array("telephone"	,typeof(langTxt_emo_Telephone)!="undefined"?	langTxt_emo_Telephone:	"打电话  :-C (T) [p] [pp]");
	emo_keys["\\[PP\\]"]		= new Array("telephone"	,typeof(langTxt_emo_Telephone)!="undefined"?	langTxt_emo_Telephone:	"打电话  :-C (T) [p] [pp]");
	emo_keys["\\[P\\]"]			= new Array("telephone"	,typeof(langTxt_emo_Telephone)!="undefined"?	langTxt_emo_Telephone:	"打电话  :-C (T) [p] [pp]");
	emo_keys["\\(8\\)"]			= new Array("music"		,typeof(langTxt_emo_Music)!="undefined"?		langTxt_emo_Music:		"音乐  (8)");
	emo_keys["\\[eat\\]"]		= new Array("eat"		,typeof(langTxt_emo_Eat)!="undefined"?			langTxt_emo_Eat:		"饭否  [eat]");
	emo_keys["\\*_\\*"]			= new Array("014"		,typeof(langTxt_emo_Sleep)!="undefined"?		langTxt_emo_Sleep:		"去觉觉  *_*  I-|");
	emo_keys["I-\\|"]			= new Array("014"		,typeof(langTxt_emo_Sleep)!="undefined"?		langTxt_emo_Sleep:		"去觉觉  *_*  I-|");
	emo_keys[":-h"]				= new Array("029"		,typeof(langTxt_emo_ByeBye)!="undefined"?		langTxt_emo_ByeBye:		"再见  :-h");
	emo_keys["\\[hi\\]"]		= new Array("hi"		,typeof(langTxt_emo_Hi)!="undefined"?			langTxt_emo_Hi:			"嗨  [hi]");
	emo_keys["\\(A\\)"]			= new Array("013"		,typeof(langTxt_emo_Angel)!="undefined"?		langTxt_emo_Angel:		"天使  (A)");
	emo_keys["\\(6\\)"]			= new Array("051"		,typeof(langTxt_emo_Devil)!="undefined"?		langTxt_emo_Devil:		"魔鬼  (6)");
	emo_keys["\\(I\\)"]			= new Array("bulb"		,typeof(langTxt_emo_Inspiration)!="undefined"?	langTxt_emo_Inspiration:	"灵感  (I) ");
	emo_keys["\\[shopping\\]"]	= new Array("shopping"	,typeof(langTxt_emo_Shopping)!="undefined"?		langTxt_emo_Shopping:	"购物  [shopping]");
	emo_keys["\\[web\\]"]		= new Array("web"		,typeof(langTxt_emo_SurfTheWeb)!="undefined"?	langTxt_emo_SurfTheWeb:	"上网  [web]");
	emo_keys["\\[bomb\\]"]		= new Array("bomb"		,typeof(langTxt_emo_Bomb)!="undefined"?			langTxt_emo_Bomb:		"炸弹  [bomb]");
	emo_keys["\\[thunder\\]"]	= new Array("thunder"	,typeof(langTxt_emo_Thunder)!="undefined"?		langTxt_emo_Thunder:	"雷劈  [thunder]");
	emo_keys["\\[pig\\]"]		= new Array("pig"		,typeof(langTxt_emo_Pig)!="undefined"?			langTxt_emo_Pig:		"猪  [pig]");
	emo_keys["\\[fortunecat\\]"]= new Array("fortunecat",typeof(langTxt_emo_FortuneCat)!="undefined"?	langTxt_emo_FortuneCat:	"招财猫  [fortunecat]");
	emo_keys["\\<:O\\)"]		= new Array("052"		,typeof(langTxt_emo_Jester)!="undefined"?		langTxt_emo_Jester:		"小丑  <:O)  #:O)");
	emo_keys["#:O\\)"]			= new Array("052"		,typeof(langTxt_emo_Jester)!="undefined"?		langTxt_emo_Jester:		"小丑  <:O)  #:O)");
	emo_keys["\\[moneybags\\]"]	= new Array("moneybags"	,typeof(langTxt_emo_Moneybags)!="undefined"?	langTxt_emo_Moneybags:	"咱就是有钱  [moneybags]");
	emo_keys["\\[Batman\\]"]	= new Array("batman"	,typeof(langTxt_emo_Batman)!="undefined"?		langTxt_emo_Batman:		"蝙蝠侠  [Batman]");
	emo_keys["\\[superman\\]"]	= new Array("superman"	,typeof(langTxt_emo_Superman)!="undefined"?		langTxt_emo_Superman:	"超人  [superman]");
	emo_keys["\\[gasmask\\]"]	= new Array("gasmask"	,typeof(langTxt_emo_Gasmask)!="undefined"?		langTxt_emo_Gasmask:	"防毒面具  [gasmask]");
	emo_keys["\\[wash\\]"]		= new Array("wash"		,typeof(langTxt_emo_Wash)!="undefined"?			langTxt_emo_Wash:		"洗澡  [wash]");
	emo_keys["\\[peep\\]"]		= new Array("peep"		,typeof(langTxt_emo_Peep)!="undefined"?			langTxt_emo_Peep:		"汗!被偷窥了  [peep]");
	emo_keys["\\[aliens\\]"]	= new Array("aliens"	,typeof(langTxt_emo_Aliens)!="undefined"?		langTxt_emo_Aliens:		"外星人  [aliens]");
	emo_keys["\\[monster\\]"]	= new Array("monster"	,typeof(langTxt_emo_Monster)!="undefined"?		langTxt_emo_Monster:	"怪物  [monster]");
	emo_keys["\\[deathhead\\]"]	= new Array("deathhead"	,typeof(langTxt_emo_Deathhead)!="undefined"?	langTxt_emo_Deathhead:	"骷髅  [deathhead]");
	emo_keys["\\[mummy\\]"]		= new Array("mummy"		,typeof(langTxt_emo_Mummy)!="undefined"?		langTxt_emo_Mummy:		"木乃伊  [mummy]");
	emo_keys["\\[vampire\\]"]	= new Array("vampire"	,typeof(langTxt_emo_Vampire)!="undefined"?		langTxt_emo_Vampire:	"吸血鬼  [vampire]");
	emo_keys["\\[ghost\\]"]		= new Array("ghost"		,typeof(langTxt_emo_Ghost)!="undefined"?		langTxt_emo_Ghost:		"有鬼  [ghost]");
	emo_keys["\\[gaolbird\\]"]	= new Array("gaolbird"	,typeof(langTxt_emo_Gaolbird)!="undefined"?		langTxt_emo_Gaolbird:	"囚犯  [gaolbird]");
	emo_keys["\\(u\\)"]			= new Array("breakheart",typeof(langTxt_emo_Breakheart)!="undefined"?	langTxt_emo_Breakheart:	"心碎  (U)");
	emo_keys["\\(\\^\\)"]		= new Array("cake"		,typeof(langTxt_emo_Cake)!="undefined"?			langTxt_emo_Cake:		"蛋糕  (^)  [cake]");
	emo_keys["\\[cake\\]"]		= new Array("cake"		,typeof(langTxt_emo_Cake)!="undefined"?			langTxt_emo_Cake:		"蛋糕  (^)  [cake]");
	emo_keys["\\(ip\\)"]		= new Array("prospect"	,typeof(langTxt_emo_Prospect)!="undefined"?		langTxt_emo_Prospect:	"彩虹  (IP)");
	emo_keys["\\(s\\)"]			= new Array("moon"		,typeof(langTxt_emo_Moon)!="undefined"?			langTxt_emo_Moon:		"月夜  (S)");
	emo_keys["\\[moon\\]"]		= new Array("moon"		,typeof(langTxt_emo_Moon)!="undefined"?			langTxt_emo_Moon:		"月夜  [MOON]");
	emo_keys["\\[rain\\]"]		= new Array("rain"		,typeof(langTxt_emo_Rain)!="undefined"?			langTxt_emo_Rain:		"雨  [RAIN]");
	emo_keys["\\(st\\)"]		= new Array("rain"		,typeof(langTxt_emo_Rain)!="undefined"?			langTxt_emo_Rain:		"雨  (ST)");
	emo_keys["\\[snow\\]"]		= new Array("snow"		,typeof(langTxt_emo_Snow)!="undefined"?			langTxt_emo_Snow:		"雪花  [snow]");
	emo_keys["\\(m\\)"]			= new Array("meeting"	,typeof(langTxt_emo_Meeting)!="undefined"?		langTxt_emo_Meeting:	"会议,组  (m) [meeting]");
	emo_keys["\\[meeting\\]"]	= new Array("meeting"	,typeof(langTxt_emo_Meeting)!="undefined"?		langTxt_emo_Meeting:	"会议,组  (m) [meeting]");
	emo_keys["\\[basketball\\]"]= new Array("basketball",typeof(langTxt_emo_Basketball)!="undefined"?	langTxt_emo_Basketball:	"篮球  [basketball]");
	emo_keys["\\[football\\]"]	= new Array("football"	,typeof(langTxt_emo_Football)!="undefined"?		langTxt_emo_Football:	"足球  [football]");
	emo_keys["\\[fierce\\]"]	= new Array("fierce"	,typeof(langTxt_emo_Fierce)!="undefined"?		langTxt_emo_Fierce:		"要砍人啦  [fierce]");
	emo_keys["\\[kick\\]"]		= new Array("kick"		,typeof(langTxt_emo_Kick)!="undefined"?			langTxt_emo_Kick:		"踢  [kick]");
	emo_keys["=P~"]				= new Array("040"		,typeof(langTxt_emo_Anthomaniac)!="undefined"?	langTxt_emo_Anthomaniac:	"色,花痴  =P~");
	emo_keys[":\\("]			= new Array("017"		,typeof(langTxt_emo_Sad)!="undefined"?			langTxt_emo_Sad:		"伤心  :(  :-(");
	emo_keys[":-\\("]			= new Array("017"		,typeof(langTxt_emo_Sad)!="undefined"?			langTxt_emo_Sad:		"伤心  :(  :-(");
	emo_keys["\\[please\\]"]	= new Array("please"	,typeof(langTxt_emo_Please)!="undefined"?		langTxt_emo_Please:		"请  [please]");
	emo_keys["\\[incense\\]"]	= new Array("incense"	,typeof(langTxt_emo_Incense)!="undefined"?		langTxt_emo_Incense:	"烧香  [incense]");
	emo_keys["\\[santa-claus\\]"] = new Array("santa-claus",typeof(langTxt_emo_SantaClaus)!="undefined"?	langTxt_emo_SantaClaus:	"圣诞老人  [santa-claus]");
	emo_keys["\\[king\\]"]		= new Array("king"		,typeof(langTxt_emo_King)!="undefined"?			langTxt_emo_King:		"国王  [king]");
	emo_keys["\\[savage\\]"]	= new Array("savage"	,typeof(langTxt_emo_Savage)!="undefined"?		langTxt_emo_Savage:		"野人  [savage]");
	emo_keys["\\[cutesmile\\]"]	= new Array("cutesmile"	,typeof(langTxt_emo_Cutesmile)!="undefined"?	langTxt_emo_Cutesmile:	"可爱的笑  [cutesmile]");
	emo_keys["\\[surrenders\\]"]= new Array("surrenders",typeof(langTxt_emo_Surrenders)!="undefined"?	langTxt_emo_Surrenders:	"投降  [surrenders]");
	emo_keys["\\[smells\\]"]	= new Array("smells"	,typeof(langTxt_emo_Smells)!="undefined"?		langTxt_emo_Smells:		"陶醉  [smells]");
	emo_keys["\\>\\*P"]			= new Array("grimace"	,typeof(langTxt_emo_Grimace)!="undefined"?		langTxt_emo_Grimace:	"做鬼脸  >*P >*-P [grimace]");
	emo_keys["\\>\\*-P"]		= new Array("grimace"	,typeof(langTxt_emo_Grimace)!="undefined"?		langTxt_emo_Grimace:	"做鬼脸  >*P >*-P [grimace]");
	emo_keys["\\[grimace\\]"]	= new Array("grimace"	,typeof(langTxt_emo_Grimace)!="undefined"?		langTxt_emo_Grimace:	"做鬼脸  >*P >*-P [grimace]");
	emo_keys["#-O"]				= new Array("033"		,typeof(langTxt_emo_FallInAFaint)!="undefined"?	langTxt_emo_FallInAFaint:	"大跌眼镜  #-O");
	emo_keys["\\[dining\\]"]	= new Array("dining"	,typeof(langTxt_emo_Dining)!="undefined"?		langTxt_emo_Dining:		"吃饭  [dining]");
	emo_keys["\\[awkward\\]"]	= new Array("awkward"	,typeof(langTxt_emo_Awkward)!="undefined"?		langTxt_emo_Awkward:	"不是吧  [awkward]");
	emo_keys["\\[embarrassing\\]"] = new Array("embarrassing" ,typeof(langTxt_emo_Embarrassing)!="undefined"?	langTxt_emo_Embarrassing:	"没面子  [embarrassing]");
	emo_keys["\\[@\\]"]			= new Array("mail"		,typeof(langTxt_emo_Mail)!="undefined"?			langTxt_emo_Mail:		"邮件  [@]");
	emo_keys["\\*-\\)"]			= new Array("research"	,typeof(langTxt_emo_Research)!="undefined"?		langTxt_emo_Research:	"找找,看看  *-)");
	emo_keys["\\[swimming\\]"]	= new Array("swimming"	,typeof(langTxt_emo_Swimming)!="undefined"?		langTxt_emo_Swimming:	"游泳  [swimming]");
	emo_icons = new Array();
	for (var i in emo_keys) {
		if (!emo_icons[emo_keys[i][0]]) {
			emo_icons[emo_keys[i][0]] = new Array(encodeURI(i),emo_keys[i][1]);
			emo_iconsCount ++;
		}
	}
	emo_initOK = true;
}
function showEmoArea(btnEmo,toInsertTextareaId) {
	if (!emo_keys || !emo_icons) { emoInit(); }
	var e = document.getElementById('emo_area');
	if (e) {
		if (e.style.display!='none'){
			e.style.display ='none';
			return;
		}
	}else{
		e=document.createElement('div');
		e.id='emo_area';
		e.innerHTML='';
		e.style.display='none';
	}
	if (typeof(btnEmo) == "string") { btnEmo = document.getElementById(btnEmo); }
	var left = parseInt(findPosX(btnEmo));
	var bottom = document.body.clientHeight - parseInt(findPosY(btnEmo));
	emo_row = ( document.body.clientHeight-22-bottom > (emo_iconHeight +4)*5 )? 5: parseInt((document.body.clientHeight-22-bottom)/(emo_iconHeight+4));
	emo_col = ( document.body.clientWidth > (emo_iconWidth +4)*10 )? 10: parseInt((document.body.clientWidth-10-left)/(emo_iconWidth+4));
	var inPageCount = emo_row * emo_col;
	emo_pageCount = parseInt(emo_iconsCount / inPageCount);
	if ((emo_iconsCount % inPageCount) !=0) { emo_pageCount++; }
	var w = emo_col * (emo_iconWidth+4) +2;
	var h = emo_row * (emo_iconHeight+4) +2;
	e.style.left=left+'px';
	e.style.bottom =bottom+'px';
	e.style.width=w+'px';
	e.style.height=(h+20)+'px';
	document.body.appendChild(e);
	e.style.display=''; 
	chgEmoPage(1,inPageCount,toInsertTextareaId); 
}
function chgEmoPage(pIndex,inPageCount,toInsertTextareaId){
	e = document.getElementById('emo_area');
	if (!e) { return; }
	var pNext = pIndex+1;
	if (pNext>emo_pageCount) { pNext=1;	}
	var pPre = pIndex-1;
	if (pPre<=0) { pPre=emo_pageCount;	}
	
	var s='<div class="emo_toolbar">';
	if (emo_pageCount>1) {
		s+= '<a href=javascript:chgEmoPage('+pPre+','+inPageCount+',"'+toInsertTextareaId+'")>'+(typeof(langTxt_emo_prepage)!="undefined"?langTxt_emo_prepage:'上页')+'</a>';
		s+= '　<a href=javascript:chgEmoPage('+pNext+','+inPageCount+',"'+toInsertTextareaId+'")>'+(typeof(langTxt_emo_nextpage)!="undefined"?langTxt_emo_nextpage:'下页')+'</a>';
		s+= '　'+pIndex+'/'+emo_pageCount;
	}
	s+= '<input type=image class="emo_close_icon" src="images/tbtn_close.gif" onclick="hideEmoArea()"></div>';
	var c = 0;
	s+= '<div id="emoPage" class="emoPage">';
	for (var i in emo_icons) {
		c++;
		if (c<=(pIndex-1)*inPageCount  || c>(pIndex)*inPageCount) {
			continue;
		}
		s+= '<div id="emo_'+i+'" class="emo_icon" title="'+emo_icons[i][1]+'" onclick=insertEmoIcon("'+emo_icons[i][0]+'","'+toInsertTextareaId+'") onmouseover=\'this.className="emo_icon emo_icon_hov"\' onmouseout=\'this.className="emo_icon"\'>';
		s+= '<img src="images/emo/'+i+'.gif" width='+emo_iconWidth+' height='+emo_iconHeight+' /></div>';
	}
	s+='</div>';
	e.innerHTML = s;
}
function insertEmoIcon(emoTxt, toInsertTextareaId ) {
	var txtArea = document.getElementById(toInsertTextareaId); 
	if (!txtArea) { return; }
	emoTxt = decodeURI(emoTxt).replace(/\\/g,'');
	if (document.selection) { 
		txtArea.focus(); 
		sel = document.selection.createRange(); 
		sel.text = emoTxt; 
		txtArea.focus(); 
	} 
	else if (txtArea.selectionStart || txtArea.selectionStart == '0') { 
		var startPos = txtArea.selectionStart; 
		var endPos = txtArea.selectionEnd; 
		var cursorPos = endPos; 
		txtArea.value = txtArea.value.substring(0, startPos) + emoTxt + txtArea.value.substring(endPos, txtArea.value.length); 
		cursorPos += emoTxt.length; 
		txtArea.focus(); 
		txtArea.selectionStart = cursorPos; 
		txtArea.selectionEnd = cursorPos; 
	} 
	else { 
		txtArea.value += emoTxt; 
		txtArea.focus(); 
	} 
	hideEmoArea();
}

function hideEmoArea() {
	document.getElementById('emo_area').style.display='none';
}

function replaceEmoKeyToIcon(str) {
	if (!emo_keys || !emo_icons) { emoInit(); }
	var reg;
	for (var keyStr in emo_keys) {
		reg = eval("/"+ keyStr +"/gi");
		str = str.replace(reg, '<img src="images/emo/'+emo_keys[keyStr][0]+'.gif" />');
	}
	return str;
}

function findPosX(obj){
	var curleft = 0;
	if (obj.offsetParent){
		while (obj.offsetParent){
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}
    
function findPosY(obj){
	var curtop = 0;
	if (obj.offsetParent){
		while (obj.offsetParent){
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

