var plugin
var main
var objsArr=new Array()
var linkArr=new Array("Events","Sponsors","Contacts","Winners","About360","Venues")
var textArr=new Array("Microsoft Silverlight is a cross-browser, cross-platform plug-in for delivering the next generation of .NET based media experiences and rich interactive applications for the Web. Silverlight offers a flexible programming model that supports AJAX, VB, C#, Python, and Ruby, and integrates with existing Web applications. Silverlight supports fast, cost-effective delivery of high-quality video to all major browsers running on the Mac OS or Windows..","The best Silverlight apps from all over the world.","Download and watch the tutorials.","All the necessary resources can be found here. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text. This is filler text.  This is filler text. This is filler text.","Versions of Silverlight\n\nSilverlight 1.0\n\nSilverlight 1.0 consists of the core presentation framework, which is responsible for UI, interactivity and user input, basic UI controls, graphics and animation, media playback, DRM support, and DOM integration. It is made up of the following components:\n\n* Input - handling input from devices like keyboard, mouse, stylus etc.\n* UI core - managing rendering of bitmap images (including compressed raster images like JPEG), vector graphics, text and animations.\n* Media - playback of MP3, WMA Standard, WMV7, WMV8 and WMV9/VC-1 streams.\n* XAML - to allow the UI layout to be created using XAML markup language.\n\nA Silverlight application starts by invoking the Silverlight control from the HTML page, which then loads up a XAML file. The XAML file contains a Canvas object, which acts as placeholder for other elements. Silverlight provides various geometrical primitives like lines, ellipses and other shapes, to elements like text, images, and media etc. The elements are properly positioned to achieve the desired layout. Any arbitrary shape can be created as well. These elements can be animated using Event triggers; some animation effects are predefined, others can be created as composite of the pre-defined effects. Events like keyboard or mouse movements can also raise Events which can be handled by custom scripts.")


var img_width=80
var img_height=80
var num_imgs=6

var radiusX=230
var radiusY=130
var radiusZ=100
var centerX=470
var centerY=232
var centerZ=100

var speed=-0.0030
var main_down=false

//var _root_xmouse
//var _root_ymouse

var trigo=2
var stage_width


var fl=150

var scrollerConstraints

function mainCanvasLoaded(s) {

	//alert("main loaded")
	
	main=s.findName("mainCanvas")
	plugin = s.getHost()	
	imagesHolder=s.findName("imagesHolder")
      buildImages()


      //tfRef=main.findName("contentText")

	//alert(tfRef.actualHeight)
	
	scrollerConstraints=new Array()
	scrollerConstraints["myScroller1"]=new Object()
	scrollerConstraints["myScroller1"].container="contentContainer"
	scrollerConstraints["myScroller1"].direction="V"
	scrollerConstraints["myScroller1"].world_offset=107 //scrubber distance from main top edge 50+12 (50 from main canvas, 12 from parent canvas) - you can figure this out by script if you'd like
	scrollerConstraints["myScroller1"].local_offset=12 //scrubber distance from parent top
	scrollerConstraints["myScroller1"].track_length=308 //2 less than visual track BG, 2 because trackbar is 2 px longer than scrubbing area (just for aesthetics)
	scrollerConstraints["myScroller1"].start_scroll=scrollerConstraints["myScroller1"].local_offset
	scrollerConstraints["myScroller1"].mask_length=340 // should be same value as contentHolderClip rect height property in xaml, cannot not get from script currently, aka Silverlight sucks (let me know if you know how). for a hack you can put the size in the name of the clip (ex: contentHolderClip_260) and read and parse that ;-)
	scrollerConstraints["myScroller1"].content_length=tfRef.actualHeight
	scrollerConstraints["myScroller1"].scroll_amount=6  //ex: 1-20
	
	//hide scroll bar if content isnt big enough to scroll
	if(tfRef.actualHeight<=scrollerConstraints["myScroller1"].mask_length) {
		main.findName("myScroller1_Container").visibility="Collapsed"
	}

	scrubberRef=main.findName("myScroller1_Scrubber")
	//scrubberRef.height= (scrollerConstraints["myScroller1"].mask_length/scrollerConstraints["myScroller1"].content_length) * scrollerConstraints["myScroller1"].track_length
	
	
}

function mainCanvasMouseLeave(s) {
      main_down=false
	this.mouse_down=0
	clearInterval(mouseCheckInt)
	s.releaseMouseCapture()

}

function buildImages() {

	for(i=0;i<num_imgs;i++) {
	
		cur_img=i+".jpg"		
		img_url="images/moon.png"		 
		left_pos=0
		
		xaml_str='<Canvas Name="imageHolder_'+i+'" Canvas.Left="'+left_pos+'" Canvas.Top="0">'
            xaml_str+='  <TextBlock Name="text_'+i+'" FontSize="16" Canvas.Top="75" Canvas.Left="18" FontFamily="Garamond" Opacity=".5" Foreground="#FFFFFFFF">'+linkArr[i]+'</TextBlock>'	
		xaml_str+='  <Ellipse Name="rec_'+i+'" Canvas.Top="0" Canvas.Left="" Fill="#FFF" Height="80" Width="80" Opacity="0"></Ellipse>'
		
            xaml_str+='  <Image Name="'+i+'" Cursor="Hand" MouseEnter="imageOver" MouseLeave="imageOut" MouseLeftButtonDown="imageDown"  MouseLeftButtonUp="imageUp" Stretch="UniformToFill"  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)			
	}

	positionItems()
      maindown=true
	moveItemsInt=setInterval("moveItems()",60)
}

function moveItems() {
	if(main_down) {
		positionItems()
	}
}


function positionItems() {
	for(i=0;i<num_imgs;i++) {
	
            //govern the motion of the moons

		var stRef=main.findName("st_"+i)

if(trigo==2)
{
switch(i)
{
case 0:
var my_y=-Math.sin(objsArr["image_"+i].angle)*radiusY+ centerY
var my_x=Math.cos(objsArr["image_"+i].angle)*radiusX+ centerX
break
case 3: 
var my_y=Math.cos(objsArr["image_"+i].angle)*radiusY+ centerY
var my_x=Math.cos(objsArr["image_"+i].angle)*radiusX+ centerX
break
case 5: 
var my_y=centerY
var my_x=Math.cos(objsArr["image_"+i].angle)*radiusX+ centerX
break
case 6: 
var my_y=Math.cos(objsArr["image_"+i].angle)*(radiusY+90)+ centerY
var my_x=centerX
break
case 4: 
var my_y=(-1)*1.5*(Math.cos(objsArr["image_"+i].angle)*radiusY)+ centerY
var my_x=0.5*Math.cos(objsArr["image_"+i].angle)*radiusX+ centerX
break
case 1: 
var my_y=2*(Math.cos(objsArr["image_"+i].angle)*radiusY)+ centerY
var my_x=0.5*Math.cos(objsArr["image_"+i].angle)*radiusX+ centerX
break
case 2: 
var my_y=-Math.cos(objsArr["image_"+i].angle)*radiusY+ centerY
var my_x=Math.cos(objsArr["image_"+i].angle)*radiusX+ centerX
break
default:
//var my_y=-Math.cos(objsArr["image_"+i].angle)*radiusY+ centerY
var my_y=0
var my_x=Math.sin(objsArr["image_"+i].angle)*radiusX+ centerX
break
}
var my_z=Math.sin(objsArr["image_"+i].angle)*radiusZ+ centerZ
var sc= (fl+my_z)/(fl*2)
try
{
		//main.findName("imageHolder_"+i)["Canvas.ZIndex"]=parseInt(my_y)
            main.findName("imageHolder_"+i)["Canvas.ZIndex"]=parseInt(sc*200)

}
catch(err)
{
}
}

if(trigo==1)
{
var my_y=Math.tan(objsArr["image_"+i].angle)*radiusY+ centerY
var my_x=Math.cos(objsArr["image_"+i].angle)*radiusX+ centerX
var sc = (my_y  - stRef.scaleY) / (centerY+radiusY-stRef.scaleY)
try
{
		main.findName("imageHolder_"+i)["Canvas.ZIndex"]=parseInt(my_y)

}
catch(err)
{
}
}

if(trigo==0)
{
var my_y=Math.sin(objsArr["image_"+i].angle)*(radiusY-30)+ centerY
var my_x=Math.cos(objsArr["image_"+i].angle)*radiusX+ centerX
var sc = (my_y  - stRef.scaleY) / (centerY+radiusY-30-stRef.scaleY)
try
{
		main.findName("imageHolder_"+i)["Canvas.ZIndex"]=parseInt(my_y)

}
catch(err)
{
}
}


           /* var my_y=-Math.sin(objsArr["image_"+i].angle)*radiusY+ centerY
		var my_x=-Math.tan(objsArr["image_"+i].angle)*radiusX+ centerX
            var my_z=Math.sin(objsArr["image_"+i].angle)*radiusZ+ centerZ */
            
            //var my_z=Math.sin(objsArr["image_"+i].angle)*radiusZ+ centerZ 
            //var my_x=Math.cos(objsArr["image_"+i].angle)*radiusX+ centerX

		main.findName("imageHolder_"+i)["Canvas.Left"]=my_x
		main.findName("imageHolder_"+i)["Canvas.Top"]=my_y

        
            
		//var sc = (my_y  - stRef.scaleY) / (centerY+radiusY-stRef.scaleY)
            //var sc= (fl+my_z)/(fl*2)

		stRef.scaleX=sc
		stRef.scaleY=sc

		//stRef.scaleX=sc*1.05
		//stRef.scaleY=sc*1.05



		objsArr["image_"+i].angle+=speed

	}

}

function mainDown(s) {
	main_down=true	
}

function mainUp(s) {
	main_down=true
}

function imageOver(s) {

	main_down=true
	//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"
      main_down=true

}

function imageDown(sender, mouseEventArgs) {
	//$get('Button1').onclick();
	GB_showCenter(linkArr[sender.Name],"http://ieee360.com/i360/Silverlight/" + linkArr[sender.Name] + ".html",600,800);
	
	
	//alert("hello " + sender.Name);
	

    var tfRef1 = s.findName("contentContainer");
      //alert(tfRef1["Canvas.Top"])
      tfRef1["Canvas.Top"]=10


    var tfRef2=s.findName("myScroller1_Scrubber")
     tfRef2["Canvas.Top"]=12

	//file_source=s.source.split("/")[1]
	main_down=false
      var num=s.name.split("_")[1]
      s.findName("TextHead").text=linkArr[num]
      //s.findName("contentText").text=textArr[num]
      if(num!=0)
      {
      s.findName("SLrectangle").visibility='collapsed'
      s.findName("SLVideo").visibility='collapsed'
      }
      else
      {
      s.findName("SLrectangle").visibility='visible';
      s.findName("SLVideo").visibility='visible';
      }
	if(tfRef.actualHeight<=scrollerConstraints["myScroller1"].mask_length) {
		main.findName("myScroller1_Container").visibility="Collapsed"
	}
      else
      {
            main.findName("myScroller1_Container").visibility="Visible"
            scrollerConstraints["myScroller1"].content_length=tfRef.actualHeight
      }
      
	//s.findName("mainImage").source="images/"+file_source
	//s.findName("mainImageHolder")["Canvas.ZIndex"]=169
}

function grDown(s) {
trigo=(trigo+1)%3
/*var speed1
switch(trigo)
{
case 0:
speed1="[Tweak Gravity (Current Setting: Rings of Saturn)]"
break
case 1:
speed1="[Tweak Gravity (Current Setting: Wind Tunnel)]"
break
case 2:
speed1="[Tweak Gravity (Current Setting: Atom Emulator)]"
break
}
s.findName("gTweak").text=speed1.toString()*/
//alert(s.findName("numberPass").text)
}

/*function whenMoonMouseMoves(s, e) {	
	var pt = e.getPosition(null);
	_root_xmouse = pt.x
	_root_ymouse = pt.y	
	speed=((_root_xmouse-300)/550) * 200
}*/