﻿/*
	File：浮动窗特效，需要浮动窗则必须加载
	Author：elvis@dotop
	Update：3:53 2008-5-12
*/

var objX = 0;
var objY = 0;

var layer = new Array();
var dragObj = new Array();
var dragObjId = new Array();

var bdMvEvt = null, bdUpEvt = null;

function recoverBodyEvent()
{
	document.body.onmousemove = bdMvEvt;
	document.body.onmouseup = bdUpEvt;
}

var bodyScrollWidth = 0, bodyScrollHeight = 0;
function reCalBodySize()
{
	bodyScrollWidth = document.documentElement.scrollWidth;
	bodyScrollHeight = document.documentElement.scrollHeight;
}

function displayLayer(dv)
{
	document.body.onmousemove = function (event){drag(event,dv)};
	document.body.onmouseup = function(){objX = 0; objY=0};
	dv.style.display = 'block';
}

function hideElementAll()
{
	HideElement("SELECT");
	HideElement("OBJECT");
	HideElement("IFRAME");
}

function showElementAll()
{
	ShowElement("SELECT");
	ShowElement("OBJECT");
	ShowElement("IFRAME");
}

//滤镜效果
function hide()
{
	synSizeByBody('globalDiv');
	$('globalDiv').style.display = 'block';
	if (1 == is_ie) hideElementAll();
}

//隐藏元素
function HideElement(strElementTagName)
{
	try{
		for(i = 0; i < window.document.all.tags(strElementTagName).length; i++)
		{
			var objTemp = window.document.all.tags(strElementTagName)[i];
			objTemp.style.visibility = 'hidden';
		}
	}catch(e){
		alert(e.message);
	}
}

//显示元素
function ShowElement(strElementTagName)
{
	try{
		for(i = 0; i < window.document.all.tags(strElementTagName).length; i++)
		{
			var objTemp = window.document.all.tags(strElementTagName)[i];
			objTemp.style.visibility = 'visible';
		}
	}catch(e){
		alert(e.message);
	}
}

function synSizeByBody()
{
	reCalBodySize();
	var argArr = synSizeByBody.arguments;
	for (var i = 0; i < argArr.length; i++)
	{
		if(null != $(argArr[i]))
		{
			$(argArr[i]).style.width = (bodyScrollWidth) + 'px';
			$(argArr[i]).style.height = (bodyScrollHeight) + 'px';
		}
	}
}

//下面3个函数跟浮动相关
function checkAndResetStyleTop (obj)
{
	var clientHeight = obj.firstChild.clientHeight;
	var styleTop = obj.style.top.toString();
	styleTop = parseInt(styleTop.substring(0, styleTop.length - 2));
	if (clientHeight + styleTop > bodyScrollHeight)
	{
		obj.style.top = (bodyScrollHeight - clientHeight) + 'px';
	}
}

function drag_mouse_down(event,obj)
{
	var obj_left = obj.style.left;
	var obj_top = obj.style.top;
	var obj_left = obj_left.replace(/p|x/g,"");
	var obj_top = obj_top.replace(/p|x/g,"");
	if (null == event) event = window.event;
	var clientX = String(event.clientX).replace(/p|x/g, '');
	var clientY = String(event.clientY).replace(/p|x/g, '');
	objX = clientX - obj_left;
	objY = clientY - obj_top;
}

function drag(event,obj)
{
	if( objX != 0 && objY != 0 ) {
		if ( event == null ) {	//IE必须
			event=window.event;
		}
		if ( event.button == 1 ||  event.button == 0 ){
			var objWidth = obj.firstChild.clientWidth;
			var objHeight = obj.firstChild.clientHeight;
			reCalBodySize();

			var leftPo= event.clientX-objX;
			if ( leftPo < 0 ) {
				leftPo=0;
			}
			if ( leftPo > bodyScrollWidth-objWidth ) {
				leftPo = bodyScrollWidth-objWidth;
			}

			var topPo=event.clientY-objY;
			if ( topPo < 0 ) {
				topPo=0;
			}
			if ( topPo > bodyScrollHeight-objHeight ) {
				topPo=bodyScrollHeight-objHeight;
			}
			obj.style.left = leftPo + 'px';
			obj.style.top = topPo + 'px';
		}
	}
}

//将悬浮层的位置定位在body可见区域中央
function GetCenterXY_ForLayer(dv)
{
	var styleWidth = dv.style.width;
	if(!styleWidth) styleWidth = '200';
	var styleHeight = dv.style.height;
	styleWidth = parseInt(styleWidth.replace('px', ''));
	styleHeight = parseInt(styleHeight.replace('px', ''));
	if(!styleHeight) styleHeight = 0;
	if(styleHeight < 10) styleHeight = 310;
	var objLeft = parseInt(document.documentElement.scrollLeft + (document.documentElement.clientWidth - styleWidth) / 2) + 'px';
	//计算高度偏移值
	var heightVal = 100 - (styleHeight - 360) / 2;
	var objTop = parseInt(document.documentElement.scrollTop + heightVal) + 'px';
	//alert(styleWidth + ',' + styleHeight + ',' + heightVal + ',' + objTop + ',' + objLeft);

	dv.style.top = objTop;
	dv.style.left = objLeft;
	checkAndResetStyleTop(dv);
}

function buildGlobalDiv()
{
		reCalBodySize();
		var globalDiv = document.createElement('div');
		globalDiv.id = 'globalDiv';
		globalDiv.style.display = 'none';
		globalDiv.style.zIndex = '98';
		globalDiv = set_div_style(globalDiv, 'globalDiv', '0px', '0px', bodyScrollWidth + 'px', bodyScrollHeight + 'px', "absolute"," #333333 0px solid","default","darkgray");
		globalDiv.onselectstart = function(){return false}
		if ( 1 == is_ie ) {
			globalDiv.style.filter = 'alpha(opacity=30)';
		} else {
			globalDiv.style.opacity = 30 / 100;
		}
		document.body.appendChild(globalDiv);
}

function initDragDiv(argStr)
{
	var argArr = argStr.split(',');
	for(var i = 0; i < argArr.length; i++)
	{
		layer[i] = $(argArr[i]);
		layer[i].style.zIndex = '999';
		var styleWidth = layer[i].style.width;
		
		layer[i] = set_div_style(layer[i], argArr[i], '0px', '0px', '', '', "absolute", '', 'default', '');
		dragObj[i] = layer[i].firstChild;
		dragObj[i].style.cursor = 'move';
		dragObj[i].onmousedown = function(event){drag_mouse_down(event, this.parentNode)};
		layer[i].onselectstart = function(){return false};
		
		if ( 1 == is_ie ) {
			layer[i].firstChild.onresize=function(){checkAndResetStyleTop(this.parentNode)};
		} else {
			layer[i].firstChild.onclick=function(){checkAndResetStyleTop(this.parentNode)};
		}
	}
}

function closeDiv(name)
{
	var tO = $('cmFrmDv_frm');
	if(tO) tO.src = 'about:blank';

	$('globalDiv').style.display = 'none';
	if ( 1 == is_ie ) showElementAll();
	recoverBodyEvent();
	$(name).style.display = 'none';
}

function bodyLoad(dvStr)
{
	//创建滤镜效果层
	buildGlobalDiv();

	//初始化拖动层的相关属性
	initDragDiv(dvStr);

	bdMvEvt = document.body.onmousemove;
	bdUpEvt = document.body.onmouseup;
}