
var plugin
var main

var photos_directory="./photos/"
var num_imgs=42
var loader_bar=200
var stage_wid=800
var friction=0.93
var init_opacity=0.95
var img_wid=200
var scroll_amount=10
var time_to_move=500     //in ms


var cur_img=0
var num_images_loaded=0
var prev_wid=0
var _root_xmouse=0
var _root_ymouse=0
var scaleUpInt=0
var mouseCheckInt=0
var cur_imgHolderX=0
var img_scaling=false


var point1X
var point1Y
var point2X
var point2Y
var start_time
var main_mouse_down
var p3X
var p3Y
var start_scale_time


imgDimsArr=new Array()
imgOrigPosArr=new Array()


var curSelectedImg=new Object()
curSelectedImg.name=null
curSelectedImg.oxpos=null
curSelectedImg.oypos=null


var objsArr=new Array()
var imgIntArr=new Array()



function onLoaded(s) {

	main=s.findName("mainGuy")
	plugin = s.getHost()

   
	s.findName("imgHolder")["Opacity"]=0
	s.findName("instructions")["Opacity"]=0
	
	
	var progressBar = s.findName("progressBar");
	progressBar.width= 0 
	
	
	makeImages(s)
	
    var downloader = plugin.createObject("downloader");
    downloader.addEventListener("DownloadProgressChanged", onDownloadProgressChanged);
    downloader.addEventListener("Completed", downloadCompleted);
	downloader.open("GET", photos_directory+"photos.zip");
    downloader.send();
    
}


function makeImages(s) {

	for(i=0;i<num_imgs;i++) {
	
		left_spot=i*100		
		tn_size=120
		
		img_str ='<Image Name="img_'+i+'" Canvas.ZIndex="'+i+'" Loaded="imgLoaded" Cursor="Hand" MouseEnter="imgEnter" MouseLeave="imgLeave" MouseLeftButtonDown="imgDown" MouseLeftButtonUp="imgUp" MouseMove="imgMove" Height="120" Canvas.Top="1" Canvas.Left="'+(left_spot)+'"><Image.RenderTransform><ScaleTransform Name="img_'+i+'_ScaleTransform" /></Image.RenderTransform></Image>'	
		
		img = plugin.content.createFromXaml(img_str)
		imgHolderRef=s.findName("imgHolder")
		imgHolderRef.children.add(img)		
	}
}


function onDownloadProgressChanged(s, e) {
		
    var progressBar = s.findName("progressBar");
    progressBar.width= s.downloadProgress * loader_bar
}


function downloadCompleted(s, e) {
    
    for(i=0;i<num_imgs;i++) {
	    imgRef=s.findName("img_"+i)
	    imgRef.setSource(s, (i+1)+".jpg");    	
    }
    //it would be nice to be able to call rePositionImages() right here but the necessary info (width and height) is not known at this point
}


function imgLoaded(s) {

	var tempName
	tempName=""+s.name
	//s.opacity=0
	
	objsArr[s.name]=new Object()
	objsArr[s.name].z=s["Canvas.ZIndex"]
	
	objsArr[s.name].myInt=setInterval("checkImgDims('"+tempName+"')",10)
	//imgIntArr["int"+s.name]=setInterval("checkImgDims('"+tempName+"')",10)	
}


function checkImgDims(nstr) {

	imgRef=main.findName(nstr)
	
	if(imgRef.width>0 && imgRef.height>0) {
			
		clearInterval(objsArr[nstr].myInt)
		objsArr[nstr].orig_width=imgRef.width
		objsArr[nstr].orig_height=imgRef.height		
		
		num_images_loaded++
		
		//clearInterval(imgIntArr["int"+nstr])    
    	//imgRef.opacity=1
    	
		if(num_images_loaded==num_imgs) {
			rePositionImages()
		}		
	}
}


function rePositionImages() {
	
	prev_wid=0
	for(i=0;i<num_imgs;i++) {
		
		var imgRef=main.findName("img_"+i)
		imgRef["Canvas.Left"]=prev_wid

		
		//objsArr["img_"+i].spotX=prev_wid //???wtf
		imgOrigPosArr["img_"+i+"_xpos"]=prev_wid	
		
	    prev_wid+=imgRef.width
	    
	    imgRef.opacity=init_opacity
	
	}	
	
	imgHolderRef=main.findName("imgHolder")
	imgHolderRef.opacity=1
	imgHolderRef.width=prev_wid+10


	main.findName("instructions")["Opacity"]=1
	main.findName("dotsHolder")["Opacity"]=1
	main.findName("downloadPanel")["Opacity"]=0
	
	setInterval("imgHolderTracker(main)",10)	
}














function mainDown(s,e) {
	//alert("mainDown")

	
	var pt = e.getPosition(null);
	if(pt.Y>225) {
	
		clearInterval(scaleUpInt)	
		
		//alert(e.Y)	
		point1X=pt.X
		point1Y=pt.Y
		this.start_time=new Date().getTime()
		
		imgHolderRef=s.findName("imgHolder")
		main_mouse_down=true
		cur_imgHolderX=imgHolderRef["Canvas.Left"]
		s.captureMouse()
				
		if(curSelectedImg.name!=null) {
			
			
			s.findName(curSelectedImg.name)["Canvas.ZIndex"]=objsArr[curSelectedImg.name].z
			s.findName(curSelectedImg.name)["Canvas.Left"]=imgOrigPosArr[curSelectedImg.name+"_xpos"]
			s.findName(curSelectedImg.name)["Canvas.Top"]=1	
			s.findName(curSelectedImg.name).opacity=init_opacity
			s.findName(curSelectedImg.name+"_ScaleTransform").ScaleY=1
			s.findName(curSelectedImg.name+"_ScaleTransform").ScaleX=1			
			
			
		}			
	}	
}



function imgEnter(s,e) {
	if(s["Canvas.Top"]==1) {
		s.opacity=1
	}
}

function imgLeave(s,e) {
	if(s["Canvas.Top"]==1) {
		s.opacity=init_opacity
	}
}





function mainUp(s,e) {
	//alert("mainUP")
	

	var pt = e.getPosition(null);
	if(pt.Y>225) {	
		
		main_mouse_down=false

		
		
		point2X=pt.X
		point2Y=pt.Y
		//alert(point2Y)
		chkX=Math.abs(point2X-point1X)
		chkY=Math.abs(point2Y-point1Y)
		//alert([chkX,chkY])
		if(chkY<600 && chkX<600) {
		
			this.end_time=new Date().getTime()
						
			elapsed=this.end_time-this.start_time
			//alert(elapsed)	
			if(elapsed<220) {

				p3Y=point2Y-point1Y
				p3X=point2X-point1X	

			}
		}
		s.releaseMouseCapture()
	}	
}








function dragImage(s) {
	if(objsArr[s.name].mouse_down) {
		s["Canvas.Left"]=_root_xmouse-objsArr[s.name].img_offset_x 
		s["Canvas.Top"]=_root_ymouse-objsArr[s.name].img_offset_y
	}
}

var time_to_move=0.6

function imgDown(s,e) {

	//s["Cursor"]="Arrow"
	
	if(s["Canvas.Top"]==1) {
	
	
		s["Canvas.ZIndex"]=500
		//window.status=s.name+" "+new Date().getTime()
	
		s.captureMouse()

		//this.img_mouse_down=1
		
		clearInterval(scaleUpInt)		

		if(curSelectedImg.name!=null && s.name!=curSelectedImg.name) {


			if(objsArr[curSelectedImg.name].tweenX) {
				objsArr[curSelectedImg.name].tweenX.stop()
				objsArr[curSelectedImg.name].tweenY.stop()
				objsArr[curSelectedImg.name].tweenS.stop()
			
			}
			
			
		
			s.findName(curSelectedImg.name)["Canvas.ZIndex"]=objsArr[curSelectedImg.name].z
			s.findName(curSelectedImg.name).opacity=init_opacity
			
			
			//s.findName(curSelectedImg.name)["Canvas.Left"]=imgOrigPosArr[curSelectedImg.name+"_xpos"]
			//s.findName(curSelectedImg.name)["Canvas.Top"]=1	
			
			//s.findName(curSelectedImg.name+"_ScaleTransform").ScaleY=1
			//s.findName(curSelectedImg.name+"_ScaleTransform").ScaleX=1
			
			
			
			
			var temp_name=curSelectedImg.name
			var imgObj=objsArr[temp_name]
	
			var propX=s.findName(temp_name)["Canvas.Left"]
			var final_propX=imgOrigPosArr[temp_name+"_xpos"]
			
			imgObj.tweenX2 = new Tween(new Object(),'x',Tween.regularEaseOut,propX,final_propX,time_to_move/2)

			imgObj.tweenX2.onMotionChanged = function(event){		
				s.findName(temp_name)["Canvas.Left"]=event.target._pos
			}

			imgObj.tweenX2.start()		


			
			var propY=s.findName(temp_name)["Canvas.Top"]
			var final_propY=1

			imgObj.tweenY2 = new Tween(new Object(),'y',Tween.regularEaseOut,propY,final_propY,time_to_move/2)

			imgObj.tweenY2.onMotionChanged = function(event){	
				s.findName(temp_name)["Canvas.Top"]=event.target._pos
			}

			imgObj.tweenY2.start()	


			var propScale=s.findName(temp_name+"_ScaleTransform").ScaleX
			imgObj.tweenS2 = new Tween(new Object(),'s',Tween.regularEaseOut,propScale,1,time_to_move/2)

			imgObj.tweenS2.onMotionChanged = function(event){	
				s.findName(temp_name+"_ScaleTransform").ScaleX=event.target._pos
				s.findName(temp_name+"_ScaleTransform").ScaleY=event.target._pos		
			}

			imgObj.tweenS2.start()			
			
			
			
			
			
			img_scaling=false
			//goBackInt
		}


		curSelectedImg.name=s.name
		

		
		//alert(e.getPosition(s).y)
		//objsArr[s.name].myInt=setInterval("dragImage(sender)",10)
		
		
		var pt = e.getPosition(null);
		var img_old_x=s["Canvas.Left"]
		var img_old_y=s["Canvas.Top"]
		
		sender=s
		objsArr[s.name].mouse_down=1
		objsArr[s.name].img_offset_x=pt.x-img_old_x
		objsArr[s.name].img_offset_y=pt.y-img_old_y	
		objsArr[s.name].myInt=setInterval("dragImage(sender)",10)
			
	}
	
	
}




function imgUp(s,e) {

	clearInterval(objsArr[s.name].myInt)
	objsArr[s.name].mouse_down=0
	imgHolderRef=s.findName("imgHolder")
	
	if(s["Canvas.Top"]>0) {
	
		var imgObj=objsArr[s.name]
		
		var propX=s["Canvas.Left"]
		
		var final_propX=(stage_wid/2-imgHolderRef["Canvas.Left"])-s.width
		
		imgObj.tweenX = new Tween(new Object(),'x',Tween.regularEaseOut,propX,final_propX,time_to_move)

		imgObj.tweenX.onMotionChanged = function(event){	
							
			s["Canvas.Left"]=event.target._pos
			
		}

		imgObj.tweenX.onMotionFinished = function(event){						
		}

		imgObj.tweenX.start()		


		propY=s["Canvas.Top"]
		final_propY=180

		imgObj.tweenY = new Tween(new Object(),'y',Tween.regularEaseOut,propY,final_propY,time_to_move)

		imgObj.tweenY.onMotionChanged = function(event){	
			s["Canvas.Top"]=event.target._pos
		}

		
		imgObj.tweenY.start()	
		


		imgObj.tweenS = new Tween(new Object(),'s',Tween.regularEaseOut,1,2,time_to_move)

		imgObj.tweenS.onMotionChanged = function(event){	
			s.findName(s.name+"_ScaleTransform").ScaleX=event.target._pos
			s.findName(s.name+"_ScaleTransform").ScaleY=event.target._pos		
		}

		
		imgObj.tweenS.start()		

	}
	else {
		s["Canvas.Left"]=imgOrigPosArr[s.name+"_xpos"]
		s["Canvas.Top"]=1
		
	}	
}













function mainMouseMove(s, e) {	
	var pt = e.getPosition(null);
	_root_xmouse = pt.x
	_root_ymouse = pt.y	
}


function imgHolderTracker(s) {

	check_zeroX=Math.abs(p3X)
	end=0.7
	
	imgHolderRef=s.findName("imgHolder")
	dotsHolderRef=s.findName("dotsHolder")
	diff=prev_wid-stage_wid
	
	
	if(main_mouse_down) {
		imgHolderRef["Canvas.Left"]=cur_imgHolderX-(point1X-_root_xmouse)
		dotsHolderRef["Canvas.Left"]=imgHolderRef["Canvas.Left"]/diff * (stage_wid-4)*-1
	}
	
	if(check_zeroX>end) {
		
		if(!main_mouse_down) {
		
			check_next=this._x+p3X/3.2
			imgHolderRef["Canvas.Left"]+=p3X/3.2
			
			dotsHolderRef["Canvas.Left"]=imgHolderRef["Canvas.Left"]/diff * (stage_wid-4)*-1
			
			p3X*=friction	
			p3Y*=friction
		}
		else {
			p3X=0
			p3Y=0
		}
	}
	
	if(imgHolderRef["Canvas.Left"]>0) {
		imgHolderRef["Canvas.Left"]=0
		dotsHolderRef["Canvas.Left"]=0
	}
	if(imgHolderRef["Canvas.Left"]<-prev_wid+stage_wid-1) {
		imgHolderRef["Canvas.Left"]=-prev_wid+stage_wid-1
		dotsHolderRef["Canvas.Left"]=796 //width of dot is 4
	}
}





function mouseChecker(s,me) {
	if(me.img_mouse_down) {
		s["Canvas.Left"]=_root_xmouse-me.img_offset_x
		s["Canvas.Top"]=_root_ymouse-me.img_offset_y
	}
}


