var _XDOC
var _FOCUS
var _FOCUSsel
var _FOCUStxt
var _FOCUSstart
var _FOCUSrng
var _FOCUSend

function changefocus(){


if(_XDOC)
 {
  _FOCUS=_XDOC;
//  _FOCUS.focus();
//  if(document.all && !_XDOC.setSelectionRange)
  if(document.all && !window.opera)
  {
	_FOCUSsel = document.selection; 
    var _FOCUSrng = _FOCUSsel.createRange();
        _FOCUStxt = _FOCUSrng.text;
    var re=new RegExp("(\r|\n){1,2}","gi");
	txt=_FOCUSrng.text.replace(re,' '); 	
	var stored_range = _FOCUSrng.duplicate()
	stored_range.moveToElementText( _FOCUS );
	stored_range.setEndPoint( 'EndToEnd', _FOCUSrng );
        txt2=stored_range.text.replace(re,' ');  

	 // Stores start position of text selection
	_FOCUSstart = txt2.length - txt.length; 
 	// Stores end position of text selection
	_FOCUSend = _FOCUSstart + txt.length; 
   }
 }		
return false;
}


function commandSet(tag,attrs,val)
{
 if(_XDOC)
 {
  _XDOC.focus();
  
  var text = '';
  
  if(tag!='') text = '<'+tag+attrs+'>'+val+'</'+tag+'>';
  else text = val;
  
  if(document.all) {
  var tr=document.selection.createRange();
  tr.text=text;
  tr.select();
  }
  else
  {
	var oldtop= _XDOC.scrollTop;
	var start = _XDOC.selectionStart;
	var end   = _XDOC.selectionEnd;
	var sel1  = _XDOC.value.substr(0,start);
	var sel2  = _XDOC.value.substr(end);
	var sel   = text;
	_XDOC.value = sel1+sel+sel2;
	_XDOC.setSelectionRange(start,start+sel.length);
	_XDOC.scrollTop = oldtop;
  }
 }
return false;
}

function command(tag,attrs)
{
 if(_XDOC)
 {
  _XDOC.focus();
  if(document.all && !window.opera)
//  if(document.selection && !_XDOC.setSelectionRange) //ie
  {     
	if(_FOCUSstart || _FOCUSstart==0){
		rngs=_XDOC.createTextRange();
                rngs.move("character", _FOCUSstart);  
    		rngs.moveEnd("character", _FOCUStxt.length); 
//    		rngs.moveEnd("character", _FOCUSend); 
		rngs.select();
		_FOCUSstart=null;
		command(tag,attrs);
	}else{
 		// var tr=document.selection.createRange();
 		// tr.text='<'+tag+attrs+'>'+tr.text+'</'+tag+'>';
		// tr.select();
 		var sel = document.selection; 
 		var rng = sel.createRange();

 		var stored_range = rng.duplicate()
 		stored_range.moveToElementText( _XDOC );
 		stored_range.setEndPoint( 'EndToEnd', rng );
  		// Stores start position of text selection
 		_XDOC.selectionStart = stored_range.text.length - rng.text.length;
 		// Stores end position of text selection
 		_XDOC.selectionEnd = _XDOC.selectionStart + rng.text.length;
 		
 		rng.colapse;
		

 		if ( (sel.type == "Text" || sel.type == "None") && rng != null)
 		{
 			if(tag == 'img')        rng.text= '<'+tag+attrs+'/>';
			else			rng.text= '<'+tag+attrs+'>'+rng.text+'</'+tag+'>';
 		}else {
 			if(tag == 'img')        _XDOC.value +=  '<'+tag+attrs+'/>'; 
			else			_XDOC.value +=  '<'+tag+attrs+'></'+tag+'>'; 
 		} 

 		rng.select(); 
	}              
  }
  else           //Geko Opera
  {     
    	var oldtop=_XDOC.scrollTop;
    	var start = _XDOC.selectionStart;
    	var end   = _XDOC.selectionEnd;
    	var sel1  = _XDOC.value.substr(0,start);
    	var sel2  = _XDOC.value.substr(end);
	if(tag == 'img') var sel   = '<'+tag+attrs+'/>';
    	else 		 var sel   = '<'+tag+attrs+'>'+_XDOC.value.substr(start,end - start)+'</'+tag+'>';

    	_XDOC.value =sel1+sel+sel2;
	_XDOC.setSelectionRange(start,start+sel.length);
	_XDOC.scrollTop=oldtop;
  }
 }
return false;
}

function commandone(tag,attrs)
{
 if(_XDOC)
 {
  if(document.all)
  {
	_XDOC.focus();
	var tr=document.selection.createRange();
	tr.text='<'+tag+(attrs?' '+attrs:'')+'></'+tag+'>';
	tr.select();
  }
  else
  {
	var oldtop=_XDOC.scrollTop;
	var start = _XDOC.selectionStart;
	var end   = _XDOC.selectionEnd;
	var sel1  = _XDOC.value.substr(0,start);
	var sel2  = _XDOC.value.substr(end);
	_XDOC.value =sel1+'<'+tag+(attrs?' '+attrs:'')+"></"+tag+">\n"+sel2;
	var pos=start+tag.length+4;
	_XDOC.setSelectionRange(pos,pos);
	_XDOC.scrollTop=oldtop;
  }
 }
return false;
}

function ins_link(name,bnew)
{
if(bnew=='1') bnew=' target="_blank"'; else bnew='';
command('a',' href="'+name+'"'+bnew);
}

function img_add(url,align,clear)
{
var txt="";
if(align != 0) txt =' align="'+align+'"';
if(clear == 1) txt =txt+' clear="'+clear+'"';
command('img',' src="'+url+'"'+txt);
}

function img_addId(id,w,h,align,clear)   //clear-обтекание
{
var txt="";
if(align != 0) txt =' align="'+align+'"';
if(clear == 1) txt =txt+' clear="'+clear+'"';
if(arguments[5] && arguments[5].zoom) txt+=' zoom="'+arguments[5].zoom+'"'
command('img',' name="'+id+'"'+txt);
}

function ins_cat(txt)
{
command('cut',' text="'+txt+'"');
}

                           
/* textarea rows auto-adjust

  //usage:
  var comment_textarea_style={
	fontFamily:'Tahoma,Verdana,sans-serif',
	fontSize:'12px',
	padding:'10px',
	width:'682px'
  }
  function comment_widy_init(){ widy_init('mycomment00',comment_textarea_style) }
  addLoadEvent(comment_widy_init)
*/
var widy_pushed=false
var widy_timer=false, widy_handler_timer=false

function widy_handle() {
 if(!_XDOC) return
 if(!_XDOC.onkeyup) _XDOC.onkeyup=_widy_adjust
 widy_adjust()
}
function _widy_adjust() { widy_pushed=true }
function widy_adjust() {
 if (!widy_pushed) return
 var barHeight=16
 var plu=28
 var x=_XDOC
 var t=$('widy_textarea')
 t.value=x.value
 t.rows=8
 t.scrollTop=65536
 t.scrollLeft=65536
 //if (window.opera) { t.style.height='0px'; plu=0; }
 while(t.scrollTop && t.rows<22){ t.rows++; }
 if(t.scrollLeft) plu=plu+barHeight
 fixie()
 x.style.height=(t.clientHeight+plu)+'px'
 widy_pushed=false
}
function widy_init(inp) {
 if ($('widy_textarea') || !$(inp)) return
 var st=arguments[1]?arguments[1]:false
 var n=$(inp).cloneNode(true)
 n.id='widy_textarea';n.name='widy_textarea';
 //n.style.display='block'
 if (st) for(var i in st) if ('string'==typeof(st[i])) eval('n.style.'+i+'="'+st[i]+'";')
 var d=document.createElement('DIV')
 d.style.width='1px'
 d.style.height='1px'
 d.style.overflow='hidden'
 d.style.visibility='hidden'
 d.appendChild(n); document.body.appendChild(d)
 widy_handler_timer=window.setInterval('widy_handle();',250)
}

