var iWin;
var iDoc;
var rng;
var isIE;
var isGecko;
var isSafari;
var isKonqueror;
var isRichText;

var flagred = 0;

function Send()
{
	if(isRichText)
	{

		var oRTE;
		rteName = "frameId";
		if (document.all) {
			oRTE = frames[rteName].document;
		} else {
			oRTE = document.getElementById(rteName).contentWindow.document;
		}
		//str = oRTE.body.innerText;	
		var CountSmile = 0;
		str = oRTE.body.innerHTML;	
	}
	else{
		obj = document.getElementById("frameId");
		str = obj.value;	
	}
	return str;
}

function TextAreaChange()
{
	var CountSmile = 0;
	var CountSimvol = 0;
	obj = document.getElementById("frameId");
	str = obj.value;
	var reg = new RegExp('\\[[^\\]]+\\]',"gi");
	mas = str.match(reg);
	if(mas)	{
		for (i=0;i<mas.length;i++)
		{
			CountSimvol += mas[i].length;
			CountSmile++;
		}
	}	
	str_temp =  str.replace(reg,"___");	
	//alert(str);	
	if(str_temp.length>=100) 
	{
		str = str.substr(0,100-(CountSmile*3) +CountSimvol);
		obj.value = str;
		var reg = new RegExp('\\[[^\\]]+\\]',"gi");
		str_temp =  str.replace(reg,"___");	
	}
	
	document.getElementById("CountSimvol").value = 100 - str_temp.length;
}

function RegLength(str)
{
	var CountSmile = 0;
	var reg = new RegExp('<img src="images/smiles/([a-zA-Z]+).gif">',"gi");
	//str =  str.replace(reg,"[$1]");
	mas = str.match(reg);
	if(mas)	{
		CountSmile = mas.length*3;
	}
	var reg = new RegExp("<[^>]+>","gi");
	str = str.replace(reg,"");
	var reg = new RegExp("[\n\r]*","gi");
	str = str.replace(reg,"");	
	var reg = new RegExp("&nbsp;","gi");
	str = str.replace(reg," ");		
	
	return str.length+CountSmile;
}

function DeleteSimvol(str)
{
	//alert(str);
	var i = str.length-1;
	var flag = 0;
	var str_new = "";
	var end_position = 0;
	while(RegLength(str)>100 && i>0 )
	{
		if(str.substr(i,1) ==">") {flag = 1;end_position = i;}
		
		if(flag == 0)
		{
			str_new = str.substr(0,i-1);
			var str_end = str.substr(i,str.length);
			str = str_new+str_end;
			//alert(str);
			i = str.length;
		}
		else
		{
			i--;
		}
		if(str.substr(i,1) =="<") 
		{
			//alert(str.substr(i+1,3));
			if(str.substr(i+1,3) == "IMG" || str.substr(i+1,3) == "img")
			{
				str_new = str.substr(0,i);
				var str_end = str.substr(end_position+1,str.length);
				str = str_new+str_end;
					//alert(str);
				i = str.length-1;		
				flag = 0;				
			}
			else
			{
				flag = 0;
				i--;
			}
		}
		
	}
	var oRTE;
	rteName = "frameId";
	if (document.all) {
		oRTE = frames[rteName].document;
	} else {
		oRTE = document.getElementById(rteName).contentWindow.document;
	}	
	oRTE.body.innerHTML = str;
	document.getElementById("CountSimvol").value = 100 - RegLength(str);
	
}

function EnEdit()
{
	//alert(flagred);
	if(flagred == 1) 
	{	
		iDoc.designMode = (isGecko) ? "off" : "Off";	
		return false;
	}
}
function ButtonSubmit(e)
{
	kod = e.keyCode;
	number = document.getElementById("CountSimvol").value;	
/*	if(number<=0)
	{
		var oRTE;
		rteName = "frameId";
		if (document.all) {
			oRTE = frames[rteName].document;
		} else {
			oRTE = document.getElementById(rteName).contentWindow.document;
		}	
		str = oRTE.body.innerHTML;
		DeleteSimvol(str)	
	}
*/	
	if(number<=0 && kod!=8 && kod!=37 && kod!=39 && kod!=40 && kod!=38 && kod!=46 )
	{
		flagred = 1;
		var oRTE;
		rteName = "frameId";
		if (document.all) {
			oRTE = frames[rteName].document;
		} else {
			oRTE = document.getElementById(rteName).contentWindow.document;
		}
		//str = oRTE.body.innerText;	
		var CountSmile = 0;
		str = oRTE.body.innerHTML;		
		DeleteSimvol(str);
		return (false);
		
	}
	else
	{
		flagred=0;
		iDoc.designMode = (isGecko) ? "on" : "On";	
		return (true);
	}
}

function SelectElementMenuOnParsing(e)
{
	UnViewColorTableAll();
	Value = iDoc.queryCommandValue("JustifyLeft");
	ValueLeft = 0;
	if(Value == "left" || Value == true)
	{
		ValueLeft = 1;
	}
	
	Value = iDoc.queryCommandValue("JustifyCenter");
	ValueCenter = 0;
	if(Value == "center" || Value == true)
	{
		ValueCenter = 1;
	}	

	Value = iDoc.queryCommandValue("JustifyRight");
	ValueRight = 0;
	if(Value == "right" || Value == true)
	{
		ValueRight = 1;
	}	
	

	if(ValueLeft == 1 || ValueCenter == 1 || ValueRight == 1)
	{
		document.getElementById("align_left").setAttribute("select","0");
		document.getElementById("align_center").setAttribute("select","0");
		document.getElementById("align_right").setAttribute("select","0");
		document.getElementById("align_left").style.border = "1px solid white";
		document.getElementById("align_center").style.border = "1px solid white";
		document.getElementById("align_right").style.border = "1px solid white";	
	}

	if (ValueLeft == 1)
		document.getElementById("align_left").style.border = "1px solid #AFD3EE";
	if (ValueCenter == 1)
		document.getElementById("align_center").style.border = "1px solid #AFD3EE";		
	if (ValueRight == 1)
		document.getElementById("align_right").style.border = "1px solid #AFD3EE";		


	Value = iDoc.queryCommandState("bold");	
	if(Value == true)
	{
		document.getElementById("bold").style.border = "1px solid #AFD3EE";	
		document.getElementById("bold").setAttribute("select","1");
	}
	else
	{
		document.getElementById("bold").style.border = "1px solid white";	
		document.getElementById("bold").setAttribute("select","0");
	}
	
	Value = iDoc.queryCommandState("italic");	
	if(Value == true)
	{
		document.getElementById("italic").style.border = "1px solid #AFD3EE";	
		document.getElementById("italic").setAttribute("select","1");
	}
	else
	{
		document.getElementById("italic").style.border = "1px solid white";	
		document.getElementById("italic").setAttribute("select","0");
	}	
	
	
	Value = iDoc.queryCommandState("Underline");	
	if(Value == true)
	{
		document.getElementById("under").style.border = "1px solid #AFD3EE";	
		document.getElementById("under").setAttribute("select","1");
	}
	else
	{
		document.getElementById("under").style.border = "1px solid white";	
		document.getElementById("under").setAttribute("select","0");
	}	

	Value = iDoc.queryCommandState("StrikeThrough");	
	if(Value == true)
	{
		document.getElementById("cross").style.border = "1px solid #AFD3EE";	
		document.getElementById("cross").setAttribute("select","1");
	}
	else
	{
		document.getElementById("cross").style.border = "1px solid white";	
		document.getElementById("cross").setAttribute("select","0");
	}	
	
	Value = iDoc.queryCommandValue("FontName");	
	if(Value=="") Value="Verdana";
	document.getElementById("font_name_select").value = Value;
	
	Value = iDoc.queryCommandValue("FontSize");	
	//alert("!"+Value+"!");
	if(Value=="" || Value == null) Value = 2;
	document.getElementById("font_size_select").value = Value;
	
	var oRTE;
	rteName = "frameId";
	if (document.all) {
		oRTE = frames[rteName].document;
	} else {
		oRTE = document.getElementById(rteName).contentWindow.document;
	}
	//str = oRTE.body.innerText;	
	var CountSmile = 0;
	str = oRTE.body.innerHTML;	
	var reg = new RegExp('<img src="images/smiles/([a-zA-Z]+).gif">',"gi");
	//str =  str.replace(reg,"[$1]");
	mas = str.match(reg);
	if(mas)	{
		CountSmile = mas.length*3;
	}
	var reg = new RegExp("<[^>]+>","gi");
	str = str.replace(reg,"");
	var reg = new RegExp("[\n\r]*","gi");
	str = str.replace(reg,"");	
	var reg = new RegExp("&nbsp;","gi");
	str = str.replace(reg," ");	
//	alert("!"+str+"!");
	document.getElementById("CountSimvol").value = 100 - (str.length+CountSmile);
	if(100 - (str.length+CountSmile) < 0)
	{
		DeleteSimvol(oRTE.body.innerHTML);
	}

	
}

function setLeftAlign() {
      iWin.focus();
      iWin.document.execCommand("JustifyLeft", null, "");
	  //alert(iDoc.body.innerHTML);
	   
}

function setCenterAlign() {
      iWin.focus();
      iWin.document.execCommand("JustifyCenter", null, "");
}

function setRightAlign() {
      iWin.focus();
      iWin.document.execCommand("JustifyRight", null, "");
}

function setCut() {
      try{
	  iWin.focus();
      iWin.document.execCommand("Cut", null, "");
	  }
	  catch(e){
	  	alert(Error.PasteErrorCut);
		DeSelectElementMenuOne(socument.getElementById("cut"));
		//alert(Error.PasteErrorCut);
		//iWin.focus();
	  }
}

function setCopy() {
	  try{
      iWin.focus();
      iWin.document.execCommand("Copy", null, "");
	  }
	  catch(e){
		alert(Error.PasteErrorCopy);
	  }
}

function setPaste() {
	  try{
      iWin.focus();
      iWin.document.execCommand("Paste", null, null);
	  }
	  catch(e){
		alert(Error.PasteErrorPaste);
	  }
}

function setBold()
{
      iWin.focus();
      iWin.document.execCommand("Bold", null, null);
}

function setItalic()
{
      iWin.focus();
      iWin.document.execCommand("Italic", null, null);
}

function setUnder()
{
      iWin.focus();
      iWin.document.execCommand("Underline", null, null);
}

function setCross()
{
      iWin.focus();
      iWin.document.execCommand("StrikeThrough", null, null);
}

//function setForeColor(color)
//{
//	  iWin.focus();
 //     iWin.document.execCommand("ForeColor",false, "#0000FF");

//}

function setBackColor(color,command)
{

	var rte = "frameId";
	var oRTE;
	if (document.all) {
		oRTE = frames[rte];
	} else {
		oRTE = document.getElementById(rte).contentWindow;
	}


	var parentCommand = command;
	if (document.all) {
		//retrieve selected range
		var sel = oRTE.document.selection; 
		if(isIE) 
			if (parentCommand == "hilitecolor") parentCommand = "backcolor";
		if (sel != null) {
			var newRng = sel.createRange();
			newRng = rng;
			newRng.select();
		}
	}
	oRTE.focus();
	oRTE.document.execCommand(parentCommand, false, color);
	oRTE.focus();


}

function setFontName(obj)
{
    iWin.focus();
    iWin.document.execCommand("FontName", null, obj.value);
}

function setFontSize(obj)
{
    iWin.focus();
    iWin.document.execCommand("FontSize", null, obj.value);
}

function SelectElementMenuOne(obj)
{
	obj.style.border = "1px solid #AFD3EE";
	if(obj.id == "cut") setCut();
	if(obj.id == "copy") setCopy();
	if(obj.id == "paste") setPaste();	
	
}
function DeSelectElementMenuOne(obj)
{
	obj.style.border = "1px solid white";
}


function SelectElementMenu(obj)
{
	if(obj.id == "align_left" || obj.id == "align_center" || obj.id == "align_right")
	{
		document.getElementById("align_left").setAttribute("select","0");
		document.getElementById("align_center").setAttribute("select","0");
		document.getElementById("align_right").setAttribute("select","0");
		document.getElementById("align_left").style.border = "1px solid white";
		document.getElementById("align_center").style.border = "1px solid white";
		document.getElementById("align_right").style.border = "1px solid white";	
		obj.style.border = "1px solid #AFD3EE";	
	}
	
	if(obj.id == "bold")
	{
		if(obj.getAttribute("select") == 0) //отжата кнопка
		{
			obj.style.border = "1px solid #AFD3EE";	
			obj.setAttribute("select","1");
			setBold();
		}
		else
		{
			obj.style.border = "1px solid white";	
			obj.setAttribute("select","0");
			setBold();
		}
	
	}
	
	if(obj.id == "italic")
	{
		if(obj.getAttribute("select") == 0) //отжата кнопка
		{
			obj.style.border = "1px solid #AFD3EE";	
			obj.setAttribute("select","1");
			setItalic();
		}
		else
		{
			obj.style.border = "1px solid white";	
			obj.setAttribute("select","0");
			setItalic();
		}
	
	}	
	
	if(obj.id == "under")
	{
		if(obj.getAttribute("select") == 0) //отжата кнопка
		{
			obj.style.border = "1px solid #AFD3EE";	
			obj.setAttribute("select","1");
			setUnder();
		}
		else
		{
			obj.style.border = "1px solid white";	
			obj.setAttribute("select","0");
			setUnder();
		}
	
	}	
	
	if(obj.id == "cross")
	{
		if(obj.getAttribute("select") == 0) //отжата кнопка
		{
			obj.style.border = "1px solid #AFD3EE";	
			obj.setAttribute("select","1");
			setCross();
		}
		else
		{
			obj.style.border = "1px solid white";	
			obj.setAttribute("select","0");
			setCross();
		}
	
	}	
	
	if(obj.id == "align_left") setLeftAlign();
	if(obj.id == "align_center") setCenterAlign();
	if(obj.id == "align_right") setRightAlign();
}

function ViewColorTable(obj)
{

	var rteName = "frameId";
	var oRTE;
	if (document.all) 
	{
		oRTE = frames[rteName];
		
		var selection = iDoc.selection; 
		if (selection != null) {
			rng = selection.createRange();
		}
	} 
	else 
	{
		oRTE = document.getElementById(rteName).contentWindow;
		
		var selection = oRTE.getSelection();
		rng = selection.getRangeAt(selection.rangeCount - 1 ).cloneRange();
	}
	


	if(obj.getAttribute("select") == "0")
	{

	document.getElementById("text_color").setAttribute("select","0");
	document.getElementById("background_color").setAttribute("select","0");
	document.getElementById("text_color").style.border = "1px solid white";	
	document.getElementById("background_color").style.border = "1px solid white";	
		document.getElementById("ColorTable").style.display="";
		l = 0;
		t = 0;
		obj.setAttribute("select","1");
		obj.style.border = "1px solid #AFD3EE";		
		while (obj)
	    {
	        l += obj.offsetLeft;
			t += obj.offsetTop;
	        obj = obj.offsetParent;
	    }

		document.getElementById("ColorTable").style.left = l-150+"px";
		document.getElementById("ColorTable").style.top = t+10+"px";

	}
	else
	{
		UnViewColorTable(obj);
	}
}

function UnViewColorTableAll()
{
	document.getElementById("text_color").setAttribute("select","0");
	document.getElementById("background_color").setAttribute("select","0");
	document.getElementById("text_color").style.border = "1px solid white";	
	document.getElementById("background_color").style.border = "1px solid white";
	document.getElementById("ColorTable").style.display="none";	
}

function UnViewColorTable(obj)
{
	obj.style.border = "1px solid white";	
	obj.setAttribute("select","0");
	document.getElementById("ColorTable").style.display="none";
}

function SetColor(str)
{
	if(document.getElementById("text_color").getAttribute("select") == "1")
	{
		setBackColor(str,"ForeColor");
	}
	if(document.getElementById("background_color").getAttribute("select") == "1")
	{
		setBackColor(str,"hilitecolor");
	}	
	UnViewColorTableAll();	
}



function SelectSmile(obj)
{
	obj.style.border = "1px solid #AFD3EE";		
}
function DeSelectSmile(obj)
{
	obj.style.border = "1px solid white";		
}
function AddSmileToEditor(filename)
{
	var oRTE;
	rte = "frameId";
	if (document.all) {
		oRTE = frames[rte];
		
		//get current selected range
		var selection = oRTE.document.selection; 
		if (selection != null) {
			rng = selection.createRange();
		}
	} else {
		oRTE = document.getElementById(rte).contentWindow;
		
		//get currently selected range
		var selection = oRTE.getSelection();
		rng = selection.getRangeAt(selection.rangeCount - 1).cloneRange();
	}
	
	imagePath = prompt('Enter Image URL:', 'http://');				
	if ((imagePath != null) && (imagePath != "")) {
		oRTE.focus();
		oRTE.document.execCommand('InsertImage', false, imagePath);
		oRTE.focus();
	}

}

function replaceSelectedText(filename)
{
 obj = document.getElementById("frameId");
 obj.focus();
 
 if (document.selection) 
 {
   var s = document.selection.createRange(); 
   if (!isGecko)
   {
     eval("s.text='"+ filename +"'");
	 s.select();
	 return true;
   }
 }
 else if (typeof(obj.selectionStart)=="number")
 {
   //if (obj.selectionStart!=obj.selectionEnd)
   //{
     var start = obj.selectionStart;
     var end = obj.selectionEnd;

     eval("var rs = '"+ filename +"'");
     obj.value = obj.value.substr(0,start)+rs+obj.value.substr(end);
     obj.setSelectionRange(end,end);
   //}
   return true;
 }

 return false;
}

function AddImageOnEditor(filename){

	number = document.getElementById("CountSimvol").value;	
	if(number<3)
	{
		return false;
	}

	if(!isRichText)
	{
		var reg = new RegExp('images/smiles/([a-zA-Z]+).gif',"gi");
		filename =  filename.replace(reg,"[$1]");		
		replaceSelectedText(filename);
		TextAreaChange();
		return;
	}
	var oRTE;
	rteName = "frameId";
	if (document.all) {
		oRTE = frames[rteName];
		
		//get current selected range
		var selection = oRTE.document.selection; 
		if (selection != null) {
			rng = selection.createRange();
		}
	} else {
		oRTE = document.getElementById(rteName).contentWindow;
		
		//get currently selected range
		var selection = oRTE.getSelection();
		rng = selection.getRangeAt(selection.rangeCount - 1).cloneRange();
	}
	

		oRTE.focus();
		oRTE.document.execCommand('InsertImage', false, filename);
		oRTE.focus();
		number = document.getElementById("CountSimvol").value;	
		document.getElementById("CountSimvol").value = number - 3;
}
