	var geomap = new Object();
		geomap.eyex = 121.32582345762216;
		geomap.eyey = 23.320482198382848;
		geomap.eyeid = 0;
		geomap.pointx = 121.32582345762228;
		geomap.pointy = 23.606374432900438;
		geomap.pointid = 0;
	var gearth = new Object();
		gearth.x = 121.44559;
		gearth.y = 23.3658;
		gearth.z = 0;
		gearth.head = 10;
		gearth.range = 120000;
		gearth.tilt = 40;


	var mymap;
	function fucing(PLID,x,y){			
		if(geomap.pointid == PLID){
			var st =  new Object();		
			st.x = geomap.pointx;
			st.y = geomap.pointy;
			geomap.pointx = x;
			geomap.pointy = y;
			geomap.eyex += geomap.pointx - st.x;	
			geomap.eyey += geomap.pointy - st.y;	
		}
        else{
			geomap.eyex = x;
			geomap.eyey = y;
		}
		assPL();
		assAP();
		map2earth();
	}
	function assPL(){
		p1 = new GWPolyLine(new GWPoint(geomap.pointx,geomap.pointy),8,"rgba(200,0,0,0.6)",0);	
		p1.AddPoint(new GWPoint(geomap.eyex, geomap.eyey));								
		mymap.RemovePolyLine(0);	
		mymap.AddPolyLine(p1);		
		mymap.ReflashPolyLine();	
	}
	function assAP(){
		mymap.RemoveAllPlacard();	
		var mgmap1 = new GWMapIcon('http://www.geo.com.tw/scene/images/red_point.PNG',15,15,8,9);	
		var mgmap2 = new GWMapIcon('http://www.geo.com.tw/scene/images/eye.png',31,18,15,9);
		geomap.pointid = mymap.AddPlacard(1,mgmap1,mgmap1,1,geomap.pointx, geomap.pointy,'test1','','a1');	
		geomap.eyeid = mymap.AddPlacard(1,mgmap2,mgmap2,1,geomap.eyex, geomap.eyey,'test2','','a2');
		mymap.SetPlacardDragDrog(true);		
		mymap.ReflashPlacard();			
	}

	
	var ge;
	var tood;
	var google
	function initCB(instance){
		ge = instance;
		ge.getWindow().setVisibility(true);

		ge.getNavigationControl().setVisibility(ge.VISIBILITY_AUTO);

		ge.getLayerRoot().enableLayerById(ge.LAYER_TERRAIN,false);

		go(gearth.y,gearth.x,gearth.z,gearth.range,gearth.tilt,gearth.head);   
		google.earth.addEventListener(ge.getGlobe(), 'click', earth2map);
		google.earth.addEventListener(ge.getWindow(), 'click', earth2map);
		
		
		//add the kmz
		surface = loadKmz('http://www.geo.com.tw/scene/KMZ/surface.kmz');
		surface.setVisibility(true);
		floor = loadKmz('http://www.geo.com.tw/scene/KMZ/floor.kmz');
		floor.setVisibility(true);
		wall = loadKmz('http://www.geo.com.tw/scene/KMZ/wall.kmz');
		wall.setVisibility(true)  
		human = loadKmz('http://www.geo.com.tw/scene/KMZ/human.kmz');
		human.setVisibility(true);
		
		//Human  KMZ
		Human = loadKmz('http://www.geo.com.tw/scene/KMZ/human.kmz');
		Human.setVisibility(true);		
		
		//ICON  KMZ
		ICON_1 = loadKmz('http://www.geo.com.tw/scene/KMZ/ICON/ICON/I-CEO.kmz');
		ICON_1.setVisibility(false);
		ICON_2 = loadKmz('http://www.geo.com.tw/scene/KMZ/ICON/ICON/I-IMD.kmz');
		ICON_2.setVisibility(false);
		ICON_3 = loadKmz('http://www.geo.com.tw/scene/KMZ/ICON/ICON/I-MD.kmz');
		ICON_3.setVisibility(false);
		ICON_4 = loadKmz('http://www.geo.com.tw/scene/KMZ/ICON/ICON/I-PED.kmz');
		ICON_4.setVisibility(false);
		ICON_5 = loadKmz('http://www.geo.com.tw/scene/KMZ/ICON/ICON/I-GSD.kmz');
		ICON_5.setVisibility(false);
		ICON_6 = loadKmz('http://www.geo.com.tw/scene/KMZ/ICON/ICON/I-lobby.kmz');
		ICON_6.setVisibility(false);
		ICON_7 = loadKmz('http://www.geo.com.tw/scene/KMZ/ICON/ICON/I-meeting.kmz');
		ICON_7.setVisibility(false);
		ICON_8 = loadKmz('http://www.geo.com.tw/scene/KMZ/ICON/ICON/I-discuss.kmz');
		ICON_8.setVisibility(false);
		ICON_9 = loadKmz('http://www.geo.com.tw/scene/KMZ/ICON/ICON/I-affairs.kmz');
		ICON_9.setVisibility(false);
		
		//PHOTO KMZ¼Ò«¬ 
		PHOTO_1 = loadKmz('http://www.geo.com.tw/scene/KMZ/ICON/PHOTO/P-CEO.kmz');
		PHOTO_1.setVisibility(false);
		PHOTO_2 = loadKmz('http://www.geo.com.tw/scene/KMZ/ICON/PHOTO/P-IMD.kmz');
		PHOTO_2.setVisibility(false);
		PHOTO_3 = loadKmz('http://www.geo.com.tw/scene/KMZ/ICON/PHOTO/P-MD.kmz');
		PHOTO_3.setVisibility(false);
		PHOTO_4 = loadKmz('http://www.geo.com.tw/scene/KMZ/ICON/PHOTO/P-PED.kmz');
		PHOTO_4.setVisibility(false);
		PHOTO_5 = loadKmz('http://www.geo.com.tw/scene/KMZ/ICON/PHOTO/P-GSD.kmz');
		PHOTO_5.setVisibility(false);
		PHOTO_6 = loadKmz('http://www.geo.com.tw/scene/KMZ/ICON/PHOTO/P-lobby.kmz');
		PHOTO_6.setVisibility(false);
		PHOTO_7 = loadKmz('http://www.geo.com.tw/scene/KMZ/ICON/PHOTO/P-meeting.kmz');
		PHOTO_7.setVisibility(false);
		PHOTO_8 = loadKmz('http://www.geo.com.tw/scene/KMZ/ICON/PHOTO/P-discuss.kmz');
		PHOTO_8.setVisibility(false);
		PHOTO_9 = loadKmz('http://www.geo.com.tw/scene/KMZ/ICON/PHOTO/P-affairs.kmz');
		PHOTO_9.setVisibility(false);
				
		//PED KMZ¼Ò«¬ 
		PED_1 = loadKmz('http://www.geo.com.tw/scene/KMZ/PED/monitor.kmz');
		PED_1.setVisibility(true);
		PED_2 = loadKmz('http://www.geo.com.tw/scene/KMZ/PED/movechair.kmz');
		PED_2.setVisibility(true);
		PED_3 = loadKmz('http://www.geo.com.tw/scene/KMZ/PED/desk.kmz');
		PED_3.setVisibility(true);
		PED_4 = loadKmz('http://www.geo.com.tw/scene/KMZ/PED/layercabinet.kmz');
		PED_4.setVisibility(true);
		PED_5 = loadKmz('http://www.geo.com.tw/scene/KMZ/PED/cabinet.kmz');
		PED_5.setVisibility(true);
		PED_6 = loadKmz('http://www.geo.com.tw/scene/KMZ/PED/GW_goal.kmz');
		PED_6.setVisibility(true);
		PED_7 = loadKmz('http://www.geo.com.tw/scene/KMZ/PED/GT_goal.kmz');
		PED_7.setVisibility(true);

		
		//GSD KMZ¼Ò«¬
		GSD_1 = loadKmz('http://www.geo.com.tw/scene/KMZ/GSD/monitor.kmz');
		GSD_1.setVisibility(true);
		GSD_2 = loadKmz('http://www.geo.com.tw/scene/KMZ/GSD/movechair.kmz');
		GSD_2.setVisibility(true); 
		GSD_3 = loadKmz('http://www.geo.com.tw/scene/KMZ/GSD/desk.kmz');
		GSD_3.setVisibility(true)
		GSD_4 = loadKmz('http://www.geo.com.tw/scene/KMZ/GSD/layercabinet.kmz');
		GSD_4.setVisibility(true)
		GSD_5 = loadKmz('http://www.geo.com.tw/scene/KMZ/GSD/standboard1.kmz');
		GSD_5.setVisibility(true)
		GSD_6 = loadKmz('http://www.geo.com.tw/scene/KMZ/GSD/standboard2.kmz');
		GSD_6.setVisibility(true)
		GSD_7 = loadKmz('http://www.geo.com.tw/scene/KMZ/GSD/standboard3.kmz');
		GSD_7.setVisibility(true)
		GSD_8 = loadKmz('http://www.geo.com.tw/scene/KMZ/GSD/standboard4.kmz');
		GSD_8.setVisibility(true)
		GSD_9 = loadKmz('http://www.geo.com.tw/scene/KMZ/GSD/IMD&GSD_goal.kmz');
		GSD_9.setVisibility(true)

		//IMD KMZ¼Ò«¬
		IMD_1 = loadKmz('http://www.geo.com.tw/scene/KMZ/IMD/monitor.kmz');
		IMD_1.setVisibility(true);
		IMD_2 = loadKmz('http://www.geo.com.tw/scene/KMZ/IMD/movechair.kmz');
		IMD_2.setVisibility(true); 
		IMD_3 = loadKmz('http://www.geo.com.tw/scene/KMZ/IMD/desk.kmz');
		IMD_3.setVisibility(true)
		IMD_4 = loadKmz('http://www.geo.com.tw/scene/KMZ/IMD/layercabinet.kmz');
		IMD_4.setVisibility(true)
		IMD_5 = loadKmz('http://www.geo.com.tw/scene/KMZ/IMD/IMD&GSD_goal.kmz');
		IMD_5.setVisibility(true)
		IMD_6 = loadKmz('http://www.geo.com.tw/scene/KMZ/IMD/IMD_plan.kmz');
		IMD_6.setVisibility(true)

		//MD KMZ¼Ò«¬
		MD_1 = loadKmz('http://www.geo.com.tw/scene/KMZ/MD/monitor.kmz');
		MD_1.setVisibility(true);
		MD_2 = loadKmz('http://www.geo.com.tw/scene/KMZ/MD/movechair.kmz');
		MD_2.setVisibility(true); 
		MD_3 = loadKmz('http://www.geo.com.tw/scene/KMZ/MD/desk.kmz');
		MD_3.setVisibility(true)
		MD_4 = loadKmz('http://www.geo.com.tw/scene/KMZ/MD/layercabinet.kmz');
		MD_4.setVisibility(true)
		MD_5 = loadKmz('http://www.geo.com.tw/scene/KMZ/MD/cabinet.kmz');
		MD_5.setVisibility(true)
		MD_6 = loadKmz('http://www.geo.com.tw/scene/KMZ/MD/MD_goal.kmz');
		MD_6.setVisibility(true)

		//CEO KMZ¼Ò«¬
		CEO_1 = loadKmz('http://www.geo.com.tw/scene/KMZ/CEO/monitor.kmz');
		CEO_1.setVisibility(true);
		CEO_2 = loadKmz('http://www.geo.com.tw/scene/KMZ/CEO/movechair.kmz');
		CEO_2.setVisibility(true); 
		CEO_3 = loadKmz('http://www.geo.com.tw/scene/KMZ/CEO/desk.kmz');
		CEO_3.setVisibility(true)
		CEO_4 = loadKmz('http://www.geo.com.tw/scene/KMZ/CEO/layercabinet.kmz');
		CEO_4.setVisibility(true)
		CEO_5 = loadKmz('http://www.geo.com.tw/scene/KMZ/CEO/cabinet.kmz');
		CEO_5.setVisibility(true); 
		CEO_6 = loadKmz('http://www.geo.com.tw/scene/KMZ/CEO/sofa1.kmz');
		CEO_6.setVisibility(true)
		CEO_7 = loadKmz('http://www.geo.com.tw/scene/KMZ/CEO/sofa2.kmz');
		CEO_7.setVisibility(true)
		CEO_8 = loadKmz('http://www.geo.com.tw/scene/KMZ/CEO/smalltable.kmz');
		CEO_8.setVisibility(true)

  
		//OTHER KMZ¼Ò«¬
		OTHER_1 = loadKmz('http://www.geo.com.tw/scene/KMZ/OTHER/lobby-layercurtain.kmz');
		OTHER_1.setVisibility(true);
		OTHER_2 = loadKmz('http://www.geo.com.tw/scene/KMZ/OTHER/lobby-smalltable.kmz');
		OTHER_2.setVisibility(true); 
		OTHER_3 = loadKmz('http://www.geo.com.tw/scene/KMZ/OTHER/lobby- curtain.kmz');
		OTHER_3.setVisibility(true)
		OTHER_4 = loadKmz('http://www.geo.com.tw/scene/KMZ/OTHER/lobby-monitor.kmz');
		OTHER_4.setVisibility(true)
		OTHER_5 = loadKmz('http://www.geo.com.tw/scene/KMZ/OTHER/lobby-chair.kmz');
		OTHER_5.setVisibility(true); 
		OTHER_6 = loadKmz('http://www.geo.com.tw/scene/KMZ/OTHER/lobby-movechair.kmz');
		OTHER_6.setVisibility(true)
		OTHER_7 = loadKmz('http://www.geo.com.tw/scene/KMZ/OTHER/lobby-desk.kmz');
		OTHER_7.setVisibility(true)
		OTHER_8 = loadKmz('http://www.geo.com.tw/scene/KMZ/OTHER/affairs-LCD.kmz');
		OTHER_8.setVisibility(true)
		OTHER_9 = loadKmz('http://www.geo.com.tw/scene/KMZ/OTHER/affairs-desk.kmz');
		OTHER_9.setVisibility(true); 
		OTHER_10 = loadKmz('http://www.geo.com.tw/scene/KMZ/OTHER/affairs-chair.kmz');
		OTHER_10.setVisibility(true)
		OTHER_11= loadKmz('http://www.geo.com.tw/scene/KMZ/OTHER/discuss2-desk.kmz');
		OTHER_11.setVisibility(true)
		OTHER_12 = loadKmz('http://www.geo.com.tw/scene/KMZ/OTHER/discuss2-chair.kmz');
		OTHER_12.setVisibility(true); 
		OTHER_13 = loadKmz('http://www.geo.com.tw/scene/KMZ/OTHER/discuss1-desk.kmz');
		OTHER_13.setVisibility(true)
		OTHER_14 = loadKmz('http://www.geo.com.tw/scene/KMZ/OTHER/discuss1-chair.kmz');
		OTHER_14.setVisibility(true)
	}
	

	function loadKmz(kmzFile){
		var networkLink = ge.createNetworkLink("");
		networkLink.setName("Opened KMZ File");
		var link = ge.createLink("");
		link.setHref(kmzFile);
		networkLink.setLink(link);
		ge.getFeatures().appendChild(networkLink);
		return networkLink;
	}


	function failureCB(){
		alert('Google earth loading failed!');
	}


	function go(lat,lon,alt,range,tilt,heading){
		var la = ge.createLookAt('');	//set(y ½n«×,x ¸g«×,z ®ü©Þ,®ü©Þ¼Ò¦¡³]©w,¤ô¥­µø¨¤(0~360«×),ÃèÀYµø¨¤(0~90«×),¥iµø½d³ò(0~max))
		la.set(lat, lon, alt, ge.ALTITUDE_RELATIVE_TO_GROUND, heading,tilt,range);
		ge.getView().setAbstractView(la);
	}


	function ADD(ths){
		if(ths.checked == true)
			switch(ths.value){
				//ICON
				case "ICON_1":
					go(23.869264,121.461489,6000,15000, 60, 320);
					break;
				case "ICON_2":
					go(23.860073,121.235422,6000,18000, 60, 37); 
					break;
				case "ICON_3":
					go(23.878005,121.708091,6000,18000, 60, 121); 
					break;
				case "ICON_4":
					go(23.245044,121.682037,6000,18000, 50,139); 
					break;
				case "ICON_5":
					go(23.238784,121.463359,6000,18000, 50,189); 
					break;
				case "ICON_6":
					go(23.700659,121.034539,6000,15000, 60, 328); 
					break;
				case "ICON_7":
					go(23.882624,120.994441,6000,15000, 50, 336.17); 
					break;
				case "ICON_8":
					go(23.560083,121.658638,10000,17000, 50,319); 
					break;
				case "ICON_9":
					go(23.570023,121.475641,6000,18000, 65,212); 
					break;
				//PHOTO
				case "PHOTO_1":
					go(23.792439039,121.514936037,11000,5000,50,340);
					break;
				case "PHOTO_2":
					go(23.682224893,121.381731202,9000,7000,55.61,323.59); 
					break;
				case "PHOTO_3":
					go(23.765936719,121.550556386,12000,4500,35,50.09); 
					break;
				case "PHOTO_4":
					go(23.445626675,121.550560576,12000,10000,30,154.18); 
					break;
				case "PHOTO_5":
					go(23.439314074,121.511632109,12000,8000,50.87,205.29); 
					break;
				case "PHOTO_6":
					go(23.524413776,121.072498605,11000,5000,40,348.85); 
					break;
				case "PHOTO_7":
					go(23.777059555,121.051155190,10000,4500,40,329.67); 
					break;
				case "PHOTO_8":
					go(23.477064892,121.740387176,12000,4000,40,319.82); 
					break;
				case "PHOTO_9":
					go(23.731669725,121.605483824,13000,4500,50,216.53); 
					break;
			} 
		eval(ths.value +".setVisibility(ths.checked);");
	}

	var Coordinates = new Object();
		Coordinates.x2d = 121.00031319809642;	
		Coordinates.y2d = 23.99934241068304;
		Coordinates.x3d = 120.93301540379744;	
		Coordinates.y3d = 23.99432156837543;
		Coordinates.scale = 0.9761523523753317;	
		Coordinates.range = 250000;				
	function map2earth(){
		var length = Math.sqrt( Math.pow(geomap.eyex - geomap.pointx,2) + Math.pow(geomap.eyey - geomap.pointy,2) );
		var angle = Math.acos( (geomap.eyex - geomap.pointx) / length ) * (180/Math.PI) - 90;
		if(geomap.pointy - geomap.eyey > 0)	//½Õ¾ã2d¨¤«×¼Æ¾Ú,«K©ó²Å¦Xgoogle earthªº²Ä¤T,¥|¶H­­¨¤«×
			angle = 180 - angle;


		if(angle>0)
			gearth.head = 180 - angle; 
		if(angle<0)
			gearth.head = -180 - angle; 

		gearth.range = length * Coordinates.range;
		gearth.x = -(Coordinates.x2d - geomap.pointx)/Coordinates.scale + Coordinates.x3d;	
		gearth.y = -(Coordinates.y2d - geomap.pointy)/Coordinates.scale + Coordinates.y3d;
		go(gearth.y,gearth.x,gearth.z,gearth.range,gearth.tilt,gearth.head);
	}

	function earth2map(){
		tood = ge.getView().copyAsLookAt(ge.ALTITUDE_RELATIVE_TO_GROUND);
		gearth.x = tood.getLongitude();			
		gearth.y = tood.getLatitude();
		gearth.head = tood.getHeading();
		gearth.range = tood.getRange();

		var hypotenuse = gearth.range/250000 , adjacent = gearth.head+90 , opposite;//hypotenuse_±×Ãä,adjacent_©³³¡(x),opposite_¹ïÃä(y)
		if(gearth.head < 0)
			adjacent += 360;
		adjacent = Math.abs(Math.cos((adjacent) / (180/Math.PI)) * hypotenuse);
		opposite = Math.abs(Math.sqrt( Math.pow(hypotenuse,2) - Math.pow(adjacent,2) ));

		if(gearth.head > 0)						
			adjacent = -adjacent;

		if(Math.abs(gearth.head) < 90)			
			opposite = -opposite;
		geomap.pointx = -(Coordinates.x3d - gearth.x)*Coordinates.scale + Coordinates.x2d;	
		geomap.pointy = -(Coordinates.y3d - gearth.y)*Coordinates.scale + Coordinates.y2d;
		geomap.eyex = adjacent + geomap.pointx;	
		geomap.eyey = opposite + geomap.pointy;
		assPL();
		assAP();
	}