var bbcode={
	indexStr:0,
	strBB:'',
	colorCodes:new Array('gray','silver','white','yellow','orange','red','fuchsia','purple','navy','blue','aqua','teal','green','lime','olive','maroon','black'),
	BBCodeA:[
				{bbcode:'br',htmlcode:'<br />'}
			],
	BBCodeB:[
				{bbcode:'url'   ,htmlcode:'<a target=new href=\"%1\">%1</a>',htmlcode_p:'<a href=\"%1\" class=\"highslide\" onclick=\"return hs.expand(this, config1)\">%2</a>'},
				{bbcode:'img'   ,htmlcode:'<br/><img src=\"%1\"/><br/>',htmlcode_p:'<br/><img src=\"%1\"/><br/>'},
				{bbcode:'video' ,htmlcode:'<object style="height: 390px; width: 640px"><param name="movie" value=\"%1\"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src=\"%1\" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="390"></object>',htmlcode_p:''},
				{bbcode:'i'     ,htmlcode:'<span class="bbcode_i">%1</span>',htmlcode_p:'<span class="bbcode_i">%1</span>'},
				{bbcode:'b'     ,htmlcode:'<span class="bbcode_b">%1</span>',htmlcode_p:'<span class="bbcode_b">%1</span>'},
				{bbcode:'u'     ,htmlcode:'<span class="bbcode_u">%1</span>',htmlcode_p:'<span class="bbcode_u">%1</span>'},
				{bbcode:'s'     ,htmlcode:'<span class="bbcode_s">%1</span>',htmlcode_p:'<span class="bbcode_s">%1</span>'},
				{bbcode:'d'     ,htmlcode:'<span class="bbcode_d">%1</span>',htmlcode_p:'<span class="bbcode_d">%1</span>'},
				{bbcode:'quote' ,htmlcode:'<span class="bbcode_q">%1</span>',htmlcode_p:'<span class="bbcode_q">%1</span>'},
				{bbcode:'code'  ,htmlcode:'<span class="bbcode_code">%1</span>',htmlcode_p:'<span class="bbcode_code">%1</span>'},
				{bbcode:'a'     ,htmlcode:'<a href=\"%1\">%1</a>',htmlcode_p:'<a href=\"%1\">%2</a>'},
				{bbcode:'color' ,htmlcode:'%1',htmlcode_p:'<span style="color: %1">%2</span>'},
				{bbcode:'size'  ,htmlcode:'%1',htmlcode_p:'<span style="font-size:%1px;">%2</span>'},
				{bbcode:'bbcode',htmlcode:'%1',htmlcode_p:'%1'},
				{bbcode:'center',htmlcode:'<center>%1</center>',htmlcode_p:'<center>%1</center>'}
			],
	format_smile:'<img alt="&bull;" src="%1">',
	setBBcode:function(st)
	{
		this.strBB='[bbcode]'+st+'[/bbcode]';
	},
	getChar:function()
	{
		var ch;
		if (this.indexStr<this.strBB.length)
		{
			ch=this.strBB.charAt(this.indexStr);
			this.indexStr++;
		}else ch='';
		return ch;
	},
	getStr:function()
	{
		var ch,str;
		var str=this.getChar();
		if (str!='')
		{
			if (/[a-z]|[A-Z]|[0-9]|\_/.test(str))
			{
				do {
					i=this.indexStr;
					ch=this.getChar();
					if (/[a-z]|[A-Z]|[0-9]|\_/.test(ch))
					{
						str=str+ch;
					}else {
						this.indexStr=i;
						break;
					}
				}while(true);
			}
		}
		return str;
	},
	indexBBa:function(st)
	{
		for (var j=0;j<this.BBCodeA.length;j++) if (this.BBCodeA[j].bbcode==st.toLowerCase()) return j;
		return -1;
	},
	indexBBb:function(st)
	{
		for (var j=0;j<this.BBCodeB.length;j++) if (this.BBCodeB[j].bbcode==st.toLowerCase()) return j;
		return -1;
	},
	getUrl:function()
	{
		var str='http://',fl=true;
		if (this.getStr()==':')
		{
			if (this.getStr()=='/')
			{
				if (this.getStr()=='/')
				{
					do{
						st=this.getStr();
						if (st=='' || st=='[' || st==' ')
						{
							fl=false;
							this.indexStr=this.indexStr-st.length;
						}else str=str+st;
					}while(fl);
				}
			}
		}
		return str;
	},
	replAll:function(formatStr,findStr,replStr)
	{
		var st=formatStr;
		while (st.indexOf(findStr)!=-1) st=st.replace(findStr,replStr);
		return st;
	},
	getParam:function()
	{
		var st,str='',i;
		do {
			ii=this.indexStr;
			st=this.getChar();
			if (st=='' || st==']')
			{
				break;
			}else str=str+st;
		}while(true);
		return str;
	},
	replStrSmiles:function(aStr)
	{
		var i,j,k,im,st=aStr;
		for (i=0;i<smiles.allsmiles.length;i++)
		{
			k=0;
			while ((j=st.indexOf(smiles.allsmiles[i].smile,k))!=-1)
			{
				im=this.replAll(this.format_smile,'%1',smiles.smilespath+smiles.allsmiles[i].src);
				im=this.replAll(im,'%2',smiles.allsmiles[i].smile);
				st=st.substr(0,j)+im+st.substr(j+smiles.allsmiles[i].smile.length);
				k=j+im.length;
			}
		}
		return st;
	},
	parserBBcode:function(aBBcode)
	{
		this.indexStr=0;
		this.strBB='';
		this.setBBcode(aBBcode);
		return this.replStrSmiles(this.parserBB());
	},
	parserBB:function()
	{
		var param='',str='',ii,bbcode,fl=true,fl_t=false;
		do {
			ii=this.indexStr;
			st=this.getStr();
			switch (st)
			{
				case 'http':
					if (bbcode==1 || bbcode==2)
					{
						str=str+st;
					}else{
						if (bbcode==0)
						{
							str=str+this.getUrl() 
						}else{
							str=str+this.replAll(this.BBCodeB[0].htmlcode,'%1',this.getUrl());
						}
					}
				break;
				case '[':
					st1=this.getStr();
					if (st1=='/')
					{
						st1=this.getStr();
						bbcode1=this.indexBBb(st1);
						if (bbcode1!=-1)
						{
							if (this.getStr()==']')
							{
								if (bbcode==bbcode1) fl=false;
							}
						}
					}else{
						if (fl_t)
						{
							this.indexStr=ii;
							str=str+this.parserBB();
						}else{
							bbcode=this.indexBBa(st1);
							if (bbcode!=-1)
							{
								if (this.getStr()==']') return this.BBCodeA[bbcode].htmlcode;
							}else{
								bbcode=this.indexBBb(st1);
								if (bbcode!=-1)
								{
									bb=this.getStr();
									switch(bb)
									{
										case ']':
											fl_t=true;
										break;
										case '=':
											param=this.getParam();
											fl_t=true;
										break;
									}
								}
							}
						}
					}
				break;
				case '':
					return str;
				break;
				default:
					str=str+st;
			}
		}while (fl);
		if (param!='')
		{
			st=this.replAll(this.BBCodeB[bbcode].htmlcode_p,'%1',param);
			return this.replAll(st,'%2',str);
		}else return this.replAll(this.BBCodeB[bbcode].htmlcode,'%1',str);
	}
}

var ajax={
	init:function()
	{
		if (window.XMLHttpRequest)
		{
			try
			{
				return new XMLHttpRequest();
			} catch (e){}
		} else 
			if (window.ActiveXObject)
			{
				try
				{
					return new ActiveXObject('Msxml2.XMLHTTP');
				} catch (e){}
				try
				{
					return new ActiveXObject('Microsoft.XMLHTTP');
				} catch (e){}
		}
		return null;
	},
	makeRequest:function(aUrl,aMethod,aSend,aFun)
	{
		var http_request=this.init();
		if (!http_request) return null;
		http_request.onreadystatechange=function()
		{
			if (http_request.readyState==4)
			{
				if (http_request.status==200) 
				{
					aFun(http_request.responseText);
				}else return null;
			}
		}
		http_request.open(aMethod,aUrl,true);
		http_request.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
		if (aSend!=null) http_request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		http_request.send(aSend);
		return http_request;
	},
	makeRequestText:function(aUrl,aMethod,aSend)
	{
		var http_request=this.init();
		if (!http_request) return null;
		http_request.open(aMethod,aUrl,false);
		http_request.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
		if (aSend!=null) http_request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		http_request.send(aSend);
		if(http_request.status == 200)
		{
			return http_request.responseText;
		}
	},
	runRequest:function(responseText)
	{
//		alert(responseText);
		return eval(responseText);
	}
}

var smiles={
	allsmiles:
		[
			{smile:  ':)',src:'sm101.gif'},{smile:  '*2:',src:'sm102.gif'},{smile:  '*3:',src:'sm103.gif'},{smile:  '*4:',src:'sm104.gif'},{smile:   ':D',src:'sm105.gif'},{smile: '*6:',src:'sm106.gif'},{smile: '*7:',src:'sm107.gif'},{smile: '*8:',src:'sm108.gif'},{smile: '*9:',src:'sm109.gif'},{smile:'*10:',src:'sm110.gif'},{smile:'*11:',src:'sm111.gif'},{smile:'*12:',src:'sm112.gif'},{smile:'*13:',src:'sm113.gif'},{smile:'*14:',src:'sm114.gif'},{smile:'*15:',src:'sm115.gif'},{smile:'*16:',src:'sm116.gif'},{smile:'*17:',src:'sm117.gif'}, {smile: '8-)',src:'sm118.gif'},{smile: ':-!',src:'sm119.gif'},{smile:'*20:',src:'sm120.gif'},{smile:'*21:',src:'sm121.gif'},{smile:'*22:',src:'sm122.gif'},{smile:'!!',src:'sm123.gif'},{smile:'??',src:'sm124.gif'},
			{smile: '*25:',src:'sm201.gif'},{smile: '*26:',src:'sm202.gif'},{smile: '*27:',src:'sm203.gif'},{smile: '*28:',src:'sm204.gif'},{smile: '*29:',src:'sm205.gif'},{smile:'*30:',src:'sm206.gif'},{smile:'*31',src:'sm207.gif'},{smile:'*32:',src:'sm208.gif'},{smile:'*33:',src:'sm209.gif'},{smile:'*34:',src:'sm210.gif'},{smile:'*35:',src:'sm211.gif'},{smile:'*36:',src:'sm212.gif'},{smile:'*37:',src:'sm213.gif'},{smile:'*38:',src:'sm214.gif'},{smile:'*39:',src:'sm215.gif'},{smile:'*40:',src:'sm216.gif'},{smile:'*41:',src:'sm217.gif'},{smile:'*42:',src:'sm218.gif'},{smile:'*43:',src:'sm219.gif'},{smile:'*44:',src:'sm220.gif'},{smile:  ':(',src:'sm221.gif'},{smile:'*46:',src:'sm222.gif'},{smile:'*47:',src:'sm223.gif'},{smile:'*48:',src:'sm224.gif'},
			{smile: '*49:',src:'sm301.gif'},{smile: '*50:',src:'sm302.gif'},{smile: '*51:',src:'sm303.gif'},{smile: '*52:',src:'sm304.gif'},{smile: '*53:',src:'sm305.gif'},{smile:'*54:',src:'sm306.gif'},{smile:'*55:',src:'sm307.gif'},{smile:'*56:',src:'sm308.gif'},{smile:'*57:',src:'sm309.gif'},{smile:'*58:',src:'sm310.gif'},{smile:'*59:',src:'sm311.gif'},{smile:'*60:',src:'sm312.gif'},{smile:'*61:',src:'sm313.gif'},{smile:'*62:',src:'sm314.gif'},{smile:'*63:',src:'sm315.gif'},{smile:'*64:',src:'sm316.gif'},{smile:'*65:',src:'sm317.gif'},{smile:'*66:',src:'sm318.gif'},{smile:'*67:',src:'sm319.gif'},{smile:'*68:',src:'sm320.gif'},{smile:'*69:',src:'sm321.gif'},{smile:'*70:',src:'sm322.gif'},{smile:'*71:',src:'sm323.gif'},{smile:'*72:',src:'sm324.gif'},
			{smile: '*73:',src:'sm401.gif'},{smile: '*74:',src:'sm402.gif'},{smile: '*75:',src:'sm403.gif'},{smile: '*76:',src:'sm404.gif'},{smile: '*77:',src:'sm405.gif'},{smile:'*78:',src:'sm406.gif'},{smile:'*79:',src:'sm407.gif'},{smile:'*80:',src:'sm408.gif'},{smile:'*81:',src:'sm409.gif'},{smile:'*82:',src:'sm410.gif'},{smile:'*83:',src:'sm411.gif'},{smile:'*84:',src:'sm412.gif'},{smile:'*85:',src:'sm413.gif'},{smile:'*86:',src:'sm414.gif'},{smile:'*87:',src:'sm415.gif'},{smile:'*88:',src:'sm416.gif'},{smile:'*89:',src:'sm417.gif'},{smile:'*90:',src:'sm418.gif'},{smile:'*91:',src:'sm419.gif'},{smile:'*92:',src:'sm420.gif'},{smile:'*93:',src:'sm421.gif'},{smile:'*94:',src:'sm422.gif'},{smile:'*95:',src:'sm423.gif'},{smile:'*96:',src:'sm424.gif'},
			{smile: '*97:',src:'sm501.gif'},{smile: '*98:',src:'sm502.gif'},{smile: '*99:',src:'sm503.gif'},{smile:'*100:',src:'sm504.gif'},{smile:'*101:',src:'sm505.gif'},{smile:'*102:',src:'sm506.gif'},{smile:'*103:',src:'sm507.gif'},{smile:'*104:',src:'sm508.gif'},{smile:'*105:',src:'sm509.gif'},{smile:'*106:',src:'sm510.gif'},{smile:'*107:',src:'sm511.gif'},{smile:'*108:',src:'sm512.gif'},{smile:'*109:',src:'sm513.gif'},{smile:'*110:',src:'sm514.gif'},{smile:'*111:',src:'sm515.gif'},{smile:'*112:',src:'sm516.gif'},{smile:'*113:',src:'sm517.gif'},{smile:'*114:',src:'sm518.gif'},{smile:'*115:',src:'sm519.gif'},{smile:'*116:',src:'sm520.gif'},{smile:'*117:',src:'sm521.gif'},{smile:'*118:',src:'sm522.gif'},{smile:'*119:',src:'sm523.gif'},{smile:'*120:',src:'sm524.gif'},
			{smile:'*121:',src:'sm601.gif'},{smile:'*122:',src:'sm602.gif'},{smile:'*123:',src:'sm603.gif'},{smile:'*124:',src:'sm604.gif'},{smile:'*125:',src:'sm605.gif'},{smile:'*126:',src:'sm606.gif'},{smile:'*127:',src:'sm607.gif'},{smile:'*128:',src:'sm608.gif'},{smile:'*129:',src:'sm609.gif'},{smile:'*130:',src:'sm610.gif'},{smile:'*131:',src:'sm611.gif'},{smile:'*132:',src:'sm612.gif'},{smile:'*133:',src:'sm613.gif'},{smile:'*134:',src:'sm614.gif'},{smile:'*135:',src:'sm615.gif'},{smile:'*136:',src:'sm616.gif'},{smile:'*137:',src:'sm617.gif'},{smile:'*138:',src:'sm618.gif'},{smile:'*139:',src:'sm619.gif'},{smile:'*140:',src:'sm620.gif'},{smile:'*141:',src:'sm621.gif'},{smile:'*142:',src:'sm622.gif'},{smile:'*143:',src:'sm623.gif'},{smile:'*144:',src:'sm624.gif'},
			{smile:'*145:',src:'sm701.gif'},{smile:'*146:',src:'sm702.gif'},{smile:'*147:',src:'sm703.gif'},{smile:'*148:',src:'sm704.gif'},{smile:'*149:',src:'sm705.gif'},{smile:'*150:',src:'sm706.gif'},{smile:'*151:',src:'sm707.gif'},{smile:'*152:',src:'sm708.gif'},{smile:'*153:',src:'sm709.gif'},{smile:'*154:',src:'sm710.gif'},{smile:'*155:',src:'sm711.gif'},{smile:'*156:',src:'sm712.gif'},{smile:'*157:',src:'sm713.gif'},{smile:'*158:',src:'sm714.gif'},{smile:'*159:',src:'sm715.gif'},{smile:'*160:',src:'sm716.gif'},{smile:'*161:',src:'sm717.gif'},{smile:'*162:',src:'sm718.gif'},{smile:'*163:',src:'sm719.gif'},{smile:'*164:',src:'sm720.gif'},{smile:'*165:',src:'sm721.gif'},{smile:'*166:',src:'sm722.gif'},{smile:'*167:',src:'sm723.gif'},{smile:'*168:',src:'sm724.gif'},
			{smile:'*169:',src:'sm801.gif'},{smile:'*170:',src:'sm802.gif'},{smile:'*171:',src:'sm803.gif'},{smile:'*172:',src:'sm804.gif'},{smile:'*173:',src:'sm805.gif'},{smile:'*174:',src:'sm806.gif'},{smile:'*175:',src:'sm807.gif'},{smile:'*176:',src:'sm808.gif'},{smile:'*177:',src:'sm809.gif'},{smile:'*178:',src:'sm810.gif'},{smile:'*179:',src:'sm811.gif'},{smile:'*180:',src:'sm812.gif'},{smile:'*181:',src:'sm813.gif'},{smile:'*182:',src:'sm814.gif'},{smile:'*183:',src:'sm815.gif'},{smile:'*184:',src:'sm816.gif'},{smile:'*185:',src:'sm817.gif'},{smile:'*186:',src:'sm818.gif'},{smile:'*187:',src:'sm819.gif'},{smile:'*188:',src:'sm820.gif'},{smile:'*189:',src:'sm821.gif'},{smile:'*190:',src:'sm822.gif'},{smile:'*191:',src:'sm823.gif'},{smile:'*192:',src:'sm824.gif'},
			{smile:'*193:',src:'sm901.gif'},{smile:'*194:',src:'sm902.gif'},{smile:'*195:',src:'sm903.gif'},{smile:'*196:',src:'sm904.gif'},{smile:'*197:',src:'sm905.gif'},{smile:'*198:',src:'sm906.gif'},{smile:'*199:',src:'sm907.gif'},{smile:'*200:',src:'sm908.gif'},{smile:'*201:',src:'sm909.gif'},{smile:'*202:',src:'sm910.gif'},{smile:'*203:',src:'sm911.gif'},{smile:'*204:',src:'sm912.gif'},{smile:'*205:',src:'sm913.gif'},{smile:'*206:',src:'sm914.gif'},{smile:'*207:',src:'sm915.gif'},{smile:'*208:',src:'sm916.gif'},{smile:'*209:',src:'sm917.gif'},{smile:'*210:',src:'sm918.gif'},{smile:'*211:',src:'sm919.gif'},{smile:'*212:',src:'sm920.gif'},{smile:'*213:',src:'sm921.gif'},{smile:'*214:',src:'sm922.gif'},{smile:'*215:',src:'sm923.gif'},{smile:'*216:',src:'sm924.gif'},
			{smile:'*217:',src:'sm1001.gif'},{smile:'*218:',src:'sm1002.gif'},{smile:'*219:',src:'sm1003.gif'},{smile:'*220:',src:'sm1004.gif'},{smile:'*221:',src:'sm1005.gif'},{smile:'*222:',src:'sm1006.gif'},{smile:'*223:',src:'sm1007.gif'},{smile:'*224:',src:'sm1008.gif'},{smile:'*225:',src:'sm1009.gif'},{smile:'*226:',src:'sm1010.gif'},{smile:'*227:',src:'sm1011.gif'},{smile:'*228:',src:'sm1012.gif'},{smile:'*229:',src:'sm1013.gif'},{smile:'*230:',src:'sm1014.gif'},{smile:'*231:',src:'sm1015.gif'},{smile:'*232:',src:'sm1016.gif'}

		],
	grups:
		[
			{name:'мои'			,cookiename:'popular'	,smiles:[],	defsmiles:[0]},
			{name:'основные'	,cookiename:'grup1'		,smiles:[],	defsmiles:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]},
			{name:'эмоции'		,cookiename:'grup2'		,smiles:[],	defsmiles:[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47]},
			{name:'любовь'		,cookiename:'grup3'		,smiles:[],	defsmiles:[48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71]},
			{name:'еда'			,cookiename:'grup4'		,smiles:[],	defsmiles:[72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95]},
			{name:'музыка'		,cookiename:'grup5'		,smiles:[],	defsmiles:[96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119]},
			{name:'жестикуляция',cookiename:'grup6'		,smiles:[],	defsmiles:[120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143]},
			{name:'агрессия'	,cookiename:'grup7'		,smiles:[],	defsmiles:[144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167]},
			{name:'Группа 1'	,cookiename:'grup8'		,smiles:[],	defsmiles:[168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191]},
			{name:'Группа 2'	,cookiename:'grup9'		,smiles:[],	defsmiles:[192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215]},
			{name:'Группа 3'	,cookiename:'grupA'		,smiles:[],	defsmiles:[216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231]}
		],
	maxsmilesgrup:24,
	populargrup:0,
	smilespath:"/images/sml/",
	tags:[],
	init:function()
	{
		for (var i=0;i<this.grups.length;i++)
		{
			var cookiesmile=getCookie(this.grups[i].cookiename);
			if (cookiesmile==null)
			{
				for (var j=0;j<this.grups[i].defsmiles.length;j++)
				{
					this.grups[i].smiles.push({nSmile:this.grups[i].defsmiles[j],cSmile:1});
				}
			}else this.loadCookieGrup(i,cookiesmile);
		}
	},

	saveCookieGrup:function(aGrup)
	{
		var st='';
		for (var i=0;i<this.grups[aGrup].smiles.length;i++)
		{
			st=st+this.grups[aGrup].smiles[i].nSmile+','+this.grups[aGrup].smiles[i].cSmile+'|';
		}
		setCookie(this.grups[aGrup].cookiename,st,'Mon, 01-Jan-2020 00:00:00 GMT','/');
	},
	loadCookieGrup:function(aGrup,aCookiesmile)
	{
		if (aCookiesmile!=null)
		{
			arr1=explode(aCookiesmile,'|');
			for (var i=0;i<arr1.length;i++)
			{
				arr2=explode(arr1[i],',');
				this.grups[aGrup].smiles.push({nSmile:arr2[0],cSmile:arr2[1]});
			}
		}
	},

	findSmile:function(aGrup,aSmile)
	{
		for (var i=0;i<this.grups[aGrup].smiles.length;i++)
		{
			if (this.grups[aGrup].smiles[i].nSmile==aSmile) return i;
		}
		return null;
	},

	findMin:function(aGrup)
	{
	    var minS=9999;
	    var smile=null;
		for (var i=0;i<this.grups[aGrup].smiles.length;i++)
		{
			if (this.grups[aGrup].smiles[i].cSmile<minS)
			{
				minS=this.grups[aGrup].smiles[i].cSmile;
				smile=i;
			}
		}
		return smile;
	},

	sortSmiles:function(aGrup)
	{
		this.grups[aGrup].smiles.sort(function(a,b){return b.cSmile-a.cSmile});
	},

	addSmile:function(aGrup,aSmile)
	{
		var fSmile=this.findSmile(aGrup,aSmile);
		if (fSmile==null)
		{
			if (this.grups[aGrup].smiles.length<this.maxsmilesgrup)
			{
				this.grups[aGrup].smiles.push({nSmile:aSmile,cSmile:1});
			}else{
				fSmile=this.findMin(aGrup);
				this.grups[aGrup].smiles[fSmile].nSmile=aSmile;
				this.grups[aGrup].smiles[fSmile].cSmile=1;
			}
		}else this.grups[aGrup].smiles[fSmile].cSmile++;
		this.sortSmiles(aGrup);
		this.saveCookieGrup(aGrup);
	}
}

var editor={
	textArea:null,
	idsmilespanel:null,
	idsmilespanelb:null,
	nsmilepanel:0,
	init:function(aTextArea,aSmilePanel,aSmilePanelb)
	{
		this.textArea=aTextArea;
		this.textArea.focus();
		if (aSmilePanel)  this.idsmilespanel =aSmilePanel;
		if (aSmilePanelb) this.idsmilespanelb=aSmilePanelb;
		this.textArea.onkeypress=function(event)
		{
			eve = event || window.event;
			editor.checkTextarea(eve);
		}
		this.textArea.onkeydown=function(event)
		{
		}
	},
	getCaretPos:function ()
	{
		if(this.textArea.selectionStart) return this.textArea.selectionStart;
		else if (document.selection)
		{
			var sel = document.selection.createRange();
			var clone = sel.duplicate();
			sel.collapse(true);
			clone.moveToElementText(this.textArea);
			clone.setEndPoint('EndToEnd',sel);
			return clone.text.length;
		}
		return 0;
	},
	moveCaretTo:function(aPos)
	{
		if (this.textArea.selectionStart)
		{
			this.textArea.setSelectionRange(aPos,aPos);
			this.textArea.focus();
		}
	},
	insertAtCaret:function(aText)
	{
	    var startPos=this.textArea.selectionStart;
	    var endPos=this.textArea.selectionEnd;
		if (document.selection)
		{
			this.textArea.focus();
			var txt_range_obj = document.selection.createRange(); 
			txt_range_obj.text=aText;
		}else if (this.textArea.selectionStart || this.textArea.selectionStart=='0')
			{
			    if (startPos==endPos)
			    {
				    this.textArea.value=this.textArea.value.substring(0,startPos)+aText+this.textArea.value.substring(endPos,this.textArea.value.length);
				}else{
				    this.textArea.value=this.textArea.value.substring(0,startPos)+aText+this.textArea.value.substring(endPos,this.textArea.value.length);
				}
				this.moveCaretTo(startPos+aText.length);
			}else myField.value +=aText;
		this.textArea.focus();
	},
	russ:function()
	{
		var msg=tmp=this.textArea.value;
		msg_text='';
		msg_text=msg.substr(msg.indexOf(":")+1);
		var chars=' !Э№;%?э()*+б-ю.0123456789ЖжБ=Ю,"ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯх/ъ:_ёфисвуапршолдьтщзйкыегмцчняХ\ЪЁ';
		var newmsg='';
		for (i=0;i<msg_text.length;i++)
		{
			mychar=msg_text.charAt(i).charCodeAt();
			newmsg+=mychar<0x80 ? chars.charAt(mychar-0x20):msg_text.charAt(i);
		}
		this.textArea.value=newmsg;
		this.textArea.focus();
	},
	insertBB:function(str1)
	{
	    var startPos=this.textArea.selectionStart;
	    var endPos=this.textArea.selectionEnd;
		if (document.selection)
		{
			this.textArea.focus();
			var txt_range_obj = document.selection.createRange(); 
			txt_range_obj.text='['+str1+']'+txt_range_obj.text+'[/'+str1+']';
			this.moveCaretTo(startPos+('['+str1+']').length);
		}else if (this.textArea.selectionStart || this.textArea.selectionStart=='0')
			{
			    if (startPos==endPos)
			    {
				    this.textArea.value=this.textArea.value.substring(0,startPos)+'['+str1+'][/'+str1+']'+this.textArea.value.substring(endPos,this.textArea.value.length);
					this.moveCaretTo(startPos+('['+str1+']').length);
				}else{
				    this.textArea.value=this.textArea.value.substring(0,startPos)+'['+str1+']'+this.textArea.value.substring(startPos,endPos-startPos)+'[/'+str1+']'+this.textArea.value.substring(endPos,this.textArea.value.length);
				}
			}else myField.value +=str1;
		this.textArea.focus();
	},
	smilespanel:function()
	{
		this.nsmilepanel=0;
		this.selectsmpanel(this.nsmilepanel);
		this.idsmilespanelb.innerHTML='';
		this.writeSmiles(this.idsmilespanelb,this.nsmilepanel);
	},
	smilespanelright:function()
	{
		this.nsmilepanel++;
		if (this.nsmilepanel>=smiles.grups.length) this.nsmilepanel=0;
		this.selectsmpanel(this.nsmilepanel);
	},
	smilespanelleft:function()
	{
		this.nsmilepanel--;
		if (this.nsmilepanel<0) this.nsmilepanel=smiles.grups.length-1;
		this.selectsmpanel(this.nsmilepanel);
	},

	selectsmpanel:function(aPanel)
	{
		this.nsmilepanel=aPanel;
		this.idsmilespanelb.innerHTML='';
		this.writeSmiles(this.idsmilespanelb,this.nsmilepanel);
		for (var j=0;j<smiles.tags.length;j++)
		{
			smiles.tags[j].className='';
		}
		if(aPanel<smiles.tags.length)
		{
			smiles.tags[aPanel].className='active';
		}	
	},
	
	writeSmiles:function(aPanel,aGrup)
	{
		for (var i=0;i<smiles.grups[aGrup].smiles.length;i++)
		{
			var sdiv=document.createElement('div');
			aPanel.appendChild(sdiv);
			var oImg=new Image();
			oImg.nn=smiles.grups[aGrup].smiles[i].nSmile;
			oImg.grup=aGrup;
			sdiv.appendChild(oImg);
			oImg.src=smiles.smilespath+smiles.allsmiles[oImg.nn].src;
			oImg.onclick=function()
			{
				editor.insertAtCaret(smiles.allsmiles[this.nn].smile);
				smiles.addSmile(0,this.nn);
			}
		}
	},

	writeSmilesTags:function(aDiv,arrSmiles)
	{
		smiles.tags=[];
		for (var i=0;i<arrSmiles.length;i++)
		{
			smiles.tags.push(document.createElement('a'));
			smiles.tags[i].href='#';
			smiles.tags[i].innerHTML=smiles.grups[arrSmiles[i]].name;
			smiles.tags[i].nn=i;
			smiles.tags[i].onclick=function()
			{
				editor.selectsmpanel(this.nn);
				return false;
			}
			aDiv.appendChild(smiles.tags[i]);
			if(i<arrSmiles.length-1)
			{
				aDiv.appendChild(document.createTextNode('|'));
			}	
		}
	},

	checkTextarea:function(event)
	{
		if(event.keyCode==13 && !event.shiftKey)
		{
//			this.idsmilespanel.style.display="none";
			this.onSend(this.textArea.value);
			try {
				event.preventDefault();
			} catch(e) {
				event.returnValue = false;
			}
			return false;
		}
		return true;
	},
	translate_ru:function()
	{
		google.language.translate(this.textArea.value, "", "ru", function(result) {
			if (!result.error)
			{
				editor.textArea.value=result.translation
			}
		}
		)
		this.textArea.focus();
	},
	translate_en:function()
	{
		google.language.translate(this.textArea.value, "", "en", function(result) {
		    if (!result.error)
			{
				editor.textArea.value=result.translation
			}
		}
		)
		this.textArea.focus();
	},
	onSend:function()
	{
	}
}

function checkEmail(str)
{
	if(str=='') return true;
	if (/^([\w-~_]+\.)*[\w-~_]+@([\w-_]+\.){1,3}\w{2,4}$/.test(str)) return true;
	return false;
}

function hex2int(aHex)
{
	var i=parseInt(aHex,16);
	if((i&128)!=0) i-=256;
	return i;
}

function hexChar(a)
{
	return '0123456789ABCDEF'.substr(a,1);
}

function int2hex(a)
{
	var i=a<0?256-Math.abs(a):a;
	return hexChar((i & 240)>>4)+hexChar(i & 15);
}

function str2date(aStr)
{
	return new Date(aStr.substr(0,4),aStr.substr(5,2),aStr.substr(8,2),aStr.substr(11,2),aStr.substr(14,2),aStr.substr(17,2));
}
 
function date2str(aDate)
{
	var h=aDate.getHours();
	var m=aDate.getMinutes();
	var s=aDate.getSeconds();
	if (h<10)h="0"+h;
	if (m<10)m="0"+m;
	if (s<10)s="0"+s;
	return h+':'+m+':'+s;
}

function is_ie()
{
	return (navigator.appName=="Microsoft Internet Explorer");
}

function imgOpacity(aImg,aValue)
{
	if (is_ie())
	{
		aImg.style.filter="alpha(opacity="+aValue+")";
	}else{
		aImg.style.opacity=aValue/100;
	} 
}

function explode(st,ch)
{
	var arr=new Array();
	var map=st;
	while (map!='')
	{
		var i1=map.indexOf(ch);
		if (i1==-1) i1=map.length;
		arr.push(map.substr(0,i1));
		var map=map.substr(i1+1);
	}
	return arr;
}

function deleteRowId(aTable,aId)
{
	var delRows=new Array();
	var allRows=aTable.getElementsByTagName("tr");
	for (var i=0;i<allRows.length;i++)
	{
		if(allRows[i].id==aId)
		{
			delRows.push(i);
		}
	}
	delRows=delRows.reverse();
	for (var i=0;i<delRows.length;i++)
	{
		aTable.deleteRow(delRows[i]);
	}
}

function addOption(oListbox,text,value,isDefaultSelected,isSelected)
{
	var oOption = document.createElement("option");
	oOption.appendChild(document.createTextNode(text));
	oOption.setAttribute("value", value);
	if (isDefaultSelected) oOption.defaultSelected = true;
	else if (isSelected) oOption.selected = true;
	oListbox.appendChild(oOption);
}

function openWin(aUrl)
{
	window.open(aUrl,"","scrollbars=yes,width=500,height=400,noresize");
}

function windowopen(url,w,h)
{
	var LeftPosition =(screen.width) ?(screen.width-w)/2:0;
	var TopPosition  =(screen.height)?(screen.height-h)/2:0;
	var set          ='height='+h+',width='+w+',top='+TopPosition+',left='+LeftPosition+',scrollbars=yes,noresize';
	window.open(url,'',set);
}

function isUrl(str) {
	return isPattern("^https?:\\/\\/(?:[a-z0-9_-]{1,32}(?::[a-z0-9_-]{1,32})?@)?(?:(?:[a-z0-9-]{1,128}\\.)+(?:com|net|org|mil|edu|arpa|gov|biz|info|aero|inc|name|[a-z]{2})|(?!0)(?:(?!0[^.]|255)[0-9]{1,3}\\.){3}(?!0|255)[0-9]{1,3})(?:\\/[a-z0-9.,_@%&?+=\\~\\/-]*)?(?:#[^ '\"&<>]*)?$", str.toLowerCase());
}

function isNumeric(str) {
	return isPattern("^[0-9]+$", str);
}

function isInteger(str) {
	return isNumeric(str);
}

function isFloat(str) {
	return isPattern("^[1-9]?[0-9]+(\\.[0-9]+)?$", str);
}

function isEmail(str) {
	return isPattern("^([a-z0-9_-]+)(\\.[a-z0-9_-]+)*@((([a-z0-9-]+\\.)+(com|net|org|ru|by|[a-z]{2}))|([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}))$", str.toLowerCase());
}

function isPattern(pattern, str) {
	if(str.length && pattern.length) {
		var re = new RegExp(pattern, "g");
		return re.test(str);
	}

	return false;
}

function getElementPosition(elem)
{
    var w = elem.offsetWidth;
    var h = elem.offsetHeight;
    var l = 0;
    var t = 0;
    while (elem)
    {
        l += elem.offsetLeft;
        t += elem.offsetTop;
        elem = elem.offsetParent;
    }
    return {"left":l, "top":t, "width": w, "height":h};
}

function addEvent(element,aEvent,aFun)
{
	if (element.addEventListener)
	{
		element.addEventListener(aEvent,aFun,true); 
	}else if (element.attachEvent) element.attachEvent("on"+aEvent,aFun);
}

function setCookie(name,value,expires,path,domain,secure)
{
	document.cookie=name+"="+escape(value)+
					((expires)?";expires="+expires:"")+
					((path)?";path="+path:"")+
					((domain)?";domain="+domain:"")+
					((secure)?";secure":"");
}

function getCookie(name)
{
	var cookie=" "+document.cookie;
	var search=" "+name+"=";
	var setStr=null;
	var offset=0;
	var end=0;
	if (cookie.length>0)
	{
		offset=cookie.indexOf(search);
		if (offset!=-1)
		{
			offset+=search.length;
			end=cookie.indexOf(";",offset)
			if (end==-1)
			{
				end=cookie.length;
			}
			setStr=unescape(cookie.substring(offset,end));
		}
	}
	return(setStr);
}

function classForm(aForm)
{
	this.idForm=null;
	this.msgerror=null;
	this.arrValidate=new Array();
	this.addElement=function(aType,aId1,aId2)
	{
		this.arrValidate.push({type:aType,id1:aId1,id2:aId2});
	}
	this.validate=function()
	{
		for (var i=0;i<this.arrValidate.length;i++)
		{
			switch (this.arrValidate[i].type)
			{
				case 0:
					if (this.arrValidate[i].id1.value!='')
					{
						if (this.arrValidate[i].id2!='')
						{
							if (eval(this.arrValidate[i].id2))
							{
								this.msgerror.innerHTML="Имя "+this.arrValidate[i].id1.value+" занято!";;
								this.arrValidate[i].id1.focus();
								return false;
							}
						}
					}else{
						this.msgerror.innerHTML='Введите имя!';
						this.arrValidate[i].id1.focus();
						return false;
					}
				break;
				case 1:
					if (this.arrValidate[i].id1.value!='')
					{
						if (this.arrValidate[i].id1.value!=this.arrValidate[i].id2.value)
						{
							this.msgerror.innerHTML='Не совпали пароли!';
							this.arrValidate[i].id2.focus();
							return false;
						}
					}else{
						this.msgerror.innerHTML='Введите пароль!';
						this.arrValidate[i].id1.focus();
						return false;
					}
				break;
				case 2:
					if (this.arrValidate[i].id1.value!='')
					{
					 	if (!isEmail(this.arrValidate[i].id1.value))
					 	{
							this.msgerror.innerHTML='Некорректный E-Mail!';
							this.arrValidate[i].id1.focus();
							return false;
						}
				 	}else{
						this.msgerror.innerHTML='Введите E-Mail!';
						this.arrValidate[i].id1.focus();
						return false;
					}
				break;
				case 3:
					if (this.arrValidate[i].id1.value!='')
					{
					 	if (!isUrl(this.arrValidate[i].id1.value))
					 	{
							this.msgerror.innerHTML='Некорректный URL!';
							this.arrValidate[i].id1.focus();
							return false;
						}
					}
				break;
				case 4:
					if (this.arrValidate[i].id1.value=='')
					{
							this.msgerror.innerHTML='Заполните поле!';
							this.arrValidate[i].id1.focus();
							return false;
					}
				break;
			}
		}
		return true;
	}
}

var keyPressed=0;

