//
// alert("hello !");


// Отчет об ошибке
function reportError(message, url, lineNumber)
{
 if (message && url && lineNumber)       
   alert("An error occurred at "+ url + ", line " + lineNumber + 
   "\nThe error is: " + message);
 return true;
}
//window.onerror = reportError;     // assign error handler
//window.noSuchProperty();          // throw an error

// alert( window.location.href );	

//    var server_url   = 'http://kukush';
  var server_url   = 'http://maska.osetia.ru';

// загружаем настройки
if (window.parent.frames[4]) {
	with (window.parent.frames[4]){			
		// текущий шрифт мессаджей
		font_type    ='Georgia';	
		font_color   ='009999';
		font_size    ='12';
		do_timestamp ='true';	
		do_colors    ='true';				 
	}
	LoadInfo();
}




// Пути
try { if (server_url == '') { } } catch (theException) {  server_url = '';  }
//alert(server_url);
var template_url = server_url+'/m2/';
var cgi_url      = server_url+'/cgi-bin/m2/index.pl';
var smiles_url   = server_url+'/m2/smiles/';

// Browser version 		
var br_type = 'NN';
/*
if (navigator.appName == "Netscape") { br_type ='NN' };
if (document.getElementById) { br_type ='OPERA' }; 
if (navigator.appName == "Microsoft Internet Explorer") { br_type ='IE' };   
*/

isDOM=document.getElementById //DOM1 browser (MSIE 5+, Netscape 6, Opera 5+)
isOpera=isOpera5=window.opera && isDOM //Opera 5+
isOpera6=isOpera && window.print //Opera 6+
isOpera7=isOpera && document.readyState //Opera 7+
isMSIE=document.all && document.all.item && !isOpera //Microsoft Internet Explorer 4+
isMSIE5=isDOM && isMSIE //MSIE 5+
isNetscape4=document.layers //Netscape 4.*
isMozilla=isDOM && navigator.appName=="Netscape" //Mozilla или Netscape 6.*

if (document.layers) { br_type ='NN' };
if (document.all) { br_type ='IE' };
if (isOpera) { br_type ='OPERA' }; 



var css_url = '<link href="' + template_url + 'index.css" rel="stylesheet" type="text/css">\n '+
		      ' <script src='+ template_url + 'index.js ></script>\n<body>\n ' ;

if (br_type =='NN')
{
    var css_url = '<body>\n<link href="' + template_url + 'index.css" rel="stylesheet" type="text/css">\n '+
		          ' <script src="'+ template_url + 'index.js" ></script>\n' ;
}


// Массив каналов
var chanels_array = new Array();
// Массив текстов каналов
var chanels_text = new Array();
// Массив каналов с непрочитанными мессаджами
var chanels_noreaded = new Array();
// Массив <a> табов каналов
var tabs_array = new Array();
// Текуший таб
var current_tab;
// Массив пользователей
var users_array   = new Array();
// Массив аватаров пользователей
var users_avatars  = new Array();
// ID сессии
var sessid;
// Режим табов
var left_tab_mode = 'users';

// Массив аватаров пользователей
var fonts_array  = new Array();
    fonts_array[0] = 'Arial, Helvetica';
	fonts_array[1] = 'Times New Roman';
	fonts_array[2] = 'Courier New';	
    fonts_array[3] = 'Georgia';
	fonts_array[4] = 'Verdana';

// презагрузка смайликов
function SmilesPreload() 
{
	for (i=0; i< smiles_pics.length ; i++)
	{	
		MM_preloadImages( smiles_url+smiles_pics[i] ); 	
    };	   
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}



var  tm = 0;
// Таймер для проверки соединения с сервером
var  server_connected_timer = null;		
var  demon_available_timer  = null;		
var  server_timer_counter;
var  demon_available_counter;
var  demon_availabled_in_port = -1;


//первый доступный аватар
function  StartAVAvailableCheck()
{  
   var dc_div  = document.getElementById("avatar");
   if ( ava != null){
	dc_div.innerHTML = "<div align=center><a href=# style=\"width:100%;\" onClick=\"LFCC('"+ava+"')\"><img src=\""+template_url+"avatars/"+avai+".gif\"  style=\"border:'0'\"></a></div>";
	//alert("sdfg "+ava);
   }
   // Запускаем таймер 
   //demon_available_timer = setInterval('DemonAvailableTick()', 1000);	
   //demon_available_counter = 0;   
   // parent.window.status= "Демон доступен на порту "+port;   
}





// Демон доступен клиенту ? запускаем таймер (на начальной странице)
function  StartDemonAvailableCheck()
{  
   // clearInterval(demon_available_timer);	
   // Если таймер уже запущен 
   if (demon_available_timer != null)   {  clearInterval(demon_available_timer);  };
   // Запускаем таймер 
   demon_available_timer = setInterval('DemonAvailableTick()', 1000);	
   demon_available_counter = 0;   
   // parent.window.status= "Демон доступен на порту "+port;   
}

function DemonAvailableTick()
{  
   demon_available_counter++;
   //window.status= "Пинг "+ demon_available_counter;  
   var dc_div    = document.getElementById("Connection");
   var dc_select = document.getElementById("connection_type_select");
   // window.status= 'Демон доступен на порту '+ demon_availabled_in_port+" Пинг "+ demon_available_counter; 
   if (demon_availabled_in_port > 0)
   {  // есть коннект
      clearInterval(demon_available_timer); 
      dc_div.innerHTML = 'Демон доступен на порту '+ demon_availabled_in_port;
      dc_select.value = 'tail';
   }
   if (demon_available_counter > 10)
   {  // таймаут, коннекта нет
      clearInterval(demon_available_timer); 
      dc_div.innerHTML = 'Таймаут. Демон недоступен.';    
      dc_div.style.color = '#CC3300'; 
	  dc_select.value = 'refresh';

   };     
}







// Произошло отключение от сервера
function ServerDisconnect()
{  
   clearInterval(server_connected_timer);	
   window.status= "Произошло отключение от сервера.";
   //alert('Произошло отключение от сервера');	   
}

// Произошло отключение от сервера
function ServerTimer()
{  
   server_timer_counter++;
   window.status= "Пинг с сервера "+server_timer_counter;  
   if (server_timer_counter > 5)
   {
      ServerDisconnect(); 
	  window.status = 'Произошло отключение от сервера';	  
   };     
}

// Анимация заголовка
function NMAnimateTimer()
{  
   var t = parent.document.title;
   t = t.substr(1,t.length) + t.charAt(0);
   parent.document.title = t;
}

// Нажатие на ссылку ников
function FC( link )
{
   //alert( link.innerHTML );
   var send_Frame  = window.parent.frames[5];
   send_Frame.UpdateLamp(form);	
   var form = send_Frame.document.form.textfield; //.value);
   form.value = link.innerHTML + ', '+ form.value; 
   send_Frame.UpdateLamp(form);

}

function FCC( text )
{
   //alert( text );
   var send_Frame  = window.parent.frames[5];
   send_Frame.UpdateLamp(form);	
   var form = send_Frame.document.form.textfield; //.value);
   form.value = text + ', '+ form.value; 
   send_Frame.UpdateLamp(form);

}


function LFCC( text )
{
   //alert( text );
   //var send_Frame  = window.];
   //send_Frame.UpdateLamp(form);	
   var form = document.loginform.textfield; //.value);
   form.value = text; 
   //alert(form.value);
   //send_Frame.UpdateLamp(form);

}



// Пинг от сервера
function Ping()
{ 
   if (  window.location.href == window.parent.location.href ) { window.parent.close(); window.parent.status = 'closed';  }
   tm = tm +1;			
   window.status= ""; 
   window.status= "Пинг с сервера "+tm;	  
  
   // Если таймер уже запущен 
   if (server_connected_timer != null) 
   { 
   	   clearInterval(server_connected_timer);
   }
   // Запускаем таймер 
   server_connected_timer = setInterval('ServerTimer()', 10000);	
   server_timer_counter = 0;
  /* /* */

   

}

// Тест записи cookie
var expire = new Date();
// expire.setTime (expire.getTime() - 2 * 86400001); 
expire.setTime (expire.getTime() + (180 * 24 * 3600000));
cookiename="cookie_m2";

function GetData(){
citemlen=(cookieValue.indexOf("`", indx)>=0)?cookieValue.indexOf("`", indx):cookieValue.length;
return (cookieValue.substring(indx, citemlen));
}

function GetCookie () 
{
   var lname ="cookie_m2=";
   var i = 0;
   while (i < document.cookie.length) {
    var j = i + lname.length;
    if (document.cookie.substring(i, j) == lname){
        var leng = document.cookie.indexOf (";", j);
        if (leng == -1) leng = document.cookie.length;
        return unescape(document.cookie.substring(j, leng));
    }
    i = document.cookie.indexOf(" ", i) + 1;
    if (i == 0) break; 
  }
  return "*";
}

function delCookie ( sender ) 
{
   var expire = new Date();
   expire.setTime (expire.getTime() - 2 * 86400001); 
   sender.cookie = "cookie_m2=*; expires=" + expire.toGMTString();		// document
}

// Запись настроек в cookie


function SaveInfo( sender ) 
{
   var expire = new Date ();
   expire.setTime (expire.getTime() + (180 * 24 * 3600000));
   var WholeCookie = "" ;
   // WholeCookie += 
   //document.form1.name.value+'`'+
   //document.form1.email.value;
   //document.cookie = "cookie_m2=" + escape (WholeCookie) +"; expires=" + expire.toGMTString() ;  
   	
   WholeCookie += 
   sender.getElementById('font_select').value+'`'+
   sender.getElementById('font_color_select').value+'`'+
   sender.getElementById('size_select').value+'`'+
   sender.getElementById('timestamp_checkbox').checked+'`'+
   sender.getElementById('colors_checkbox').checked+'`'+
   //sender.setupform.showme_checkbox.checked+'`'+

   sender.getElementById('name').value+'`'+
   'sometext`';
   //alert(123);
   sender.cookie = "cookie_m2=" + escape (WholeCookie) +"; expires=" + expire.toGMTString() ; 
   //alert('Save cookie 6 mouth: ' + "cookie_m2=" + escape (WholeCookie) +"; expires=" + expire.toGMTString() );
   LoadInfo();	
   window.status = 'Настройки сохранены в cookie.';
}

// Чтение настроек из cookie 
function LoadInfo() 
{
  //alert('LoadInfo()');	 
  cookieValue=(GetCookie());
  indx = 0, citemlen =0;
  if (( cookieValue != null ) && ( cookieValue != "*"  )) 
  {
    if (cookieValue.length-citemlen > 1) 
	{
      //document.form1.name.value=GetData();indx = citemlen + 1;
      //document.form1.email.value=GetData();indx = citemlen + 1;	  
	  // alert('Прочитали данные с cookie -  ' + GetData());	

	  window.parent.frames[4].font_type    =GetData(); indx = citemlen + 1;	
	  window.parent.frames[4].font_color   =GetData(); indx = citemlen + 1;	
	  window.parent.frames[4].font_size    =GetData(); indx = citemlen + 1;
      window.parent.frames[4].do_timestamp =GetData(); indx = citemlen + 1;
	  window.parent.frames[4].do_colors    =GetData(); indx = citemlen + 1;
	  window.status = 'Настройки загруженны из cookie.';
	}
  }

  // Удаляем
  //  delCookie();
  // Сохраняем опять
  // SaveInfo();

}

// Чтение настроек в форму 
function LoadInfoToForm( users_frame ) 
{
  //LoadInfo();	 
  users_frame.document.getElementById('font_select').value          = window.parent.frames[4].font_type;
  users_frame.document.getElementById('font_color_select').value    = window.parent.frames[4].font_color;
  users_frame.document.getElementById('size_select').value          = window.parent.frames[4].font_size;
  users_frame.document.getElementById('timestamp_checkbox').checked = window.parent.frames[4].do_timestamp;
  users_frame.document.getElementById('colors_checkbox').checked    = window.parent.frames[4].do_colors;
}

/*
*/

// Тест записи cookie  (конец)













// Закрываем окно канала и Таб
function CloseCurrTab()
{
    // alert('CloseCurrTab '+ current_tab); 	   
	if (current_tab != "@Гостинная")
	{
		SendTextToServer('/leave ');
		if (chanels_array.length > 1)
		{	
		  for (var i=0; i< chanels_array.length ; i++)
		  {	if (chanels_array[i] == current_tab)
			{	
				var tabsFrame  = window.parent.frames[1];
				chanels_array.splice(i,1);
  			    
				chanels_text.splice(i,1);		
				chanels_noreaded.splice(i,1);


				UpdateChanelsTabs(); 
					 //  chanels_array = 
				TabClick( tabsFrame.document.getElementById( "tab0" )  );
				break;
			 }
		  }; 	 
		}
	}
}

// Обновление Табов
function UpdateChanelsTabs() 
{
	var i;
	var tabsFrame  = window.parent.frames[1];
	//alert( tabsFrame.name );
    

	var	tab_str =  
		"<img src=\""+template_url+"/images/close.gif\" style=\"cursor\:hand;\" alt=\"Закрыть канал\""+
		"onMouseDown=\"parent.frames[4].CloseCurrTab();\" >";
	 /*  +	"<img src=\""+template_url+"/images/smile.gif\" style=\"cursor\:hand;\" alt=\"Смайлы\""+
		"onMouseDown=\"window.open(\"?smiles\");\" >";	*/

    tabsFrame.document.body.innerHTML =  css_url +  tab_str;

     /*	tabsFrame.document.body.innerHTML = css_url + 
		'<img src="'+template_url+'/images/close.gif" alt="' + "Закрыть канал" + '" '+
		'onMouseDown="parent.frames[3].CloseCurrTab();" >'+		
		'<img src="'+template_url+'/images/smile.gif" alt="' + "Смайлы" + '" '+
		'onMouseDown="window.open(\'?smiles\');" >';	
	    					  */
		//'<div class=tabs_button >&nbsp;X&nbsp;</div>';   //	<div class=Chat_text >	   // style=\"cursor\:hand;\"

	//alert( chanels_array.length );
	for (i=0; i< chanels_array.length ; i++)
	{	
		tabsFrame.document.body.innerHTML =  tabsFrame.document.body.innerHTML + 
			         '<span class=tabs_button  id=tab'+ i +
			         ' onClick="parent.frames[4].TabClick(this);" '+					// parent.frames[3].CloseCurrTab();
			         ' onDblClick="alert(123);">'+ chanels_array[i] +'</span>';
	};

    tabsFrame.document.body.innerHTML =  tabsFrame.document.body.innerHTML + 
		'<table width="100%"  border=0 cellpadding=0 cellspacing=0 class="top_line"><tr><td>&nbsp;</td></tr></table>';

	// Раcкрашиваем
	var tab_style;
	// Закрашиваем все табы неактивным цветом	   
	for (i=0; i< chanels_array.length; i++)
	{	
		tab_style = tabsFrame.document.getElementById( "tab"+i ).style;
		// Неактивный цвет
		tab_style.backgroundColor = '#121212';
		//alert( tab_style.backgroundColor );
		if ( chanels_array[i] == current_tab )
		{	
			tab_style.backgroundColor = '#3A3A3A';
		}
		if ( chanels_array[i] == chanels_noreaded[i] )
		{	// Непрочитанный таб значит
		    //alert(chanels_noreaded[i] );
			//tab_style.backgroundColor = '#00CC00';
			tab_style.color = '#006600';
			tab_style.backgroundImage = "url("+ template_url  +"images/anim.gif)";
		}
	};

    
};



// Первоначальное заполнение фреймов d_main.html
function BeginFillFrames() 
{
	//alert( 'BeginFillFrames !' );		





	//-----------------------------------------------------

	/*	// Browser version 		
		var br_type = 'NN';
		if (navigator.appName == "Netscape") { br_type ='NN' };
		if (navigator.appName == "Microsoft Internet Explorer") { br_type ='IE' };   
	 */



	//-----------------------------------------------------
	
	var tabs_Frame     = window.parent.frames[1];	
	var chat_Frame     = window.parent.frames[2];
	var users_Frame    = window.parent.frames[3];
	var sendform_Frame = window.parent.frames[5];
	// tabsFrame.document.write('write ok');

	// Запускаем html в верхний фрейм	 //
	//var url = 'http://kukush/cgi-bin/m2/index.pl?act=top'+ sessid; 
	var top_Frame      = window.parent.frames[0];



	//alert( window.parent.location );

	tabs_Frame.document.write( css_url + "&nbsp;" );
	loadjscssfile("http://maska.osetia.ru/m2/index.css",tabs_Frame);
	
	chat_Frame.document.write( css_url + "<div class=Chat_text >&nbsp;" );		
	loadjscssfile("http://maska.osetia.ru/m2/index.css",chat_Frame);
	
	//chat_Frame.document.write ( css_url + '<div class=Chat_text >&nbsp;6544644' );
	users_Frame.document.write( css_url + "&nbsp;" );
	loadjscssfile("http://maska.osetia.ru/m2/index.css",users_Frame);


	//alert(br_type);

	 // Глушит оперу верхний фрейм
	var url =  cgi_url + "?act=top&sessid="+ sessid;     
    //alert(url);
	if (br_type == 'IE') { 
		top_Frame.navigate( url );
	}  // это для IE
    else {  top_Frame.location.href =  url;  }		// for mozilla and Opera

	/**/


	// Посылаю команду входа в канал
    SendTextToServer('/join @Гостинная');
	// alert('BFF');

	// Если начинается с @ значит это канал
	// иначе приват
	NM( "@Гостинная", "", "Добро пожаловать !" );
		
	current_tab = tabs_Frame.document.getElementById( "tab0" ).innerHTML;
    TabClick( tabs_Frame.document.getElementById( "tab0" ));

	// Отправляем сообщение о себе (устарело в связи с вводом команды /join)		
	/* 
	url =  cgi_url + "?act=say&sessid="+ sessid + "&chanel="+current_tab+"&textfield="+'Hello';
    var sender =  window.parent.frames[6] ;
    // это для IE 
	if (br_type == 'IE') {  sender.navigate( url ); }
    else {  sender.location.href =  url;  }		// for mozilla
	*/

};

function replaceString( aSearch, aFind, aReplace) {
    result = aSearch;
    if (result > '') {
        a = 0;
        b = 0;
        while (true) {
            a = result.indexOf(aFind, b);
            if (a != -1) {
                result = result.substr(0, a) + aReplace + result.substr(a + aFind.length);
                b = a + aReplace.length;
            } else
            break;
        }
    }
    return result;
}

// Замена смайлов на картинки
function ReplaceSmiles( mess ) {

	var regExpressionObj = new RegExp;
	for (i=0; i< smiles_pics.length ; i++)
	{	
		mess = replaceString(  mess, smiles_texts[i], '<IMG SRC=\"'+ smiles_url+smiles_pics[i]+'\" BORDER=0 >'); 	
    };	 
    return mess;
}


// Новое сообщение пришло 
//        в канал  от кого текст аватар
function NM( chanel, from, mess, avatar, color, m_class ) 							   
{	
	// на первый план
	//focus();



	mess = ReplaceSmiles(mess);
	// Издеваемся над стилями
	  //var main_frame = window.parent.window.parent;		
	// var val =  main_frame.document.setupform.font_select.value;
    // current_font =      fonts_array[val];
	// var val =  main_frame.document.setupform.size_select.value;
    // current_font_size = val;
    
	//alert(  current_font );	// current_font
	var  chatFrame  = window.parent.frames[2];
    var  tabsFrame  = window.parent.frames[1];	

	// Смотрим есть ли такой пользователь
	if (m_class != 'history'){
		if (( from.charAt(0) != '@' ) & (from.length > 0))
		{
		   var flag = false;
		   for (i=0; i< users_array.length ; i++)
		   {   if (users_array[i] == from) { flag = true; } };
		   if (flag == false)
		   {   // Создаем пользователя
			 users_array[ users_array.length ] = from;
			 users_avatars[ users_array.length - 1 ] = avatar;
			 UpdateUsersList(); 
			 // Пишем о приходе его
			 NM( chanel, '', '<span class=Chat_sistem >В чат вошел: '+from+'</span>'); 
		   }
		}
	};

	// Смотрим есть ли такой канал
	if (chanel != '@Sistem') {
		var flag = false;
		for (i=0; i< chanels_array.length ; i++)
		{	if (chanels_array[i] == chanel)	{   flag = true;   }    };
		if (flag == false)
		{  	// alert('канала нет');
			// Создаем канал
			chanels_array[ chanels_array.length ] = chanel;
			chanels_text [ chanels_array.length - 1 ] = '';
		}
	}
	// Получаем время
	var time = new Date();
	var Second = time.getSeconds();	   if (Second < 10)	{ Second = '0'+Second;  };
	var	Minute = time.getMinutes();	   if (Minute < 10)	{ Minute = '0'+Minute;  };
	var	Hour   = time.getHours();	   if (Hour   < 10)	{ Hour   = '0'+Hour;    };
	time = ''+ Hour +':'+ Minute +':'+  Second ;
	


	// Ишем номер под которым канал проходит в массиве chanels_array[]		// Запись нового мессаджа в фрейм
	for (i=0; i< chanels_array.length ; i++)
	{	
		if (chanels_array[i] == chanel)
		{	
			if (chanel != '@Sistem') {
				if (mess != '')	{
					// Аватар ? 
					for (j=0; j< users_array.length ; j++)	{
				    	if (users_avatars[j] > '') 	{
						    var avatar = users_avatars[j];   
							var avatar_img = "<img src=\""+template_url+"avatars/"+avatar+".gif\"  style=\"border:'0'\">";
							var pattern = new RegExp( users_array[j], "g"); 
							mess = mess.replace( pattern , avatar_img);
						}	
					};	
				   
				   // Добавляем текст в chanels_text	
				   var time_part='';
				   if (do_timestamp == 'true') {  time_part = '<div class=Chat_date>'+time+'</div>';  };
				   if (from =='')  {  time_part = '';  };
				   // исторические мессаджи		 
				   var div_class = 'Chat_mess';
				   if (m_class == 'history')  {  
					   time_part = ''; 
 					   div_class = 'Chat_mess_history';				   
				   };

				   if (do_colors == 'false') {
					  color = '999999';
				   };		
				   
				   mess = '<div class=Chat_text><div class='+div_class+'>'+time_part + '<div class=Chat_mtext> '+
						  '<font face="'+font_type+'" style="font-size:'+font_size+'px;color:#'+color+';" >' +  mess	+ 
					      '</font>  </div></div></div>\n';
				   //alert(this.location.href);
				   chanels_text[i]	= chanels_text[i] + mess ;
				   if (current_tab == chanel)  {   chatFrame.document.body.innerHTML = chatFrame.document.body.innerHTML + mess;   }
				   else { // Сообщение пришло в неактивный таб 
				      // Надо добавить  в массиве непрочитанных табов
					 chanels_noreaded[i] = chanel;  
				   };
				}
			}
		}
	}	  
	
	UpdateChanelsTabs();

    // Прокрутка вниз
	chatFrame.scrollTo(0, 1000000);




 	//alert( text_style);


};

// Пользователь ушел
function UserOut( name ) 							   
{
	if (name != '')
	{
        // alert('Отключился клиент '+name);
	    for (i=0; i< users_array.length ; i++)
	    {	if (users_array[i] == name)	
			{  
			   users_array.splice(i,1);
			   users_avatars.splice(i,1);
			   break;
			}	
		};
	};

	UpdateUsersList();
	
 	NM( '@Гостинная', '', '<span class=Chat_sistem >Ушел пользователь: '+name+'</span>' );
	for (i=0; i< chanels_array.length; i++)
	{	
	   if (name == chanels_array[i])
	   { 
		   NM( name, '', '<span class=Chat_sistem >Ушел пользователь: '+name+'</span>' );
    	   break;
	   }
	}


};

// Открываем приват (локал)
function OpenPrivatWith( sender ) 
{	
	//alert('OpenPrivatWith '+ sender);

	// Посылаю команду входа в канал
    SendTextToServer('/join '+sender);    

    // Не открыт ли он (приват) уже ?
    var tabs_Frame  = window.parent.frames[1];	
	//alert(tabs_Frame);
  
	for (i=0; i< chanels_array.length; i++)
	{	
	   if (sender == chanels_array[i])
	   {   // Is opened, activate it
		   // Click by button
		   current_tab = sender;
	       TabClick( tabs_Frame.document.getElementById( "tab"+i ));
    	   break;
	   }
	}   
	// not opened ?
	if (sender != current_tab)
	{
	   NM(sender, sender,'');	
	   TabClick( tabs_Frame.document.getElementById( "tab"+(chanels_array.length-1) ));
	};
	current_tab = sender;


	UpdateChanelsTabs(); /**/
	return false;
};

// Добавляем смайл в поле ввода 
function Smile( text ) 
{	
	// alert('Paste  Smile '+ text);
    //var main_Frame  = document.getElementById( "mainIFrame" );
    // alert( main_Frame.contentWindow.frames[4] );				//	URL		 .frames[4]
	// var send_Frame  = main_Frame.contentWindow.frames[4];	
	var send_Frame  = window.parent.frames[5];			
	// alert( send_Frame );	
	var form = send_Frame.document.form.textfield; //.value);
	send_Frame.UpdateLamp(form);
	form.focus();
	form.value = form.value + ' '+ text; 	
	send_Frame.UpdateLamp(form);
	return false;
};


// Добавляем текст в поле ввода 
function PasteToSendForm( sender ) 
{	
	//alert('PasteToSendForm '+ sender);
    var send_Frame  = window.parent.frames[5];	
	//alert( send_Frame.name )	
	var form = send_Frame.document.form.textfield; //.value);	
	form.focus();		
	send_Frame.UpdateLamp(form);
	form.value = sender + ', '; 	
	send_Frame.UpdateLamp(form);
	// alert(form.value );
	return false;
};


// Нажатие на Таб
function TabClick( sender ) 
{	
	
	//window.status = 'TabClick_'+ sender.innerHTML; 
	// Обновляем цвет Табов
	current_tab = sender.innerHTML; 
	
    // var chat_Frame  = window.parent.frames[2];
	var chat_Frame  = window.parent.frames[2];
	//alert( chat_Frame.name );
	// Выводим текст из chanels_text		
	

	/*
	var full_text = '';
	for (i=0; i< chanels_array.length; i++)	{
		full_text =	full_text +'<br><hr><br>'+chanels_text[i];
	}

	 */

	for (i=0; i< chanels_array.length; i++)
	{	
	   if (current_tab == chanels_array[i])		
	   {   //alert(chanels_text[i]);
	       //alert(chat_Frame.document.body.innerHTML);
	       chat_Frame.document.body.innerHTML = chanels_text[i];  
		  // alert(chat_Frame.document.body.innerHTML);
     	   chanels_noreaded[i] = '';
		   break;
	   }
	}   

	// конкретный скролл
    chat_Frame.scrollTo(0, 1000000);
	chat_Frame.scrollTo(0, 1000000);
	chat_Frame.scrollTo(0, 1000000);
	chat_Frame.scrollTo(0, 1000000);
	chat_Frame.scrollTo(0, 1000000);

	UpdateChanelsTabs();
	
	return false;
};


// Обновление Списка пользователей
function UpdateUsersList( mode ) 
{
	if ( left_tab_mode == 'users' ) { if (mode == null) { mode = 'users' }; };
	if (mode > '')
	{	//
		// alert('UpdateUsersList');
		//var usersFrame = window.parent.frames[2];	
		var usersFrame = window.parent.frames[3];	
		
		// Кнопки
		var write_text = '<div class=Chat_text><table width="100%"  border=0 cellspacing=0 cellpadding=0><tr align=left >' +
					 '<td width=33% ><a id=users    class=tabs_button style="width:94%;" href=# onClick="parent.frames[4].UpdateUsersList(\'users\') ;">В_чате</a></td>'+
					 '<td width=33% ><a id=smiles   class=tabs_button style="width:94%;" href=# onClick="parent.frames[4].UpdateUsersList(\'smiles\');">Смайлы</a></td>'+
					 '<td width=34% ><a id=settings class=tabs_button style="width:94%;" href=# onClick="parent.frames[4].UpdateUsersList(\'settings\');">Настройки</a></td>'+
					 '</tr></table>\n'+
					 '<table width="100%" border=0 cellspacing=0 cellpadding=0 class="top_line" ><tr align=left><td>&nbsp;</td></tr></table>';	

		// Контент
		if ( mode == 'smiles')
		{	left_tab_mode =	'smiles';
			write_text = write_text + '<table width="100%" border=0 cellspacing=0 cellpadding=0 ><tr>';
			var td_counter = -1;
			for (i=0; i< smiles_pics.length ; i++)
			{
				td_counter++;
				if (td_counter>5)  {  write_text = write_text + '</tr><tr>';   td_counter = 0;	};
				write_text = write_text + '<td  width=12% height=45 align=center valign=middle ><a href="#"><IMG SRC="'+ smiles_url+smiles_pics[i]+
							 '" BORDER=0 ALT="'+smiles_texts[i]+'" onClick="Smile(\''+smiles_texts[i]+'\');"></a></td>'; 
			};
			write_text = write_text + '</tr></table>';
		}

		if ( mode == 'settings')
		{	left_tab_mode =	'settings';
			write_text = write_text + '<div class=Chat_text style="padding-left:10"><div class=sub_text>'+
			'Настройки' +
			'<form name="setupform" id="setupform" method="post" action="" class="form_Text" >'+
			'Шрифт окна чата <br>'+
			'<select name="font_select" id="font_select">'+
			'<option value="Arial">           Arial, Helvetica</option>'+
			'<option value="Times New Roman"> Times New Roman</option>'+
			'<option value="Courier New">     Courier New</option>'+
			'<option value="Georgia">         Georgia</option>'+
			'<option value="Verdana">         Verdana</option>'+
			'</select>'+
			'<br><br>'+
			'Цвет Шрифта <br>'+
			'<select name="font_color_select" id="font_color_select">'+
			'<option value="999999" style="color:#999999">#999999</option>'+
			'<option value="FFFFCC" style="color:#FFFFCC">#FFFFCC</option>'+
			'<option value="FFCC66" style="color:#FFCC66">#FFCC66</option>'+
			'<option value="FF9900" style="color:#FF9900">#FF9900</option>'+
			'<option value="FFCC99" style="color:#FFCC99">#FFCC99</option>'+
			'<option value="FFCCCC" style="color:#FFCCCC">#FFCCCC</option>'+
			'<option value="CC9999" style="color:#CC9999">#CC9999</option>'+
			'<option value="FF6699" style="color:#FF6699">#FF6699</option>'+
			'<option value="FF99CC" style="color:#FF99CC">#FF99CC</option>'+
			'<option value="FF66CC" style="color:#FF66CC">#FF66CC</option>'+
			'<option value="CC99CC" style="color:#CC99CC">#CC99CC</option>'+
			'<option value="CC66FF" style="color:#CC66FF">#CC66FF</option>'+
			'<option value="CC99FF" style="color:#CC99FF">#CC99FF</option>'+
			'<option value="9966CC" style="color:#9966CC">#9966CC</option>'+
			'<option value="CCCCFF" style="color:#CCCCFF">#CCCCFF</option>'+
			'<option value="9999CC" style="color:#9999CC">#9999CC</option>'+
			'<option value="3333FF" style="color:#3333FF">#3333FF</option>'+
			'<option value="6699FF" style="color:#6699FF">#6699FF</option>'+
			'<option value="0066FF" style="color:#0066FF">#0066FF</option>'+
			'<option value="99CCFF" style="color:#99CCFF">#99CCFF</option>'+
			'<option value="99CCCC" style="color:#99CCCC">#99CCCC</option>'+
			'<option value="66CC99" style="color:#66CC99">#66CC99</option>'+
			'<option value="CCFFCC" style="color:#CCFFCC">#CCFFCC</option>'+
			'<option value="CCFF99" style="color:#CCFF99">#CCFF99</option>'+
			'<option value="CCCC66" style="color:#CCCC66">#CCCC66</option>'+
			'<option value="CCCC99" style="color:#CCCC99">#CCCC99</option>'+
			'<option value="6699CC" style="color:#6699CC">#6699CC</option>'+


			'</select>'+
			'<br><br>'+
			'Размер Шрифта <br>'+
			'<select name="size_select" id="size_select">'+
			'<option value="11">11</option>'+
			'<option value="12">12</option>'+
			'<option value="13">13</option>'+
			'<option value="14">14</option>'+
			'<option value="15">15</option>'+
			'<option value="16">16</option>'+
			'<option value="17">17</option>'+
			'<option value="18">18</option>'+
			'<option value="20">20</option>'+
			'<option value="25">25</option>'+ 
			'</select>'+
			'<br><br>'+
			'<input name="timestamp_checkbox" type="checkbox" id="timestamp_checkbox" value="checkbox"> Показывать TimeStamp (отметку времени)'+
			'<br><br>'+
			'<input name="colors_checkbox" type="checkbox" id="colors_checkbox" value="colors"> Показывать цвета в сообщениях'+
			'<br><br>'+
			'<input name="name" type="text" id="name" value="100">'+
			'<br><br>'+
			'<input type="button" name="Button" value=" Сохранить в Cookie " onClick="SaveInfo(document); // SetupLayerButtonClick();">'+
			'</div></div></form>';
				  
		

		}

		if ( mode == 'users')
		{
			left_tab_mode =	'users';
			// Пользователи
			write_text = write_text + '<div class=Chat_text><div class=sub_text>&nbsp;&nbsp; Пользователи: &nbsp;&nbsp;</div><br>';
			var avatar;
			
			for (i=0; i< users_array.length ; i++)
			{
				avatar = users_avatars[i];
				
				if (avatar > '' )
				{
				   //avatar =	"<img src=\""+template_url+"avatars/"+avatar+".gif\"  style=\"border:'0'\"> &nbsp;" + users_array[i];
				   //avatar =	"<img src=\""+template_url+"avatars/"+avatar+".gif\"  style=\"border:'0'\"> &nbsp;";
				   avatar = '&nbsp;<a href=# style="width:100%;" onClick="parent.frames[4].FCC(\''+users_array[i]+'\')"><img src="'+template_url+'avatars/'+avatar+'.gif" border="0" style="border:\'0\'"></a>&nbsp;';
				}
				else
				{
				   //avatar = users_array[i];
				   avatar = '<a href=# class="tabs_button" style="width:100%;" onClick="parent.frames[4].FCC(\''+users_array[i]+'\')">'+users_array[i]+'</a>'
				}
				write_text = write_text + '<table width="100%"  border=0 cellspacing=0 cellpadding=0>' +
					     '<tr align=left> '+
					     '  <td width=10 valign=middle><a href=# onClick="parent.frames[4].OpenPrivatWith(\''+users_array[i]+'\' );">'+
					     // '<img onClick="alert(123); parent.frames[4].OpenPrivatWith("'+users_array[i]+'");" src='+template_url+'/images/privat.gif alt="Открыть приват" border=0></a> '+
					     '  <img src='+template_url+'/images/privat.gif alt="Открыть приват" border=0></a> '+
					     '  </td>'  +
					     '  <td width=10 valign=middle><a href=# onClick="parent.frames[4].OpenUserInfo(\''+users_array[i]+'\' );">'+
					     // '<img onClick="alert(123); parent.frames[4].OpenPrivatWith("'+users_array[i]+'");" src='+template_url+'/images/privat.gif alt="Открыть приват" border=0></a> '+
					     '  <img src='+template_url+'/images/info.gif alt="Информация о пользователе" border=0></a> '+
					     '  </td>'  +
					     '  <td width=100% valign=middle> &nbsp;'+avatar+'</td>'+
					     '  <td valign=middle>&nbsp;</td> '+
					     '</tr></table>\n';		
				
			};
		};

		usersFrame.document.body.innerHTML = write_text;  

		if ( mode == 'settings') { LoadInfoToForm(usersFrame); };

		// Раскраска табов
		var tab_style = usersFrame.document.getElementById( mode ).style;
		tab_style.backgroundColor = '#3A3A3A';
	}
};

// Показ информации о пользователе
function OpenUserInfo( username )
{
    alert('Информация о пользователе: \n' + username);
    


};

// Индикатор заполненности текстового поля
function UpdateLamp( text )
{	
	// alert('lamp'); 
	 var pic = document.getElementById('lamp'); //getElementById('dataDiv');
	 if (text) {
  	   if (text.value == '')
	   { pic.src = template_url+'/images/red_lamp.gif' }  else	{ pic.src = template_url+'/images/green_lamp.gif' }; 
	   // Фокус на поле ввода 
	   var buf = text.value;	   
	   text.value =	'';	 
	   text.focus();
	   text.value =	buf;
	   text.focus();
	 }

	 return false;
}; 

// Прокрутка вниз слоя с настройками
function ScrollSetupDiv()
{	  
	 //alert( window.name );
	 var n_div = document.body; //getElementById('dataDiv');
	 //alert( n_div );
	 //alert( n_div.scrollHeight );	 	
	 //alert( n_div.scrollTop );	
	 //n_div.scrollTo(0,  7000); 
	 //window.scrollTo(0,  7000);		
	 //document.writeln('<br>ScrollSetupDiv=', document.getElementById('SetupLayer').style.top, '  ', n_div.scrollTop ); 

	 //var setup_div_style = document.getElementById('SetupLayer').style; //   
	// setup_div_style.pixelTop = n_div.scrollTop;
	 //setup_div_style.top 	  = n_div.scrollTop+'px';

	 //setup_div_style.moveTo( 0 , 100 );
	 
	 //alert('1');
	 return false;
}; 

// Прокрутка вниз страницы с текстом
function SB()
{	  
	 window.scrollTo(0,  7000000);
	 return false;
};

// Тест смены шрифта на странице
function SetFrameFont(form)
{	  
	 //  alert( form.fontselect.options[form.fontselect.value - 1].text );
	 var n_font = form.fontselect.options[form.fontselect.value - 1].text;
	 var n_size = form.sizeselect.value;
	 //alert( n_size  );	
	 //var main_frame =  window.parent.frames[1];		
     var body_style = document.getElementById('dataDiv').style; 		//   body
	 body_style.fontFamily = n_font;
	 body_style.fontSize   = n_size;
	 return false;
};


// Отправить сообщение на сервер
function SendTextToServer(text)
{
	
	var sessid = window.parent.frames[4].sessid;			//frames.
	//var chanel = window.parent.frames.frames[4].current_tab;
	var chanel = window.parent.frames[4].current_tab;
	if (chanel == null)	{chanel = '' };
	//if (font_color == undefined )	{ var font_color = '' };

	var color  = font_color;			
	
    //alert(color);
	//alert(chanel + ' / ' + sessid);  							
	//	/cgi-bin/rpc/rpc.pl
		 // var url = "http://kukush:90?act=say&sessid="+form.sessid.value + "&textfield="+form.textfield.value;
		// var url =  cgi_url + "?act=say&sessid="+form.sessid.value + "&chanel="+chanel+ "&textfield="+form.textfield.value;
	var url =  cgi_url + "?act=say&sessid="+ sessid + "&chanel="+chanel+ "&color="+color+ "&textfield="+text;		
	var sender =  window.parent.frames[6] ;		
	
	// это для IE 
	if (br_type == 'IE') {  sender.navigate( url ); // alert("SendText ! " + sender);	
	}
	else
	// для мозиллы и оперы
	{ //alert(br_type);
	  sender.location.href =  url; 		 
	}			  
	
	//alert( cgi_url );
}

// Отправить сообщение на сервер
function SendText(form)
{
	  //if (form.textfield.value == 'Текст набери!') {form.textfield.value ='';}
	  if (form.textfield.value.length > 0) 
	  {
		 window.parent.frames[4].SendTextToServer( form.textfield.value );
		 var text = form.textfield.value;
		 form.textfield.value = '';
         if ( text.charAt(0) == '/' ) // Значит команда         
		 {  window.parent.frames[4].NM( window.parent.frames[4].current_tab, '', '<span class=command_text>'+text+'</span>');

            if ( text.indexOf( '/join @') == 0 ){
                 window.parent.frames[4].OpenPrivatWith( text.substring( 6, text.length  )  ) 
			}

            if ( text == '/leave' ){
				if ( window.parent.frames[4].current_tab == '@Гостинная')
				{   
					var url = 'javascript:history.back(1)'; 
					if (br_type == 'IE') {  window.parent.navigate( url ); }      // это для IE 
									else {  window.parent.location.href =  url; } // для мозиллы
				}
			}
         }
         window.status= "Сообщение отправленно на сервер.";
	  }
	  else   {   window.status = 'Текст набери!'; 	  }
	  return false;
};

// Заглушка
function cl(form)
{
	  return false;
};

// Вставить смайлика текст в поле ввода
function emoticon(text) {
	var txtarea = document.sendform.text;
	text = ' ' + text + ' ';
	if (txtarea.createTextRange && txtarea.caretPos) {
		var caretPos = txtarea.caretPos;
		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
		txtarea.focus();
	} else {
		txtarea.value  += text;
		txtarea.focus();
	}
};

// Проверка формы при входе в систему
function Login(form)
{     //alert("Login !");
	  if (form.textfield.value.length > 0) 	{
		 //window.location.href="?act=index";	  ?act=index&
		 form.action = "?act=chat";	 
		 form.submit();
		 return true;
	  }
	  else {  alert("Надо бы заполнить поля то,\n а то как то нехорошо получается...   ");  
	  		  return false;
	  }
};

// Проверка формы при регистрации
function Register(form)
{
	  if (form.login.value.length > 0) {
		 if (form.pass.value == form.pass2.value) {    
		    form.action = "rpc.pl";
		    return true;
		 }
		 else  {  alert("Пароль не совпадает.");  }
	  }	 else {  alert("Надо бы заполнить поля то,\n а то как то нехорошо получается...");  }
	  return false;
};



// Табличные функции
// рисуем заголовок таблицы с заданием ширины  (строка с разделителем |)
function TableHeader( h_str ) {
   	//alert(h_str);
	// заголовок таблицы
	var i;
	var buf = '<table width="96%" class=data_table  cellpadding=0 cellspacing=0 >';
	var listArray = new Array;
	listArray = h_str.split("|");
	//alert(listArray[0]);	
	buf = buf + '<tr>';
    for (i=0; i<(listArray.length); i+=2)	{ 
		buf = buf + '<td class=data_table_header width='+listArray[i]+' >'+ listArray[i+1] +'&nbsp;</td>';
	}
	buf = buf + '</tr>';
    //alert(buf);			
	Table_buffer = buf;
}

// рисуем строку таблицы (строка с разделителем |)
function TableRow( h_str ) {
	var i;
	var listArray = new Array;
	listArray = h_str.split("|");
	//alert(listArray[0]);	
	var buf = '<tr class=data_table_row style="	background-color:#070707;" onMouseOver="m_over_row(this)" onMouseOut="m_out_row(this)" >';
    for (i=0; i<(listArray.length); i++)	{ 
		buf = buf + '<td class=data_table_row style="padding-left:10;" >'+ listArray[i] +'&nbsp;</td>';			// class=data_table
	}
	buf = buf + '</tr>';
	Table_buffer = Table_buffer + buf;
}

// рисуем задницу таблицы 
function TableFooter( div_id ) {
	document.getElementById( div_id ).innerHTML = 
	document.getElementById( div_id ).innerHTML + Table_buffer + '</table>';
}

// мышь на строке таблицы (меняем цвет фона)
function m_over_row( node ) {
   node.style.backgroundColor = '#242424'; //'#FF9900';	// #F0F0F0
}

// мышь ушла со строки дерева
function m_out_row( node ) {
   node.style.backgroundColor = '#070707';
}

// Табличные функции  (конец)


function loadjscssfile(filename, frame)
{
    var fileref=frame.document.createElement("link");
    
    fileref.setAttribute("rel", "stylesheet");
    fileref.setAttribute("type", "text/css");
    fileref.setAttribute("href", filename);

    frame.document.getElementsByTagName("head").item(0).appendChild(fileref);
}
	