var b_open = 0;
var i_open = 0;
var u_open = 0;
var q_open = 0;
var p_open = 0;
var s_open = 0;
var h_open = 0;
var cut_open = 0;
var moder_open = 0;
var spoiler_open = 0;
var work_open = 0;
var work_t_open = 0;
var art_open = 0;
var autor_open = 0;
var edition_open = 0;
var series_open = 0;

var answerform_loaded = -1;

var myAgent   = navigator.userAgent.toLowerCase();
var myVersion = parseInt(navigator.appVersion);

var is_ie   = ((myAgent.indexOf("msie") != -1)  && (myAgent.indexOf("opera") == -1));
var is_opera= (myAgent.indexOf("opera") == -1);
var is_nav  = ((myAgent.indexOf('mozilla')!=-1) && (myAgent.indexOf('spoofer')==-1)
                && (myAgent.indexOf('compatible') == -1) && (myAgent.indexOf('opera')==-1)
                && (myAgent.indexOf('webtv') ==-1)       && (myAgent.indexOf('hotjava')==-1));

var is_win   =  ((myAgent.indexOf("win")!=-1) || (myAgent.indexOf("16bit")!=-1));
var is_mac    = (myAgent.indexOf("mac")!=-1);
var ua_vers   = parseInt(navigator.appVersion);

var colors = new Array("black","red")

var list_prompt = "Укажите список"

function smile(tag,obj)
{
  doInsert(":"+tag+":", "", false,obj);
}

function username(user)
{
  var obj=false;
  if (answerform_loaded>-1) {
    obj = "a_form"+answerform_loaded;
  }
  doInsert("[b]"+user+"[/b] ", "", false, obj);
}

function simpletag(tag,obj)
{
    var obj_ta = 0;
    if (obj == "content" || obj == "descript") { obj_ta = document.all[obj] } else {
         if (obj) { obj_ta = document.all[obj].message } else { obj_ta = document.addform.message }
    }

    var tag1 = tag
    if (tag1.length>1 && tag1!='moder' && tag1!='spoiler') { tag1 = tag1+'=' }
    //if (tag1.length>1) { tag1 = tag1+'=' }
    
    if (is_ie==1)
    {
      var n=0;
      if(document.all.item("tag_"+tag).length>1){if(obj=="descript"){n=0}else if(obj=="content"){n=1}};
      var button = document.all("tag_"+tag,n);

      obj_ta.focus();
      var rng = document.selection.createRange();
      if (rng.text)
          if (tag == "work_t") { doInsert("[work_t=]" + rng.text + "[/work]", "", false, obj); }
 	  else { doInsert("["+tag1+"]" + rng.text + "[/"+tag+"]", "", false, obj); }
      else
      {
        if (eval(tag+"_open == 0"))
	{
	  doInsert("["+tag1+"]", "", false, obj);
	}
        else
	{
          if (tag == "work_t") { doInsert("[/work]", "", false, obj); }
          else { doInsert("[/"+tag+"]", "", false, obj); }
	}
        eval(tag+"_open = 1-"+tag+"_open");
        button.style.color=colors[eval(tag+"_open")];
      }
    } else
    {
      var button = document.all["tag_"+tag];
      obj_ta.focus();
      if (obj_ta.selectionEnd)
      {
		var ss = obj_ta.selectionStart;
		var st = obj_ta.scrollTop;
		var es = obj_ta.selectionEnd;
//		if (es <= 2)
//		{ es = obj_ta.textLength }
		var start  = (obj_ta.value).substring(0, ss);
		var middle = (obj_ta.value).substring(ss, es);
		var end    = (obj_ta.value).substring(es, obj_ta.textLength);

		var cpos = ss
		if (es != ss)
		{
                  if (tag == "work_t") { obj_ta.value = start + "[work_t=]" + middle + "[/work]" + end; }
	          else { obj_ta.value = start + "["+tag1+"]" + middle + "[/"+tag+"]" + end; }
		  cpos += middle.length+5+tag.length*2;
		} else
		{
                  if (eval(tag+"_open == 0"))
		  {
	            obj_ta.value = start + "["+tag1+"]" + middle + end;
		    cpos += middle.length+2+tag1.length;
		  } else
		  {
                      if (tag == "work_t") { obj_ta.value = start + "[/work]" + middle + end; }
     	              else {                 obj_ta.value = start + "[/"+tag+"]" + middle + end; }
		    cpos += middle.length+3+tag.length;
		  }
                  eval(tag+"_open = 1-"+tag+"_open");
                  button.style.color=colors[eval(tag+"_open")];
		}
		obj_ta.selectionStart = cpos;
		obj_ta.selectionEnd   = cpos;
		obj_ta.scrollTop      = st;
      } else
      {
        if (eval(tag+"_open == 0"))
          doInsert("["+tag1+"]", "", false, obj);
        else
        {
          if (tag == "work_t") { doInsert("[/work]", "", false, obj); }
          else { doInsert("[/"+tag+"]", "", false, obj); }
        }
        eval(tag+"_open = 1-"+tag+"_open");
        button.style.color=colors[eval(tag+"_open")];
      }
    }
    obj_ta.focus();
}

function quote(user,mid)
{
    var obj_ta;
	if (answerform_loaded>-1) {
		obj_ta = document.all["a_form"+answerform_loaded];
    } else{
		if (document.addform){obj_ta = document.addform.message}
		else{ alert("Для цитирования должна быть открыта форма комментария/ответа."); return; }
		}
    //var button = document.addform.tag_q
    var text;
    if (is_ie == 1)
    {
      text = document.selection.createRange().text;
    } else
    {
      text = document.getSelection()
    }
    if (text == '')
    {
      alert("Выделите мышью кусок сообщения, который нужно цитировать!")
      return;
    }
    
    if (is_ie == 1)
    {
      var elid=document.selection.createRange().parentElement().id
      if (elid.substring(0,3)=="div" && elid != "div"+mid)
      {
        alert("Выделенный текст не принадлежит данному сообщению!")
        return;
      }
    }
    var obj=false;
    if (answerform_loaded>-1) {
      obj = "a_form"+answerform_loaded;
    }
    if (user)
    {
      doInsert("[q="+user+"]"+text+"[/q]","",false,obj)
    } else
    {
      doInsert("[q]"+text+"[/q]","",false,obj)
    }
    
    obj_ta.focus();
    document.location.href="#newmessage"
}

function listing(obj)
{
  var listvalue = "init";
  var thelist = "";
  var i = 1;
  while ( (listvalue != "") && (listvalue != null) )
  {
    listvalue = prompt("Введите "+i+"-й элемент списка или оставьте поле пустым для завершения.", "");
    if ( (listvalue != "") && (listvalue != null) )
    {
	thelist = thelist+"[*]"+listvalue+"\n";
    }
    i++
  }
  if ( thelist != "" )
  {
    doInsert( "[LIST]\n" + thelist + "[/LIST]\n", "", false, obj);
  }
}


function image(obj)
{
    if (enterURL = prompt("Введите адрес картинки в Интернете", "http://"))
    {
	doInsert("[IMG]"+enterURL+"[/IMG]", "", false, obj);
    }
}

function url(obj)
{
  var enterURL
  var enterTITLE
  var text
    if (obj == "content" || obj == "description") { obj_ta = document.all[obj] } else {
         if (obj) { obj_ta = document.all[obj].message } else { obj_ta = document.addform.message }
    }
  if (is_ie == 1)
  {
    text = document.selection.createRange().text;
  } else
  {
    text = obj_ta.value.substring(obj_ta.selectionStart, obj_ta.selectionEnd);
//    text = document.getSelection()
  }
  var texturl
  if (text.indexOf("@") > 0)
  {
    texturl = 'mailto:'+text
  } else
  {
    texturl = 'http://'
  }
  if (enterURL = prompt("Введите адрес страницы", texturl))
  {
    if (enterTITLE = prompt("Введите название страницы", text))
    {
       doInsert("[URL="+enterURL+"]"+enterTITLE+"[/URL]", "", false, obj);
    } else
    {
       alert("Вы не указали название страницы!");
    }
  }
}

function doInsert(ibTag, ibClsTag, isSingle, obj)
{
	var isClose = false;
	var obj_ta = 0;
        if (obj == "content" || obj == "descript") { obj_ta = document.all[obj] } else {
            if (obj) { obj_ta = document.all[obj].message } else {
				if (document.addform){obj_ta = document.addform.message}
				else{return;}
			}
        }

	obj_ta.focus();
	//----------------------------------------
	// It's IE!
	//----------------------------------------
	if ( (ua_vers >= 4) && is_ie && is_win)
	{
		var sel = document.selection;
		var rng = sel.createRange();
		rng.colapse;
		if((sel.type == "Text" || sel.type == "None") && rng != null)
		{
			if(ibClsTag != "" && rng.text.length > 0)
				ibTag += rng.text + ibClsTag;
			else if(isSingle)
				isClose = true;
			rng.text = ibTag;
		}
	}

	//----------------------------------------
	// It's MOZZY!
	//----------------------------------------

	else if ( obj_ta.selectionEnd )
	{
//	alert(1)
		var ss = obj_ta.selectionStart;
		var st = obj_ta.scrollTop;
		var es = obj_ta.selectionEnd;

		if (es <= 2)
		{
			es = obj_ta.textLength;
		}

		var start  = (obj_ta.value).substring(0, ss);
		var middle = (obj_ta.value).substring(ss, es);
		var end    = (obj_ta.value).substring(es, obj_ta.textLength);

		//-----------------------------------
		// text range?
		//-----------------------------------

		if (obj_ta.selectionEnd - obj_ta.selectionStart > 0)
		{
			//middle = ibTag + middle + ibClsTag;
			middle = ibTag + ibClsTag;
		}
		else
		{
			//middle = ibTag + middle;
			middle = ibTag;

			if (isSingle)
			{
				isClose = true;
			}
		}

		obj_ta.value = start + middle + end;

		var cpos = ss + (middle.length);

		obj_ta.selectionStart = cpos;
		obj_ta.selectionEnd   = cpos;
		obj_ta.scrollTop      = st;
	}
	//----------------------------------------
	// It's CRAPPY!
	//----------------------------------------
	else
	{
		if (isSingle)
		{
			isClose = true;
		}

		obj_ta.value += ibTag;
	}

	obj_ta.focus();

	return isClose;
}

function FlipSmiles(top,left,hide)
{
  var obj = document.all["smiles"];
  var obj2 = document.all["addsmiles"];
  if (top>0) { obj.style.top=top-171 }
  if (left>0) { obj.style.left=left-400 }
  if (obj.style.visibility=="visible" || hide==1)
  {
    obj2.style.border="1px solid black";
    obj.style.visibility="hidden";
  } else
  {
    obj2.style.border="1px solid silver";
    obj.style.visibility="visible";
  }
}

function LoadAnswerForm(blog_num, b_page_num, article_num, p_article_num, p_message_id, message_id, topic_type)
{
  if (answerform_loaded != message_id)
  {
    if (answerform_loaded > -1)
    {
        document.all["answerframe"+answerform_loaded].innerHTML="загрузка формы ..."
        document.all["answerform"+answerform_loaded].style.visibility="hidden";
    }
    var req = getXmlHttp();
    req.open("GET", "/answerform"+message_id+"blog"+blog_num+"page"+b_page_num+"/article"+article_num+"page"+p_article_num+"pm"+p_message_id+"t"+topic_type, false); 
    req.send(null);
    if (req.readyState == 4) 
    {
      if(req.status == 200) { document.all["answerframe"+message_id].innerHTML=req.responseText }
    }
    answerform_loaded = message_id;
  }
}


function CloseAnswerForm()
{
    if (answerform_loaded >-1)
    {
        document.all["answerframe"+answerform_loaded].innerHTML="загрузка формы ..."
        document.all["answerform"+answerform_loaded].style.visibility="hidden";
    }
    answerform_loaded = -1;
}

function HideCommentTree(RootMessageId)
{
    var obj_ct = document.all["commenttree"+RootMessageId];
    var obj_shn = document.all["showhidenode"+RootMessageId];
    if (obj_ct.style.visibility=="hidden")
    {
        obj_ct.style.visibility="visible";
        obj_ct.style.position = "relative";
	obj_ct.style.width="100%";
	obj_shn.innerHTML="<img src='/images/out.gif' width=7 height=8> свернуть ветку";
    } else
    {
        obj_ct.style.visibility="hidden";
        obj_ct.style.position = "absolute";
		obj_ct.style.width="0";
	obj_shn.innerHTML="<img src='/images/in.gif' width=7 height=8> развернуть ветку";
    }
}
function FullTopicView(Topic_id)
{
	var cnt=1;
    while(obj_ct = document.all["blog.topic"+Topic_id+".vdiv"+cnt])
	{
        obj_ct.style.visibility="hidden";
        obj_ct.style.position = "absolute";
		cnt++;
	}
	cnt=1;
    while(obj_ct = document.all["blog.topic"+Topic_id+".hdiv"+cnt])
	{
        obj_ct.style.visibility="visible";
        obj_ct.style.position = "relative";
		obj_ct.style.top="0px";
		obj_ct.style.width="100%";
		cnt++;
	}
}

function BlogPhotoView(Photo,width)
{
    obj_ct = document.all["blog.picture."+Photo];
    obj_ct.style.visibility="visible";
    obj_ct.style.position = "relative";
	obj_ct.style.top="0px";
    obj_ct.style.width=width+4;
}

function BlogPhotoHide(Photo)
{
    obj_ct = document.all["blog.picture."+Photo];
    obj_ct.style.visibility="hide";
    obj_ct.style.position = "absolute";
	obj_ct.style.top="-100500px";
    obj_ct.style.width="0px";
}

function PostView(Post_id)
{
//  if (document.getElementById('trm'+Post_id).style.display != "none")
//  {
    document.getElementById('trl'+Post_id).style.display="";
    document.getElementById('trr'+Post_id).style.display="";
    document.getElementById('trc'+Post_id).style.display="";
    document.getElementById('tra'+Post_id).style.display="none";
    document.getElementById('tplus'+Post_id).style.display="";
    document.getElementById('tminus'+Post_id).style.display="";

//    document.getElementById('tr'+Post_id).style.display="";
//  } else {
//    document.getElementById('trm'+Post_id).style.display="";
//    document.getElementById('tr'+Post_id).style.display="none";
//  }
}


var tooltip=function(){
	var id = 'tt';
	var top = -70;
	var left = -303;
	var maxw = 300;
	var speed = 20;
	var timer = 20;
	var endalpha = 100;
	var alpha = 0;
	var tt,t,c,b,h;
	var ie = document.all ? true : false;
	return{
		show:function(v,w){
			if(tt == null){
				tt = document.createElement('div');
				tt.setAttribute('id',id);
				t = document.createElement('div');
				t.setAttribute('id',id + 'top');
				c = document.createElement('div');
				c.setAttribute('id',id + 'cont');
				b = document.createElement('div');
				b.setAttribute('id',id + 'bot');
				tt.appendChild(t);
				tt.appendChild(c);
				tt.appendChild(b);
				document.body.appendChild(tt);
				tt.style.opacity = 0;
				tt.style.filter = 'alpha(opacity=0)';
				document.onmousemove = this.pos;
			}
			tt.style.display = 'block';
			c.innerHTML = v;
			tt.style.width = w ? w + 'px' : 'auto';
			if(!w && ie){
				t.style.display = 'none';
				b.style.display = 'none';
				tt.style.width = tt.offsetWidth;
				t.style.display = 'block';
				b.style.display = 'block';
			}
			if(tt.offsetWidth > maxw){tt.style.width = maxw + 'px'}
			h = parseInt(tt.offsetHeight) + top;
			clearInterval(tt.timer);
			tt.timer = setInterval(function(){tooltip.fade(1)},timer);
		},
		pos:function(e){
			var u = ie ? event.clientY + document.documentElement.scrollTop : e.pageY;
			var l = ie ? event.clientX + document.documentElement.scrollLeft : e.pageX;
			tt.style.top = (u - h) + 'px';
			tt.style.left = (l + left) + 'px';
		},
		fade:function(d){
			var a = alpha;
			if((a != endalpha && d == 1) || (a != 0 && d == -1)){
				var i = speed;
				if(endalpha - a < speed && d == 1){
					i = endalpha - a;
				}else if(alpha < speed && d == -1){
					i = a;
				}
				alpha = a + (i * d);
				tt.style.opacity = alpha * .01;
				tt.style.filter = 'alpha(opacity=' + alpha + ')';
			}else{
				clearInterval(tt.timer);
				if(d == -1){tt.style.display = 'none'}
			}
		},
		hide:function(){
			clearInterval(tt.timer);
			tt.timer = setInterval(function(){tooltip.fade(-1)},timer);
		}
	};
}();
