var http = getHTTPObject();
var httpto;
var winreload;
var wr_url;
function handleHttpResponse()
{
	var reqstat = false;
	if (http.readyState == 1)
	{
		httpto = setTimeout("haveHttpTO();",2000);
	}
	if (http.readyState != 4) return;
	clearTimeout (httpto);
	if (!http.responseText)
	{
		try { reqstat = http.status; }
		catch (err) {};
		if (reqstat == 204 || reqstat == 1223) reqstat = true;
		setStatusWarning (!reqstat);
	}
	else if (http.status == 200)
	{
		setStatusWarning (false);
		var results = http.responseText.split("<split>");
		for (var i=0; i<results.length; i++)
		{
			if (results[i].indexOf ('<')==1) break;
			var rpos = results[i].indexOf ('=');
			if (rpos>0);
			{
				var rnam = results[i].slice (0, rpos);
				var el = document.getElementById(rnam);
				if (el) setItem (el, results[i].slice (rpos+1));
			}
		}
		sortables_init(false);
	}
}
function setItem (el, val)
{
	if (el.nodeName=="INPUT") el.value = val;
	else if (el.nodeName=="TEXTAREA") el.value = val;
	else el.innerHTML = val;
}
function haveHttpTO ()
{
	http.abort ();
	setStatusWarning (true);
}
function setStatusWarning (vis)
{
	var sw = document.getElementById('statuswarning');
	if (sw) sw.style.display=(vis)?"inline":"none";
}
function sendPost (url,req)
{
	if (!http) return;
	http.open("POST", url, true);
	http.onreadystatechange = handleHttpResponse;
	http.send(req);
}
// =============================================
function startWR (wrt)
{
	var wrs;
	switch (wrt)
	{
		case 1: wrs = 30; break;
		case 2: wrs = 60; break;
		case 3: wrs = 300; break;
		case 4: wrs = 900; break;
		case 5: wrs = 1800; break;
		case 6: wrs = 3600; break;
		case 7: wrs = 7200; break;
		default: wrs = 0; break;
	}
	if (wrs) winreload = window.setInterval("updateStatus()",wrs*1000);
}
function stopWR ()
{
	window.clearInterval(winreload);
	winreload = false;
}
function updateStatus ()
{
	if (!http) return;
	http.open("GET", "/ajax"+wr_url, true);
	http.onreadystatechange = handleHttpResponse;
	http.send(null);
}
function updateServerSettings (now)
{
	var wrt = document.getElementById('wr_time').value;
	var wra = (winreload)?"on":"off";
	var req = "/ajax" + ((now) ? wr_url : "?set");
	if (!http) return;
	http.open("POST", req, true);
	http.onreadystatechange = handleHttpResponse;
	http.send("action=seset&wr_time="+wrt+"&wr_action="+wra);
}
// =============================================
function getHTTPObject()
{
	var xmlhttp;
	/*@cc_on
	@if (@_jscript_version >= 5)
	try
	{
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e)
	{
		try
		{
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (E)
		{
			xmlhttp = false;
		}
	}
	@else
	xmlhttp = false;
	@end @*/
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
	{
		try
		{
			xmlhttp = new XMLHttpRequest();
		} catch (e)
		{
			xmlhttp = false;
		}
	}
	return xmlhttp;
}
// =============================================
var albumsize="mid";
var albumindex=1;
var albumlocation="";
var albumlength=1;
function loadAlbumPicture (album,size,ix)
{
	if (!http) return;
	if (ix<1) albumindex=1;
	else if (ix>albumlength) albumindex=albumlength;
	else albumindex=ix;
	albumsize = size;
	albumlocation = album;
	http.open("POST", "/ajax/picture", true);
	http.onreadystatechange = handleHttpResponse;
	http.send("action=albumpicture&album="+album+"&size="+albumsize+"&pic="+albumindex);
	var sw = document.getElementById('albumcontrol');
	if (sw) sw.style.display=(albumsize=="tn")?"none":"inline";
	sw = document.getElementById('albumdiv');
	if (sw) sw.className=(albumsize=="tn")?"":"single";
}
// =============================================
var lday_class="";
var lday_id="";
var lyear, lmonth;
function getCalDay (date)
{
	sendPost ("/ajax/result", "action=calGetDay&msgid="+date);
	selectDay (date);
}
function getMonth (inc)
{
	lmonth += inc;
	if (lmonth>12) { lmonth=1; lyear++; }
	if (lmonth<1) { lmonth=12; lyear--; }
	sendPost ("/ajax/result", "action=calGetMonth&value="+lyear+"&folder="+lmonth);
	selectDay (date);
}
function selectDay (date)
{
	var d;
	if (lday_id)
	{
		d = document.getElementById(lday_id);
		if (d) d.className = lday_class;
	}
	d = document.getElementById("m"+date);
	if (d)
	{
		lday_id = "m"+date;
		lday_class = d.className;
		d.className = "selected";
	}
}
function closeHour (hour,date, val)
{
	sendPost ("/ajax/result", "action=cal"+((val)?"Disable":"Enable")+"Hour&timeofday="+hour+"&msgid="+date);
}
function registerHour (hour,date,val)
{
	sendPost ("/ajax/result", "action=cal"+((val)?"Register":"Clear")+"Hour&timeofday="+hour+"&msgid="+date);
}
function editCmt (hour,date,val)
{
	sendPost ("/ajax/result", "action=cal"+((val)?"Edit":"Clear")+"Cmt&timeofday="+hour+"&msgid="+date);
}
function saveCmt (hour,date)
{
	var d = document.getElementById("i"+hour);
	if (d) sendPost ("/ajax/result", "action=calSaveCmt&timeofday="+hour+"&msgid="+date+"&value="+d.value);
}
function dayEnable (date,val)
{
	sendPost ("/ajax/result", "action=cal"+((val)?"En":"Dis")+"ableDay&msgid="+date);
}
// =============================================
var msgLastID;
var msgLastFolder;
function switchMsgSelect (soff, sel)
{
	var t;
	t=document.getElementById("li"+soff);
	if (t) t.className="";
	t=document.getElementById("li"+sel);
	if (t) t.className="selected";
	return sel;
}
function displayMsg (folder, msgid)
{
	sendPost ("/ajax/result", "action=msgview&folder="+folder+"&msgid="+msgid);
	toggleMsgWin ("view");
	msgLastID=switchMsgSelect (msgLastID, msgid);
	msgLastFolder=folder;
}
function deleteMsg ()
{
	sendPost ("/ajax/result", "action=msgdelete&folder="+msgLastFolder+"&msgid="+msgLastID);
	toggleMsgWin ("list");
}
function newMsg ()
{
	g=document.getElementById("subject");
	g.value="";
	g=document.getElementById("content");
	g.innerHTML=g.value="";
	g=document.getElementById("folder");
	g.value="";
	g=document.getElementById("msgid");
	g.value="";
	charCountSummary("subject,content");
	toggleMsgWin ("new");
}
var wordwraplen=70;
function editMsg (resp)
{
// 	sendPost ("/ajax/result", "action=msg"+((resp)?"response":"edit")+"&folder="+msgLastFolder+"&msgid="+msgLastID);
	var f, g, s;
	toggleMsgWin ("new");
	g=document.getElementById((resp)?"msgauthor":"msgreceiver");
	setComboVal ("receiver", g.firstChild.data);
	g=document.getElementById("folder");
	g.value=msgLastFolder;
	g=document.getElementById("msgid");
	g.value=(resp)?"":msgLastID;

	f=document.getElementById("subject");
	g=document.getElementById("msgsubject");
	if (g.firstChild.data.substr(0,3)=="Re:") s="";
	else s="Re: ";
	f.value=s+g.firstChild.data;

	f=document.getElementById("content");
	g=document.getElementById("msgcontent");
	// do word wrap
	var r="\r\n", i, a = g.childNodes;
	for (i in a)
	{
		s=a[i].nodeValue;
		if (s)
		{
			r+="\r\n";
			if (!resp) r+=s;
			else if (s.charAt(0)=='>') r+=">"+s;
			else if (s.length>wordwraplen) r+="> "+wordwrap(s);
			else r+="> "+s;
		}
	}
	f.defaultValue=r;
	f.focus();
	charCountSummary("subject,content");
}
function wordwrap (s)
{
	var p, j, l=0, t=s.split(' ');
	for (j in t)
	{
		p=t[j];
		if (l+p.length>wordwraplen&&l>0)
		{
			p="\r\n> "+p;
			l = 0;
			t[j]=p;
		}
		else l+=p.length;
	}
	s=t.join(" ");
	return s;
}
function loadFolder (folder)
{
	sendPost ("/ajax/result", "action=msgfolder&folder="+folder);
	toggleMsgWin ("list");
	msgLastID=switchMsgSelect (msgLastID, msgid);
	msgLastFolder=folder;
}
function toggleVisibility (val)
{
	var sv = document.getElementById(val);
	if (sv)
	{
		if (sv.style.display=="none") sv.style.display="inline";
		else sv.style.display="none";
	}
}
var lastMsgWinSel="";
function toggleMsgWin (val)
{
	if (val=="fillview" && lastMsgWinSel=="fillview") val="view";
	lastMsgWinSel=val;
	var sv = document.getElementById("msgview");
	var sl = document.getElementById("msglist");
	var sn = document.getElementById("msgcreate");
	if (val=="list")
	{
		sv.style.display="none";
		sn.style.display="none";
		sl.style.display="inline";
		sl.style.height="100%";
		sl.style.overflow="visible";
	}
	if (val=="view")
	{
		sv.style.display="inline";
		sn.style.display="none";
		sl.style.display="block";
		sl.style.height="10em";
		sl.style.overflow="auto";
	}
	if (val=="new")
	{
		sv.style.display="none";
		sn.style.display="inline";
		sl.style.display="none";
	}
	if (val=="fillview")
	{
		sv.style.display="inline";
		sn.style.display="none";
		sl.style.display="none";
	}
}
// =============================================

