//js.loadCss("floatDiv/dialog.css");

/*---------------------buttonMenu-------------------------------*/
js.createdFloatDivs = [];

js.createDialogDiv = function(content)
{
	var objFloatDiv = js.Dom.createDiv();
	objFloatDiv.style.position="absolute";
	objFloatDiv.style.top="-1000px";
	objFloatDiv.style.textAlign="left";
	objFloatDiv.style.backgroundColor = "#FFFFFF";
	js.Dom.setZ(objFloatDiv, js.zIndex_buttonMenu);
	//关于阴影
	var objShadowDiv = js.Dom.createDiv();
	objShadowDiv.style.position="absolute";
	objShadowDiv.style.top="-1000px";
	objShadowDiv.style.background	= "#000000";
	objShadowDiv.style.opacity	= "0.2";
	objShadowDiv.style.filter = "alpha(opacity=20)";
	js.Dom.setZ(objShadowDiv, js.zIndex_buttonMenu-1);
	objFloatDiv.shadowDiv = objShadowDiv;
	
	if (content){
		if (typeof (content) == 'string') js.Dom.writeHTML(objFloatDiv, content);
		else if (typeof (content) == 'function') {content(objFloatDiv);}
		else if (typeof (content) == 'object')objFloatDiv.appendChild(content);
		js.Dom.setW(objFloatDiv.shadowDiv, js.Dom.getW(objFloatDiv) + "px");
		js.Dom.setH(objFloatDiv.shadowDiv, js.Dom.getH(objFloatDiv) + "px");
	}
	
	//js.Dom.hideObj(objFloatDiv);
	//js.Dom.hideObj(objShadowDiv);
	
	return objFloatDiv;
}

//建立带阴影浮动层
js.createFloatDiv = function(content)
{
	var objFloatDiv = js.createDialogDiv(content);
			
	ech_attachMouseDrag(objFloatDiv, null,
		function (ctrl){
			js.Dom.setXY(ctrl.div, ctrl.curX-ctrl.pageW, ctrl.curY-ctrl.pageH);
			if (typeof (objFloatDiv.shadowDiv) == 'object')js.Dom.setXY(objFloatDiv.shadowDiv, ctrl.curX-ctrl.pageW+5, ctrl.curY-ctrl.pageH+5);
		}
	);
	
	return objFloatDiv;
}
js.closeFloatDiv = function (div)
{
	js.Dom.hideObj(div);
	if (div.shadowDiv)js.Dom.hideObj(div.shadowDiv);
}

//将浮动层移动到指定对象处
//mPlace位置：0下，1右
js.displayDivByElement = function(divObj, elementObj, mPlace)
{
	var _scroll = js.Dom.getScroll();
	js.Dom.showObj(divObj);
	
	if (elementObj == "center"){
		var x = Math.floor((_scroll.width - js.Dom.getW(divObj))/2)+_scroll.left;
		var y = Math.floor((_scroll.height - js.Dom.getH(divObj))/2)+_scroll.top;
	}
	else {
		var cw = mPlace == 0 ? 0 : js.Dom.getW(elementObj);
		var ch = mPlace == 1 ? 0 : js.Dom.getH(elementObj);
		var x = js.Dom.getPageX(elementObj) + cw;
		var y  = js.Dom.getPageY(elementObj) + ch;
		var w = js.Dom.getW(divObj);
		var h = js.Dom.getH(divObj);
		if(js.Browse.ie && js.Browse.mac){	y -= 4;	x -= 6;	}
		
		if(x+w > _scroll.width + _scroll.left && x - w - cw > 0) {
			x -= w + cw;
			if (mPlace == 0) x += js.Dom.getW(elementObj);
		}
		if(y+h > _scroll.height + _scroll.top && y - h - ch > 0) {
			y -= h + ch;
			//if (mPlace == 0) x += js.Dom.getW(elementObj);
		}
	}
		
	if (x-_scroll.left<10)x=_scroll.left+10;
	if (y-_scroll.top<10)y=_scroll.top+10;
	
	js.Dom.setXY(divObj, x, y);
	
	//关于阴影
	if (divObj.shadowDiv){
		js.Dom.showObj(divObj.shadowDiv);
		js.Dom.setW(divObj.shadowDiv, js.Dom.getW(divObj) + "px");
		js.Dom.setH(divObj.shadowDiv, js.Dom.getH(divObj) + "px");
		js.Dom.setXY(divObj.shadowDiv, x+5, y+5);
	}
}

js.createFloatPanel = function(width,content,title,closeFunc)
{
	var close_ctrl_id = js.generateId();
	var body_id = js.generateId();
	var str = '';
	str += '<div class="dialog_window" style="width:'+width+'px">';
	str += '<div class="dialog_title_box">';
	str += '  <table width="100%" border="0" cellspacing="2" cellpadding="0">';
	str += '    <tr>';
	str += '      <td style="position:relative; overflow:hidden; padding:2px 0px 0px 6px; color:#fff; font-weight:bold">'+(title ? title : "&nbsp;")+'</td>';
	str += '      <td width="17"><a href="#" id="'+close_ctrl_id+'"><img src="'+__JS_ROOT__ + 'floatDiv/dialogClose0.gif" alt="Close" width="17" height="17" border="0" title="Close" onmouseover="this.src=\''+__JS_ROOT__ + 'floatDiv/dialogCloseF.gif\'" onmouseout="this.src=\''+__JS_ROOT__ + 'floatDiv/dialogClose0.gif\'" /></a></td>';
	str += '    </tr>';
	str += '  </table>';
	str += '</div>';
	str += '<div id="'+body_id+'" class="dialog_body" style="padding:8px"></div>';
	str += '</div>';
	var objDiv = js.createFloatDiv(str);
	var objBody = js.Dom.findObj(body_id);
	if (typeof(content) == "object")objBody.appendChild(content);
	else if (typeof(content) == "string")js.Dom.writeHTML(objBody,content);
	js.Event.addEvent(objBody, 'mousedown', function(ev){js.Event.stopEvent(ev)});
	js.Event.addEvent(js.Dom.findObj(close_ctrl_id), 'click', function (){if (closeFunc)closeFunc(); js.closeFloatDiv(objDiv);return false;});
	return objDiv;
}

var buttonMenu_curObjMenu = null;
var buttonMenu_objMenuHidden = true;
var buttonTimeout = null;

/*
点击或鼠标经过某按钮或链接时弹出菜单
btnId:按钮ID,
mixData:菜单内容。可以是字串、文档对象、或函数,当为函数时，自动提供菜单对象作为参数
mType鼠标动作:0.click,1.mouseover
mPlace位置:0下,1右
onShow_func:当菜单显示时要执行的函数
menuClick_func:当点击菜单时要执行的函数
*/
function buttonMenu(btnId, mixData, mType, mPlace, onShow_func, menuClick_func)
{
	if (mType != 1)mType = 0;
	if (mPlace != 1) mPlace = 0;
	
	var _length = js.createdFloatDivs.length;
	js.createdFloatDivs[_length] = null;
	
	js.Event.addEvent(window, "load", function(){
		var oBtn = typeof (btnId) == 'string' ? js.Dom.findObj(btnId) : btnId;
		
		var evMenu = function (p_oEvent){
			var oEvent = p_oEvent ? p_oEvent : window.event
			if (oEvent.type == 'mouseover' && mType == 0 && buttonMenu_objMenuHidden)return false;
			if (mType == 0)js.Event.stopEvent(oEvent);
			
			if (js.createdFloatDivs[_length])var oMenu = js.createdFloatDivs[_length]
			else {
				var oMenu = js.createFloatDiv(mixData);
				if (mType == 1) {
					js.Event.addEvent(oMenu, 'mouseover', function (){if (buttonTimeout)clearTimeout(buttonTimeout);});
					js.Event.addEvent(oMenu, 'mouseout', function (){buttonTimeout = setTimeout(hiddenMenu, 300);});
				}
				oMenu.onclick = function (p_oEvent){
					//js.Event.stopEvent(p_oEvent || window.event);
					if (menuClick_func)menuClick_func();
				}
		
				js.createdFloatDivs[_length] = oMenu;
			}
			
			if (buttonTimeout)clearTimeout(buttonTimeout);
			
			hiddenMenu();
			buttonMenu_curObjMenu = oMenu;
			
			js.displayDivByElement(oMenu, oBtn, mPlace);
			
			if (onShow_func)onShow_func();
			if (mType == 0) buttonMenu_objMenuHidden = false;
		}
		if (mType == 1) js.Event.addEvent(oBtn, 'mouseout', function (){buttonTimeout = setTimeout(hiddenMenu, 300);});
		js.Event.addEvent(oBtn, 'click', evMenu);
		js.Event.addEvent(oBtn, 'mouseover', evMenu);
	});
};

function hiddenMenu()
{
	if (buttonMenu_curObjMenu){
		js.Dom.hideObj(buttonMenu_curObjMenu);
		if (buttonMenu_curObjMenu.shadowDiv)js.Dom.hideObj(buttonMenu_curObjMenu.shadowDiv);
		buttonMenu_objMenuHidden = true;
	}
}

document.onclick = hiddenMenu;	

_dialog_timeout = null;
_dialog_obj_div = null;

var fase_mages = new Array();
fase_mages['wait'] = __JS_ROOT__ + 'floatDiv/wait.gif';
fase_mages['bs'] = __JS_ROOT__ + 'floatDiv/bs.gif';
fase_mages['bye'] = __JS_ROOT__ + 'floatDiv/bye.gif';
fase_mages['cry'] = __JS_ROOT__ + 'floatDiv/cry.gif';
fase_mages['friend'] = __JS_ROOT__ + 'floatDiv/friend.gif';
fase_mages['good'] = __JS_ROOT__ + 'floatDiv/good.gif';
fase_mages['love'] = __JS_ROOT__ + 'floatDiv/love.gif';
fase_mages['no'] = __JS_ROOT__ + 'floatDiv/no.gif';
fase_mages['smile'] = __JS_ROOT__ + 'floatDiv/smile.gif';
fase_mages['stop'] = __JS_ROOT__ + 'floatDiv/stop.gif';
fase_mages['welcome'] = __JS_ROOT__ + 'floatDiv/welcome.gif';
fase_mages['why'] = __JS_ROOT__ + 'floatDiv/why.gif';
js.Event.addEvent(window, 'load', function(){for (var i in fase_mages)js.Img.preloadImages(fase_mages[i]);});

//width:宽度
//msg:显示的信息
//showTime:显示多长时间后自动关闭,如果不指定,则要手动关闭
//face:头像,从1-6,0表示不显示头像;
//title:标题
//showBtn:是否显示按钮
//btnText:按钮文字
function dialog(width, msg, face, showTime, title, showBtn, btnText)
{
	if (!_dialog_obj_div){
		var str = '';
		str += '<div id="dialog_window" class="dialog_window">';
		str += '  <div id="dialog_title_box" class="dialog_title_box">';
		str += '    <table width="100%" border="0" cellspacing="2" cellpadding="0">';
		str += '      <tr>';
		str += '        <td style="position:relative; overflow:hidden" id="dialog_title">&nbsp;</td>';
		str += '        <td width="17"><a href="#" id="dialog_close_ctrl"><img src="' + __JS_ROOT__ + 'floatDiv/dialogClose0.gif" id="dialog_close_ctrl_img" alt="Close" width="17" height="17" border="0" title="Close" onmouseover="this.src=\''+__JS_ROOT__ + 'floatDiv/dialogCloseF.gif\'" onmouseout="this.src=\''+__JS_ROOT__ + 'floatDiv/dialogClose0.gif\'" /></a></td>';
		str += '      </tr>';
		str += '    </table>';
		str += '  </div>';
		str += '  <div id="dialog_body" class="dialog_body">';
		str += '    <table width="100%" border="0" cellspacing="0" cellpadding="0">';
		str += '      <tr>';
		str += '        <td width="60" valign="top" id="dialog_face_box"><img id="dialog_face" style="margin:10px" /></td>';
		str += '        <td id="dialog_msg" style="padding:10px">&nbsp;</td>';
		str += '      </tr>';
		str += '    </table>';
		str += '  </div>';
		str += '  <div id="dialog_button_box"><div><a id="dialog_button_text" href="#">关闭</a></div></div>';
		str += '</div>';
		
		_dialog_obj_div = function(){};
		_dialog_obj_div.div = js.createFloatDiv(str);
		_dialog_obj_div.objWindow = js.Dom.findObj("dialog_window");
		_dialog_obj_div.objTitleBox = js.Dom.findObj("dialog_title_box");
		_dialog_obj_div.objTitle = js.Dom.findObj("dialog_title");
		_dialog_obj_div.objBody = js.Dom.findObj("dialog_body");
		_dialog_obj_div.objCloseCtrl = js.Dom.findObj("dialog_close_ctrl");
		_dialog_obj_div.objCloseCtrlImg = js.Dom.findObj("dialog_close_ctrl_img");
		_dialog_obj_div.objMsg = js.Dom.findObj("dialog_msg");
		_dialog_obj_div.objFaceBox = js.Dom.findObj("dialog_face_box");
		_dialog_obj_div.objFace = js.Dom.findObj("dialog_face");
		_dialog_obj_div.objButtonBox = js.Dom.findObj("dialog_button_box");
		_dialog_obj_div.objButtonText = js.Dom.findObj("dialog_button_text");
		js.Event.addEvent(_dialog_obj_div.objBody, 'mousedown', function (ev){js.Event.stopEvent(ev);return false;});
		js.Event.addEvent(_dialog_obj_div.objCloseCtrl, 'click', function (){js.closeFloatDiv(_dialog_obj_div.div);return false;});
		js.Event.addEvent(_dialog_obj_div.objButtonText, 'click', function (){js.closeFloatDiv(_dialog_obj_div.div);return false;});
	}
	
	if (_dialog_timeout){
		clearTimeout(_dialog_timeout);
		_dialog_timeout = null;
	}
	
	if (title == null || title == 'undefined')title = "System Info";
	if (title == "")js.Dom.hideObj(_dialog_obj_div.objTitleBox);
	else {
		js.Dom.writeHTML(_dialog_obj_div.objTitle, title);
		_dialog_obj_div.objCloseCtrlImg.src = __JS_ROOT__ + 'floatDiv/dialogClose0.gif';
		js.Dom.showObj(_dialog_obj_div.objTitleBox);
	}
	
	js.Dom.writeHTML(_dialog_obj_div.objMsg, msg);
	
	if (face == null || face == 'undefined')face = "smile";
	if (face == "")js.Dom.hideObj(_dialog_obj_div.objFaceBox);
	else {
		_dialog_obj_div.objFace.src = __JS_ROOT__ + 'floatDiv/'+face+'.gif';
		js.Dom.showObj(_dialog_obj_div.objFaceBox);
	}
	
	if (showBtn)js.Dom.showObj(_dialog_obj_div.objButtonBox);
	else js.Dom.hideObj(_dialog_obj_div.objButtonBox);
	
	if (!btnText)btnText = "关闭";
	js.Dom.writeHTML(_dialog_obj_div.objButtonText, btnText);
	
	if (!width) width = 250;
	js.Dom.setW(_dialog_obj_div.objWindow, width);
	
	js.displayDivByElement(_dialog_obj_div.div, 'center');
	
	if (showTime > 0)_dialog_timeout = setTimeout(function (){js.closeFloatDiv(_dialog_obj_div.div);}, showTime*1000);
}
/*-----------------菜单--------------------------------*/
var DropMenu_showMenus = [];
function DropMenu(){
	this.idData = [];
	this.pidData = [];
	this.menuData = [];
	this.btnData = [];
	this.rootId = null;
	this.containerObj = null;
	this.ctrlObj = null;
	this.id = js.generateId();
	this.className = "dropMenu";
}
DropMenu.data = function(id, pid, text, url){
	this.id = id;
	this.pid = pid
	this.text = text;
	this.url = url;
}
DropMenu.prototype.add = function(id,pid,text,url){
	if (!this.pidData[pid])this.pidData[pid] = [];
	this.pidData[pid][this.pidData[pid].length] = id;
	this.idData[id] = new DropMenu.data(id, pid, text, url);
	if (!this.idData[pid])this.rootId = id;
}
DropMenu.prototype.display = function (containerObj, mType, mPlace){
	if (mType != 1)mType = 0;
	this.mType = mType;
	if (mPlace != 1)mPlace = 0;
	this.mPlace = mPlace;

	if (containerObj)this.containerObj = containerObj;
	if (!this.containerObj){
		document.write('<div id="'+this.id+'"></div>');
		this.containerObj = js.Dom.findObj(this.id);
	}
	else this.containerObj = js.Dom.findObj(this.containerObj);
	this.containerObj.className = this.className;
	
	this.createMenu(this.rootId);
	for (var id in this.menuData){
		if (id != this.rootId){
			this.buttonMenu(id, (this.idData[id].pid == this.rootId && this.mType == 0) ? 0 : 1, (this.idData[id].pid == this.rootId && this.mPlace == 0) ? 0 : 1);
		}
	}
	var _menu = this;
	js.Event.addEvent(document,"click",function(){_menu.hiddenMenu();});
}
DropMenu.prototype.displayBy = function (ctrlObj, mType, mPlace){
	if (mType != 1)mType = 0;
	this.mType = mType;
	if (mPlace != 1)mPlace = 0;
	this.mPlace = mPlace;

	if (ctrlObj)this.ctrlObj = ctrlObj;
	if (!this.ctrlObj) return false;
	this.btnData[this.rootId] = js.Dom.findObj(this.ctrlObj);
	
	//this.containerObj = js.Dom.createElement("div");
	//this.containerObj.className = this.className;
	
	this.createMenu(this.rootId);
	for (var id in this.menuData){
		this.buttonMenu(id, (id == this.rootId && this.mType == 0) ? 0 : 1, (id == this.rootId && this.mPlace == 0) ? 0 : 1);
	}
	var _menu = this;
	js.Event.addEvent(document,"click",function(){_menu.hiddenMenu();});
}
DropMenu.prototype.createMenu = function(id){
	if (id == this.rootId){
		var divObj = js.Dom.createElement("ul", this.containerObj);
		divObj.className = (this.mPlace == 0 && !this.ctrlObj) ? "dropMenuRow" : "dropMenuCol";
		//var ulObj = js.Dom.createElement("ul", divObj);
		//var parentObj = (this.mPlace == 0 && !this.ctrlObj) ? js.Dom.createElement("tr", tbodyObj) : tbodyObj;
	}
	else {
		var divObj = js.Dom.createElement("ul");
		divObj.className = "dropMenuCol";
		//var ulObj = js.Dom.createElement("ul", divObj);
	}
	
	var curr_id;
	for (var i = 0;i < this.pidData[id].length; i++){
		curr_id = this.pidData[id][i];
		this.createTd(curr_id, divObj);
		if (this.pidData[curr_id])this.createMenu(curr_id);
	}
	this.menuData[id] = divObj;
}
DropMenu.prototype.createTd = function(id, parentObj){
	var tdObj = js.Dom.createElement("li", parentObj);
	var aObj = js.Dom.createElement("a", tdObj, this.idData[id].text);
	aObj.href = this.idData[id].url;
	var rightObj = js.Dom.createElement("span", aObj, this.pidData[id] ? "&gt;" : "&nbsp;");
	rightObj.className = 'has_child_right'
	this.btnData[id] = tdObj;
	var _menu = this;
	js.Event.addEvent(tdObj, "mouseover", function (){tdObj.className = "dropMenuHover"; _menu.hiddenMenu(id);});
	js.Event.addEvent(tdObj, "mouseout", function (){tdObj.className = "dropMenuOut";});
}
DropMenu.prototype.buttonMenu = function (id, mType, mPlace)
{
	var oBtn = this.btnData[id];
	var mixData = this.menuData[id];
	var _menu = this;
	
	if (mType != 1)mType = 0;
	if (mPlace != 1) mPlace = 0;
	
	var _length = js.createdFloatDivs.length;
	js.createdFloatDivs[_length] = null;
	
	var evMenu = function (p_oEvent){
		var oEvent = p_oEvent ? p_oEvent : window.event
		if (oEvent.type == 'mouseover' && mType == 0 && buttonMenu_objMenuHidden)return false;
		if (mType == 0)js.Event.stopEvent(oEvent);
		
		if (js.createdFloatDivs[_length])var oMenu = js.createdFloatDivs[_length]
		else {
			var oMenu = js.createDialogDiv(mixData);
			if (mType == 1) {
				js.Event.addEvent(oMenu, 'mouseover', function (){if (buttonTimeout)clearTimeout(buttonTimeout);});
				//js.Event.addEvent(oMenu, 'mouseout', function (){buttonTimeout = setTimeout(function(){_menu.hiddenMenu(id);}, 300);});
			}
			oMenu.className = _menu.className;
	
			js.createdFloatDivs[_length] = oMenu;
		}
		
		if (buttonTimeout)clearTimeout(buttonTimeout);
		
		_menu.hiddenMenu(id);
		DropMenu_showMenus[_menu.id+"_"+id] = oMenu;
		
		js.displayDivByElement(oMenu, oBtn, mPlace);
		
		if (mType == 0) buttonMenu_objMenuHidden = false;
	}
	//if (mType == 1) js.Event.addEvent(oBtn, 'mouseout', function (){buttonTimeout = setTimeout(function(){_menu.hiddenMenu(id);}, 300);});
	js.Event.addEvent(oBtn, 'click', evMenu);
	js.Event.addEvent(oBtn, 'mouseover', evMenu);
};
DropMenu.prototype.hiddenMenu = function (lastId)
{
	var notHideIds = [];
	if (lastId){
		notHideIds[this.id+"_"+lastId] = 1;
		while(this.idData[lastId] && this.idData[lastId].pid){
			notHideIds[this.id+"_"+this.idData[lastId].pid] = 1;
			lastId = this.idData[lastId].pid;
		}
	}
	else buttonMenu_objMenuHidden = true;
	for (var id in DropMenu_showMenus){
		if (DropMenu_showMenus[id] && !notHideIds[id]){
			js.Dom.hideObj(DropMenu_showMenus[id]);
			if (DropMenu_showMenus[id].shadowDiv)js.Dom.hideObj(DropMenu_showMenus[id].shadowDiv);
			DropMenu_showMenus[id] = null;
		}
	}
}
/*
菜单示例
<div id="menu_container"></div>
<script language="JavaScript" type="text/javascript">
var objMenu = new DropMenu();
objMenu.add('1','0','菜单','');
objMenu.add('2','1','aaa','a.php');
objMenu.add('3','1','bbb','b.php');
objMenu.add('4','1','ccc','c.php');
objMenu.add('5','1','ddd','d.php');
objMenu.add('6','2','eee','e.php');
objMenu.add('7','2','ffffffffffff','f.php');
objMenu.add('8','6','ggg','g.php');
objMenu.add('9','3','hhh','h.php');
objMenu.add('10','3','iii','i.php');
objMenu.display("menu_container");
</script>
*/

