var w,h;//窗口的宽度和高度
var mw,mh;//地图的宽度和高度
var ew,eh;//显示地图的div的宽度和高度
var isMax=false;//内容是否是最大化显示（即上方菜单是否收起）
var dragObj;//正在拖动中的对象
var dragShow;//正在拖动的是地图秀
var maxArea;//拖动对象的最大拖动范围，数组
var down=false;//鼠标是否按下
var downShow=false;//是否在拖动地图秀
var moved;//鼠标是否拖动过，如果是，则链接无法激活
var roadid=0;//道路ID，如果不为0，说明有道路定位请求
var ox,oy;//鼠标按下时拖动对象的left和top坐标
var x,y;//鼠标按下时的鼠标坐标
var flagPos=[-1,-1];//道路定位小旗的坐标 初始值为[-1,-1]
var shift=false;//是否按过shift键进行切换
var rm,hm;//设置图片是否可以水平或垂直移动。rm是垂直，hm是水平
var firstWheel=true;//第一次滚动滚轮，显示提示信息
var showW,showH;//地图秀的宽度和高度,包括边线的宽度
var showL,showT;//地图秀的左上角坐标
var miniW,miniH;//小地图图片的高度和宽度
var scale;//大地图和小地图的宽度比
var ltX,ltY,rbX,rbY;//浏览器显示出来的地图在整个大图中的左上角和右下角坐标
var viewW=256,viewH=256;//预览图片高度和宽度
var loadArr=[0,0,0,0];//装载矩阵，loadArr[0]和[1]是第一个要装载的位置，loadArr[2]和[3]是右下角要装载的位置
var spaceX=0;//如果地图宽度<浏览器宽度，则spaceX=左侧空出来的空间宽度

w=window.opera?parseInt(document.documentElement.clientWidth):$(window).width();
h=window.opera?parseInt(document.documentElement.clientHeight):$(window).height();
ew=w;
eh=isMax?h:h-90;
function getEvent(){
	if(document.all)return window.event;//如果是ie
	func=getEvent.caller;
	while(func!=null){
		var arg0=func.arguments[0];
		if(arg0)return arg0;
		func=func.caller;
	}
	return null;
}
function getEventSrc(evt){
	return evt.srcElement?evt.srcElement:evt.target;
}
function init(){//鼠标按下后进行的拖动前的初始化操作
	$(document).mousedown(function(){return false;});
	var evt=getEvent();//事件触发对象 
	var mb=evt.button?evt.button:evt.which;
	if(mb==1){//按下左键
		dragObj=document.getElementById("dragHandle");
		$(document).mousemove(moveit);
		$(document).mouseup(stopdrag);
		x=evt.clientX; 
		y=evt.clientY;
		down=true;//布尔值，判断鼠标是否已按下，true为按下，false为未按下 
		ox=parseInt(dragObj.style.left);
		oy=parseInt(dragObj.style.top);
		maxArea=[$("#emap").width(),$("#emap").height()];
		moved=false;//按下鼠标是没有移动，所以moved=false
	}
	return false;
} 
function moveit(){
	var evt=getEvent();
	if(down){
		var tempX,tempY;
		moved=true;//鼠标移动，所以moved=true;
		if(hm){
			var dx=evt.clientX-x;
			if(ox+dx>0){
				tempX=0;
			}else if(ox+dx+$("#map").width()<maxArea[0]){
				tempX=maxArea[0]-$("#map").width();
			}else{
				tempX=ox+dx;
			}
			dragObj.style.left=tempX+"px";
			ltX=Math.abs(tempX);
			rbX=ltX+ew;
		}
		if(rm){
			var dy=evt.clientY-y;
			if(oy+dy>0){
				tempY=0;
			}else if(oy+dy+$("#map").height()<maxArea[1]){
				tempY=maxArea[1]-$("#map").height();
			}else{
				tempY=oy+dy;
			}
			dragObj.style.top=tempY+"px";
			ltY=Math.abs(tempY);
			rbY=ltY+eh;
		}
	}
	mapShowPos();
	return false;
} 
function stopdrag(){
	$(document).unbind("mousedown").unbind("mousemove").mousemove(function(evt){calXY(evt);});
	down=false  
	calFK();
} 
document.documentElement.style.overflow='hidden';
function calXY(evt){
	var tempX,tempY;
	tempX=evt.clientX;tempY=evt.clientY;
	if(document.getElementById("wheelTip").style.display=="block"){
		$("#wheelTip").css("left",tempX-100).css("top",tempY-35);
	}
}
function wheel(evt){
	var delta = 0;
	if (!evt) evt = window.event;
	if (evt.wheelDelta) {
	  delta = evt.wheelDelta/5; 
	  if (window.opera)delta = -delta*2;
	} else if (evt.detail) {
	  delta = -evt.detail*10;
	}
	if(delta){
		var tempX,tempY;
		var dragObj=document.getElementById("dragHandle");
		if(shift){
			if(hm){
				var dx=delta*2;
				var ox=parseInt(dragObj.style.left)
				if(ox+dx>0)tempX=0;
				else if(ox+dx+mw<maxArea[0])tempX=maxArea[0]-mw;
				else tempX=ox+dx;
				dragObj.style.left=tempX+"px";
				ltX=Math.abs(tempX);
				rbX=ltX+ew;
			}
		}else{
			if(rm){
				var dy=delta;
				var oy=parseInt(dragObj.style.top)
				if(oy+dy>0)tempY=0;
				else if(oy+dy+mh<maxArea[1])tempY=maxArea[1]-mh;
				else tempY=oy+dy;
				dragObj.style.top=tempY+"px";
				ltY=Math.abs(tempY);
				rbY=ltY+eh;
			}
		}
		mapShowPos();
		calFK();
	}
	if(firstWheel){//第一次滚动滚轮
		firstWheel=!firstWheel;
		var fwx=x?x-100:w/2;
		var fwy=y?y-35:h/2;
		$("#wheelTip").css("left",fwx).css("top",fwy).show();
		window.setTimeout(hideWheelTip,5000);
	}
	return false;
}
function hideWheelTip(){$("#wheelTip").hide();}
if (window.addEventListener)window.addEventListener('DOMMouseScroll', wheel, false);
window.onmousewheel = document.onmousewheel = wheel;
$(window).wresize(resize);
function resize(){
	w=window.opera?parseInt(document.documentElement.clientWidth):$(window).width();
	h=window.opera?parseInt(document.documentElement.clientHeight):$(window).height();
	ew=w;
	eh=isMax?h:h-90;
	maxArea=[ew,eh];
	$("#emap").height(eh);
	

	reMapPos();
	ltX=Math.abs(parseInt($("#dragHandle").css("left")));
	ltY=Math.abs(parseInt($("#dragHandle").css("top")));
	rbX=ltX+ew;
	rbY=ltY+eh;
	showW=Math.round(miniW*ew/mw);
	showH=Math.round(miniH*eh/mh);
	if(ew>mw){ltX=0;rbX=ltX+mw;showW=miniW;spaceX=parseInt($("#dragHandle").css("left"));}
	else{spaceX=0;}
	if(eh>mh){ltY=0;rbY=ltY+mh;showH=miniH;}
	$("#mapShow").css("left",ltX/scale).css("top",ltY/scale).width(showW-2).height(showH-2).fadeTo("1",0.4);
	calFK();

}
//地图定位
function mapPos(){
	if(mw<ew){
		$("#dragHandle").css("left",(ew-mw)/2);
		hm=false;
	}else{
		hm=true;
		if(flagPos[0]>-1){//有要显示的道路小旗
			if((ew/2-flagPos[0])>0)$("#dragHandle").css("left","0px");
			else if((ew/2+flagPos[0])>mw)$("#dragHandle").css("left",ew-mw);
			else $("#dragHandle").css("left",(ew/2-flagPos[0]));
		}else{//无需道路小旗定位
			var left=parseInt($("#dragHandle").css("left"));
			if(left>0)$("#dragHandle").css("left","0px");
			else if(left+mw<ew)$("#dragHandle").css("left",ew-mw);
			//else 其他情况无需处理，保持原样
		}
	}
	if(mh<eh){
		$("#dragHandle").css("top","0px");
		rm=false;
	}else{
		rm=true;
		if(flagPos[1]>-1){//有要显示的道路小旗
			if((eh/2-flagPos[1])>0)$("#dragHandle").css("top","0px");
			else if((eh/2+flagPos[1])>mh)$("#dragHandle").css("top",eh-mh);
			else $("#dragHandle").css("top",(eh/2-flagPos[1]));
		}else{//无需道路小旗定位
			var top=parseInt($("#dragHandle").css("top"));
			if(top>0)$("#dragHandle").css("top","0px");
			else if(top+mh<eh)$("#dragHandle").css("top",eh-mh);
			//else 其他情况无需处理，保持原样
		}
	}
	ltX=Math.abs(parseInt($("#dragHandle").css("left")));
	ltY=Math.abs(parseInt($("#dragHandle").css("top")));
	rbX=ltX+ew;
	rbY=ltY+eh;
	if(ew>mw){ltX=0;rbX=ltX+mw;}
	if(eh>mh){ltY=0;rbY=ltY+mh;}
	calFK();
}
//浏览器大小重设后的地图重新定位。相比最初的mapPos,少了一项道路小旗的定位
function reMapPos(){
	if(mw<ew){
		$("#dragHandle").css("left",(ew-mw)/2);
		hm=false;
	}else{
		hm=true;
		var left=parseInt($("#dragHandle").css("left"));
		if(left>0)$("#dragHandle").css("left","0px");
		else if(left+mw<ew)$("#dragHandle").css("left",ew-mw);
		//else 其他情况无需处理，保持原样
	}
	if(mh<eh){
		$("#dragHandle").css("top","0px");
		rm=false;
	}else{
		rm=true;
		var top=parseInt($("#dragHandle").css("top"));
		if(top>0)$("#dragHandle").css("top","0px");
		else if(top+mh<eh)$("#dragHandle").css("top",eh-mh);
		//else 其他情况无需处理，保持原样
	}
}
function fullScreen(){
	$("#emap").css("top",isMax?90:0);//如果当前是最大化，则top为90,否则为0
	$("#sidecolumn").css("top",isMax?90:0).height(isMax?h-90:h);
	isMax=!isMax;
	$("#max_btn").attr("src",isMax?"indexpic/ecity_min.gif":"indexpic/ecity_max.gif");
	resize();
}
function getRoadid(){
	var parameters=window.location.search;
	var pArray=parameters.split("&");
	var pLen=pArray.length;
	for(i=0;i<pLen;i++)	if(pArray[i].indexOf("roadid")>-1){roadid=pArray[i].split("=")[1];break;}//获取roadid的值
	if(isNaN(roadid)){alert("道路ID必须为数字");roadid=0;}//如果roadid不是数字，设roadid=0
}
function roadPos(){//如果存在，设置定位小旗坐标，如果不存在，定位小旗坐标保持默认的[-1,-1]
	if(roadid!=0){//roadid存在且为数字
		$("#star").attr("title","您所看的道路就在这里");
		var lenArea=$("area").length;
		exist=false;
		for(i=0;i<lenArea;i++){
			if($("area:eq("+i+")").attr("href").indexOf("id="+roadid)>-1){
				var coords=$("area:eq("+i+")").attr("coords");
				var coorArray=coords.split(",");
				flagPos[0]=parseInt(coorArray[0]);//左上角横坐标
				flagPos[1]=parseInt(coorArray[1]);//左上角纵坐标
				$("#star").css("left",flagPos[0]).css("top",flagPos[1]).show();
				exist=true;
				break;
			}
		}
		if(!exist)alert("该道路不存在！");
	}
}


//随着大图的拖动移动地图秀
function mapShowPos(){
	$("#mapShow").css("top",ltY/scale).css("left",ltX/scale);
}
//随着地图秀的拖动移动大图
function mapBigPos(){
	ltX=showL*scale;
	ltY=showT*scale;
	rbX=ltX+Math.min(mw,ew);
	rbY=ltY+eh;
	$("#dragHandle").css("top",-ltY).css("left",-ltX+spaceX);
}

//计算应该显示的大图
function calFK(){
	loadArr=[Math.floor(ltX/viewW),Math.floor(ltY/viewW),Math.min(hNum-1,Math.ceil(rbX/viewH)),Math.min(rNum-1,Math.ceil(rbY/viewH))];
	for(var j=loadArr[1];j<=loadArr[3];j++){
		for(var i=loadArr[0];i<=loadArr[2];i++){
			if($("#"+i+"-"+j).attr("src").indexOf("shuiyin.gif")>-1){
				$("#"+i+"-"+j).attr("src","maps/"+i+","+j+".jpg");
			}
		}
	}
}


//地图秀的拖动
function initShow(){//鼠标按下后进行的拖动前的初始化操作
	$(document).mousedown(function(){return false;});
	var evt=getEvent();//事件触发对象 
	var mb=evt.button?evt.button:evt.which;
	if(mb==1){//按下左键
		dragShow=document.getElementById("mapShow");
		if(document.all)dragShow.setCapture(); //设置属于当前对象的鼠标捕捉
		else {
			document.addEventListener("mousemove",moveShow,true);
			document.addEventListener("mouseup",stopShow,true);
		}
		x=evt.clientX; 
		y=evt.clientY;
		
		downShow=true;//布尔值，判断鼠标是否已按下，true为按下，false为未按下 
		ox=parseInt(dragShow.style.left);
		oy=parseInt(dragShow.style.top);
		moved=false;
	}
	return false;
} 

function moveShow(){
	if(downShow){
		var tempX,tempY;
		moved=true;//鼠标移动，所以moved=true;
		var evt=getEvent();
		
		//计算地图秀左上角横坐标
		var dx=evt.clientX-x;
		if(ox+dx<0)tempX=0;
		else if(ox+dx+showW>miniW)tempX=miniW-showW;
		else tempX=ox+dx;
		dragShow.style.left=tempX+"px";
		showL=tempX;
		
		//计算地图秀左上角纵坐标
		var dy=evt.clientY-y;
		if(oy+dy<0)tempY=0;
		else if(oy+dy+showH>miniH)tempY=miniH-showH;
		else tempY=oy+dy;
		dragShow.style.top=tempY+"px";
		
		showT=tempY;
		mapBigPos();
	}
	return false;
}

function stopShow(){
	$(document).unbind("mousedown");
	downShow=false; 
	if(document.all)dragShow.releaseCapture() //释放当前对象的鼠标捕捉 
	else{
		document.removeEventListener("mousemove",moveShow,true);
		document.removeEventListener("mouseup",stopShow,true);
	}
	calFK();
} 
function mapMiniClick(evt){
	var miniX=window.event?evt.offsetX:evt.layerX;
	var miniY=window.event?evt.offsetY:evt.layerY;
	if(miniX<showW/2)showL=0;
	else if(miniX>(miniW-showW/2))showL=miniW-showW;
	else showL=miniX-showW/2;
	if(miniY<showH/2)showT=0;
	else if(miniY>(miniH-showH/2))showT=miniH-showH;
	else showT=miniY-showH/2;
	$("#mapShow").css("left",showL).css("top",showT);
	mapBigPos();
	calFK();
}












var miniStatus=1;//记录当前的小图展示状态（0：不显示；1：显示）
var showType=1;//记录当前的小图类型
function showMap(para){
	showType=para;
	miniStatus=1;
	$("#mapMC").attr("src","indexpic/drawbackMini.gif");
	if(para==0){
		$("#mapMF").hide();
		$("#mapDiv").show();
		var w=$("#mapDiv").width();
		var h=$("#mapDiv").height();
		$("#drawUL").css("bottom",h+3);
		$("#divDraw").attr("src","indexpic/handle1.gif");
		$("#mapDraw").attr("src","indexpic/handle2.gif");
		$("#mapMC").css("bottom",h>68?(h-66)/2:(h-68)).css("left",w+3);
	}else{
		$("#mapMF").show();
		$("#mapDiv").hide();
		var w=$("#mapMF").width();
		var h=$("#mapMF").height();
		$("#drawUL").css("bottom",h+3);
		$("#divDraw").attr("src","indexpic/handle2.gif");
		$("#mapDraw").attr("src","indexpic/handle1.gif");
		$("#mapMC").css("bottom",h>68?(h-66)/2:(h-68)).css("left",w+3);
	}
}