﻿var rootCanvas;
var plugIn;
var contentdownloader;
var contentdownloaderevent;
var currentactivemenu;
var currentcontent;
var scrollcontent;
var speakerscrollerheight = 0;
var scrollerConstraints;
var main;

function PageLoaded(sender)
{
	plugIn = sender.getHost();
	main = sender;
	rootCanvas = sender;
	Menu_Click(rootCanvas.findName("btnHome"));
}

function link_enter(sender) {
	sender.foreground = "#FFFFFF00";
}

function link_leave(sender) {
	sender.foreground = "#FF96B3FF";
}

function registerlinkclick(sender) {
	window.open("http://alcodecamp8.eventbrite.com");
}
function directionslinkclick(sender) {
	window.open("http://www.bing.com/maps/?v=2&cp=30.694677239319418~-88.17721354944211&lvl=18&sty=h&sp=Point.p3g61c7njq81_Alabama%20Code%20Camp%201%2F23%2F2010____");
}
function downloadformlinkclick(sender) {
	window.open("http://www.alabamacodecamp.com/assets/codecamp8.doc");
}

function mainCanvasMouseLeave(s) 
{
	this.mouse_down=0
	clearInterval(mouseCheckInt)
	s.releaseMouseCapture()
}

function SpeakerScrollArrow_Enter(sender, eventArgs)
{
	if(sender.Tag!="D")
	{
		sender.children.getItem(0).Fill.Color="#FF493121";
		sender.children.getItem(0).Stroke.Color="#FFDAEA97";
	}
}

function SpeakerScrollArrow_Leave(sender, eventArgs)
{
	if(sender.Tag!="D")
	{
		sender.children.getItem(0).Fill.Color="#FF000000";
		sender.children.getItem(0).Stroke.Color="#00000000";
	}
}

function SpeakerScrollUp_Click()
{
	var uparrow = rootCanvas.findName("TopArrow");
	var downarrow = rootCanvas.findName("BottomArrow");
	if(uparrow.Tag!="D")
	{
		var scroller = rootCanvas.findName("LeftMenuItemScroller");
		if(scroller)
		{
			if(scroller["Canvas.Top"]<-2)
			{
				scroller["Canvas.Top"] = scroller["Canvas.Top"]+64;
			}
			if(scroller["Canvas.Top"]>=-2)
			{
				uparrow.children.getItem(0).Fill.Color="#FF5B5E64";
				uparrow.children.getItem(0).Stroke.Color="#00000000";
				uparrow.Tag="D";
				uparrow.cursor = "Arrow";
			}
			downarrow.Tag="E";
			downarrow.children.getItem(0).Fill.Color="#FF000000";
			downarrow.cursor = "Hand";
		}
	}
}

function SpeakerScrollDown_Click()
{
	var uparrow = rootCanvas.findName("TopArrow");
	var downarrow = rootCanvas.findName("BottomArrow");
	if(downarrow.Tag!="D")
	{
		var scroller = rootCanvas.findName("LeftMenuItemScroller");
		if(scroller)
		{
			var scrolllimit = (scroller.children.count * -64)+270;
			if(scroller["Canvas.Top"]>scrolllimit)
			{
				scroller["Canvas.Top"] = scroller["Canvas.Top"]-64;
			}
			if(scroller["Canvas.Top"]<=scrolllimit)
			{
				downarrow.children.getItem(0).Fill.Color="#FF5B5E64";
				downarrow.children.getItem(0).Stroke.Color="#00000000";
				downarrow.Tag="D";
				downarrow.cursor = "Arrow";
			}
			uparrow.Tag="E";
			uparrow.children.getItem(0).Fill.Color="#FF000000";
			uparrow.cursor = "Hand";
		}
	}
}

function Menu_MouseEnter(sender)
{
	if(!currentactivemenu || sender.name!=currentactivemenu.name)
	{
		var btn = sender.children.getItem(0);
		var btnfill = btn.fill;
		btn.stroke="#FFF4F4EB";
		btnfill.gradientstops.getItem(1).Color="#FFEE9009";
		btnfill.gradientstops.getItem(1).Color="#FFE09323";
	}
}

function Menu_MouseLeave(sender)
{
	if(!currentactivemenu || sender.name!=currentactivemenu.name)
	{
		var btn = sender.children.getItem(0);
		var btnfill = btn.fill;
		btn.stroke="#FFDEF607";
		btnfill.gradientstops.getItem(1).Color="#FFD5E076";
		btnfill.gradientstops.getItem(1).Color="#FF9DAB1B";
	}
}

function SetActiveMenu(activebtn)
{
	var btn = activebtn.children.getItem(0);
	var btnfill = btn.fill;
	if(currentactivemenu!=null)
	{
		var lastbtn = currentactivemenu.children.getItem(0);
		var lastbtnfill = lastbtn.fill;
		lastbtn.stroke="#FFDEF607";
		lastbtnfill.gradientstops.getItem(1).Color="#FFD5E076";
		lastbtnfill.gradientstops.getItem(1).Color="#FF9DAB1B";
	}
	btn.stroke="#FFF4F4EB";
	btnfill.gradientstops.getItem(1).Color="#FF1B82AB";
	btnfill.gradientstops.getItem(1).Color="#FF9AD3E9";
	currentactivemenu=activebtn;
}

function Menu_Click(sender)
{
	if(!currentactivemenu || sender.name!=currentactivemenu.name) {
		var skip = false;
		if(currentcontent!=null)
		{
			rootCanvas.children.remove(currentcontent);
		}
		contentdownloader=plugIn.createObject("downloader");
		SetActiveMenu(sender);
		if(sender.name=="btnSpeakers")
		{
			contentdownloaderevent = contentdownloader.addEventListener("completed", SetSpeakerAssets);
			contentdownloader.open("GET", "templates/Speakers/SpeakerContent.zip");
		}
		else if(sender.name=="btnSessions")
		{
			contentdownloaderevent = contentdownloader.addEventListener("completed", SetSessionAssets);
			contentdownloader.open("GET", "templates/Sessions/SessionContent.zip");
		}
		else if(sender.name=="btnAgenda")
		{
			contentdownloaderevent = contentdownloader.addEventListener("completed", SetAgendaAssets);
			contentdownloader.open("GET", "templates/Agenda/AgendaContent.xaml");
		}
		else if(sender.name=="btnContributors")
		{
			contentdownloaderevent = contentdownloader.addEventListener("completed", SetContributorAssets);
			contentdownloader.open("GET", "templates/Contributors/ContributorContent.zip");
		}else{
			contentdownloaderevent = contentdownloader.addEventListener("completed", SetHomeAssets);
			contentdownloader.open("GET", "templates/Home/HomeContent.xaml");
		}
		if (!skip) {
			contentdownloader.send();
		}
	}
}

function SpeakerMenuItem_Enter(sender, eventArgs)
{
	sender.children.getItem(0).Fill.Color="#FFFFFFFF";
}

function SpeakerMenuItem_Leave(sender, eventArgs)
{
	sender.children.getItem(0).Fill.Color="#FF9B855F";
}

function SpeakerMenuItem_Click(sender, eventArgs)
{
	var biocontainer = rootCanvas.findName("ScrollerContent");
	for(var i=0;i<biocontainer.children.count;i++)
	{
		if(i!=sender.Tag)
		{
			biocontainer.children.getItem(i).visibility="Collapsed";
		}else{
			var bio = biocontainer.children.getItem(i);
			bio.visibility="Visible";
			var lastitem = bio.children.getItem(bio.children.count-1);
			var bioheight = lastitem["Canvas.Top"] + lastitem.ActualHeight;
			if(bioheight>303)
			{
				biocontainer.findName("ScrollBar1_Container").visibility="Visible";
				//reset scroller position
				biocontainer.findName("ScrollerContent")["Canvas.Top"] = 0;
				biocontainer.findName("ScrollBar1_Scrubber")["Canvas.Top"] = 0;
				//begin set scroller stuff
				scrollerConstraints=new Array();
				scrollerConstraints["ScrollBar1"]=new Object();
				scrollerConstraints["ScrollBar1"].container="ScrollerContent";
				scrollerConstraints["ScrollBar1"].direction="V";
				scrollerConstraints["ScrollBar1"].world_offset=rootCanvas.findName("ScrollerWindow")["Canvas.Top"] + rootCanvas.findName("TopButtons")["Canvas.Top"] + 85; 
				scrollerConstraints["ScrollBar1"].local_offset=rootCanvas.findName("ScrollBar1_Up").ActualHeight+2;
				scrollerConstraints["ScrollBar1"].track_length=rootCanvas.findName("ScrollBar1_TrackBar").ActualHeight;
				scrollerConstraints["ScrollBar1"].start_scroll=scrollerConstraints["ScrollBar1"].local_offset;
				scrollerConstraints["ScrollBar1"].mask_length=rootCanvas.findName("ScrollerWindow").ActualHeight;
				scrollerConstraints["ScrollBar1"].content_length = bioheight;  //bio.ActualHeight;
				scrollerConstraints["ScrollBar1"].scroll_amount=7;  //1-20
				scrubberRef=rootCanvas.findName("ScrollBar1_Scrubber");
				scrubberRef.height= (scrollerConstraints["ScrollBar1"].mask_length/scrollerConstraints["ScrollBar1"].content_length) * scrollerConstraints["ScrollBar1"].track_length;
				//end set scroller stuff
			}else{
				biocontainer.findName("ScrollBar1_Container").visibility="Collapsed";
				biocontainer.findName("ScrollerContent")["Canvas.Top"] = 0;
				biocontainer.findName("ScrollBar1_Scrubber")["Canvas.Top"] = 0;
			}
		}
	}
}

function SetHomeAssets(sender)
{
	var newcontent = plugIn.content.createFromXaml(sender.ResponseText);
	//begin set scroller stuff
	var scrollcontent = newcontent.findName("ScrollerContent");
	//get total content height
	var contentheight = 0;
	for (var c = 0; c < scrollcontent.children.count; c++) {
		contentheight += scrollcontent.children.getItem(c).ActualHeight;
	}
	scrollerConstraints=new Array();
	scrollerConstraints["ScrollBar1"]=new Object();
	scrollerConstraints["ScrollBar1"].container="ScrollerContent";
	scrollerConstraints["ScrollBar1"].direction="V";
	scrollerConstraints["ScrollBar1"].world_offset=newcontent.findName("ScrollerWindow")["Canvas.Top"] + rootCanvas.findName("TopButtons")["Canvas.Top"] + 85; 
	scrollerConstraints["ScrollBar1"].local_offset=newcontent.findName("ScrollBar1_Up").ActualHeight+2;
	scrollerConstraints["ScrollBar1"].track_length=newcontent.findName("ScrollBar1_TrackBar").ActualHeight;
	scrollerConstraints["ScrollBar1"].start_scroll=scrollerConstraints["ScrollBar1"].local_offset;
	scrollerConstraints["ScrollBar1"].mask_length=newcontent.findName("ScrollerWindow").ActualHeight;
	scrollerConstraints["ScrollBar1"].content_length = contentheight;  //scrollcontent.children.getItem(0).ActualHeight;
	scrollerConstraints["ScrollBar1"].scroll_amount=7;  //1-20
	//hide scroll bar if content isnt big enough to scroll
	if(contentheight<=scrollerConstraints["ScrollBar1"].mask_length)
	{
		newcontent.findName("ScrollBar1_Container").visibility="Collapsed";
	}
	scrubberRef=newcontent.findName("ScrollBar1_Scrubber");
	scrubberRef.height= (scrollerConstraints["ScrollBar1"].mask_length/scrollerConstraints["ScrollBar1"].content_length) * scrollerConstraints["ScrollBar1"].track_length;
	//end set scroller stuff
	currentcontent=newcontent;
	rootCanvas.children.add(newcontent);
	newcontent=null;
	contentdownloader.removeEventListener("completed", contentdownloaderevent);
	contentdownloaderevent=null;
	contentdownloader=null;
}

function SetSpeakerAssets(sender)
{
	var pagetemplate = plugIn.content.createFromXamlDownloader(sender, "SpeakerContent.xaml");
	var xmldoc = createFromXmlDownloader(sender, "speakers.xml");
	var biocontainer = pagetemplate.findName("ScrollerContent");
	for (var i=0; i < xmldoc.getElementsByTagName("speaker").length; i++)
	{
		//scroller
		var speakeritem = xmldoc.getElementsByTagName("speaker")[i];
		var speakername = speakeritem.getAttribute("name");
		var imgname = speakeritem.getAttribute("imgname");
		var scroller = pagetemplate.findName("LeftMenuItemScroller");
		var spkr = plugIn.content.createFromXamlDownloader(sender, "SpeakerItem.xaml");
		spkr.Tag = ""+i;
		spkr.children.getItem(1).setSource(sender,imgname);
		spkr.children.getItem(2).text=speakername;
		spkr["Canvas.Top"] = i*64;
		scroller.children.add(spkr);
		//bio canvas
		var biocompany = speakeritem.getAttribute("company");
		var biojobtitle = speakeritem.getAttribute("jobtitle");
		var mvpprofile = speakeritem.getAttribute("mvpprofile");
		var weblink = speakeritem.getAttribute("weblink");
		var biotext = speakeritem.getElementsByTagName("bio")[0].childNodes[0].nodeValue;
		var biocanvas = plugIn.content.createFromXamlDownloader(sender, "SpeakerBio.xaml");
		biocanvas.children.getItem(0).setSource(sender, imgname);
		biocanvas.children.getItem(2).Text = speakername;
		if(biocompany)
		{
			biocanvas.children.getItem(3).Text = biocompany;
		}
		if(biojobtitle)
		{
			biocanvas.children.getItem(4).Text = biojobtitle;
		}
		if(weblink)
		{
			biocanvas.children.getItem(5).Text = weblink;
		}
		biocanvas.children.getItem(6).Text = biotext;
		if(mvpprofile && mvpprofile!="")
		{
			var imgmvp = biocanvas.children.getItem(1);
			imgmvp.setSource(sender, "MVP_Logo.png");
			imgmvp.visibility="Visible";
			imgmvp.Tag = mvpprofile;
		}
		//sessions
		var sessiontexttemplate = '<TextBlock Width="500" Text="" TextWrapping="Wrap" Canvas.Top="" Canvas.Left="128" FontFamily="Arial" FontSize="12" Foreground="#FFFFFFFF"/>';
		var biobottom = biocanvas.children.getItem(6).ActualHeight + biocanvas.children.getItem(6)["Canvas.Top"] + 10;
		var mvpimgbottom = 40 + biocanvas.children.getItem(1)["Canvas.Top"] + 10;
		var nexttop = biobottom+5;
		if(biobottom<mvpimgbottom)
		{
			nexttop = mvpimgbottom+5;
		}
		biocanvas.children.getItem(7)["Canvas.Top"] = nexttop;
		for (var c=0; c < speakeritem.getElementsByTagName("session").length; c++)
		{
			var sessiontextinst = plugIn.content.createFromXaml(sessiontexttemplate);
			sessiontextinst.Text = speakeritem.getElementsByTagName("session")[c].getAttribute("name");
			sessiontextinst["Canvas.Top"] = nexttop;
			nexttop = nexttop+5+sessiontextinst.ActualHeight;
			biocanvas.children.add(sessiontextinst);
		}
		biocontainer.children.add(biocanvas);
	}
	var toparrow = pagetemplate.findName("TopArrow");
	var bottomarrow = pagetemplate.findName("BottomArrow");
	toparrow.children.getItem(0).Fill.Color="#FF5B5E64";
	toparrow.Tag="D";
	toparrow.cursor = "Arrow";
	if(biocontainer.children.count<5)
	{
		bottomarrow.children.getItem(0).Fill.Color="#FF5B5E64";
		bottomarrow.Tag="D";
		bottomarrow.cursor = "Arrow";
	}
	currentcontent=pagetemplate;
	rootCanvas.children.add(pagetemplate);
	pagetemplate=null;
	contentdownloader.removeEventListener("completed", contentdownloaderevent);
	contentdownloaderevent=null;
	contentdownloader=null;
}

function BioWebLink_Click(sender, eventArgs)
{
	window.open(sender.Text);
}

function MVPLink_Click(sender, eventArgs)
{
	window.open(sender.Tag);
}

function SetSessionAssets(sender)
{
	var pagetemplate = plugIn.content.createFromXamlDownloader(sender, "SessionContent.xaml");
	var sessioncontainer = pagetemplate.findName("ScrollerContent");
	var sessiondescriptions = pagetemplate.findName("SessionDescriptions");
	var xmldoc = createFromXmlDownloader(sender, "speakers.xml");
	var sessiontexttemplate = '<TextBlock Tag="" Width="600" Text="" TextWrapping="Wrap" Canvas.Top="" Canvas.Left="7" FontFamily="Arial" FontSize="12" Foreground="#FFFFFFFF" MouseEnter="Session_MouseEnter" MouseLeave="Session_MouseLeave" MouseLeftButtonUp="Session_MouseClick" Cursor="Hand" />';
	var top = 0;
	var x = 0;
	for (var i=0; i < xmldoc.getElementsByTagName("speaker").length; i++)
	{
		var speakeritem = xmldoc.getElementsByTagName("speaker")[i];
		for (var c=0; c < speakeritem.getElementsByTagName("session").length; c++)
		{
			var sessioninst = plugIn.content.createFromXaml(sessiontexttemplate);
			sessioninst.Text = speakeritem.getElementsByTagName("session")[c].getAttribute("name");
			sessioninst.Tag = ""+x;
			sessioninst["Canvas.Top"] = top;
			sessioncontainer.children.add(sessioninst);
			top += 10+sessioninst.ActualHeight;
			//session descriptions
			var descinst = plugIn.content.createFromXamlDownloader(sender, "SessionDescription.xaml");
			var titletext = descinst.children.getItem(1);
			titletext.Text = speakeritem.getElementsByTagName("session")[c].getAttribute("name");
			descinst.children.getItem(2).Text = speakeritem.getElementsByTagName("session")[c].getElementsByTagName("description")[0].childNodes[0].nodeValue;
			descinst.children.getItem(2)["Canvas.Top"] = titletext["Canvas.Top"] + titletext.ActualHeight + 10;
			descinst.Tag = ""+x++;
			sessiondescriptions.children.add(descinst);
		}
	}
	//begin set scroller stuff
	var scrollcontent = pagetemplate.findName("ScrollerContent");
	//get total content height
	var contentheight = 0;
	for (var c = 0; c < scrollcontent.children.count; c++) {
		contentheight += scrollcontent.children.getItem(c).ActualHeight + 10;
	}
	scrollerConstraints = new Array();
	scrollerConstraints["ScrollBar1"]=new Object();
	scrollerConstraints["ScrollBar1"].container="ScrollerContent";
	scrollerConstraints["ScrollBar1"].direction="V";
	scrollerConstraints["ScrollBar1"].world_offset=pagetemplate.findName("ScrollerWindow")["Canvas.Top"] + rootCanvas.findName("TopButtons")["Canvas.Top"] + 85; 
	scrollerConstraints["ScrollBar1"].local_offset=pagetemplate.findName("ScrollBar1_Up").ActualHeight+2;
	scrollerConstraints["ScrollBar1"].track_length=pagetemplate.findName("ScrollBar1_TrackBar").ActualHeight;
	scrollerConstraints["ScrollBar1"].start_scroll=scrollerConstraints["ScrollBar1"].local_offset;
	scrollerConstraints["ScrollBar1"].mask_length=pagetemplate.findName("ScrollerWindow").ActualHeight;
	scrollerConstraints["ScrollBar1"].content_length = contentheight;  //scrollcontent.children.getItem(0).ActualHeight;
	scrollerConstraints["ScrollBar1"].scroll_amount=7;  //1-20
	//hide scroll bar if content isnt big enough to scroll
	if(contentheight<=scrollerConstraints["ScrollBar1"].mask_length)
	{
		pagetemplate.findName("ScrollBar1_Container").visibility="Collapsed";
	}
	scrubberRef=pagetemplate.findName("ScrollBar1_Scrubber");
	scrubberRef.height= (scrollerConstraints["ScrollBar1"].mask_length/scrollerConstraints["ScrollBar1"].content_length) * scrollerConstraints["ScrollBar1"].track_length;
	//end set scroller stuff
	currentcontent=pagetemplate;
	rootCanvas.children.add(pagetemplate);
	newcontent=null;
	contentdownloader.removeEventListener("completed", contentdownloaderevent);
	contentdownloaderevent=null;
	contentdownloader=null;
}

function Session_MouseEnter(sender, eventArgs)
{
	sender.textDecorations="Underline";
	sender.foreground="#FFFFFF00";
}

function Session_MouseLeave(sender, eventArgs)
{
	sender.textDecorations="None";
	sender.foreground="#FFFFFFFF";
}

function Session_MouseClick(sender, eventArgs)
{
	var sessiondescriptions = rootCanvas.findName("SessionDescriptions");
	var sessionlist = rootCanvas.findName("ScrollerContent");
	if(sessionlist.opacity==1)
	{
		for(i=0;i<=sessiondescriptions.children.count-1;i++)
		{
			if(sessiondescriptions.children.getItem(i).Tag == sender.Tag)
			{
				sessiondescriptions.children.getItem(i).visibility = "Visible";
				sessionlist.opacity=0.4;
			}
		}
	}
}

function SessionDesc_MouseUp(sender, eventArgs)
{
	var desccanvas = sender.getParent();
	if(desccanvas)
	{
		desccanvas.Visibility = "Collapsed";
	}
	var sessionlist = rootCanvas.findName("ScrollerContent");
	sessionlist.opacity=1;
}

function SetAgendaAssets(sender)
{
	var newcontent = plugIn.content.createFromXaml(sender.ResponseText);
	currentcontent=newcontent;
	rootCanvas.children.add(newcontent);
	//begin set scroller stuff
	var scrollcontent = newcontent.findName("ScrollerContent");
	scrollerConstraints=new Array();
	scrollerConstraints["ScrollBar1"]=new Object();
	scrollerConstraints["ScrollBar1"].container="ScrollerContent";
	scrollerConstraints["ScrollBar1"].direction="V";
	scrollerConstraints["ScrollBar1"].world_offset=newcontent.findName("ScrollerWindow")["Canvas.Top"] + rootCanvas.findName("TopButtons")["Canvas.Top"] + 85; 
	scrollerConstraints["ScrollBar1"].local_offset=newcontent.findName("ScrollBar1_Up").ActualHeight+2;
	scrollerConstraints["ScrollBar1"].track_length=newcontent.findName("ScrollBar1_TrackBar").ActualHeight;
	scrollerConstraints["ScrollBar1"].start_scroll=scrollerConstraints["ScrollBar1"].local_offset;
	scrollerConstraints["ScrollBar1"].mask_length=newcontent.findName("ScrollerWindow").ActualHeight;
	scrollerConstraints["ScrollBar1"].content_length=scrollcontent.children.getItem(0).ActualHeight;
	scrollerConstraints["ScrollBar1"].scroll_amount=7;  //1-20
	//hide scroll bar if content isnt big enough to scroll
	if(scrollcontent.children.getItem(0).ActualHeight<=scrollerConstraints["ScrollBar1"].mask_length)
	{
		newcontent.findName("ScrollBar1_Container").visibility="Collapsed";
	}
	scrubberRef=newcontent.findName("ScrollBar1_Scrubber");
	scrubberRef.height= (scrollerConstraints["ScrollBar1"].mask_length/scrollerConstraints["ScrollBar1"].content_length) * scrollerConstraints["ScrollBar1"].track_length;
	//end set scroller stuff
	newcontent=null;
	contentdownloader.removeEventListener("completed", contentdownloaderevent);
	contentdownloaderevent=null;
	contentdownloader=null;
}

function SetContributorAssets(sender)
{
	var maxwidth = 940;
	var scrollcontainerheight = 370;
	var imgmargin = 50;
	var pagetemplate = plugIn.content.createFromXamlDownloader(sender, "ContributorContent.xaml");
	var xmldoc = createFromXmlDownloader(sender, "contributors.xml");
	var imgtemplate = '<Image Source="" Width="" Height="" Stretch="Fill" Cursor="Hand" MouseLeftButtonUp="Contributor_Click" Tag=""/>';
	var parentcanvas = pagetemplate.findName("ScrollerContent");
	var currenttop = 0;
	var currentleft = 0;
	var rowheight = 0;
	var currentrow = plugIn.content.createFromXaml('<Canvas></Canvas>');
	for (var i=0; i < xmldoc.getElementsByTagName("contributor").length; i++)
	{
		var contributoritem = xmldoc.getElementsByTagName("contributor")[i];
		var imgname = contributoritem.getAttribute("imgpath");
		var linkurl = contributoritem.getAttribute("linkurl");
		var imgwidth = parseFloat(contributoritem.getAttribute("imgwidth"));
		var imgheight = parseFloat(contributoritem.getAttribute("imgheight"));
		var imginst = plugIn.content.createFromXaml(imgtemplate);
		imginst.setSource(sender, imgname);
		imginst.Tag = linkurl;
		imginst.Width=imgwidth;
		imginst.Height=imgheight;
		if((currentleft + imgmargin + imgwidth) < maxwidth)
		{
			imginst["Canvas.Left"] = currentleft;
			currentrow.children.add(imginst);
			currentleft = currentleft + imgwidth + imgmargin;
			if(rowheight<imgheight)
			{
				rowheight=imgheight;
			}
		}else{
			currentrow["Canvas.Left"]=maxwidth/2 - currentleft/2 + imgmargin;
			parentcanvas.children.add(currentrow);
			currentrow = plugIn.content.createFromXaml('<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"></Canvas>');
			rowheight+=imgmargin;
			currentrow["Canvas.Top"] = rowheight+currenttop;
			currenttop+=rowheight;
			rowheight=0;
			currentleft = 0;
			imginst["Canvas.Left"] = currentleft;
			currentrow.children.add(imginst);
			currentleft = currentleft + imgwidth + imgmargin;
			if(rowheight<imgheight)
			{
				rowheight=imgheight;
			}
		}
	}
	currentrow["Canvas.Left"]=maxwidth/2 - currentleft/2 + imgmargin;
	parentcanvas.children.add(currentrow);
	//begin set scroller stuff
	var scrollcontent = pagetemplate.findName("ScrollerContent");
	var contentheight = 0;
	contentheight = scrollcontent.children.getItem(scrollcontent.children.count-1)["Canvas.Top"] + scrollcontent.children.getItem(scrollcontent.children.count-1).ActualHeight + 50 +85;
	scrollerConstraints = new Array();
	scrollerConstraints["ScrollBar1"]=new Object();
	scrollerConstraints["ScrollBar1"].container="ScrollerContent";
	scrollerConstraints["ScrollBar1"].direction="V";
	scrollerConstraints["ScrollBar1"].world_offset=pagetemplate.findName("ScrollerWindow")["Canvas.Top"] + rootCanvas.findName("TopButtons")["Canvas.Top"] + 85; 
	scrollerConstraints["ScrollBar1"].local_offset=pagetemplate.findName("ScrollBar1_Up").ActualHeight+2;
	scrollerConstraints["ScrollBar1"].track_length=pagetemplate.findName("ScrollBar1_TrackBar").ActualHeight;
	scrollerConstraints["ScrollBar1"].start_scroll=scrollerConstraints["ScrollBar1"].local_offset;
	scrollerConstraints["ScrollBar1"].mask_length = pagetemplate.findName("ScrollerWindow").ActualHeight;
	scrollerConstraints["ScrollBar1"].content_length = contentheight;  //scrollcontent.children.getItem(0).ActualHeight;
	scrollerConstraints["ScrollBar1"].scroll_amount=7;  //1-20
	//hide scroll bar if content isnt big enough to scroll
	if(contentheight<=scrollerConstraints["ScrollBar1"].mask_length)
	{
		pagetemplate.findName("ScrollBar1_Container").visibility="Collapsed";
	}
	scrubberRef=pagetemplate.findName("ScrollBar1_Scrubber");
	scrubberRef.height= (scrollerConstraints["ScrollBar1"].mask_length/scrollerConstraints["ScrollBar1"].content_length) * scrollerConstraints["ScrollBar1"].track_length;
	//end set scroller stuff
	currentcontent=pagetemplate;
	rootCanvas.children.add(pagetemplate);
	pagetemplate = null;
	contentdownloader.removeEventListener("completed", contentdownloaderevent);
	contentdownloaderevent=null;
	contentdownloader=null;
}

function createFromXmlDownloader(dl, xmlfile)
{
	var xmlstring = dl.getResponseText(xmlfile);
	var doc;
	if(window.ActiveXObject)
	{
        doc = new ActiveXObject("Microsoft.XMLDOM");
        if(!doc.loadXML(xmlstring))
        {
            throw doc.parseError.reason;
        }
    }else{
        var parser = new DOMParser();
        doc = parser.parseFromString(xmlstring, "text/xml");
		parser=null;
    }
    return doc;
}

function link_enter(sender)
{
	sender.foreground="#FFFFFF00";
}

function link_leave(sender)
{
	sender.foreground="#FF96B3FF";
}

function Contributor_Click(sender)
{
	if(sender.Tag && sender.Tag!="")
	{
		window.open(sender.Tag);
	}
}

function speakerform_click()
{
	document.location="assets/speakerform.doc";
}

function registration_click()
{
	window.open("https://www.clicktoattend.com/invitation.aspx?code=xxxxxx");
}

function email_click()
{
	document.location="mailto:address@email.com";
}

function hotel_click()
{
	window.open("http://www.hotels.com");
}