function psy_show_smiles()
{
	if(!psytop.frames['input'].psy_smiles_permit(window)){return false;}
	var smileplace=document.getElementById("smileplace");
	var smilebox=document.getElementById("smilebox");
	if(!smilebox)
	{
		var smilebox=document.createElement("div");
		smilebox.setAttribute("id","smilebox");
		smilebox.className="box";
		var fieldset=document.createElement("fieldset");
		fieldset.setAttribute("id","smile");
		var legend=document.createElement("legend");
		legend.appendChild(document.createTextNode("Смайлы "));
		var smile_sets=document.createElement("div");
		smile_sets.setAttribute("id","smile_sets");
		var hr=document.createElement("hr");
		fieldset.appendChild(legend);
		psy_add_close_cross(legend,"smile");
		fieldset.appendChild(smile_sets);
		fieldset.appendChild(hr);
		smilebox.appendChild(fieldset);
		smileplace.appendChild(smilebox);
		if(psytop.smile_set_name)
		{
			return psy_show_smile_sets();
		}
		else
		{
			psy_load_smiles();
		}
	}
	else
	{
		clearInterval(timeout);
		psytop.psy_clear_smiles();
		psy_remove_smilebox();
	}
}
function psy_remove_smilebox()
{
	if((psytop.nicks&&!psytop.nicks.closed)||(psytop.guest&&!psytop.guest.closed)||(psytop.mail&&!psytop.mail.closed))
	{
		var sb=document.getElementById("smilebox");
		if(sb)
		{
			sb.parentNode.removeChild(sb);
		}
	}
}
function psy_load_smiles()
{
	var smarea=document.getElementById("smarea");
	if(smarea){smarea.parentNode.removeChild(smarea);}
	var smile_set_select=document.getElementById("smile_set_select");
	if(smile_set_select){smile_set_select.parentNode.removeChild(smile_set_select);}
	psytop.frames['send'].document.location="/send.php?room="+psytop.frames['output'].room+"&uid="+psytop.frames['output'].uid+"&cmd=smile";
	var loadnote=document.createElement("center");
	loadnote.setAttribute("id","loadnote");
	loadnote.className="smset";
	loadnote.appendChild(document.createTextNode("Идёт загрузка смайлов..."));
	document.getElementById("smile_sets").appendChild(loadnote);
	timeout=setInterval(function(){psy_check_smiles();},100);
}
function psy_show_smile_sets()
{
	var smile_sets=document.getElementById("smile_sets");
	if(smile_sets)
	{
		var smile_set_select=document.createElement("select");
		smile_set_select.style.width='186px';
		smile_set_select.style.height='16px';
		smile_set_select.style.fontSize='10px';
		smile_set_select.style.textAlign='center';
		smile_set_select.setAttribute('id','smile_set_select');
		for(var i=0;i<psytop.smile_set_name.length;i++)
		{
			if(!window.psy_delete_chatsmile)
			{
				var smile_set=document.createElement("option");
				smile_set.setAttribute('value',psytop.smile_set_name[i]);
				smile_set.appendChild(document.createTextNode(psytop.smile_set_descr[i]));
				smile_set_select.appendChild(smile_set);
			}
		}
		smile_set_select.onchange=function(){psy_show_smile_set_grid(this.value);}
		smile_sets.appendChild(smile_set_select);
		//////
		smile_set_select.value='main';
		if(!window.psy_delete_smile&&psytop.chatsmile!=''||window.psy_delete_chatsmile)
		{
			var smile_set=document.createElement("option");
			smile_set.setAttribute('value','local');
			smile_set.appendChild(document.createTextNode('Смайлы чата'));
			smile_set_select.appendChild(smile_set);
			if(room!='main')
			{
				smile_set_select.value='local';
			}
		}
		//////
		if(psytop.mysmiles&&!window.psy_show_mysmile1&&!window.psy_delete_smile&&!window.psy_delete_chatsmile)
		{
			var smile_set=document.createElement("option");
			smile_set.setAttribute('value','psytop.mysmiles');
			smile_set.appendChild(document.createTextNode('Мои любимые'));
			smile_set_select.appendChild(smile_set);
			smile_set_select.value='psytop.mysmiles';
		}
		psy_show_smile_set_grid(smile_set_select.value);
		if(window.psy_show_mysmile1){window.psy_show_mysmile1();}
		return true;
	}
}
function psy_show_smile_set_grid(set)
{
	if(psytop.smile_set_name==null){psy_load_smiles();return;}
	var smile_sets=document.getElementById('smile_sets');
	if(smile_sets)
	{
		var table=document.getElementById('table');if(table){table.parentNode.removeChild(table);}
		if(!(set=='psytop.mysmiles'||set=='local'&&psytop.chatsmile==''))
		{
			var table=document.createElement('table');
			table.setAttribute('id','table');
			table.className='smset';
			table.style.width='100%';
			table.style.textAlign='center';
			var tbody=document.createElement('tbody');
			var tr=document.createElement('tr');
			for(var i=0;i<12;i++)
			{
				var td=document.createElement('td');
				td.setAttribute('id','td'+i);
				td.style.width='10px';
				td.style.maxWidth='10px';
				tr.appendChild(td);
			}
			tbody.appendChild(tr);
			table.appendChild(tbody);
			smile_sets.appendChild(table);
			psy_smile_set_grid_fill(set,1);
			psy_show_smile_set(document.getElementById('td1').firstChild,document.getElementById('smile_set_select').value,1);
		}
		else
		{
			psy_show_smile_set(null,set,1);
		}
	}
}
function psy_smile_set_grid_fill(set,start)
{
	var smiles=psy_get_smiles(set);
	if(smiles)
	{
		var smile_sets_num=Math.ceil(smiles.length / 30);
		psy_grid_td_clear('td0');
		psy_grid_td_clear('td11');
		if(start>1)
		{
			psy_create_grid_span('td0','<');
			var td0=document.getElementById('td0');
			td0.firstChild.onclick=function(){psy_grid_move(false);}
		}
		else{psy_grid_td_clear('td0');}
		for(var i=1;i<11;i++)
		{
			if(start>smile_sets_num){break;}
			psy_create_grid_span('td'+i,start,document.getElementById(set+'_'+start));
			start++;
		}
		if(smile_sets_num>=start)
		{
			psy_create_grid_span('td11','>');
		}
		else{psy_grid_td_clear('td11');}
	}
}
function psy_grid_td_clear(td)
{
	var td=document.getElementById(td);
	if(td.firstChild){td.removeChild(td.firstChild);}
}
function psy_grid_move(dir)
{
	var start=document.getElementById("td1").firstChild.innerHTML;
	start-=0;
	if(dir){start++;}else{start--;}
	psy_smile_set_grid_fill(document.getElementById('smile_set_select').value,start);
}
function psy_get_smiles(set)
{
	if(set=='local'){var smiles=psytop.chatsmile;return smiles.split('|');}
	if(set=='psytop.mysmiles'){var smiles=psytop.mysmiles;return smiles;}
	var num=psytop.psy_in_array(psytop.smile_set_name,set);
	if(num)
	{
		if(psytop.smile_set_content)
		{
			var smiles=psytop.smile_set_content[num];
			return smiles.split('|');
		}
		else
		{
			psy_load_smiles();
		}
	}
}
function psy_create_grid_span(id,text,inactive)
{
	var td=document.getElementById(id);psy_grid_td_clear(id);
	var span=document.createElement('span');
	span.appendChild(document.createTextNode(text));
	if(inactive)
	{
		span.className='current';
	}
	else
	{
		span.className='smset';
		span.onmouseover=function(){this.className='smsetiehover';}
		span.onmouseout=function(){this.className='smset';}
	}
	////
	if(text=='<')
	{
		span.onclick=function(){psy_grid_move(false);}
	}
	else if(text=='>')
	{
		span.onclick=function(){psy_grid_move(true);}
	}
	else
	{
		span.onclick=function(){psy_show_smile_set(this,document.getElementById('smile_set_select').value,text);}
	}
	////
	td.appendChild(span);
}
function psy_show_smile_set(element,set,num)
{
	if(!psytop.frames['input'].psy_smiles_permit(window)){psytop.psy_clear_smiles();psy_remove_smilebox();return false;}
	if(psytop.smile_set_name==null){psy_load_smiles();return;}
	var div=document.getElementById("smile");
	var smarea=document.getElementById('smarea');if(smarea){div.removeChild(smarea);}
	var smarea=document.createElement('div');
	smarea.setAttribute('id','smarea');
	smarea.style.whiteSpace='normal';
	smarea.style.width='auto';
	smarea.style.marginLeft='auto';
	smarea.style.marginRight='auto';
	smarea.style.textAlign='center';
	div.appendChild(smarea);
	//
	if(!(set=='psytop.mysmiles'||set=='local'&&psytop.chatsmile==''))
	{
		var span=document.createElement('span');
		span.setAttribute('id',set+'_'+num);
		smarea.appendChild(span);
		psy_create_grid_span(element.parentNode.getAttribute('id'),num,true);
		psy_smile_set_grid_fill(set,document.getElementById('td1').firstChild.innerHTML);
	}
	//
	if(navigator.userAgent.indexOf("IE")!=-1)
	{
		smarea.innerHTML+="<span class=\"bold\">ВНИМАНИЕ! При листании смайликов в браузере Internet Explorer, он может начать дёргаться и глючить!</span> Если вы постоянно с этим сталкиваетесь, мы рекомендуем вам установить и использовать для этого чата альтернативный браузер, такой как <span class=\"bold\"><a href=\"http://www.mozilla.com/en-US/firefox/all.html#ru\" target=\"_blank\">Mozilla Firefox</a></span>, <span class=\"bold\"><a href=\"http://www.google.com/chrome/\" target=\"_blank\">Google Chrome</a></span> или <span class=\"bold\"><a href=\"http://ru.opera.com/\" target=\"_blank\">Opera</a></span><hr/>";
	}
	var smiles=psy_get_smiles(set);
	if(set!='psytop.mysmiles')
	{
		var end=num*30;
		var start=end-30;
	}
	else
	{
		start=0;
		end=(psytop.mysmiles.length+1);
	}
	for(var i=start;i<end;i++)
	{
		if(smiles[i])
		{
			var smile=smiles[i];
			if(smile.indexOf(":")!=-1&&smile.indexOf("|")!=-1)
			{
				smile=smile.split(":");
				smile=smile[1].split("|");
				set=smile[1];
				smile=smile[0];
			}
			if(set=='local'){var addr=room+'/smile/'+smile+'.gif';}else{var addr='smile/'+set+'/'+smile+'.gif';}
			if(document.attachEvent)
			{
				smarea.innerHTML+='<img src="'+addr+'" onclick="psy_set_smile(\''+smile+'\',\''+set+'\');" onload="psytop.psy_scroll_to_bottom(window);psytop.psy_ie_img_onload_stop(this);" onmouseover="this.className=\'smiehover\';" onmouseout="this.className=\'sm\';" oncontextmenu="return false"/>';
			}
			else
			{
				var sm=document.createElement("img");
				sm.setAttribute('onclick','psy_set_smile("'+smile+'","'+set+'");');
				sm.setAttribute('onload','psytop.psy_scroll_to_bottom(window);');
				sm.setAttribute('oncontextmenu','return false;');
				sm.setAttribute("src",addr);
				sm.className="sm";
				smarea.appendChild(sm);
			}
		}
	}
}
function psy_check_smiles()
{
	if(psytop.smile_set_name&&(psytop.smile_set_name.length>0))
	{
		var loadnote=document.getElementById('loadnote');
		if(loadnote)
		{
			loadnote.parentNode.removeChild(loadnote);
			clearInterval(timeout);
			psy_show_smile_sets();
			psytop.psy_scroll_to_bottom(window);
		}
	}
}
function psy_smiles_renew(uid)
{
	if(uid!=psytop.frames['output'].uid&&psytop.smile_set_name)
	{
		psytop.psy_clear_smiles();
		if(document.getElementById("smilebox"))
		{
			psy_remove_smilebox();
			psy_show_smiles();
		}
	}
}
