﻿

var plugin
var main
var  _root_xmouse=0
var  _root_ymouse=0

var photos_directory="./horoscope2009/pics/"

var tn_size = 80
var tn_offset = 11
var tn_spacing = 6
var time_to_scale_image=0.5

var info_width=700
var info_spacing=200
var info_offset=900

var delayToolTipFadeInTO

var imgIntArr=new Array()
var objsArr=new Array() 

var num_images_loaded=0
var cur_large_img


var img_width=150
var img_height=200
var num_imgs=12

var radiusX=300
var radiusY=40
var centerX=390
var centerY=70

var speed=-0.0015
var main_down=false


var infoArr=new Array(
pesci,ariete,toro,gemelli,cancro,leone,virgo,libra, 
scorpio,sagitter,capricorn,aquarius)




function mainCanvasLoaded(s) {

	//alert("main loaded")
		
	main=s.findName("mainCanvas")
	plugin = s.getHost()
	imagesHolder=s.findName("imagesHolder")
	
		
    var downloader = plugin.createObject("downloader");
    downloader.addEventListener("Completed", onCompleted);
	downloader.open("GET", "./horoscope2009/pics/1.png");
    downloader.send();
    
    objsArr["mainInfoContainer"]= new Object()
	
}




function onCompleted(sender, eventArgs) {


	buildImages(sender)
}







function whenMouseMoves(s, e) {	
	var pt = e.getPosition(null)
	_root_xmouse = pt.x
	_root_ymouse = pt.y	
	speed=((_root_xmouse-500)/500) * 0.0355
	moveToolTip(s)
}



function moveToolTip(s) {

	//window.status=_root_xmouse+ " "+_root_ymouse+ " "+s.findName("toolTip")["Canvas.Left"]
	
    if(_root_xmouse>405) {
    	s.findName("toolTip")["Canvas.Left"]=_root_xmouse-210
    }
    else {
    	s.findName("toolTip")["Canvas.Left"]=_root_xmouse+50
    }
	s.findName("toolTip")["Canvas.Top"]=_root_ymouse-50
}





function buildImages(s) {
	
	
	for(i=0;i<num_imgs;i++) {
	
		cur_img=i+".png"		
		img_url="./horoscope2009/thumbs/"+cur_img		 
		left_pos=0
		
		xaml_str='<Canvas Name="imageHolder_'+i+'" Canvas.Left="'+left_pos+'" Canvas.Top="0">'
			
		//reflections, kinda hard on the proc though...
	
		xaml_str += 	'<Canvas Name="imgHolderReflection_'+i+'" Canvas.Top="400" Opacity="1">'
		xaml_str += 	' <Canvas.OpacityMask>'
		xaml_str += 	'   <LinearGradientBrush  StartPoint="0,0" EndPoint="0,1">'           
		xaml_str += 	'     <GradientStop Offset="0.37" Color="#00000000"  />'      
		xaml_str += 	'     <GradientStop Offset="1" Color="#88000000"  />'
		xaml_str += 	'    </LinearGradientBrush>'          
		xaml_str += 	' </Canvas.OpacityMask>'
		xaml_str += 	' <Canvas.RenderTransform><TransformGroup><ScaleTransform Name="ReflectionScaleTransform_'+i+'" ScaleY="-1" ScaleX="1" CenterX="0" CenterY="0" /></TransformGroup></Canvas.RenderTransform>'		
		xaml_str +=		' <Image Name="imgReflection_'+i+'" Stretch="UniformToFill" Height="'+img_height+'" Width="'+img_width+'" Source="'+img_url+'" />'
		xaml_str +=		'</Canvas>'		
	
				
		
		xaml_str+='  <Rectangle Name="rec_'+i+'" Canvas.Top="-6" Canvas.Left="-6" Fill="#FFF" Height="210" Width="162" Opacity="0.0" ></Rectangle>'
		xaml_str+='  <Image Cursor="Hand" MouseEnter="imgEnter" MouseLeave="imgLeave" MouseLeftButtonDown="imgPress" MouseLeftButtonUp="imageUp" Stretch="UniformToFill" Name="image_'+i+'" Height="'+img_height+'" Width="'+img_width+'" Source="'+img_url+'" Opacity="1" />'
								
		xaml_str+='  <Canvas.RenderTransform><ScaleTransform Name="st_'+i+'" ScaleX="1" ScaleY="1" CenterX="50" CenterY="50"/></Canvas.RenderTransform>'			
		xaml_str+='</Canvas>'

		xamlTags=plugin.content.createFromXaml(xaml_str)
		imagesHolder.children.add(xamlTags)		
		
		
		objsArr["image_"+i]=new Object()
		objsArr["image_"+i].angle=i*((Math.PI*2)/num_imgs)
	
		objsArr["image_"+i].index=i


			objsArr["image_"+i].width=tn_size
			objsArr["image_"+i].height=tn_size
			objsArr["image_"+i].parent="canvas_image_"+i
			objsArr["image_"+i].info_position=infoArr[i].info_index



	}

	positionItems()
	moveItemsInt=setInterval("moveItems()",25)
	
	mainInfoContainerRef=main.findName("mainInfoContainer")
	
	for(i=0;i<infoArr.length;i++) {
	
	
		info_left_pos=((info_width+info_spacing)*i+info_offset)

		xaml_str = '<Canvas Name="infoContainer_'+i+'" Canvas.Left="'+info_left_pos+'" >'
		xaml_str += '<Rectangle Fill="#FFF" Width="682" Height="250" Opacity="0"></Rectangle>'
		xaml_str += ' <TextBlock Name="info_link1_'+i+'"  Foreground="#FF143899" Canvas.Left="15" Canvas.Top="236"  Width="500" TextWrapping="Wrap" FontSize="11"  FontFamily="Verdana">'+infoArr[i].link1+'</TextBlock>'
		xaml_str += ' <TextBlock Name="info_address1_'+i+'" Cursor="Hand" Foreground="#DA1C1C" Canvas.Left="15" Canvas.Top="238"  Width="500" TextWrapping="Wrap" FontSize="11" FontFamily="Verdana" Opacity="0" MouseLeftButtonDown="jumpToLink">'+infoArr[i].address1+'</TextBlock>'
		xaml_str += ' <TextBlock Name="info_title_'+i+'" Foreground="#FFF" Canvas.Left="15" Canvas.Top="-10"  Width="500" TextWrapping="Wrap" FontSize="12" FontFamily="Verdana">'+infoArr[i].title+'</TextBlock>'
		xaml_str += ' <TextBlock Name="info_desc_'+i+'" Foreground="#000" Canvas.Left="15" Canvas.Top="15"  Width="400" TextWrapping="Wrap" FontSize="12" FontFamily="Arial" >'+infoArr[i].description+'</TextBlock>'
		xaml_str += ' <TextBlock Name="info_link2_'+i+'"  Foreground="#FF143899" Canvas.Left="15" Canvas.Top="222"  Width="500" TextWrapping="Wrap" FontSize="11"  FontFamily="Verdana">'+infoArr[i].link2+'</TextBlock>'
		xaml_str += ' <TextBlock Name="info_address2_'+i+'" Cursor="Hand" Foreground="#DA1C1C" Canvas.Left="15" Canvas.Top="222"  Width="500" TextWrapping="Wrap" FontSize="11" MouseLeftButtonDown="jumpToLink" FontFamily="Verdana" Opacity="0" >'+infoArr[i].address2+'</TextBlock>'
		
		xaml_str += ' <Rectangle Fill="#FFF" Width="180" Height="238" Canvas.Left="477" Canvas.Top="0" Opacity="0"></Rectangle>'
		

		xaml_str += ' <Image Source="'+photos_directory+infoArr[i].image+'"  Height="210" Canvas.Left="487" Canvas.Top="10"/>'
		xaml_str += '</Canvas>'
		

		xamlTags=plugin.content.createFromXaml(xaml_str)
		mainInfoContainerRef.children.add(xamlTags)	

	
				
  	
	}
	
   	
	
	
}

function jumpToLink(s){
//window.location = s.Text
window.open(s.Text, "_blank", "");
}

function mouseLeave(s){
//	for(i=0;i<1000;i++) {

speed=speed*.1
//}

}

function imgLoaded(s) {

	var tempName
	tempName=""+s.name
	s.opacity=0
	
	//objsArr[s.name]=new Object()
	imgIntArr["int"+s.name]=setInterval("checkImgDims('"+tempName+"')",10)	
}


function checkImgDims(nstr) {

	imgRef=main.findName(nstr)
	
	if(imgRef.width>0 && imgRef.height>0) {
			
		objsArr[nstr].orig_width=imgRef.width
		objsArr[nstr].orig_height=imgRef.height
		
		imgRef.width=tn_size
		imgRef.height=tn_size
		
		
		//sizing with proportions
		/*
		
		ratio=imgRef.width/imgRef.height
		
		if(ratio>=1) {
			imgRef.width=tn_size
			imgRef.height=tn_size/ratio
			
			diff=(tn_size-imgRef.height)/2
			imgRef["Canvas.Top"]=diff
			
		}
		else {
			imgRef.height=tn_size
			imgRef.width=tn_size*ratio
			
			diff=(tn_size-imgRef.width)/2
			imgRef["Canvas.Left"]=diff
			
		}
		
		*/
		
		
		imgRef.opacity=1
		//imgRef.findName(imgRef.name+"_loaderBG").opacity=0
		
		num_images_loaded++
		
		clearInterval(imgIntArr["int"+nstr])

	}
	
}



function delayToolTipFadeIn(s) {

	var me=objsArr[s.name]
//	s.findName("toolTip").opacity=0
	s.findName("toolTip").visibility="visible"
	
	
	//me.tweenO = new Tween(new Object(),'o',Tween.regularEaseOut,0,1,1)
	
	//me.tweenO.onMotionChanged = function(event){	
	//	s.findName("toolTip").opacity = event.target._pos	
	//}
	
	//me.tweenO.start()
}


function imgEnter(s,e) {


	var me=objsArr[s.name]
	var par=s.findName(me.parent)

	window.status=me.info_position	

	person=infoArr[me.index]
	
	//s.findName("info").text=person.name+"\n"+person.title+"\n"+person.age+"\n"+person.location+"\n\n"+person.description
	s.findName("info").text=person.name+"\n"+person.title
	sender=s
	delayToolTipFadeInTO=setTimeout("delayToolTipFadeIn(sender)",500)			
}

function imgLeave(s) {	

	clearTimeout(delayToolTipFadeInTO)
//	s.findName("toolTip").visibility="collapsed"
}



function imgPress(s,e) {

	s.findName("init_info").visibility="Collapsed"
		
	var me=objsArr[s.name]
	//me.index;
	
	var mcObj=objsArr["mainInfoContainer"]
	
	var mcRef=s.findName("mainInfoContainer")
	
	var cur_x=((info_width+info_spacing)*me.info_position+info_offset)
	
	var final_x=-cur_x+112
	
	
	
	
	var dist=Math.abs(final_x-mcRef["Canvas.Left"])
	var time_to_move=dist/900
	var time_to_move=0.5
	
	window.status=dist
	
	if(mcObj.tweenMCX) {
		mcObj.tweenMCX.stop()	
	}
	
	mcObj.tweenMCX = new Tween(new Object(),'x',Tween.regularEaseOut,mcRef["Canvas.Left"],final_x,time_to_move)
	
	mcObj.tweenMCX.onMotionChanged = function(event){	
		mcRef["Canvas.Left"] = event.target._pos
	}	
	
	mcObj.tweenMCX.start()	
	
}



function moveItems() {
//	if(main_down) {
		positionItems()
//	}
}


function positionItems() {
	for(i=0;i<num_imgs;i++) {
	
		var my_x=Math.cos(objsArr["image_"+i].angle)*radiusX + centerX
		var my_y=Math.sin(objsArr["image_"+i].angle)*radiusY + centerY

		main.findName("imageHolder_"+i)["Canvas.Left"]=my_x
		main.findName("imageHolder_"+i)["Canvas.Top"]=my_y

		var stRef=main.findName("st_"+i)

		var sc = (my_y  - stRef.scaleY) / (centerY+radiusY-stRef.scaleY)

		stRef.scaleX=sc
		stRef.scaleY=sc

		objsArr["image_"+i].angle+=speed
		main.findName("imageHolder_"+i)["Canvas.ZIndex"]=parseInt(my_y)
	}

}



function mainDown(s) {
	main_down=true	
}

function mainUp(s) {
	main_down=false
}



function imageOver(s) {

	//main_down=false
	var ind=s.name.split("_")[1]
	s.findName("rec_"+ind).fill="yellow"

}
function imageOut(s) {

	var ind=s.name.split("_")[1]
	s.findName("rec_"+ind).fill="#FFF"

}



function imageDown(s) {

	file_source=s.source.split("/")[1]
	
	//s.findName("mainImage").source="images/"+file_source
	s.findName("mainImageHolder")["Canvas.ZIndex"]=169
}



function whenMouseMoves(s, e) {	
	var pt = e.getPosition(null);
	_root_xmouse = pt.x
	_root_ymouse = pt.y	
	speed=((_root_xmouse-500)/500) * 0.0755
}





