var win = null;
var obj_name = 'message';
var inputs = ["H1","H2","B","I","sm","Img","URL","cut","message"];
var all_ids = ['m','c'];
var curr_id = 0;
var isOpera = navigator.userAgent.toLowerCase().indexOf('opera')==-1 ? false : true;

function replaceSelectedText(id,prefix,postfix,space,clear) {
	if(win){
		win.focus();
		return false;
	}
	obj=document.getElementById(obj_name+'_'+id);
	obj.focus();
	var tag=prefix.substr(1,prefix.length-2);

	if (document.selection) {
		var s = document.selection.createRange();
		if (postfix.length==0) {
			if (clear) {
				s.text=(space) ? "\n[_"+tag+"_]\n" : "[_"+tag+"_]";
				myRe=new RegExp((space) ? "[\r\n]*\\["+tag+"\\][\r\n]*" : "\\["+tag+"\\]","gi");
				obj.value=obj.value.replace(myRe, "\n");
				myRe=new RegExp("\\[_"+tag+"_\\]","gi");
				start=obj.value.search(myRe);
				tmp=obj.value.substr(0,start);
				obj.value=obj.value.replace(myRe, prefix);
				myRe=new RegExp("\r\n","gi");
				tmp=tmp.replace(myRe, "1");
				start=tmp.length+prefix.length+1;
				s.collapse()
				s.moveStart("character",start);
				s.select();
			} else {
				s.text=(space) ? "\n"+prefix+"\n" : prefix;
			}
		} else {
			if (s.text) {
				s.text=prefix+s.text+postfix;
			} else {
				myRe1=new RegExp("\\["+tag+"\\]","gi");
				myRe2=new RegExp("\\[/"+tag+"\\]","gi");
				tags_arr=obj.value.match(myRe1);
				cnt1=(tags_arr)?tags_arr.length:0;
				tags_arr=obj.value.match(myRe2);
				cnt2=(tags_arr)?tags_arr.length:0;
				s.text=cnt1>cnt2?postfix:prefix;
			}
		}
		return true;
	} else if (typeof(obj.selectionStart)=="number") {
		var start = obj.selectionStart;
		var end = obj.selectionEnd;
		var st="";
		if (postfix.length==0) {
			if (clear) {
				st=obj.value.substr(0,start)+((space) ? "\n[_"+tag+"_]\n" : "[_"+tag+"_]")+obj.value.substr(end);
				myRe=new RegExp((space) ? "[\r\n]*\\["+tag+"\\][\r\n]*" : "\\["+tag+"\\]","gi");
				st=st.replace(myRe, "\n");
				myRe=new RegExp("\\[_"+tag+"_\\]","gi");
				start=st.search(myRe);
				st=st.replace(myRe, prefix);
				end=start+prefix.length+((space)?1:0);
			} else {
				st=obj.value.substr(0,start)+((space) ? "\n"+prefix+"\n" : prefix)+obj.value.substr(end);
				end=start+prefix.length+((space)?1:0);
			}
		} else {
			if (start!=end) {
				tmp=prefix+obj.value.substr(start,end-start)+postfix;
				st=obj.value.substr(0,start)+tmp+obj.value.substr(end);
				end=start+tmp.length;
			} else {
				myRe1=new RegExp("\\["+tag+"\\]","gi");
				myRe2=new RegExp("\\[/"+tag+"\\]","gi");
				tags_arr=obj.value.match(myRe1);
				cnt1=(tags_arr)?tags_arr.length:0;
				tags_arr=obj.value.match(myRe2);
				cnt2=(tags_arr)?tags_arr.length:0;
				tmp=cnt1>cnt2?postfix:prefix
				st=obj.value.substr(0,start)+tmp+obj.value.substr(end);
				end=start+tmp.length;
			}
		}
		obj.value = st;
		obj.setSelectionRange(end,end);
		return true;
	}
	return false;
}

function openWin(id,url) {
	if(win){
		if(win.closed != null){
			win.focus();
			return false;
		}else{
			win=null;
		}
	}
	if(!isOpera){
		for(j=0; j<all_ids.length; j++){
			if(document.getElementById(inputs[0]+'_'+all_ids[j])) 
				for(i=0; i<inputs.length; i++) 
					if(document.getElementById(inputs[i]+'_'+all_ids[j])) document.getElementById(inputs[i]+'_'+all_ids[j]).disabled=true;
		}		
	}
	curr_id=id;
	win=window.open(url,"","width=400px,height=250px;toolbar=no,menubar=no,location=no,directories=no,status=yes");
}

function refreshBtns() {
	win=null;
	if(isOpera || curr_id==0) return;
	for(j=0; j<all_ids.length; j++){
		if(document.getElementById(inputs[0]+'_'+all_ids[j])) 
			for(i=0; i<inputs.length; i++) 
				if(document.getElementById(inputs[i]+'_'+all_ids[j])) document.getElementById(inputs[i]+'_'+all_ids[j]).disabled=false;
	}	
	obj=document.getElementById(obj_name+'_'+curr_id);
	if(obj!=null)obj.focus();
}

function insertPostImage(num) {
	refreshBtns();
	replaceSelectedText(curr_id,'[img='+num+']','');
	curr_id=0;
}

function insertPostYutube(code) {
	refreshBtns();
	replaceSelectedText(curr_id,'[youtube='+code+']','');
	curr_id=0;
}

function openUrlWin(id) {
	obj=document.getElementById(obj_name+'_'+id);
	obj.focus();

	if (document.selection) {
		var s = document.selection.createRange();
		openWin(id,(s.text)?"/url_src.html":"/url_src2.html");
	} else if (typeof(obj.selectionStart)=="number") {
		var start = obj.selectionStart;
		var end = obj.selectionEnd;
		openWin(id,(start!=end)?"/url_src.html":"/url_src2.html");
	}
}

function insertPostURL(url) {
	refreshBtns();
	replaceSelectedText(curr_id,'[url'+(url.length>0?'='+url:'')+']','[/url]');
	curr_id=0;
}

function insertPostURL2(url, text) {
	refreshBtns();
	if (text.length>0) {
		replaceSelectedText(curr_id,'[url'+(url.length>0?'='+url:'')+']'+text+'[/url]','');
	} else {
		replaceSelectedText(curr_id,'[url]'+url+'[/url]','');
	}
	curr_id=0;
}
