var uagent    = navigator.userAgent.toLowerCase();
var is_safari = ( (uagent.indexOf('safari') != -1) || (navigator.vendor == "Apple Computer, Inc.") );
var is_ie     = ( (uagent.indexOf('msie') != -1) && (!is_opera) && (!is_safari) && (!is_webtv) );
var is_ie4    = ( (is_ie) && (uagent.indexOf("msie 4.") != -1) );
var is_moz    = (navigator.product == 'Gecko');
var is_ns     = ( (uagent.indexOf('compatible') == -1) && (uagent.indexOf('mozilla') != -1) && (!is_opera) && (!is_webtv) && (!is_safari) );
var is_ns4    = ( (is_ns) && (parseInt(navigator.appVersion) == 4) );
var is_opera  = (uagent.indexOf('opera') != -1);
var is_kon    = (uagent.indexOf('konqueror') != -1);
var is_webtv  = (uagent.indexOf('webtv') != -1);
var is_win    =  ( (uagent.indexOf("win") != -1) || (uagent.indexOf("16bit") !=- 1) );
var is_mac    = ( (uagent.indexOf("mac") != -1) || (navigator.vendor == "Apple Computer, Inc.") );
var ua_vers   = parseInt(navigator.appVersion);
var b_open = 0;
var i_open = 0;
var u_open = 0;
var s_open = 0;
var bbtags   = new Array();
			
function minichat(MC_limit){
	this.MCopen_flag = true;
	var MC_Interval;

	Refresh();
	
	this.ins_emo = function(){
		var buttonElement = document.getElementById('b_emo');
		document.getElementById('message').focus();
				
		if (is_ie) {
			document.getElementById('message').focus();
			ie_range_cache = document.selection.createRange();
		}
			
		var iLeftPos  = this.getOffsetLeft(buttonElement);
		var iTopPos   = this.getOffsetTop(buttonElement) + (buttonElement.offsetHeight + 3);
				
		document.getElementById('dle_emo').style.left = (iLeftPos) + "px";
		document.getElementById('dle_emo').style.top  = (iTopPos - 156)  + "px";
						
		if (document.getElementById('dle_emo').style.visibility == "hidden") {
			document.getElementById('dle_emo').style.zIndex   = 99;
			document.getElementById('dle_emo').style.visibility = "visible";
			document.getElementById('dle_emo').style.display    = "block";
		}
		else {
			document.getElementById('dle_emo').style.visibility = "hidden";
			document.getElementById('dle_emo').style.display    = "none";
			ie_range_cache = null;
		}
	};
	
	this.getOffsetLeft = function(obj) {
		var top = obj.offsetLeft;
		while( (obj = obj.offsetParent) != null ) {
			top += obj.offsetLeft;
		}
		return top;
	};
	
	this.getOffsetTop = function(obj) {
		var top = obj.offsetTop;
		while( (obj = obj.offsetParent) != null ){
			top += obj.offsetTop;
		}
		return top;
	};
	
	this.doInsert = function(ibTag, ibClsTag, isSingle) {
		var isClose = false;
		var obj_ta = document.fombj.message;
	
		if ( (ua_vers >= 4) && is_ie && is_win) {
			if (obj_ta.isTextEdit) 	{
				obj_ta.focus();
				var sel = document.selection;
				var rng = ie_range_cache ? ie_range_cache : 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;
				}
			}
			else {
				if(isSingle) isClose = true;
				obj_ta.value += ibTag;
			}
			rng.select();
			ie_range_cache = null;
		}
		else 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);
			
			if (obj_ta.selectionEnd - obj_ta.selectionStart > 0) middle = ibTag + middle + ibClsTag;
			else {
				middle = ibTag + middle;
				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;
		}
		else {
			if (isSingle) isClose = true;
			obj_ta.value += ibTag;
		}
		obj_ta.focus();
		return isClose;
	};
	
	this.add_smiley = function(addSmilie, messageDef){
	var addSmilie, messageDef, revisedMessage;
	var currentMessage = document.fombj.message.value;
	if(currentMessage==messageDef){currentMessage='';}
	revisedMessage = currentMessage+addSmilie;
	document.fombj.message.value=revisedMessage;
	document.fombj.message.focus();
	return;
};
	
	this.dropdownmenu = function(obj, e, menucontents, menuwidth){
		if (window.event) event.cancelBubble=true;
		else if (e.stopPropagation) e.stopPropagation();
		clearhidemenu();
		dropmenuobj=document.getElementById? document.getElementById("dropmenudiv") : dropmenudiv;
		populatemenu(menucontents);
		
		if (ie4||ns6){
			showhide(dropmenuobj.style, e, "visible", "hidden", menuwidth);
			dropmenuobj.x=getposOffset(obj, "left");
			dropmenuobj.y=getposOffset(obj, "top");
			dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(obj, "rightedge")+"px";
			dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj, "bottomedge")+obj.offsetHeight+"px";
		}
		return this.clickreturnvalue();
	};
	
	this.clickreturnvalue = function(){
		if (ie4||ns6) return false;
		else return true;
	};
	
	this.UserMenu = function( url, m_id, group, mc_id, mc_name ){
		var menu=new Array();
		menu[0]='<a onClick="return mc.Answer(\'' + mc_name + '\');" href="javascript: void(0);">Reply</a>';
		menu[1]='<a ' + url +' >' + menu_profile + '</a>';
		menu[2]='<a href="' + dle_root + 'index.php?do=pm&doaction=newpm&user=' + m_id + '">' + menu_send + '</a>';

		if (group == '1' || group == '2') {
			menu[3]='<a onclick="return mc.Delete('+ mc_id +');" href="javascript: void(0);">Remove Post</a>';
		}

		return menu;
	};
	
		this.GuesMenu = function( url, mc_name ){
		var menu=new Array();
		menu[0]='<a onClick="return mc.Answer(\'' + mc_name + '\');" href="javascript: void(0);">Reply</a>';
		menu[1]='<a ' + url +' >' + menu_send + '</a>';
	
		return menu;
	};
	
	this.Answer = function(name){
		var obj = document.getElementById("message");
		obj.value = obj.value + "[b]" + name + "[/b], ";
	};
	
	this.Delete = function(m_id){
		var ajax = new dle_ajax();
		ajax.onShow ('');
		var varsString = "id=1";
		ajax.setVar("delete", m_id);
		ajax.setVar("refresh", 1);
		ajax.setVar("skin", dle_skin);
		ajax.requestFile = dle_root + "engine/ajax/mchat.php";
		ajax.method = 'POST';
		ajax.execute = true;
		ajax.element = 'output';
		ajax.sendAJAX(varsString);
	};
	
	this.hidemenu = function(e){
		if (typeof dropmenuobj != "undefined"){
			if (ie4||ns6) dropmenuobj.style.visibility="hidden";
		}
	};
		
	this.delayhidemenu = function(){
		if (ie4||ns6) delayhide=setTimeout("hidemenu()",disappeardelay);
	};

	this.AddMessage = function(){
		var form = document.getElementById('fombj');
		var dle_comments_ajax = new dle_ajax();

		if (form.message.value == '') {
			alert ( dle_req_field );
			return false;
		}


		dle_comments_ajax.onShow ('');
		var varsString = "id=" + form.id.value;
		dle_comments_ajax.setVar("message", dle_comments_ajax.encodeVAR(form.message.value));
		dle_comments_ajax.setVar("email", dle_comments_ajax.encodeVAR(form.email.value));
    dle_comments_ajax.setVar("name", dle_comments_ajax.encodeVAR(form.name.value));
		dle_comments_ajax.setVar("skin", dle_skin);

		form.message.value = '';
		
			if ( form.sec_code ) {

	   dle_comments_ajax.setVar("sec_code", form.sec_code.value);

    }

		dle_comments_ajax.requestFile = dle_root + "engine/ajax/mchat.php";
		dle_comments_ajax.method = 'POST';
		dle_comments_ajax.execute = true;
		dle_comments_ajax.element = 'output';
		dle_comments_ajax.sendAJAX(varsString);
	};
	
	this.DoRefresh = function(){
		var dle_comments_ajax = new dle_ajax();
		var varsString = "id=1";
		dle_comments_ajax.setVar("refresh", 1);
		dle_comments_ajax.setVar("skin", dle_skin);
		dle_comments_ajax.requestFile = dle_root + "engine/ajax/mchat.php";
		dle_comments_ajax.method = 'POST';
		dle_comments_ajax.execute = true;
		dle_comments_ajax.element = 'output';
		dle_comments_ajax.sendAJAX(varsString);
	};

	this.Refresh = function(){
		if(MC_limit != 0) MC_Interval = setInterval("mc.DoRefresh()", MC_limit);
	};

	function Refresh(){
		if(MC_limit != 0) MC_Interval = setInterval("mc.DoRefresh()", MC_limit);
	};
	
	this.ClearRefresh = function(){
		clearInterval(MC_Interval);
	};

	this.Open = function(){
		var obj = document.getElementById("MC_chat");
		var objcl = document.getElementById("MC_close");
		var mimg = document.getElementById("MC_img");
		var THEME = dle_root+"templates/"+dle_skin;
		
		if(this.MCopen_flag) {
			mimg.src = THEME + "/images/mc_open.gif";
			mimg.title = "Open a chat window";
			this.ClearRefresh();
			this.MCopen_flag = false;
			obj.style.display = "none";
			objcl.style.display = "block";
		}
		else{
			mimg.src = THEME + "/images/mc_close.gif";
			mimg.title = "Close Chat";
			this.Refresh();	
			this.MCopen_flag = true;
			obj.style.display = "block";
			objcl.style.display = "none";
		}
	}
	
	function pushstack(thearray, newval){
		arraysize = stacksize(thearray);
		thearray[arraysize] = newval;
	};
	
	function popstack(thearray)	{
		arraysize = stacksize(thearray);
		theval = thearray[arraysize - 1];
		delete thearray[arraysize - 1];
		return theval;
	};
		
	this.simpletag = function(thetag) {
		var tagOpen = eval(thetag + "_open");
		if (tagOpen == 0) {
			if(this.doInsert("[" + thetag + "]", "[/" + thetag + "]", true)) {
				eval(thetag + "_open = 1");
				document.getElementById( 'b_' + thetag ).className = 'editor_buttoncl';
				pushstack(bbtags, thetag);
				cstat();
			}
		}
		else {
			lastindex = 0;
			for (i = 0 ; i < bbtags.length; i++ ) {
				if ( bbtags[i] == thetag ) lastindex = i;
			}
			while (bbtags[lastindex]) {
				tagRemove = popstack(bbtags);
				this.doInsert("[/" + tagRemove + "]", "", false);
				if ( (tagRemove != 'font') && (tagRemove != 'size') ) {
					eval(tagRemove + "_open = 0");
					document.getElementById( 'b_' + tagRemove ).className = 'editor_button';
				}
			}
			cstat();
		}
	};
	
	function stacksize(thearray){
		for (i = 0; i < thearray.length; i++ ) {
			if ( (thearray[i] == "") || (thearray[i] == null) || (thearray == 'undefined') ) return i;
		}
		return thearray.length;
	};
	
	function cstat() {
		var c = stacksize(bbtags);
		if ( (c < 1) || (c == null) ) c = 0;
		if ( ! bbtags[0] ) c = 0;
	};
};
