
var dcitaction = new Array();
var popside_x = 10;   // 弹出窗口位于鼠标左侧或者右侧的距离；3-12 合适
var dcittimeout = 500;

function ducepopupinit(event){
	try{
		if(event.srcElement) o = event.srcElement; else o = event.target;
		if(o.id != dcitaction['id']){
			dcitaction['id'] = o.id;
			if(dcitaction['id'].indexOf('thread_') != -1 || dcitaction['id'].indexOf('rank_') != -1){
				var showid = 'duce' + dcitaction['id'];

				dcitaction['showid'] = showid;
				dcitaction['offset'] = dcitaction['id'].indexOf('rank_') != -1 ? 1 : 0;
				dcitaction['ex'] = event.clientX;
				
				dcitimer['poptitle'] = setTimeout("ducetomouseloc()", dcittimeout);

				if(!o.onmouseover) {
					o.onmouseout = function() {
						$(showid).style.display = 'none';
						clearTimeout(dcitimer['poptitle']);
					}
				}
				if(!$(showid).onmouseover) {
					$(showid).onmouseover = function() {
						this.style.display = 'block';
					}
					$(showid).onmouseout = function() { 
						this.style.display = 'none';
						clearTimeout(dcitimer['poptitle']);
					}
				}
			}
		}
	}catch(e){return true}
}

function ducetomouseloc(em, showid, menuobj, offset){
	try{
		var showobj = $(dcitaction['showid']);
		if(!showobj || showobj.innerHTML == '') return;
		var menuobj = $(dcitaction['id']);
		showobj.style.display = 'block';
		menuobj.pos = fetchOffset(menuobj);
		showobj.X = dcitaction['ex'] + popside_x;
		showobj.Y = menuobj.pos['top'];

		showobj.w = showobj.offsetWidth;
		showobj.h = showobj.offsetHeight;
		menuobj.w = menuobj.offsetWidth;
		menuobj.h = menuobj.offsetHeight;

		var bdtop = document.documentElement.scrollTop + document.documentElement.clientHeight;
		var bdleft = document.body.clientWidth;

		if(!dcitaction['offset']){
			if(showobj.X > menuobj.w + menuobj.pos['left'] - popside_x*2){
				showobj.X = menuobj.w + menuobj.pos['left'] - popside_x*2;
			}
			showobj.style.left = (showobj.X + showobj.w > document.body.clientWidth) && (showobj.X - showobj.w - popside_x >= 0) ? showobj.X - showobj.w - popside_x + 'px' : showobj.X + 'px';
			showobj.style.top = showobj.Y + showobj.h > document.documentElement.scrollTop + document.documentElement.clientHeight ? showobj.Y - showobj.h + 1 + 'px' : showobj.Y + (is_moz ? 15 : 14) + 'px';
		}else if(dcitaction['offset'] == 1){
			showobj.style.left = menuobj.pos['left'] + showobj.w + menuobj.w + 5 > document.body.clientWidth ? menuobj.pos['left'] - showobj.w - 3 + 'px' : menuobj.pos['left'] + menuobj.w + 5 + 'px';
			showobj.style.top = showobj.Y + showobj.h - menuobj.h > document.documentElement.scrollTop + document.documentElement.clientHeight ? showobj.Y - showobj.h + menuobj.h + 'px' : showobj.Y + 'px';
		}

	}catch(e){}
}

if(!document.onmouseover) {
	document.onmouseover = function(e) {
		if (!e) ducepopupinit(window.event); else ducepopupinit(e);
	};
}

function ducerandstr(num) { 
	var seedArray = new Array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9');
	var seedStr = '';
	for (i=0;i<num;i++) {
		seedStr += seedArray[Math.round(Math.random()*(seedArray.length-1))];
	}
	return(seedStr);
}

//由于DZ系统默认浮动窗口不可自定义路径，复制floatwin函数稍加修改
function ducetransajax(action, script, w, h, scrollpos){
	var floatonly = !floatonly ? 0 : 1;
	var actione = action.split('_');
	action = actione[0];
	var handlekey = actione[1];
	if(handlekey == 'fastview'){
		script += '&induceajax=yex'// + '&' + ducerandstr(8);
	}
	var layerid = 'floatwin_' + handlekey;
	if(is_ie) {
		var objs = $('wrap').getElementsByTagName("OBJECT");
	} else {
		var objs = $('wrap').getElementsByTagName("EMBED");
	}
	loadcss('float');
	floatwinhandle[handlekey + '_0'] = layerid;
	if(!floatwinopened) {
		$('wrap').onkeydown = floatwin_wrapkeyhandle;
		for(i = 0;i < objs.length; i ++) {
			if(objs[i].style.visibility != 'hidden') {
				objs[i].setAttribute("oldvisibility", objs[i].style.visibility);
				objs[i].style.visibility = 'hidden';
			}
		}
	}
	scrollpos = !scrollpos ? '' : 'floatwin_scroll(\'' + scrollpos + '\');';
	var clientWidth = document.body.clientWidth;
	var clientHeight = document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight;
	var scrollTop = document.body.scrollTop ? document.body.scrollTop : document.documentElement.scrollTop;
	if(script && script != -1) {
		scriptfile = 'misc.php';
		if(floatwinreset || floatscripthandle[scriptfile] && floatscripthandle[scriptfile][0] != script) {
			if(!isUndefined(floatscripthandle[scriptfile])) {
				$('append_parent').removeChild($(floatscripthandle[scriptfile][1]));
				$('append_parent').removeChild($(floatscripthandle[scriptfile][1] + '_mask'));
			}
			floatwinreset = 0;
		}
		floatscripthandle[scriptfile] = [script, layerid];
	}
	if(!$(layerid)) {
		floattabs[layerid] = new Array();
		div = document.createElement('div');
		div.className = 'floatwin';
		div.id = layerid;
		div.style.width = w + 'px';
		div.style.height = h + 'px';
		div.style.left = floatwinhandle[handlekey + '_1'] = ((clientWidth - w) / 2) + 'px';
		div.style.position = 'absolute';
		div.style.zIndex = '997';
		div.onkeydown = floatwin_keyhandle;
		$('append_parent').appendChild(div);
		$(layerid).style.display = '';
		$(layerid).style.top = floatwinhandle[handlekey + '_2'] = ((clientHeight - h) / 2 + scrollTop) + 'px';
		$(layerid).innerHTML = '<div><h3 class="float_ctrl"><em><img src="' + ducepartDir + '/images/loading.gif"> ' + loaderstr + '</em><span><a href="javascript:;" class="float_close" onclick="floatwinreset = 1;floatwin(\'close_' + handlekey + '\');">&nbsp</a></span></h3></div>';
		divmask = document.createElement('div');
		divmask.className = 'floatwinmask';
		divmask.id = layerid + '_mask';
		divmask.style.width = (parseInt($(layerid).style.width) + 14) + 'px';
		divmask.style.height = (parseInt($(layerid).style.height) + 14) + 'px';
		divmask.style.left = (parseInt($(layerid).style.left) - 6) + 'px';
		divmask.style.top = (parseInt($(layerid).style.top) - 6) + 'px';
		divmask.style.position = 'absolute';
		divmask.style.zIndex = '996';
		divmask.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=90,finishOpacity=100,style=0)';
		divmask.style.opacity = 0.9;
		$('append_parent').appendChild(divmask);
		if(script && script != -1) {
			script += (script.search(/\?/) > 0 ? '&' : '?') + 'infloat=yes&handlekey=' + handlekey;
			try {
				ajaxget(script, layerid, '', '', '', scrollpos);
			} catch(e) {
				setTimeout("ajaxget('" + script + "', '" + layerid + "', '', '', '', '" + scrollpos + "')", 1000);
			}
		} else if(script == -1) {
			$(layerid).innerHTML = '<div><h3 class="float_ctrl"><em id="' + layerid + '_title"></em><span><a href="javascript:;" class="float_close" onclick="floatwinreset = 1;floatwin(\'close_' + handlekey + '\');">&nbsp</a></span></h3></div><div id="' + layerid + '_content"></div>';
			$(layerid).style.zIndex = '1099';
			$(layerid + '_mask').style.zIndex = '1098';
		}
	} else {
		$(layerid).style.width = w + 'px';
		$(layerid).style.height = h + 'px';
		$(layerid).style.display = '';
		$(layerid).style.top = floatwinhandle[handlekey + '_2'] = ((clientHeight - h) / 2 + scrollTop) + 'px';
		$(layerid + '_mask').style.width = (parseInt($(layerid).style.width) + 14) + 'px';
		$(layerid + '_mask').style.height = (parseInt($(layerid).style.height) + 14) + 'px';
		$(layerid + '_mask').style.display = '';
		$(layerid + '_mask').style.top = (parseInt($(layerid).style.top) - 6) + 'px';
	}
	floatwins[floatwinopened] = handlekey;
	floatwinopened++;

}
