var setIntervalPanorameRotate = null;
window.onload = function(){
	setInterval(window.panoCmd.movePanEvent, 200);
	panoCmd.init(document.getElementById('krpanoSWFObject'));
}

function panoControl(cmd, auto){
	window.panoCmd.control(cmd, auto);
}
var g_data_gps_x=null;
var g_data_gps_y=null;

function onloadPanorama222(gps_x, gps_y){
	g_data_gps_x = gps_x;
	g_data_gps_y = gps_y;
	setTimeout(onloadPanorama1, 500);
}
function onloadPanorama3(gps_x, gps_y, gps_dir, panoIndex){
	//window.parent.GLog.write("panoIndex=" + panoIndex + " lat=" + gps_x + " lng=" + gps_y);
	try{
		window.panoCmd.init(document.getElementById('krpanoSWFObject'));
	}catch(e){}
	try{
		if(setIntervalPanoramaRotate != null){
			clearInterval(setIntervalPanoramaRotate);
		}
		setIntervalPanoramaRotate = setInterval(window.panoCmd.movePanEvent, 200);
	}catch(e){}

	//GLogWriter("222 panoIndex=" + panoIndex + " x=" + gps_x + " y=" + gps_y + " dir=" + gps_dir);
	window.panoCmd.currentImageName = window.parseInt(panoIndex);
	window.panoCmd.move(gps_x, gps_y, gps_dir);
	window.panoCmd.log(panoIndex, gps_x, gps_y);
}
function onloadAutoStarting(){
	window.panoCmd.krpanoAutoStart();
}
function onloadPanorama1(){
	onloadPanorama2(g_data_gps_x, g_data_gps_y);
}
function onloadPanorama(gps_x, gps_y, key){
	/**
	 * function myidPanoExecute()
	 * function myidPanoGet()
	 * function myidPanoSet()
	 * whats value
	 */
	window.parent.status=key + " x=" + gps_x + " y=" + gps_y;
	window.panoCmd.currentImageName = window.parseInt(key);
	window.panoCmd.move(gps_x, gps_y);
	window.panoCmd.log(key, gps_x, gps_y);
}

function checkPan(){
	//alert(pano.myidPanoGet('pano.pan'));
	addWrite("pano.myidPanoGet('pano.pan') == " + pano.myidPanoGet('pano.pan'));
}

function checkExec(){
	pano.myidPanoSet('pano.pan', 120);
}

function checkExec180(){
	var panoPan = pano.myidPanoGet("pano.pan");
	if(parseInt(panoPan)<0){
		panoPan += 180;
	}else{
		panoPan += 180;
	}
	pano.myidPanoExecute('pano.pan=' + panoPan + ",500,smooth");
	//pano.myidPanoExecute("pano.fullscreen1(-);");
}
function autoStartContinue(){
	pano.myidPanoExecute('autoStartObject.autoStart00()');
}
function panTo(){
	pano.myidPanoSet('pano.pan', 30 + pano.myidPanoGet('pano.pan'));
}

var panoCmd = {
	pixmap : null
	, pano : null
	, auto : false
	, __fullscreen : 0
	, __fullscreenImageName : 0
	, __effect : "FADE"
	, __effectTime : "300"
	, currentImageName : 0
	, dir : 0

	, log : function(key, lat, lng){
//		GLogWriter("key=" + key + " lat=" + lat + " lng=" + lng, "blue");
	}
	, setParentObjectMap : function(){
		this.pixmap = window.parent.pixmap;
	}
	, movePanEvent : function(){
		try {
			panoCmd.movePan();
		} catch(e){}
	}
	, movePan : function(){
		if(this.pixmap == null) return;
		if(this.pano == null) return;
		var newNumber = document.getElementById("krpanoSWFObject").get('view.hlookat');
		if(!this.isValidCheckPano(newNumber)) return;
		this.pixmap.setDegree(newNumber);
	}
	, oldMsg : null
	, logWriting : function(){
		var newNumber = this.pano.myidPanoGet('pano.pan');
		var msg = "panoIndex="+this.currentImageName+"   pan="+newNumber+"   tilt="+this.pano.myidPanoGet('pano.tilt')+"   zoom="+this.pano.myidPanoGet('pano.zoom');
		if(this.oldMsg != msg){
			this.oldMsg = msg;
		}
	}
	, move : function( gps_x, gps_y, gps_dir ){
		try{
			this.pixmap.movePointerIcon(gps_x, gps_y, gps_dir);
			if(isFinite(gps_dir)){
				this.dir = parseFloat(gps_dir);
				if(isNaN(this.dir)){
					this.dir = 0;
				}
			}
		}catch(e){}
		var newNumber = document.getElementById('krpanoSWFObject').get('view.hlookat');
		this.pixmap.setDegree(newNumber);
	}
	, isValidCheckPano : function(newNumber){
		if(this.oldNumber == newNumber) return false;
		this.oldNumber = newNumber;
		return true;
	}
	, init : function(pano){
		this.pano = pano;
		this.setParentObjectMap();
	}
	, zoomDefaultValue : 0.3
	, zoomIn : function(){
		this.zoom(this.zoomDefaultValue);
	}
	, zoomOut : function(){
		this.zoom(-this.zoomDefaultValue);
	}
	, zoom : function(zoomValue){
		var z = this.pano.myidPanoGet('pano.zoom');
		this.pano.myidPanoSet('pano.zoom', z+zoomValue);
	}
	, control : function(cmd, auto){
		if(auto == true)
			this.auto = true;
		this.pano.myidPanoExecute(cmd);
	}
	, autoStart : function(){
		if(this.auto){
			this.pano.myidPanoExecute("autoStartObject.autoStartMethod");
		}
	}
	, krpanoAutoStart : function(){
		//alert("autoStarting");
		var obj = window.document.getElementById('krpanoSWFObject');
		if(obj != null){
			var status = obj.get('plugin[bt_autoStop].visible');
			if(status == "true"){
				obj.call('action(autoStart);');
			}
		}
	}
	, nextPano : function(imageIndex){
		if(this.auto){
			this.__next(imageIndex, this.auto);
		}
	}
	, panoStartIndexLimit : 1
	, panoEndIndexLimit : 10458
	, panoNext : function(){
		if( this.currentImageName < this.panoEndIndexLimit ) {
			this.__next(this.currentImageName+1);
		}else{
			alert("´õ ÀÌ»ó ÀÌµ¿ÇÒ ÆÄ³ë¶ó¸¶ ÀÌ¹ÌÁö°¡ ¾ø½À´Ï´Ù.");
		}
	}
	, panoPrev : function(){
		if( this.currentImageName > this.panoStartIndexLimit ) {
			this.__next(this.currentImageName-1);
		}else{
			alert("´õ ÀÌ»ó ÀÌµ¿ÇÒ ÆÄ³ë¶ó¸¶ ÀÌ¹ÌÁö°¡ ¾ø½À´Ï´Ù.");
		}
	}
	, auto360 : function(timer, nextName){
		pan = this.get("pano.pan");
		var cmd = "pano.pan=" + (pan+360) + "," + timer + ",smooth,-;";
		this.exec(cmd);
	}
	, autoPanClear360 : function(pan){
		var val = window.parseFloat(pan);
		while(Math.abs(val)>360){
			val -= 360;
		}
		return val;
	}
	, autoPan : function(pan, tilt, zoom, timer, nextName){
		var oldPan = window.parseFloat(this.get("pano.pan"));
		var newPan = window.parseFloat(pan);
		var oldPan1 = this.autoPanClear360(oldPan);
		var newPan1 = this.autoPanClear360(newPan);
		var cmd = null;
		if(oldPan<0){oldPan1 = 360+oldPan1;}else{oldPan1=oldPan1;}
		if(newPan<0){newPan1 = 360+newPan1;}else{newPan1=newPan1;}
		var diff = newPan1-oldPan1; // diff1
//		GLogWriter("newPan="+newPan+"\noldPan="+oldPan);
//		GLogWriter("newPan1="+newPan1+"\noldPan1="+oldPan1);
//		GLogWriter("substract diff=" + diff);
		if( diff > 0 ){
			diff = ( 360-diff);
		}else{
			diff = (-360-diff);
		}
		diff = -1*diff;
//		GLogWriter("+- diff="+diff);
		if(diff>180){
			diff = -360 + diff ;
		}else if(diff < -180){
			diff =  360 + diff ;
		}
		var newPan = window.parseInt(Math.abs(diff));
		if(newPan < 5 ){
			cmd = "global.timer=0;";
			this.exec(cmd);
//			GLogWriter(cmd);
			cmd = "autoStartObject."+nextName+"()";
			this.exec(cmd);
//			GLogWriter(cmd);
		}else{
			diff += oldPan;
//			GLogWriter("newTimer="+newTimer + "   diff="+diff);
//			GLogWriter("newPan="+diff+"\n\nmovePan="+diff);

			cmd = "pano.pan=" + diff + "," + timer + ",-,-;";
//			GLogWriter(cmd);
			this.exec(cmd);
			cmd = "pano.tilt=" + tilt + "," + timer + ",-,-;";
//			GLogWriter(cmd);
			this.exec(cmd);
			cmd = "pano.zoom=" + zoom + "," + timer + ",-,-;";
//			GLogWriter(cmd);
			this.exec(cmd);
		}
	}
	, autoPanNext : function(){
		this.exec("autoStartObject."+this.nextPanoName);
	}
	,autoButtonStop : function(){
		try{
			this.auto = false;
			window.parent.pixmap.autoButtonStop();
			panoControl("external.hotspotsound.stop=0");
		}catch(e){
		};
	}
	,autoUserAlert : function(msg){
		window.alert(msg);
	}
	, get : function(cmd){
		return this.pano.myidPanoGet(cmd);
	}
	, exec : function(cmd){
		this.pano.myidPanoExecute(cmd);
	}
	, set : function(cmd){
		this.pano.myidPanoSet(cmd);
	}
	, __next : function(imageIndex, auto){
		if(this.__fullscreen == 1){
			this.__fullscreenImageName = imageIndex;
		}
		this.pano.myidPanoExecute("loadPano(xml_file=pano_img.php?in="+imageIndex+"?fs="+this.__fullscreen+","+this.__effectTime+","+this.__effect+");");
	}
	, enterFullScreen : function(imageName) {
		this.__fullscreen = 1;
		if(this.__fullscreenImageName != imageName){
			this.__fullscreenImageName = imageName;
			this.exec("loadPano(?xml_file=pano_img.php?in="+imageName+"?fs=1,0,none);");
		}
		this.autoButtonStop();
	}
	, exitFullScreen : function(){
		this.__fullscreen = 0;
	}
	, moveNext : function(imageIndex){
		this.__next(imageIndex, this.auto);
	}
};

function GLogWriter(message, color){
//	window.parent.GLog.write(message, color);
}


