/*
Charset: UTF-8（京）
Version: 20090212
Programing by Masao Takahashi.
*/
function DialogMgr() {
	this.ajax = new MyAjaxObject();
}
DialogMgr.prototype = {
registerButton : function(buttonID, posID, marginX, marginY)
{
	var nButton = document.getElementById(buttonID);
	nButton.onclick = g_dlgMgr.doClickButton;

	var nPos = document.getElementById(posID);
	var rt = getElementRect(nPos);
	nButton._dialogX = rt.left+marginX;
	nButton._dialogY = rt.top+marginY;
},
doClickButton : function(e)
{
	var node = this;
	if (g_dlgMgr.iframe) {
		return false;
	}
	g_dlgMgr.showDialog(node.href, node._dialogX, node._dialogY);
	return false;
},
showDialog : function(url, x, y)
{
	g_dlgMgr.dialogX = x;
	g_dlgMgr.dialogY = y;
	//g_dlgMgr.ajax.send(url, new Array(), g_dlgMgr.showDialog_cb);
	var iframe = document.createElement('iframe');
	iframe.style.position = "absolute";
	iframe.style.visibility = "hidden";
	iframe.style.overflow = "hidden";//firefox
	iframe.style.border = "none";//firefox
	iframe.frameBorder = "0";//ie7
	iframe.scrolling = "no";
	iframe.src = "javascript:false;";
	iframe.style.width = iframe.style.height = "100%";
	g_dlgMgr.iframe = iframe;
	if (g_common._browser == "ie") iframe.onreadystatechange = g_dlgMgr.onloadFrame;
	else iframe.onload = g_dlgMgr.onloadFrame;
	document.body.appendChild(iframe);
	if (url.indexOf("?") >= 0) { url += "&js=1"; }
	else { url += "?js=1"; }
	iframe.src = url+"&t="+new Date().getTime();
},
onloadFrame : function()
{
	if (g_common._browser == "ie") {
		if (this.readyState != "complete") return;
	}
	var iframe = g_dlgMgr.iframe;
	var childDoc = iframe.contentWindow.document;
	var nContent = childDoc.getElementById("js-content");
	if (nContent == null) {
		return;//safari
	}
	iframe.onload = iframe.onreadystatechange = null;
	iframe.style.zIndex = 9999;
	iframe.style.left = g_dlgMgr.dialogX+"px";
	iframe.style.top = g_dlgMgr.dialogY+"px";
	iframe.style.width = nContent.offsetWidth+"px";
	iframe.style.height = childDoc.body.offsetHeight+"px";
	iframe.style.visibility = "visible";

	var node = childDoc.getElementById("js-btn-close");
	node.onclick = g_dlgMgr.hideDialog;
	childDoc.onmousedown = g_dlgMgr.doDragStart;
},
moveBy : function(add_x, add_y)
{
	var iframe = g_dlgMgr.iframe;
	var childDoc = iframe.contentWindow.document;
	iframe.style.left = (parseInt(iframe.style.left)+add_x)+"px";
	iframe.style.top = (parseInt(iframe.style.top)+add_y)+"px";
},
resizeBy : function(add_w, add_h)
{
	var iframe = g_dlgMgr.iframe;
	var childDoc = iframe.contentWindow.document;
	iframe.style.width = (parseInt(iframe.style.width)+add_w)+"px";
	iframe.style.height = (parseInt(iframe.style.height)+add_h)+"px";
},
hideDialog : function()
{
	if (!g_dlgMgr.iframe) return false;
	document.body.removeChild(g_dlgMgr.iframe);
	g_dlgMgr.iframe = null;
	return false;
},
/****
showDialog_cb : function(httpReq, postdata, params)
{
	var html = httpReq.responseText;
	if (!g_dlgMgr.nDialog) {
		g_dlgMgr.nDialog = document.createElement("div");
		g_dlgMgr.nDialog.style.position = "absolute";
		g_dlgMgr.nDialog.style.visibility = "hidden";
		g_dlgMgr.nDialog.style.left = "-1000px";
		g_dlgMgr.nDialog.style.top = "-1000px";
		document.body.appendChild(g_dlgMgr.nDialog);
		g_dlgMgr.nDialog.innerHTML = html;
		g_dlgMgr.nDialog.style.left = g_dlgMgr.dialogX+"px";
		g_dlgMgr.nDialog.style.top = g_dlgMgr.dialogY+"px";
	}
	else {
		g_dlgMgr.nDialog.innerHTML = html;
	}
	var list = g_dlgMgr.nDialog.getElementsByTagName("a");
	for (var i=0; i<list.length; i++) {
		var node = list[i];
		switch (node.className) {
		case "js-close":
			node.onclick = g_dlgMgr.hideDialog;
			break;
		}
	}
	g_dlgMgr.nDialog.style.visibility = "visible";
	g_dlgMgr.nDialog.onmousedown = g_dlgMgr.doDragStart;
},
hideDialog : function()
{
	if (!g_dlgMgr.nDialog) return false;
	document.body.removeChild(g_dlgMgr.nDialog);
	g_dlgMgr.nDialog = null;
	return false;
},
****/
getEventTarget : function(e)
{
	if (g_common._browser == "ie") {
		if (g_dlgMgr.iframe) { e = g_dlgMgr.iframe.contentWindow.event; }
		else { e = window.event; }
	}
	if (e.target) return e.target;
	else if (e.srcElement) return e.srcElement;
	return null;
},
getEventPt : function(e, flag)
{
	if (g_common._browser == "ie" || g_common._browser == "opera") {
		var evt = (flag) ? g_dlgMgr.iframe.contentWindow.event : window.event;
		var offsetX = document.documentElement.scrollLeft;
		var offsetY = document.documentElement.scrollTop;
		if (g_common._browser == "opera") {
			offsetX = offsetY = 0;
		}
		return {x:evt.screenX+offsetX, y:evt.screenY+offsetY};
	}
	else {
		var offsetX = window.scrollX;
		var offsetY = window.scrollY;
		return {x:e.screenX+offsetX, y:e.screenY+offsetY};
	}
},
doDragStart : function(e)
{
	if (!hasClassName(g_dlgMgr.getEventTarget(e),"js-draggable")) {
		return true;
	}
	g_dlgMgr.nDrag = g_dlgMgr.iframe;
	var target = g_dlgMgr.nDrag;
	var pt = g_dlgMgr.getEventPt(e, (g_dlgMgr.iframe));
	target.eX = pt.x;
	target.eY = pt.y;
//	target.style.cursor = "move";
	if (g_dlgMgr.iframe) {
		g_dlgMgr.iframe.contentWindow.document.onmousemove = g_dlgMgr.doDragMove;
		g_dlgMgr.iframe.contentWindow.document.onmouseup = g_dlgMgr.doDragEnd;
	}
	document.onmousemove = g_dlgMgr.doDragMove;
	document.onmouseup = g_dlgMgr.doDragEnd;
	if (g_common._browser == "ie") {
		window.onscroll = g_dlgMgr.doDragMove;
	}
	return false;
},
doDragMove : function(e)
{
	var target = g_dlgMgr.nDrag;
	var pt = g_dlgMgr.getEventPt(e, (this!=document));
	var left = parseInt(target.style.left)+pt.x-target.eX;
	var top  = parseInt(target.style.top)+pt.y-target.eY;
	target.style.left = left+"px";
	target.style.top = top+"px";
	target.eX = pt.x;
	target.eY = pt.y;
	return false;
},
doDragEnd : function(e)
{
	var target = g_dlgMgr.nDrag;
//	target.style.cursor = "";
	window.onscroll = null;
	document.onmousemove = null;
	document.onmouseup  =null;
	if (g_dlgMgr.iframe) {
		g_dlgMgr.iframe.contentWindow.document.onmousemove = null;
		g_dlgMgr.iframe.contentWindow.document.onmouseup = null;
	}
	return false;
}
};
var g_dlgMgr = new DialogMgr();
g_common.registInterface(g_dlgMgr);
