/*выпадающее левое меню*/

navHover = function() {
     var lis = document.getElementById("menu").getElementsByTagName("li");
     for (var i=0; i<lis.length; i++) {
          lis[i].onmouseover=function() {
               this.className+=" iehover";
          }
          lis[i].onmouseout=function() {
               this.className=this.className.replace(new RegExp(" iehover\\b"), "");
          }
     }
}
if (window.attachEvent) window.attachEvent("onload", navHover);

/* большие картинки */

function show_box(){
	if (get('show_box')){
		var obj=getElementsByClass('show_big_pic', document, 'a');
		for(i=0;i< obj.length;i++){
			 obj[i].onclick=function(){show_big_pic(this); return false;};
		}
	}
}

function show_big_pic(obj){
/*	var img = get('main_img');
	var url = obj.href;
	img.src = url;
	var top = obj.offsetTop;
	top = top-100;
	var box =get('show_box');
	box.style.visibility='visible';
	box.style.top = top+'px';
	box.style.display='block';   старый вариант, в ие работал криво*/
	var img = get('main_img');
	var url = obj.href;
	img.src = url;
	var top = 0;
	var elem = obj;
	while(elem) {
		top = top + parseInt(elem.offsetTop);
		elem = elem.offsetParent;
   	};
	top = top-130;
	if (get('show_box')){
		var box =get('show_box');
		box.style.visibility='visible';
		box.style.top = top+'px';
		box.style.display='block';
	};	
}

function close_s(){
	var box = get('show_box');
	var img = get('main_img');
	if(box.style.display != 'none'){
		img.src='';
		box.style.visibility='hidden';	
		box.style.display='none';
	}
	return false;
}

/* общее для вставки в сообщение */

if (navigator.userAgent.indexOf('Opera') != -1) advanced_code = 0;
else if (navigator.appName && navigator.appName.indexOf("Microsoft") != -1 && navigator.userAgent.indexOf("Windows") != -1 && navigator.userAgent.indexOf("Windows 3.1") == -1) advanced_code = 1; // use IE 4+ specific createRange functionality
	 else advanced_code = 0;

function caret( node ) { 

	var selll = document.selection.createRange();
    var clonell = selll.duplicate();
    
	if(node.selectionStart) return node.selectionStart; 
	else if(!document.selection) return 0; 
	var c        = "\001"; 
	var sel    = document.selection.createRange(); 

	if (sel.text.length<1) { 
		var dul    = sel.duplicate(); 
		var len    = 0; 
		dul.moveToElementText(node); 
		sel.text   = c; 
		len        = (dul.text.indexOf(c)); 
		sel.moveStart('character',-1); 
		sel.text   = ""; 
		return len; 
	}else{
		selll.collapse(true);
 	   	clonell.moveToElementText(node);
  	  	clonell.setEndPoint('EndToEnd', selll);
   	 	return clonell.text.length;//хранит позицию курсора, надо учесть символы переноса
   	 	 
	} 
  
} 
  
function numword( obj ) { 

	var crt=caret( obj ); 

	if (crt!="select") { 

		if (crt==-1) crt=obj.value.length; 

		var h='%0A'; 
		var s=escape(obj.value.substr(0,crt)); 
		var m=3; 
		var res=0; 
		var i=4; 

		while (i <= s.length-1) { 
			ch=s.substr(i,m); 
			if (ch==h) {res+=1; i=i+m-1;}   
			else i++;   
		} 
		return res+1; 
	} 
	else return false; 

} 
	 
	 
function ieWrapHTML(textfield, textreplace ) {
	textfield.focus();
	var sel3 = document.selection.createRange();
	vrtext = sel3.text;
	sel3.text = " ";
	var sel = document.selection.createRange();
    var clone = sel.duplicate();
	var sel2 = sel.duplicate();
	var selend = sel.duplicate();
	textreplace = textreplace.replace( /\[RRR\]/gi, '"' );
	textreplace = textreplace.replace( /\[xxx\]/gi, vrtext );		
    sel.collapse(true);
    clone.moveToElementText(textfield);
    clone.setEndPoint('EndToEnd', sel);
    var pos_cursor = clone.text.length;//хранит позицию курсора, надо учесть символы переноса
	var dvig = textreplace.indexOf("[CCC]");//Узнаем куда надо вставить курсор
	textreplace = textreplace.replace( /\[CCC\]/gi, "" );			
	pos_end = pos_cursor + textreplace.length;
	if( dvig >0 ){
		pos_cursor = pos_cursor + dvig;
	}
	knum = numword(textfield);//поправочный коэффициент так как перенос строки это два символа
	if( knum ){
		pos_cursor = pos_cursor - knum + 1;	
	}
	if( vrtext.length > 0 ){
		pos_cursor = pos_end - knum + 1;
	}
	sel2.text = textreplace;
	var rng=textfield.createTextRange();
	rng.collapse();
	rng.moveStart("character",pos_cursor);
	rng.select();
}

function mozWrapHTML(textfield, textreplace ) {
	textreplace = textreplace.replace( /\[RRR\]/gi, '"' );		
	textreplace       = textreplace.replace( /\[RRR\]/gi, '"' );
	var selLength = textfield.textLength;
	var selStart = textfield.selectionStart;
	var selEnd = textfield.selectionEnd;
	var scrollTop = textfield.scrollTop;
	var dvig = textreplace.indexOf("[CCC]");//Узнаем куда надо вставить курсор
	var pos_cursor = selStart + dvig;
	pos_cursor = selStart;
	textreplace       = textreplace.replace( /\[CCC\]/gi, '' );
	if( dvig >0 ){
		pos_cursor = pos_cursor + dvig;
	}
	if (selEnd == 1 || selEnd == 2)
		selEnd = selLength;

	var s1 = (textfield.value).substring(0,selStart);
	var s2 = (textfield.value).substring(selStart, selEnd)
	var s3 = (textfield.value).substring(selEnd, selLength);
	var vrtext = textreplace.replace( /\[xxx\]/gi, s2 );
	textfield.value = s1 + vrtext + s3;
	if( (selEnd - selStart)>0 ){
		pos_cursor = selStart+vrtext.length;
	}
	textfield.focus();
	textfield.selectionStart = pos_cursor;
	textfield.selectionEnd = pos_cursor;
	textfield.scrollTop = scrollTop;
}

function anyWrapHTML(textfield, textreplace, prompttext)
{
     textreplace = textreplace.replace( /\[RRR\]/g, '"' );
     textreplace = textreplace.replace( /\[CCC\]/g, '' );
     if (!textreplace.test(/^\s*<img[^>]+>\s*$/))
	 {
          inserttext = prompt("Aaaaeoa oaeno: "+"\n");
          if ((inserttext != null) && (inserttext != ""))
          textfield.value += textreplace.replace( /\[xxx\]/g, inserttext );
     }
     textfield.value += textreplace;
}

function insertCodeHTML(textfield, textreplace )
{
	if(advanced_code){ //Internet Explorer
		ieWrapHTML(textfield, textreplace);
	}else if( textfield.selectionStart || textfield.selectionStart == '0' ){ //Mozila
		mozWrapHTML(textfield, textreplace);
	}else{ // другие браузеры
		anyWrapHTML(textfield, textreplace, "");
	}
}

/* end общее для вставки в сообщение */

/* смайлы */

function smile_box(){
	if (get('smile')){
		var elem = get('smile');
		var obj = elem.getElementsByTagName('a');
		for(i=0;i< obj.length;i++){
			 if (obj[i].id!='link_smiles'){obj[i].onclick=function(){ins_smile(this); return false;}};
		}
	}
}

function ins_smile(obj){
	var msg = get('message');
	var str = obj.style.backgroundImage;
	var first = str.lastIndexOf('/');
	var last = str.lastIndexOf('.');
	str = str.substring(first+1, last);
	str = ':'+str+':';
	switch(str)
	{
		case ":1:": str = ':)'; break;
		case ":2:": str = '=-0'; break;		
		case ":3:": str = ';-)'; break;
		case ":4:": str = ':-p'; break;
		case ":5:": str = ':\'('; break;
		case ":6:": str = ':-/'; break;
		case ":7:": str = ':-*'; break;
		case ":8:": str = ':('; break;
		case ":9:": str = ':-X'; break;
		case ":10:": str = ':-D'; break;
	};
	insertCodeHTML(msg, str+' [CCC][xxx]');
}

function swap_smile(id){
	var obj = get(id);
	var str = get('link_smiles');
	if(obj.style.display=='none'){
		obj.style.display='';
		obj.style.visibility='visible';
		str.innerHTML='X скрыть окно смайликов X';
		
	}else{
		obj.style.display='none';
		obj.style.visibility='hidden';
		str.innerHTML='показать все смайлики';		
	}
	return false;
}

/* кнопочки редактирования */

function btn_box(){
	if (get('btn')){
		var elem = get('btn');
		var obj = elem.getElementsByTagName('a');
		for(i=0;i< obj.length;i++){
			obj[i].onclick=function(){return btClick(this);};
		}
	}
}

function btClick(obj)
{	
	var msg = get('message');
	var key = obj.innerHTML;
	switch(key)
	{
		case "P": insertCodeHTML( msg, '<p>[CCC][xxx]</p>' ); break;
		case "A": insertCodeHTML( msg, '<a href="" title="">[CCC][xxx]</a>' ); break;
		case "B": insertCodeHTML( msg, '<strong>[CCC][xxx]</strong>' ); break;
		case "OT": insertCodeHTML( msg, '<p class="offtop">[CCC][xxx]</p>' ); break;
		case "-": insertCodeHTML( msg, '– [CCC][xxx]' ); break;
		case "BR": insertCodeHTML( msg, '<br /> [CCC][xxx]' ); break;		
		case "*DIV*": insertCodeHTML( msg, '<div class="box_img">[CCC][xxx]</div>' ); break;
		case "DIV*": insertCodeHTML( msg, '<div class="img_left">[CCC][xxx]</div>' ); break;
		case "*DIV": insertCodeHTML( msg, '<div class="img_right">[CCC][xxx]</div>' ); break;
		case "IMG": insertCodeHTML( msg, '<img src="[CCC][xxx]" alt="" />' ); break;		
		case "A-IMG": insertCodeHTML( msg, '<a class="show_big_pic" target="_blank" href="[CCC][xxx]" title=""><img src="" alt="" /></a>' ); break;
		case "QUOTE": insertCodeHTML( msg, '<div class="quote_text">[CCC][xxx]</div>' ); break;
		case "CLEAR": insertCodeHTML( msg, '<div class="clear"></div>[CCC][xxx]' ); break;		
	}
	msg.focus();	
	return false;
}

window.onload=function(){
	show_box();
	smile_box();
	btn_box();
}