//////////////////////////////////////////////////////
//
//	Library of Congress
//  Creating the US Silverlight
//	Application Code
//
// 	Author: Lenny Burdette lburdette@schematic.com
// 	Version: 1.0
// 	Date: Fri May 02 12:49:04 -0700 2008
//
//////////////////////////////////////////////////////


var Loc=window.Loc||{};Loc.Debug=false;Loc.Setup={initializeSilverlight:function(){SilverlightUtils.createInstallExperience({height:'535px',width:'980px',host:'slplugin',xaml:'cmn/xaml/base.xaml',id:'myPlugin',background:'#474435',version:'1.0',events:{onLoad:Loc.Setup.afterInitialization,onError:SilverlightUtils.errorHandler}},'installPrompt','postInstallMessage');},afterInitialization:function(plugin,context,root){Utils.registerPlugin(plugin);Loc.plugin=plugin;Loc.root=root;Loc.SilverlightVersion=Silverlight.isInstalled('2.0')?2:1;Loc.Events=new Utils.EventDispatcher();Loc.app=new Loc.Application(Loc.root);}};Loc.XamlList=['preloader','image','mainMenu','button','home','overview','theme','index','explore','panel','textField','stopsNav','imageViewer','zoom','hotspot','label'];Utils.DomLoaded.load(Loc.Setup.initializeSilverlight);if(!window.console){window.console={};window.console.log=function(){};}
Loc.Application=Class.create(ASDL.Sprite,{initialize:function($super,xaml){$super(xaml);var that=this;this.getXamlCache(function(){that.ready=-2;that.setupPreloader();that.downloadAssets();that.checkIfReady();});},getXamlCache:function(continue_to){Loc.XamlCache={};var xamlDownloader=new Utils.XamlDownloader('cmn/xaml/packaged/xaml.zip',{onComplete:function(zip){for(var i=0;i<Loc.XamlList.length;i++){Loc.XamlCache[Loc.XamlList[i]]=zip.save(Loc.XamlList[i]+'.xaml');}
zip.destroy();continue_to();}});},setupPreloader:function(){Loc.preloader=this.addChild(new Loc.Preloader());this.ready++;},downloadAssets:function(){var that=this
downloader=new Utils.Downloader({onComplete:function(downloader){Loc.ButtonZip=downloader;that.ready++;}});downloader.start('assets/interface/buttons/'+Loc.Data.ButtonZip+'.zip');Loc.preloader.addObject(downloader);},checkIfReady:function(){if(this.ready<0){var that=this;setTimeout(function(){that.checkIfReady()},100);return;}
this.getComponents();},getComponents:function(){this.mainMenu=this.addChild(new Loc.MainMenu());this.pageController=this.addChildAt(new Loc.PageController(),0);Loc.Events.broadcast("PageSelected",{pageType:'home'});}})
Loc.Pages={};Loc.Page=Class.create(ASDL.Sprite,{initialize:function($super,xaml){if(!xaml){xaml=Loc.plugin.content.createFromXaml('<Canvas/>');}
$super(xaml);this.set('visibility','collapsed');this.setShowTween({obj:this.xaml,prop:'opacity',begin:0,end:1,func:'linear'},0.5);this.setHideTween({obj:this.xaml,prop:'opacity',begin:1,end:0,func:'linear'},0.5);this.displayTween=new Tween({},1);},setShowTween:function(properties,duration){this._showTweenProperties=properties;this._showTweenDuration=duration;},setHideTween:function(properties,duration){this._hideTweenProperties=properties;this._hideTweenDuration=duration;},show:function(callback){callback=callback||function(){};this.set('visibility','visible');this.displayTween.stop();this.displayTween=new Tween(this._showTweenProperties,this._showTweenDuration);this.displayTween.addListener('onMotionFinished',callback);this.displayTween.start();},hide:function(callback){callback=callback||function(){};var that=this;this.displayTween.stop();this.displayTween=new Tween(this._hideTweenProperties,this._hideTweenDuration);this.displayTween.addListener('onMotionFinished',function(){that.set('visibility','collapsed');callback();});this.displayTween.start();}});Loc.Button=Class.create(ASDL.Sprite,{initialize:function($super,name,options){$super(Loc.XamlCache.button());this.name=name;for(var prop in options){this[prop]=options[prop];}
this.getElements();this.initEvents();this.setImages();this.setState();},getElements:function(){this.imageOn=this.find('imageOn');this.imageOff=this.find('imageOff');},initEvents:function(){this.addEventListener('MouseEnter',this.onEnterHandler.bind(this));this.addEventListener('MouseLeave',this.onLeaveHandler.bind(this));this.addEventListener('MouseLeftButtonDown',this.onClickHandler.bind(this));this.addEventListener('MouseLeftButtonUp',this.onReleaseHandler.bind(this));},setImages:function(){this.imageOn.setSource(Loc.ButtonZip,this.name.replace('.','_on.'));this.imageOff.setSource(Loc.ButtonZip,this.name);},setState:function(){this.set('cursor','hand');this.deselect();this.enable();},onEnterHandler:function(){this.imageOn.visibility='visible';this.imageOff.visibility='collapsed';if(this.onEnter){this.onEnter();}},onLeaveHandler:function(){this.imageOn.visibility='collapsed';this.imageOff.visibility='visible';if(this.onLeave){this.onLeave();}},onClickHandler:function(){if(this.onClick){this.onClick();}},onReleaseHandler:function(){if(this.onRelease){this.onRelease();}},select:function(){this.selected=true;this.disable();this.imageOn.visibility='visible';this.imageOff.visibility='collapsed';},deselect:function(){this.selected=true;this.enable();this.imageOn.visibility='collapsed';this.imageOff.visibility='visible';},enable:function(){this.enabled=true;this.set('isHitTestVisible',true);},disable:function(){this.enabled=false;this.set('isHitTestVisible',false);}});Loc.Details=Class.create(ASDL.Canvas,{initialize:function($super,document){$super();this.createTitle(Loc.Content.documents[document].label);this.createDescription(Loc.Content.text[document+'_description']);this.createCitations(Loc.Content.documents[document].citations);this.hide();},createTitle:function(label){this.title=this.addChild(new ASDL.TextBlock(label.join(' '),{fontFamily:'Times, Times New Roman, serif',fontSize:16,foreground:'#FFFAD77D','canvas.top':278}));this.title.set('canvas.left',490-this.title.get('actualWidth')/2);},createDescription:function(text){this.divider=this.addChild(new Loc.Image('assets/interface/index_divider.png'));this.divider.position(365,323);this.description=this.addChild(new ASDL.TextBlock('',{fontSize:11,fontFamily:'verdana',width:505,textWrapping:'wrap',foreground:'#FFFFFFFF'}));Loc.TextFormatter.format(this.description.xaml,text);this.description.position(400,311);},createCitations:function(citations){var offset=0,citation;for(var label in citations){citation=this.addChild(new Loc.Citation(label,citations[label]));citation.position(0,311+offset);offset+=citation.get('height')+6;}},hide:function(){this.set('visibility','collapsed');},show:function(){this.set('visibility','visible');}});Loc.Citation=Class.create(ASDL.Canvas,{initialize:function($super,label,value){$super();this.createLabel(label);this.createValue(value);this.set('height',this.value.get('actualHeight'));},createLabel:function(text){this.label=this.addChild(new ASDL.TextBlock(text.toUpperCase(),{fontSize:10,fontFamily:'verdana',foreground:'#FFC1C0B2'}));this.label.position(167-this.label.get('actualWidth'),0);},createValue:function(text){this.value=this.addChild(new ASDL.TextBlock(text,{fontSize:10,fontFamily:'verdana',foreground:'#FFFFFFFF',width:160,textWrapping:'wrap'}));this.value.position(177,0);}});Loc.Pages.explore=Class.create(Loc.Page,{initialize:function($super,data){$super(Loc.XamlCache.explore());this.document=Loc.Data.PrimaryDocument;this.pageNum=data.pageNum||0;this.createElements();},createElements:function(){this.imageViewer=this.addChildAt(new Loc.ImageViewer({file:Loc.Data.PrimaryDocument.pages[this.pageNum],imageFrame:{width:850,height:455},pannable:true,zoomable:true,transcribe:true}),0);this.imageViewer.position(130,0);this.addThemes(this.pageNum);this.imageViewer.hideHotspots();this.zoomBar=this.addChild(new Loc.ZoomBar(this,this.document.pages.length,this.pageNum));},onZoomChange:function(data){this.imageViewer.hideTranscript();this.showingTranscript=false;this.imageViewer.zoomTo(data.level);},onShowThemes:function(){this.imageViewer.showHotspots();this.imageViewer.hideTranscript();this.showingTranscript=false;this.showingThemes=true;},onHideThemes:function(){this.imageViewer.hideHotspots();this.showingThemes=true;},onTranscribeToggle:function(){if(!this.showingTranscript){this.imageViewer.showTranscript();this.showingTranscript=true;this.onHideThemes();this.zoomBar.hideThemes();this.zoomBar.zoomControls.positionSlider(1,this.imageViewer.minScale,this.imageViewer.maxScale);}else{this.imageViewer.hideTranscript();this.showingTranscript=false;}},onPageSelected:function(data){this.imageViewer.loadImage(this.document.pages[data.page]);this.addThemes(data.page);if(!this.showingThemes){this.imageViewer.hideHotspots();}
this.showingTranscript=false;this.zoomBar.zoomControls.value(0);},addThemes:function(pageIndex){this.imageViewer.clearHotspots();var themeData=Loc.Content.themes,theme,title,docStop,stop,id;for(var themeName in themeData){id=themeName;theme=themeData[themeName];title=theme.title;docStop=theme.data[0];for(var i=0,j=docStop.stops.length;i<j;i++){stop=docStop.stops[i];if(stop.page===pageIndex){for(var ii=0,jj=stop.hotspots.length;ii<jj;ii++){this.imageViewer.addHotspot(new Loc.ThemeHighlight(stop.hotspots[ii],title,id));}}}}}});Loc.GridImage=Class.create(ASDL.Sprite,{initialize:function($super,file,visibleArea){$super(Loc.XamlCache.image());this.scaleRatio=file.width/file.large.width;this.visibleArea=visibleArea;this.set({width:file.large.width,height:file.large.height});this.createSlices(file.large);},createSlices:function(data){this.slices=[];var slice;for(var y=1,i=0;y<=data.rows;y++){for(var x=1;x<=data.cols;x++,i++){slice=this.addChild(new Loc.GridSlice(data.dir,y,x,data.size));slice.position((x-1)*data.size.width,(y-1)*data.size.height);this.slices.push(slice);}}},scale:function(value){var scaleTransform=this.find('scaleTransform');scaleTransform.scaleX=value*this.scaleRatio;scaleTransform.scaleY=scaleTransform.scaleX;var position={x:this.parent.get('canvas.left'),y:this.parent.get('canvas.top')}
if(value>1.5){for(var i=0,slice=null;slice=this.slices[i];i++){slice.test(position,scaleTransform.scaleX,this.visibleArea);}}else{for(var i=0,slice=null;slice=this.slices[i];i++){slice.hide();}}}});Loc.GridSlice=Class.create(ASDL.Sprite,{initialize:function($super,directory,x,y,size){$super(Loc.XamlCache.image());this.set({width:size.width,height:size.height,visibility:'collapsed'});this.source=directory+x+y+'.png';this.loaded=false;},test:function(parentPosition,scale,visibleArea){if(this.loaded){var that=this;this.test=function(){that.show();}
return;}
var left=parentPosition.x+this.xaml['Canvas.Left']*scale,top=parentPosition.y+this.xaml['Canvas.Top']*scale,right=left+this.xaml.width*scale,bottom=top+this.xaml.height*scale;function visible(x,y){return x>0&&x<visibleArea.width&&y>0&&y<visibleArea.height;}
if(visible(left,top)||visible(left,bottom)||visible(right,top)||visible(right,bottom)){this.load();}},load:function(){this.set('visibility','visible');this.find('imageHolder').source=this.source;this.loaded=true;},show:function(){this.set('visibility','visible');},hide:function(){this.set('visibility','collapsed');}});Loc.Pages.home=Class.create(Loc.Page,{initialize:function($super,data){$super(Loc.XamlCache.home());this.image=this.addChild(new Loc.Image(Loc.Content.pages.home.image,{showPreloader:true}));this.image.set('cursor','hand');this.image.addEventListener("MouseLeftButtonUp",function(){Loc.Events.broadcast("PageSelected",{pageType:'overview'});});}});Loc.Hotspot=Class.create(ASDL.Sprite,{initialize:function($super,data){$super(Loc.XamlCache.hotspot());this.data=data;this.scale=1;this.getElements();this.createButtons();this.setText();this.close();},getElements:function(){this.textBlock=this.find('text');this.highlight=this.find('highlight');this.back=this.find('back');this.front=this.find('front');},createButtons:function(){var that=this;this.transcribeBtn=this.addChild(new Loc.Button('transcribe.png'));this.transcribeBtn.position(6,-14);this.closeBtn=this.addChild(new Loc.Button('close.png'));this.closeBtn.position(6,-14);this.closeBtn.set('visibility','collapsed');this.set('cursor','hand');this.addEventListener("MouseLeftButtonDown",function(){if(that.closed){that.open();}else{that.close();}})},setText:function(){var text=Loc.Content.text[this.data.text];Loc.TextFormatter.format(this.textBlock,text);},setScale:function(value){this.scale=value;this.resizeOverlay();},resizeOverlay:function(){var width=this.data.w*this.scale;this.textBlock.width=width;this.setText();var height=Math.max(this.textBlock.actualHeight,this.data.h*this.scale);this.back.width=width+12;this.back.height=height+12;this.front.width=width+6;this.front.height=height+6;this.highlight.width=width;this.highlight.height=this.data.h*this.scale;},position:function($super,scale){if(scale===null){scale=1;}
this.setScale(scale);$super(this.data.x*scale,this.data.y*scale);},open:function(){this.closed=false;this.transcribeBtn.set('visibility','collapsed');this.closeBtn.set('visibility','visible');this.find('overlay').visibility='visible';this.highlight.visibility='collapsed';},close:function(){this.closed=true;this.closeBtn.set('visibility','collapsed');this.transcribeBtn.set('visibility','visible');this.find('overlay').visibility='collapsed';this.highlight.visibility='visible';}});Loc.Image=Class.create(ASDL.Sprite,{initialize:function($super,source,options){$super(Loc.XamlCache.image());this.onComplete=function(){};this.onDownloadProgress=function(){};this.loaded=false;this.source=source;this.image=this.find('imageHolder');this.options=options||{};if(this.options.width){this.image.width=this.options.width;this.set('width',this.options.width);}
if(this.options.height){this.image.height=this.options.height;this.set('height',this.options.height);}
if(source){this.setSource(source);}
if(this.options.mask){this.setMask(this.options.mask);}
if(this.options.clip){this.setClip(this.options.clip);}},setSource:function(source){var that=this;if(typeof source==='string'){this.loadingToken=this.image.addEventListener('DownloadProgressChanged',function(){that.downloadProgressHandler();});this.image.source=source;if(this.options.showPreloader){Loc.preloader.addObject(this);}}else{this.image.setSource(source[0],source[1]);}},downloadProgressHandler:function(){if(this.image.downloadProgress===1){this.loaded=true;this._removeListener();this.onComplete(this.image);}else{this.onDownloadProgress(this.image);}},setMask:function(url){var mask=this.find('mask');mask.imageSource=url;if(Loc.SilverlightVersion===1){this.find('maskScale').scaleY=this.image.height/this.image.width;}},setClip:function(data){this.clip=Loc.plugin.content.createFromXaml('<RectangleGeometry/>');this.clip.radiusX=8;this.clip.radiusY=8;this.clip.rect='0,0,'+data.width+','+data.height;this.set('clip',this.clip);},moveClip:function(x,y){if(this.clip){this.clip.rect=[x,y,this.options.clip.width,this.options.clip.height].join(',');}},progress:function(){return this.loaded?1:this.image.downloadProgress;},_removeListener:function(){this.image.removeEventListener('DownloadProgressChanged',this.loadingToken);},setAnchorPoint:function(xPercent,yPercent){this.set('renderTransformOrigin',xPercent+','+yPercent);},scale:function(value){var scaleTransform=this.find('scaleTransform');scaleTransform.scaleX=value;scaleTransform.scaleY=value;},destroy:function($super){if(!this.loaded){this.onComplete=function(){};this.onDownloadProgress=function(){};if(this.options.showPreloader){Loc.preloader.removeObject(this);}
this._removeListener();this.image.source=null;}
$super();}})
Loc.ImageViewer=Class.create(ASDL.Sprite,{initialize:function($super,options){$super(Loc.XamlCache.imageViewer());this.minScale=1;this.maxScale=5;this.currentScale=1;for(var name in options){this[name]=options[name];}
this.createImageFrame();this.setupContainer();this.setupPan();this.setupHotspots();if(this.file){this.createImage();this.createLargeImage();this.createTranscript();this.fitToFrame();}},createImageFrame:function(){if(this.imageFrame){var data=this.imageFrame;this.find('clip').rect='0,0,'+data.width+','+data.height;this.set(data);}
this.frameCenter={x:data.width/2,y:data.height/2}},setupContainer:function(){this.container=this.addChild(new ASDL.Canvas());},createImage:function(){this.image=this.container.addChild(new Loc.Image(this.file.file,{showPreloader:true,mask:this.file.mask,width:this.file.width,height:this.file.height}));},createLargeImage:function(){if(this.file.large&&this.zoomable){this.largeImage=this.container.addChild(new Loc.GridImage(this.file,this.imageFrame));this.largeImage.scale(this.currentScale);this.maxScale=this.file.large.width/this.file.width;}},createTranscript:function(){if(this.file.transcript&&this.transcribe){this.transcript=this.container.addChild(new Loc.Image(this.file.transcript.file,{showPreloader:true,clip:{width:776,height:97},width:this.file.width,height:this.file.height}));this.transcript.set('visibility','collapsed');if(!this.loup){this.loup=this.addChild(new Loc.Image('assets/interface/loupe.png'));this.loup.set({visibility:'collapsed','canvas.left':20,'canvas.top':20});}
this.createScrollControl();}},setupHotspots:function(){this.hotspots=[];this.hotspotLayer=this.addChild(new ASDL.Canvas());},setupPan:function(){if(this.pannable){var that=this;this.panControl=this.addChild(new Loc.PanControl({width:this.get('width'),height:this.get('height'),target:this.container,onDrag:function(){that.setInsideBounds();that.setAnchor();that.moveHotspots();that.updateLargeImage();}}));}},loadImage:function(file){if(this.image){this.image.destroy();this.container.removeChild(this.image);}
if(this.largeImage){this.container.removeChild(this.largeImage);this.largeImage=null;}
if(this.transcript){this.hideTranscript();this.container.removeChild(this.transcript);this.transcript=null;}
this.file=file;this.createImage();this.createLargeImage(this.file);this.createTranscript();this.fitToFrame();},zoomTo:function(percent){this.scale(this.minScale+(this.maxScale-this.minScale)*percent);this.translate();},scrollTo:function(position){this.container.set('canvas.top',-position*this.currentScale);this.moveHotspots();},addHotspot:function(displayObject){this.hotspots.push(displayObject);this.hotspotLayer.addChild(displayObject);displayObject.position(this.currentScale);},clearHotspots:function(){for(var i=0,j=this.hotspots.length;i<j;i++){this.hotspotLayer.removeChild(this.hotspots[i]);}
this.hotspots=[];},showHotspots:function(){this.hotspotLayer.set('visibility','visible');},hideHotspots:function(){this.hotspotLayer.set('visibility','collapsed');},showTranscript:function(){if(this.transcript){this.panControl.set('visibility','collapsed');this.scrollControl.set('visibility','visible');this.scale(1);this.scrollTo(0);this.loup.position(20,-10);this.container.set('canvas.left',this.file.transcript.offsetX);this.loup.set('visibility','visible');this.transcript.set('visibility','visible');this.alignClip();this.moveHotspots();}},hideTranscript:function(){if(this.transcript){this.panControl.set('visibility','visible');this.scrollControl.set('visibility','collapsed');this.loup.set('visibility','collapsed');this.transcript.set('visibility','collapsed');}},setAnchor:function(){this.anchor={x:this.frameCenter.x-this.container.get('canvas.left'),y:this.frameCenter.y-this.container.get('canvas.top'),s:this.currentScale}},moveHotspots:function(){var data={'canvas.left':this.container.get('canvas.left'),'canvas.top':this.container.get('canvas.top')}
this.hotspotLayer.set(data);for(var i=0,j=this.hotspots.length;i<j;i++){this.hotspots[i].position(this.currentScale);}},translate:function(){var newAnchorLeft=this.anchor.x*this.currentScale/this.anchor.s,newAnchorTop=this.anchor.y*this.currentScale/this.anchor.s;this.container.set({'canvas.left':this.container.get('canvas.left')-(newAnchorLeft-this.anchor.x),'canvas.top':this.container.get('canvas.top')-(newAnchorTop-this.anchor.y)});this.setInsideBounds();this.setAnchor();this.moveHotspots();},scale:function(value){value=value<this.minScale?this.minScale:value;value=value>this.maxScale?this.maxScale:value;this.image.scale(value);this.currentScale=value;this.updateLargeImage();this.moveHotspots();},updateLargeImage:function(){if(this.largeImage){this.largeImage.scale(this.currentScale);}},scaleWidthTo:function(pixelValue){this.scale(pixelValue/this.file.width);},center:function(){this.container.set('canvas.left',this.frameCenter.x-this.imageWidth()/2);},setInsideBounds:function(){var scale=this.currentScale,margin=this.currentScale>1.5?160:80,boundaryX=this.file.width,boundaryY=this.file.height,width=this.get('width'),height=this.get('height'),left=this.container.get('canvas.left'),top=this.container.get('canvas.top');if(left<-boundaryX*scale+margin){this.container.xaml['canvas.left']=-boundaryX*scale+margin;}else if(left>width-margin){this.container.xaml['canvas.left']=width-margin;}
if(top<-boundaryY*scale+margin){this.container.xaml['canvas.top']=-boundaryY*scale+margin;}else if(top>height-margin){this.container.xaml['canvas.top']=height-margin;}},fitToFrame:function(){if(this.file.width>this.get('width')-60){this.minScale=(this.get('width')-60)/this.file.width;this.scale(this.minScale);}
this.center();this.scrollTo(0);this.setAnchor();this.moveHotspots();},alignClip:function(){var x=this.loup.get('canvas.left')+28-this.container.get('canvas.left'),y=this.loup.get('canvas.top')+37-this.container.get('canvas.top');this.transcript.moveClip(x,y);},scrollTranscriptTo:function(diff){var loupY=this.loup.get('canvas.top')+diff;loupY=loupY<=-15?-15:loupY;loupY=loupY>=this.get('height')-130?this.get('height')-130:loupY;this.loup.set('canvas.top',loupY);var y=this.loup.get('canvas.top')/(this.get('height')-157);this.scrollTo(y*(this.file.height-this.get('height')));this.alignClip();},imageWidth:function(){return this.file.width*this.currentScale;},imageHeight:function(){return this.file.height*this.currentScale;},createScrollControl:function(){if(this.scrollControl){return;}
var that=this;this.lastYPosition=20;this.scrollControl=this.addChild(new ASDL.Canvas());this.scrollControl.set({background:'#00000000',width:this.get('width'),height:this.get('height'),visibility:'collapsed'});this.scrollControl.addEventListener('MouseLeftButtonDown',function(s,a){that.lastYPosition=a.getPosition(that.xaml).y
that.scrollControl.xaml.captureMouse();that.dragging=true;});this.scrollControl.addEventListener('MouseLeftButtonUp',function(s,a){if(that.dragging){that.dragging=false;that.scrollControl.xaml.releaseMouseCapture();}});this.scrollControl.addEventListener('MouseMove',function(s,a){if(that.dragging){that.scrollTranscriptTo(a.getPosition(that.xaml).y-that.lastYPosition);that.lastYPosition=a.getPosition(that.xaml).y;}});this.mouseLeaveOutsideToken=Loc.root.addEventListener('MouseLeave',function(){if(that.dragging){that.dragging=false;that.scrollControl.xaml.releaseMouseCapture();}});},destroy:function($super){if(this.mouseLeaveOutsideToken){Loc.root.removeEventListener('MouseLeave',this.mouseLeaveOutsideToken);}
$super();}});Loc.Pages.index=Class.create(Loc.Page,{initialize:function($super){$super(Loc.XamlCache.index());this.addEvent();this.getDocuments();this.createSlideshow();this.createButtons();this.createDetails();this.createExploreButton();this.activate(this.documents.length-1);},addEvent:function(){var that=this;Loc.Events.subscribe("SlideshowItemSelected",function(event){that.activate(event.index);});},getDocuments:function(){var docObject=Loc.Content.documents,doc;this.documents=[];for(var key in docObject){doc=docObject[key];doc.key=key;this.documents[doc.index]=doc;}
this.documents=this.documents.reverse();},createSlideshow:function(){this.slideshow=this.addChild(new Loc.Slideshow(this.documents));this.slideshow.position(0,20);},createButtons:function(){var that=this;this.lastBtn=this.addChild(new Loc.Button('last_light.png'));this.lastBtn.position(25,325);this.lastBtn.onClick=function(){that.last();}
this.nextBtn=this.addChild(new Loc.Button('next_light.png'));this.nextBtn.position(920,325);this.nextBtn.onClick=function(){that.next();}},createDetails:function(){this.detailsArray=[];var details;for(var i=0,doc=null;doc=this.documents[i];i++){details=this.addChild(new Loc.Details(doc.key));this.detailsArray.push(details);}},createExploreButton:function(){this.button=this.addChild(new Loc.Button('explore_small.png'));this.button.position(this.get('width')/2-50,145);this.button.onRelease=function(){Loc.Events.broadcast('PageSelected',{pageType:'explore'});}
this.button.set('opacity',0);this.buttonTween=new Tween({},.5);},activate:function(index){this.slideshow.activate(index);for(var i=0,details=null;details=this.detailsArray[i];i++){if(i===index){details.show();}else{details.hide();}}
this.buttonTween.stop();if(index===this.documents.length-1){this.button.set('visibility','visible');this.buttonTween=new Tween({obj:this.button.xaml,prop:'opacity',end:1,func:'easeOutExpo'},1).startFromHere();}else{var that=this;this.buttonTween=new Tween({obj:this.button.xaml,prop:'opacity',end:0,func:'easeOutExpo'},1).addListener('onMotionFinished',function(){that.button.set('visibility','collapsed');}).startFromHere();}
this.currentIndex=index;this.updateButtons();},next:function(){if(this.currentIndex+1<this.documents.length){this.activate(this.currentIndex+1);}},last:function(){if(this.currentIndex-1>-1){this.activate(this.currentIndex-1);}},updateButtons:function(){if(this.currentIndex>=this.documents.length-1){this.nextBtn.disable();this.nextBtn.set('opacity',0.25);}else{this.nextBtn.enable();this.nextBtn.set('opacity',1);}
if(this.currentIndex<=0){this.lastBtn.disable();this.lastBtn.set('opacity',0.25);}else{this.lastBtn.enable();this.lastBtn.set('opacity',1);}}});Loc.MainMenu=Class.create(ASDL.Sprite,{initialize:function($super){$super(Loc.XamlCache.mainMenu());this.initEvents();this.createTitle();this.createButtons();},initEvents:function(){Loc.Events.subscribe("PageSelected",this.selectButton.bind(this));},createTitle:function(){var data=Loc.Data.MainMenu.title;this.title=this.addChild(new Loc.Image(data.file));this.title.position(data.x,data.y);},createButtons:function(){this.buttons={};var button,buttonData;for(var buttonName in Loc.Data.MainMenu.buttons){buttonData=Loc.Data.MainMenu.buttons[buttonName];button=this.addChild(new Loc.Button(buttonName+'.jpg',{data:buttonData.data}));button.set({'canvas.left':buttonData.x,'canvas.top':buttonData.y});button.onClick=function(){Loc.Events.broadcast("PageSelected",this.data);}
this.buttons[buttonName]=button;}
var data=Loc.Data.MainMenu.divider,divider=this.addChild(new Loc.Image(data.file));divider.position(data.x,data.y);},selectButton:function(event){var button;for(var name in this.buttons){button=this.buttons[name];if(button.data.pageType===event.pageType&&(!event.id||button.data.id===event.id)){button.select();}else{button.deselect();}}}});Loc.Pages.overview=Class.create(Loc.Page,{initialize:function($super){$super(Loc.XamlCache.overview());this.content=Loc.Content.pages.overview;this.getComponents();},getComponents:function(){this.panel=this.addChild(new Loc.Panel(this.content.panel));this.exploreBtn=this.addChild(new Loc.Button('explore.png'));this.exploreBtn.position(302,5);this.exploreBtn.onClick=function(){Loc.Events.broadcast('PageSelected',{pageType:'explore'});}
this.imageViewer=this.addChildAt(new Loc.ImageViewer({file:Loc.Data.PrimaryDocument.pages[0],imageFrame:{width:685,height:455},pannable:true}),0);this.imageViewer.position(295,0);}});Loc.PageController=Class.create(ASDL.Canvas,{initialize:function($super){$super();this.set({'canvas.top':80,width:980,height:455});this.initEvents();},initEvents:function(){Loc.Events.subscribe("PageSelected",this.loadPage.bind(this));},loadPage:function(event){var page=new Loc.Pages[event.pageType](event),that=this;if(this.currentPage){var oldPage=this.currentPage;this.currentPage.hide(function(){oldPage.destroy();});}
this.addChild(page);this.currentPage=page;this.currentPage.show();}});Loc.PanControl=Class.create(ASDL.Canvas,{initialize:function($super,options){$super();for(var property in options){this[property]=options[property];}
this.set({width:options.width,height:options.height,cursor:'hand',background:'#00000000'});this.setupToolTip();this.setup();},setup:function(){this.initX=this.target.get('canvas.left');this.initY=this.target.get('canvas.top');this.addEventListener('MouseLeftButtonDown',this.startDrag.bind(this));this.addEventListener('MouseLeftButtonUp',this.stopDrag.bind(this));this.addEventListener('MouseMove',this.drag.bind(this));this.addEventListener('MouseEnter',this.showToolTip.bind(this));Loc.root.addEventListener('MouseLeave',this.stopDrag.bind(this));},startDrag:function(s,args){this.xaml.captureMouse();this.dragging=true;this.beginDragX=args.getPosition(null).x;this.beginDragY=args.getPosition(null).y;},stopDrag:function(){if(this.dragging){this.xaml.releaseMouseCapture();this.dragging=false;}},drag:function(s,args){var that=this;setTimeout(function(){that.dragLogic(s,args);},0);},dragLogic:function(s,args){if(this.dragging){var currentX=args.getPosition(null).x,currentY=args.getPosition(null).y;this.target.xaml['Canvas.Top']+=currentY-this.beginDragY;this.target.xaml['Canvas.Left']+=currentX-this.beginDragX;this.beginDragX=currentX;this.beginDragY=currentY;if(this.onDrag){this.onDrag();}}
this.tooltip.position(args.getPosition(this.xaml).x+6,args.getPosition(this.xaml).y+12);},setupToolTip:function(){this.tooltip=this.addChild(new ASDL.Canvas());this.tooltip.set('visibility','collapsed');this.tooltip.addChild(new ASDL.TextBlock('Click and Drag',{fontFamily:'verdana',fontSize:'11',fontWeight:'bold',foreground:'#CC000000','canvas.left':1,'canvas.top':1}));this.tooltip.addChild(new ASDL.TextBlock('Click and Drag',{fontFamily:'verdana',fontSize:'11',fontWeight:'bold',foreground:'#FFFFFFFF'}));if(typeof Loc.PanControlTips==='undefined'){Loc.PanControlTips=5;}},showToolTip:function(s,a){if(Loc.PanControlTips&&!this.showingToolTip){this.showingToolTip=true;Loc.PanControlTips--;var that=this;this.toolTipInterval=setTimeout(function(){that.tooltip.set('visibility','visible');setTimeout(function(){that.hideToolTip();},1000);},50);}},hideToolTip:function(){new Tween({obj:this.tooltip.xaml,prop:'opacity',begin:1,end:0,func:'linear'},0.5).start();this.removeAllListeners('MouseEnter');}});Loc.Panel=Class.create(ASDL.Sprite,{initialize:function($super,contentArray){$super(Loc.XamlCache.panel());this.find('panelImage').source=Loc.Data.Panel.file;this.addContent(contentArray);},addContent:function(content){var child;if(content instanceof Array){for(var i=0,item=null;item=content[i];i++){child=this.addChild(Loc.PanelFactory[item.type](item.args));child.set(item.properties);}}}});Loc.PanelFactory={Image:function(args){return new Loc.Image(args.source);},TextField:function(args){return new Loc.TextField(args.text,args.options);},Button:function(args){return new Loc.Button(args.filename);},TextBlock:function(args){return new ASDL.TextBlock(Loc.Content.text[args.text],args.properties)}}
Loc.Preloader=Class.create(ASDL.Sprite,{initialize:function($super){$super(Loc.XamlCache.preloader());this.setup();this.objectsInProgress=[];},setup:function(){this.set({visibility:'collapsed','canvas.left':Loc.root.width/2-this.xaml.width/2,'canvas.top':Loc.root.height/2-this.xaml.height/2});this.animateArrow=this.find("moveArrow");this.mask1=this.find("mask1");this.mask2=this.find("mask2");this.percentDone=this.find("percentDone");},addObject:function(object){if(!this.pollInterval){this.startPoll();}
this.objectsInProgress.push(object);},removeObject:function(object){for(var i=0,j=this.objectsInProgress.length;i<j;i++){if(object===this.objectsInProgress[i]){this.objectsInProgress.splice(i,1);}}},removeObject:function(index){this.objectsInProgress.splice(index,1);},startPoll:function(){var that=this;this.stopPoll();this.pollInterval=setInterval(function(){that.update();},50);},stopPoll:function(){clearInterval(this.pollInterval);this.pollInterval=null;},update:function(){var totalProgress=1,count=this.objectsInProgress.length,progress;for(var i=0;i<count;i++){if(this.objectsInProgress[i]){progress=this.objectsInProgress[i].progress();totalProgress=progress;if(progress>=1){this.removeObject(i);}}else{this.removeObject(i);}}
this.display(totalProgress);if(this.objectsInProgress.length<1){this.stopPoll();this.hide();}},display:function(progress){if(!this.xaml){return;}
if(progress<1){this.show();}else{this.hide();}
var progressAt=progress/100+0.1;this.mask1.offset=progressAt;this.mask2.offset=progressAt;this.percentDone.text=Math.round(progress*100)+"%";this.lastProgress=progress;},show:function(){this.set('visibility','visible');if(!this.playing){this.animateArrow.begin();}
this.playing=true;},hide:function(){this.set('visibility','collapsed');this.animateArrow.stop();this.playing=false;}});Loc.Slideshow=Class.create(ASDL.Canvas,{initialize:function($super,documents){$super();this.documents=documents;this.createItems();this.moveTween=new Tween({},.5);},createItems:function(){this.items=[];var doc,item,offset=0;for(var i=0,j=this.documents.length;i<j;i++){doc=this.documents[i];item=this.addChild(new Loc.SlideshowItem(i,doc.thumbnail));item.position(offset,0);offset+=item.get('width');this.items.push(item);}
this.set('width',offset);},activate:function(index){for(var i=0,item=null;item=this.items[i];i++){if(i===index){item.activate();this.centerOn(item);}else{item.deactivate();}}
this.currentIndex=index;},centerOn:function(item){this.moveTween.stop();var midpoint=item.get('canvas.left')+item.get('width')/2;this.moveTween=new Tween({obj:this.xaml,prop:'canvas.left',end:-midpoint+490,func:'easeOutExpo'},1).start();}});Loc.SlideshowItem=Class.create(ASDL.Canvas,{initialize:function($super,id,data){$super();this.id=id;this.createImage(data);this.addEvent();this.set({width:data.width,height:data.height,cursor:'hand'});},createImage:function(data){this.image=this.addChild(new Loc.Image(data.file,{showPreloader:true}));this.image.setAnchorPoint(0.5,0.5);this.image.set({width:data.width,height:data.height})
this.scaleTween=new Tween({},.5);this.scaleTo(0.75);},addEvent:function(){var index=this.id;this.addEventListener('MouseLeftButtonDown',function(){Loc.Events.broadcast("SlideshowItemSelected",{index:index});});},activate:function(){this.set('ishittestvisible',false);this.scaleTo(1);},deactivate:function(){this.set('ishittestvisible',true);this.scaleTo(0.75);},scaleTo:function(value){this.scaleTween.stop();this.scaleTween=new Tween([{obj:this.image.find('scaleTransform'),prop:'scaleX',end:value,func:'easeOutExpo'},{prop:'scaleY'}],.5).startFromHere();}});Loc.StopsNav=Class.create(ASDL.Sprite,{initialize:function($super,label){$super(Loc.XamlCache.stopsNav());this.createButtons();this.setLabel(label);},createButtons:function(){this.lastBtn=this.addChild(new Loc.Button('last.png'));this.nextBtn=this.addChild(new Loc.Button('next.png'));},setLabel:function(label){this.line1=this.find('line1');this.line2=this.find('line2');if(label instanceof Array){Loc.TextFormatter.format(this.line1,label[0]);if(label[1]){Loc.TextFormatter.format(this.line2,label[1]);}else{this.line2.text='';}}else{Loc.TextFormatter.format(this.line1,label);}
this.line1['canvas.left']=this.get('width')/2-this.line1.actualWidth/2;this.line2['canvas.left']=this.get('width')/2-this.line2.actualWidth/2;this.positionButtons(Math.max(this.line1.actualWidth,this.line2.actualWidth));},positionButtons:function(space){this.lastBtn.position(this.get('width')/2-(space/2+25)-48,2);this.nextBtn.position(this.get('width')/2+(space/2+25),2);}});Loc.TextField=Class.create(ASDL.Sprite,{initialize:function($super,textKey,options){$super(Loc.XamlCache.textField());this.getElements();this.height=this.get('height');this.width=this.get('width');this.scrollSpeed=10;for(var prop in options){this[prop]=options[prop];}
this.createButtons();this.setHeight(this.height);this.setText(textKey);},getElements:function(){this.clip=this.find('clip');this.text=this.find('text');},createButtons:function(){this.downBtn=this.addChild(new Loc.Button('scrollDown.png'));this.upBtn=this.addChild(new Loc.Button('scrollUp.png'));this.downBtn.set({visibility:'collapsed','canvas.left':this.width-30});this.upBtn.set({visibility:'collapsed','canvas.left':this.width-28*2});var that=this;this.downBtn.onClick=function(){that.startScrollDown();}
this.upBtn.onClick=function(){that.startScrollUp();}
this.downBtn.onRelease=function(){that.stopScroll();}
this.upBtn.onRelease=function(){that.stopScroll();}},setHeight:function(height){this.height=height||this.height;this.downBtn.set('canvas.top',this.height+3);this.upBtn.set('canvas.top',this.height+3);this.clip.rect='0,0,'+this.width+','+this.height;},setText:function(textKey){Loc.TextFormatter.format(this.text,Loc.Content.text[textKey]);this.updateScroll();},updateScroll:function(){if(this.text.actualHeight>this.height){this.showButtons();this.calculateScroll();this.updateButtons();}else{this.hideButtons();this.resetScroll();}},showButtons:function(){this.downBtn.set('visibility','visible');this.upBtn.set('visibility','visible');},hideButtons:function(){this.downBtn.set('visibility','collapsed');this.upBtn.set('visibility','collapsed');},updateButtons:function(){if(this.text['canvas.top']<=this.maxScroll){this.downBtn.disable();this.downBtn.onLeaveHandler();this.downBtn.set('opacity',0.5);}else{this.downBtn.enable();this.downBtn.set('opacity',1);}
if(this.text['canvas.top']>=0){this.upBtn.disable();this.upBtn.onLeaveHandler();this.upBtn.set('opacity',0.5);}else{this.upBtn.enable();this.upBtn.set('opacity',1);}},calculateScroll:function(){this.maxScroll=this.height-this.text.actualHeight;},resetScroll:function(){this.text['canvas.top']=0;},startScrollDown:function(){this.initScroll('Down');},startScrollUp:function(){this.initScroll('Up');},initScroll:function(direction){this['scroll'+direction]();var that=this;this.pauseInt=setTimeout(function(){that.stopScroll();that.scrollInt=setInterval(function(){that['scroll'+direction]();},50);},250);},stopScroll:function(){clearInterval(this.pauseInt);clearInterval(this.scrollInt);},scrollDown:function(){if(this.text['canvas.top']-this.scrollSpeed>=this.maxScroll){this.text['canvas.top']-=this.scrollSpeed;}else{this.text['canvas.top']=this.maxScroll;this.stopScroll();}
this.updateButtons();},scrollUp:function(){if(this.text['canvas.top']+this.scrollSpeed<=0){this.text['canvas.top']+=this.scrollSpeed;}else{this.text['canvas.top']=0;this.stopScroll();}
this.updateButtons();}});Loc.TextFormatter={format:function(textBlock,text){var that=Loc.TextFormatter,tempTextBlock;tempTextBlock=that.createXaml(text);that.assignInlines(textBlock,tempTextBlock);},createXaml:function(text){return Loc.plugin.content.createFromXaml('<TextBlock>'+text+'</TextBlock>');},assignInlines:function(textBlock,tempTextBlock){var inline;textBlock.text='';for(var i=0,j=tempTextBlock.inlines.count;i<j;i++){inline=tempTextBlock.inlines.removeAt(0);textBlock.inlines.add(inline);}}}
Loc.ThemeHighlight=Class.create(ASDL.Canvas,{initialize:function($super,data,title,id){$super();this.data=data;this.title=title;this.id=id;this.set({width:data.w,height:data.h,'canvas.left':data.x,'canvas.top':data.y,background:'#33FFFF00',cursor:'hand'});this.createLabel();this.initEvents();},createLabel:function(){this.label=this.addChild(new Loc.ThemeHighlightLabel(this.title));this.label.set('opacity',0.75);this.label.position(this.data.highlightX||this.data.w,this.data.highlightY||0);},initEvents:function(){var that=this;this.addEventListener('MouseLeftButtonUp',function(){Loc.Events.broadcast("PageSelected",{pageType:'theme',id:that.id});});this.addEventListener('MouseEnter',function(){that.label.set('opacity',1);});this.addEventListener('MouseLeave',function(){that.label.set('opacity',0.75);});},position:function($super,scale){if(scale===null){scale=1;}
this.setScale(scale);this.label.position((this.data.highlightX||this.data.w)*scale,(this.data.highlightY||0)*scale);$super(this.data.x*scale,this.data.y*scale);},setScale:function(value){this.set({width:this.data.w*value,height:this.data.h*value});}});Loc.ThemeHighlightLabel=Class.create(ASDL.Sprite,{initialize:function($super,label){$super(Loc.XamlCache.label());this.setText(label);},setText:function(text){var label=this.find('label'),fill=this.find('fill'),shadow=this.find('shadow');label.text=text;fill.width=label.actualWidth+14+4;shadow.width=label.actualWidth+14+3+4+3;}});Loc.Pages.theme=Class.create(Loc.Page,{initialize:function($super,data){$super(Loc.XamlCache.theme());this.theme=Loc.Content.themes[data.id];this.documents=Loc.Content.documents;this.text=Loc.Content.text;this.setState();this.getComponents();this.loadDocument();this.updateInterface();},setState:function(){this.docStopIndex=0;this.stopIndex=0;},loadDocument:function(){this.docStop=this.theme.data[this.docStopIndex];this.stop=this.docStop.stops[this.stopIndex];this.document=this.documents[this.docStop.document];this.page=this.document.pages[this.stop.page];this.imageViewer.loadImage(this.page);this.imageViewer.scrollTo(this.stop.scroll);this.createHotspots();Loc.TextFormatter.format(this.citationBlock.xaml,this.text[this.docStop.document+'_citation']);Loc.TextFormatter.format(this.citationBlock2.xaml,this.text[this.docStop.document+'_citation']);this.stopsNav.setLabel(this.document.label);this.exploreBtn.set('visibility',this.docStopIndex===0?'visible':'collapsed');},getComponents:function(){this.createImageViewer();this.createStopsNav();this.createPanel();this.createNavPanel();this.createCitation();this.createExploreButton();},createImageViewer:function(){this.imageViewer=this.addChild(new Loc.ImageViewer({imageFrame:{width:685,height:418},pannable:true}));this.imageViewer.position(295,0);},createStopsNav:function(){this.stopsNav=this.addChild(new Loc.StopsNav([this.theme.title]));this.stopsNav.position(295,418);this.lastBtn=this.stopsNav.lastBtn;this.nextBtn=this.stopsNav.nextBtn;var that=this;this.lastBtn.onClick=function(){that.lastStop();}
this.nextBtn.onClick=function(){that.nextStop();}},createPanel:function(){this.panel=this.addChild(new Loc.Panel(this.theme.panel));this.antecedentBtn=this.panel.addChild(new Loc.Button('where_did_this_idea_come_from.png'));this.antecedentBtn.position(46,406);var that=this;this.antecedentBtn.onRelease=function(){that.nextDocStop();}},createNavPanel:function(){this.navPanel=this.addChild(new Loc.Panel([this.theme.panel[0]]));this.navPanel.set('visibility','collapsed');var offsetAfterTitle=this.panel.getChildAt(1).get('canvas.top');offsetAfterTitle-=(this.theme.data.length>=7)?10:0;offsetAfterTitle=Math.max(80,offsetAfterTitle);var backText=['BACK <Run FontStyle="Italic">to</Run> PRIMARY DOCUMENT'];this.primaryBtn=this.navPanel.addChild(new Loc.AntecedentButton(backText));this.primaryBtn.position(39,offsetAfterTitle);var that=this;this.primaryBtn.onRelease=function(){that.gotoDocStop(0);}
this.buttons=[];var doc,j=1;for(var i=0,docStop=null;docStop=this.theme.data[i];i++){doc=this.documents[docStop.document];if(doc!==Loc.Data.PrimaryDocument){var button=this.navPanel.addChild(new Loc.AntecedentButton(doc.label));button.documentKey=docStop.document;button.documentIndex=j;button.position(39,offsetAfterTitle+42*j++);button.onRelease=function(){that.gotoDocStop(this.documentIndex);}
this.buttons.push(button);}}},createCitation:function(){var properties={fontSize:9,fontFamily:'verdana',foreground:'#88FFFFFF',width:250,textWrapping:'wrap'}
this.citationBlock=this.addChild(new ASDL.TextBlock('',properties));this.citationBlock.position(27.5,340);this.citationBlock2=this.addChild(new ASDL.TextBlock('',properties));var offset=this.navPanel.getChildAt(this.navPanel.children.length-1).get('canvas.top')+45;offset=Math.max(340,offset);this.citationBlock2.position(27.5,offset);this.citationBlock2.set('visibility','collapsed');},createExploreButton:function(){this.exploreBtn=this.addChild(new Loc.Button('explore.png'));this.exploreBtn.position(302,5);var that=this;this.exploreBtn.onClick=function(){Loc.Events.broadcast('PageSelected',{pageType:'explore',pageNum:that.theme.data[0].stops[0].page});}},createHotspots:function(){this.imageViewer.clearHotspots();for(var i=0,data=null;data=this.stop.hotspots[i];i++){this.imageViewer.addHotspot(new Loc.Hotspot(data));}},nextStop:function(){if(this.docStop.stops[this.stopIndex+1]){this.stopIndex++;this.loadDocument();this.updateInterface();}},lastStop:function(){if(this.docStop.stops[this.stopIndex-1]){this.stopIndex--;this.loadDocument();this.updateInterface();}},nextDocStop:function(){this.gotoDocStop(this.docStopIndex+1);},lastDocStop:function(){this.gotoDocStop(this.docStopIndex-1);},gotoDocStop:function(index){if(this.theme.data[index]){this.docStopIndex=index;this.stopIndex=0;this.loadDocument();this.updateInterface();}},updateInterface:function(){if(this.docStopIndex===0){this.panel.set('visibility','visible');this.navPanel.set('visibility','collapsed');this.citationBlock.set('visibility','visible');this.citationBlock2.set('visibility','collapsed');}else{this.panel.set('visibility','collapsed');this.navPanel.set('visibility','visible');this.citationBlock2.set('visibility','visible');this.citationBlock.set('visibility','collapsed');}
for(var i=0,button=null;button=this.buttons[i];i++){if(button.documentKey===this.docStop.document){button.select();}else{button.deselect();}}
if(this.docStop.stops.length<=1){this.lastBtn.set('visibility','collapsed');this.nextBtn.set('visibility','collapsed');}else{this.lastBtn.set('visibility','visible');this.nextBtn.set('visibility','visible');}
if(this.stopIndex===0){this.lastBtn.disable();this.lastBtn.onLeaveHandler();this.lastBtn.set('opacity',0.5);}else{this.lastBtn.enable();this.lastBtn.set('opacity',1);}
if(!this.docStop.stops[this.stopIndex+1]){this.nextBtn.disable();this.nextBtn.onLeaveHandler();this.nextBtn.set('opacity',0.5);}else{this.nextBtn.enable();this.nextBtn.set('opacity',1);}}});Loc.AntecedentButton=Class.create(Loc.Button,{initialize:function($super,text,options){$super('antecedent.png',options);this.width=217;this.height=44;this.createTextBlocks();this.formatText(text);},createTextBlocks:function(){var params={fontsize:'9',fontfamily:'verdana',foreground:'#FFD7D7C8'};this.line1=this.addChild(new ASDL.TextBlock('',params));this.line2=this.addChild(new ASDL.TextBlock('',params));},formatText:function(text){Loc.TextFormatter.format(this.line1.xaml,text[0]);if(text[1]){Loc.TextFormatter.format(this.line2.xaml,text[1]);this.line1.set('canvas.top',this.height/2-this.line1.get('actualHeight'));this.line2.set('canvas.top',this.height/2);}else{this.line1.set('canvas.top',this.height/2-this.line1.get('actualHeight')/2);}
this.line1.set('canvas.left',this.width/2-this.line1.get('actualWidth')/2);this.line2.set('canvas.left',this.width/2-this.line2.get('actualWidth')/2);}});Loc.ZoomBar=Class.create(ASDL.Sprite,{initialize:function($super,listener,pageCount,currentPage){$super(Loc.XamlCache.zoom());this.listener=listener;this.createPagination(pageCount,currentPage);this.createButtons();this.createZoomControls();},createPagination:function(pageCount,currentPage){if(pageCount<=1){return;}
var that=this;this.paginator=this.addChild(new Loc.Paginator(pageCount,currentPage));this.paginator.onPageSelected=function(index){that.broadcast('onPageSelected',{page:index});}},createButtons:function(){var that=this;this.transcribeBtn=this.addChild(new Loc.Button('transcribe.jpg'));this.transcribeBtn.position(12,70);this.transcribeBtn.onClick=function(){that.broadcast('onTranscribeToggle');}
this.showThemeBtn=this.addChild(new Loc.Button('show_themes.jpg'));this.showThemeBtn.position(12,105);this.showThemeBtn.onClick=function(){that.broadcast('onShowThemes');this.set('visibility','collapsed');that.hideThemeBtn.set('visibility','visible');}
this.hideThemeBtn=this.addChild(new Loc.Button('hide_themes.jpg'));this.hideThemeBtn.position(12,105);this.hideThemeBtn.set('visibility','collapsed');this.hideThemeBtn.onClick=function(){that.broadcast('onHideThemes');this.set('visibility','collapsed');that.showThemeBtn.set('visibility','visible');}},hideThemes:function(){this.hideThemeBtn.set('visibility','collapsed');this.showThemeBtn.set('visibility','visible');},createZoomControls:function(){var that=this;this.zoomControls=this.addChild(new Loc.ZoomControls(this));this.zoomControls.onZoom=function(value){that.broadcast('onZoomChange',{level:value});}},broadcast:function(message,data){if(typeof this.listener[message]==='function'){this.listener[message](data);}}});Loc.Paginator=Class.create(ASDL.Canvas,{initialize:function($super,pageCount,currentPage){$super();this.set({width:120,height:39,'canvas.left':5,'canvas.top':20});this.totalPages=pageCount;this.currentPage=currentPage||0;this.onPageSelected=function(){};this.createPages(pageCount);this.createButtons();this.updateButtons();},createButtons:function(){var that=this;this.lastBtn=this.addChild(new Loc.Button('page_last.png'));this.lastBtn.position(0,10);this.lastBtn.onClick=function(){that.selectPage(that.currentPage-1);}
this.nextBtn=this.addChild(new Loc.Button('page_next.png'));this.nextBtn.position(99,10);this.nextBtn.onClick=function(){that.selectPage(that.currentPage+1);}},createPages:function(pageCount){var that=this,page;this.pages=[];for(var i=0;i<pageCount;i++){page=this.addChild(new Loc.PageButton(i));page.position(15+(20*i),0);page.onRelease=function(){that.selectPage(this.index);}
this.pages[this.pages.length]=page;}},selectPage:function(index){index=index>=this.totalPages?this.totalPages-1:index;index=index<0?0:index;this.currentPage=index;this.updateButtons();this.onPageSelected(index);},updateButtons:function(){for(var i=0,j=this.pages.length;i<j;i++){this.pages[i][this.currentPage===i?'select':'deselect']();}
if(this.currentPage===0){this.lastBtn.onLeaveHandler();this.lastBtn.disable();this.lastBtn.set('opacity',0.5);}else{this.lastBtn.enable();this.lastBtn.set('opacity',1);}
if(this.currentPage===this.pages.length-1){this.nextBtn.onLeaveHandler();this.nextBtn.disable();this.nextBtn.set('opacity',0.5);}else{this.nextBtn.enable();this.nextBtn.set('opacity',1);}}});Loc.PageButton=Class.create(Loc.Button,{initialize:function($super,index,options){$super('page_icon.png',options);this.index=index;this.createText();},createText:function(){this.text=this.addChild(new ASDL.TextBlock(this.index+1+'',{fontSize:11,fontFamily:'verdana',foreground:'#FF8F8C78'}));this.text.position(12,14);this.onEnter=function(){this.text.set('foreground','#FFFFFFFF');}
this.onLeave=function(){this.text.set('foreground','#FF8F8C78');}},select:function($super){$super();this.text.set('foreground','#FFFFFFFF');},deselect:function($super){$super();if(this.text){this.text.set('foreground','#FF8F8C78');}}});Loc.ZoomControls=Class.create(ASDL.Canvas,{initialize:function($super,parent){$super();this.parent=parent;this.set({width:130,height:295,'canvas.top':150});this.onZoom=function(){};this.createButtons();this.createText();this.createTrack();this.setupDrag();this.value(0);},createButtons:function(){var that=this;this.inBtn=this.addChild(new Loc.Button('zoom_in.jpg'));this.inBtn.position(this.get('width')/2-14,0);this.inBtn.onClick=function(){that.startScroll(1);}
this.inBtn.onRelease=function(){that.stopScroll();}
this.outBtn=this.addChild(new Loc.Button('zoom_out.jpg'));this.outBtn.position(this.get('width')/2-14,265);this.outBtn.onClick=function(){that.startScroll(-1);}
this.outBtn.onRelease=function(){that.stopScroll();}},startScroll:function(dir){this.scrollLogic(dir);this.stopScroll();var that=this;this.pauseInterval=setTimeout(function(){that.scrollInterval=setInterval(function(){that.scrollLogic(dir);},150);},250);},scrollLogic:function(dir){this.value(this._value+(dir*0.1));},stopScroll:function(){clearInterval(this.pauseInterval);clearInterval(this.scrollInterval);},createText:function(){var properties={fontSize:10,fontFamily:'verdana',foreground:'#FF555043'};var text=this.addChild(new ASDL.TextBlock('ZOOM IN',properties));text.position(this.get('width')/2-text.get('actualWidth')/2,28);text=this.addChild(new ASDL.TextBlock('ZOOM OUT',properties));text.position(this.get('width')/2-text.get('actualWidth')/2,255);},createTrack:function(){var trackImage=this.addChild(new Loc.Image('assets/interface/zoom_track.png'));trackImage.position(this.get('width')/2-8,46);this.thumb=this.addChild(new Loc.Image('assets/interface/zoom_thumb.png'));this.thumb.position(this.get('width')/2-16,42);},setupDrag:function(){this.track=this.addChild(new ASDL.Canvas());this.track.set({width:60,height:200,'canvas.left':this.get('width')/2-30,'canvas.top':46,cursor:'hand',background:'#00000000'});this.track.addEventListener('MouseLeftButtonDown',this.startDrag.bind(this));this.track.addEventListener('MouseLeftButtonUp',this.stopDrag.bind(this));this.track.addEventListener('MouseMove',this.drag.bind(this));this.mouseUpOutsideToken=Loc.root.addEventListener('MouseLeftButtonUp',this.stopDrag.bind(this));this.mouseLeaveOutsideToken=Loc.root.addEventListener('MouseLeave',this.stopDrag.bind(this));},startDrag:function(sender,mouseArgs){this.dragging=true;this.value(1-(mouseArgs.getPosition(this.track.xaml).y/this.track.get('height')));},stopDrag:function(){if(this.dragging){this.dragging=false;}},drag:function(sender,mouseArgs){if(this.dragging){this.value(1-((mouseArgs.getPosition(this.track.xaml).y-10)/(this.track.get('height')-20)));}},updateThumb:function(){var newPosition=42+(this.track.get('height')-27)*(1-this._value);this.thumb.set('canvas.top',newPosition);},value:function(newValue,preventAction){if(typeof newValue!=='undefined'){newValue=newValue<0?0:newValue;newValue=newValue>1?1:newValue;this._value=newValue;this.updateThumb();if(preventAction!==true){this.onZoom(this._value);}}
return this._value;},positionSlider:function(value,minValue,maxValue){this._value=(value-minValue)/maxValue;this.updateThumb();},destroy:function($super){Loc.root.removeEventListener('MouseLeftButtonUp',this.mouseUpOutsideToken);Loc.root.removeEventListener('MouseLeave',this.mouseLeaveOutsideToken);$super();}});