/*
 * Copyright 2009 Apple Inc. All rights reserved. 
 * IMPORTANT NOTE: This file is licensed only for use in providing the iWork.com
 * service, or any part thereof, and is subject to the iWork.com Terms of Service.
 */

CoreHeckler=SC.Object.create({server:Mac.Server,isDocumentReady:false});CoreHeckler.server._parseJsonResponse=function(h,c,f){var a;var b;var g;try{if(h.responseText){a=h.responseText.evalJSON(true)}this._clearPollingTimer();this.adaptor.handleResponse(h,a,c,f)}catch(d){CoreDocs.error("Unable to parse JSON reponse:");CoreDocs.error(d);this._clearPollingTimer()}a=null;return a};require("core");CoreHeckler.Page=SC.Record.extend({properties:["guid","i","w","h","n"],pageNumber:function(){return this.get("guid")}.property("guid"),indentLevel:function(){return this.get("i")}.property("i"),width:function(){return this.get("w")}.property("w"),height:function(){return this.get("h")}.property("h"),columns:function(){var a=this.get("c");if(a<2){a=2}return a}.property("c"),rows:function(){var a=this.get("r");if(a<2){a=2}return a}.property("r"),name:function(){return this.get("n")}.property("n")});require("core");CoreHeckler.DEFAULT_BUBBLE_WIDTH=200;CoreHeckler.Canvascomment=SC.Record.extend({properties:["body","author","time","page","parent","deleted","nativeID","rendered"],temporarySiblings:null,init:function(){arguments.callee.base.apply(this,arguments);this.set("deleted",false)},trimComment:function(){var a={guid:this.get("guid").toString(),type:this.get("type"),author:this.get("author"),time:this.get("time"),page:this.get("page")};if(this.get("deleted")){a.deleted=this.get("deleted")}if(this.hasComments()||!this.get("deleted")){if(this.get("bx")){a.bx=Math.round(this.get("bx"))}if(this.get("by")){a.by=Math.round(this.get("by"))}if(this.get("bw")&&(this.get("bw")!=CoreHeckler.DEFAULT_BUBBLE_WIDTH)){a.bw=this.get("bw")}}if(this.get("body")&&!this.get("deleted")){a.body=this.get("body")}if(this.get("nativeID")){a.nativeID=this.get("nativeID")}if(this.get("parent")){a.parent=this.get("parent")}return a},siblings:function(){if(this.temporarySiblings&&(this.temporarySiblings.length>0)){return[this].concat(this.temporarySiblings)}return[this]}.property("temporarySiblings"),hasComments:function(){if(this.get("children")){var b=this.get("children");for(var a=0;a<b.length;a++){var c=b[a];if(!c.get("deleted")){return true}}}return false}.property("children"),deletedAndNoComments:function(){return(this.get("deleted")&&!this.hasComments())}.property("children","deleted"),associatedGUID:function(){if(this.get("parent")){return this.get("parent")}else{return this.get("guid")}}.property("parent","guid"),children:function(){if(!this._cachedChildren){this.recalculateChildren()}return this._cachedChildren}.property("guid","type"),recalculateChildren:function(){var a=this.get("guid");var b=this.get("parent");if(!b){this._cachedChildren=this.get("commentType").findAll({associatedGUID:a});this.notifyPropertyChange("children",this._cachedChildren)}else{this._cachedChildren=null}},hasPermissionToMove:function(){var c=CoreHeckler.commentator.guid;var b=this.get("author");var a=CoreHeckler.author.guid;return c==a||c==b},hasPermissionToClear:function(){var b=CoreHeckler.commentator.guid;var a=CoreHeckler.author.guid;return b==a},safeBody:function(){var a=this.get("body");if(a){return a.escapeHTML().replace(/\r\n|\r|\n/g,"<br/>").replace(/&amp;/g,"&").replace(/  /g," &nbsp;")}return""}.property("body"),expired:function(){var a=new Date();var b=new Date(this.get("time")*1000);return(this.deletedAndNoComments()&&(a-b)>(1000*60*60*24))}.property("deleted","time","children"),doDelete:function(){this.set("deleted",true);this.set("body","");var a=new Date();var b=Math.round(a.getTime()/1000);this.set("time",b);CoreDocs.Marketeer.reportCommentDeleted()},isValid:function(){var a=this.get("page");return(a>=1)&&(a<=CoreHeckler.documentInfo.get("pageCount"))}.property("page")});require("core");function RUPoint(a,b){this.x=a;this.y=b;this.prev=null;this.next=null}RUPoint.prototype.insertAfter=function(a){var b=this.next;this.next=a;a.prev=this;a.next=b;if(b!=null){b.prev=a}};RUPoint.prototype.insertBefore=function(a){var b=this.prev;this.prev=a;a.next=this;a.prev=b;if(b!=null){b.next=a}};function RURect(c,d,e,a){this.l=c;this.t=d;this.r=e;this.b=a}function RUPolygon(){this.outline=null}function RUFront(){this.leftPoint=null;this.polygon=null;this.rect=null}CoreHeckler.OutlineAlgorithm=SC.Object.extend({rectangles:[],rects:[],polygons:[],compute:function(){var a=Date.now();this.polygons=[];this.roundCoordsInRects();this.produceStripes();this.producePolygons()},roundCoordsInRects:function(){var n=this.boundingBox.origin.x;var h=this.boundingBox.origin.y;this.rects=new Array(this.rectangles.length);for(var c=0;c<this.rectangles.length;c++){var e=this.rectangles[c];var d=Math.round(e.origin.x-n);var a=Math.round(e.size.width+e.origin.x-n);var m=Math.round(e.origin.y-h);var f=Math.round(e.size.height+e.origin.y-h);var g=new RURect(d,m,a,f);this.rects[c]=g}},numericSort:function(d,c){return d-c},produceStripes:function(){newRects=new Array();var B=0;var a=this.rects[0];rectCount=this.rects.length;for(var q=1;q<=rectCount;q++){var l=q==rectCount;if(!l){var c=this.rects[q];l=c.t>a.b||c.t<a.t;a=c}if(l){var h=q;var d=h-B;var r=new Array(d*2);var s=B;var y=B;var p=0;var o=-Number.MAX_VALUE;while(s<h){var v=this.rects[s].t;var A=this.rects[y].b;if(v<=A){if(v!=o){r[p++]=v;o=v}s++;if(v==A){y++}}else{if(A!=o){r[p++]=A;o=A}y++}}while(y<h){var A=this.rects[y].b;if(A!=o){r[p++]=A;o=A}y++}var n=B;for(var g=0;g<p-1;g++){var v=r[g];var A=r[g+1];for(;;){var c=this.rects[n];if(c.b>v){break}n++}var f=new Array(d);var x=new Array(d);var e=0;for(var z=n;z<h;z++){var c=this.rects[z];if(c.t>=A){break}f[e]=c.l;x[e]=c.r;e++}f.length=e;x.length=e;f.sort(this.numericSort);x.sort(this.numericSort);var w=0;var s=0;var u=0;var m=0;while(s<e){if(w<e&&f[w]<=x[s]){if(u==0){m=f[w]}u++;w++}else{u--;if(u==0){newRects.push(new RURect(m,v,x[s],A))}s++}}}B=q}}this.rects=newRects},producePolygons:function(){var w=this.rects.length;var l=-Number.MAX_VALUE;var x=-Number.MAX_VALUE;var n=0;var e=0;var d=[];var m=[];for(var h=0;h<w;h++){var a=this.rects[h];var z=a.t!=l;if(z){var c=a.t!=x;if(c){m=[]}d=m;m=[];e=d.length;n=0}var b=null;for(;n<e;){var g=d[n];var r=g.leftPoint;var u=r.next;var v=g.rect;if(b==null){if(a.l<v.r){if(a.r<=v.l){break}else{b=new RUFront();if(a.l!=v.l){r.insertAfter(new RUPoint(a.l,a.t));r.next.insertAfter(new RUPoint(a.l,a.b));b.leftPoint=r.next.next}else{r.y=a.b;b.leftPoint=r}b.polygon=g.polygon;if(a.r<v.r){break}else{n++}}}else{n++}}else{var B=b.leftPoint;var o=B.next;if(a.r>v.l){o.y=a.t;r.y=a.t;B.next=u;u.prev=B;r.next=o;o.prev=r;if(g.polygon==b.polygon){var q=new RUPolygon();q.outline=o;this.polygons.push(q)}else{var A=b.polygon;var t=g.polygon;for(var y=n;y<e;y++){var s=d[y];if(s.polygon==t){s.polygon=A}}this.polygons.splice(this.polygons.indexOf(t),1)}if(a.r<v.r){break}else{n++}}else{break}}}if(b!=null){var B=b.leftPoint;var o=B.next;if(a.r!=o.x){o.insertBefore(new RUPoint(a.r,a.b));o.insertBefore(new RUPoint(a.r,a.t));if(a.r<o.x){var g=d[n];g.leftPoint=o.prev}}else{o.y=a.b}}else{var f=new RUPoint(a.l,a.b);f.prev=f;f.next=f;f.insertBefore(new RUPoint(a.r,a.b));f.insertBefore(new RUPoint(a.r,a.t));f.insertBefore(new RUPoint(a.l,a.t));var p=new RUPolygon();this.polygons.push(p);p.outline=f;b=new RUFront();b.leftPoint=f;b.polygon=p}b.rect=a;m.push(b);l=a.t;x=a.b}}});require("core");CoreHeckler.ZoomPreference={FIT_TO_WIDTH:"Fit_To_Width",ZOOM_TO_FIT:"Zoom_to_Fit"};CoreHeckler.CommentRole={PUBLISHER:1,COMMENTER:2,VIEWER:3};CoreHeckler.DownloadRole={PUBLISHER:1,DOWNLOADER:2,VIEWER:3};CoreHeckler.User=SC.Record.extend({properties:["guid","firstName","lastName","email","colorClass","role","downloadRole","added","metadataFolder","displayName","displayFirst","deleted","page","zoom"],name:function(){var b=this.get("firstName")||"";var a=this.get("lastName")||"";if(b&&a){return b+" "+a}else{return b+a}}.property("firstName","lastName"),username:function(){return this.get("email").split("@")[0]}.property("email"),metadataFolder:function(){if(CoreHeckler.documentInfo.get("documentPassword")&&this.get("role")!=CoreHeckler.CommentRole.PUBLISHER){return this.get("email")+"-"+CoreHeckler.adaptor.get("hashedDocumentName")}else{return this.get("email")}}.property("metadataFolder"),displayName:function(){var a=this.get("name")?this.get("name"):this.get("username");return a.escapeHTML()}.property("username","name"),displayFirst:function(){var a=this.get("firstName")?this.get("firstName"):this.get("username");return a.escapeHTML()}.property("username","firstName")});CoreHeckler.emailToSecondaryUser=function(a){return a.replace("@","!").toLowerCase()};require("core");require("models/user");CoreHeckler.pageController=SC.CollectionController.create({canEditCollection:false,allowsMultipleSelection:false,allowsEmptySelection:false,arrangedObjectsBinding:"CoreHeckler.pages.records",pageScale:1,fitToWidth:false,fitToWidthOrHeight:true,currentPageNumber:0,readOnlyFlag:0,loadingInProgress:false,loadingPageNumber:0,loadingPageImageCached:0,loadingPageImageRendered:0,firstDisplay:false,tiledUpload:true,MAX_DIMENSION:32000,MAX_AREA:20000000,hasWarnedAboutCanvasSize:false,imageCache:[null,null,null],resizeOnPageChange:false,formattedPageScale:"100%",thumbnailListView:null,differentSize:function(b,a){var c=false;if(b!=null&&a!=null){if(b.get("width")!=a.get("width")){c=true}if(b.get("height")!=a.get("height")){c=true}}return c},currentPageNativeWidth:function(){var b=this.currentPageRecord();if(b){return b.get("width")}var a=this.loadingPageRecord();if(a){return a.get("width")}CoreDocs.warning("We should not be getting an original width unless there is something we can grab")},currentPageNativeHeight:function(){var b=this.currentPageRecord();if(b){return b.get("height")}var a=this.loadingPageRecord();if(a){return a.get("height")}CoreDocs.warning("We should not be getting an original width unless there is something we can grab")},currentPageNativeRows:function(){var b=this.currentPageRecord();if(b){return b.get("rows")}var a=this.loadingPageRecord();if(a){return a.get("rows")}CoreDocs.warning("We should not be getting an original rows unless there is something we can grab")},currentPageNativeColumns:function(){var b=this.currentPageRecord();if(b){return b.get("columns")}var a=this.loadingPageRecord();if(a){return a.get("columns")}CoreDocs.warning("We should not be getting an original rows unless there is something we can grab")},pageScaledHeight:function(b){var c=CoreHeckler.Page.find({pageNumber:b});var a=c.get("height");return parseInt(a*this.get("pageScale"),10)},pageScaledWidth:function(a){var c=CoreHeckler.Page.find({pageNumber:a});var b=c.get("width");return parseInt(b*this.get("pageScale"),10)},usePdfForImage:function(){var a=navigator.userAgent.toLowerCase();return((/safari/).test(a)&&!(/chrome/).test(a)&&this.currentPageNativeHeight()<3000)},tiled:function(){return this.tiledUpload&&!(this.usePdfForImage())},pageBitmapFilename:function(a,c){var b="tile";if(!this.tiledUpload){b="page"+a}if(this.usePdfForImage()){b=b+".pdf"}else{b=b+".jpg"}if(c){b=b+"?ts="+CoreHeckler.documentInfo.get("originalPublishDate")}return b},rootURI:function(a){var b=CoreHeckler.adaptor.getCredentialedURI(CoreHeckler.adaptor.getiDiskResourcesPath())+pageHash(a);if(this.tiledUpload){b=b+"/page"+a}return b},pageBitmapURI:function(a){var b=this.rootURI(a)+"/"+this.pageBitmapFilename(a,true);return b},pageThumbnailBitmapURI:function(a){return CoreHeckler.adaptor.getCredentialedURI(CoreHeckler.adaptor.getiDiskResourcesPath())+pageHash(a)+"/thumbnail"+a+".jpg?ts="+CoreHeckler.documentInfo.get("originalPublishDate")},currentPageScaledWidth:function(){return parseInt(this.currentPageNativeWidth()*this.get("pageScale"),10)},currentPageScaledHeight:function(){return parseInt(this.currentPageNativeHeight()*this.get("pageScale"),10)},documentRatio:function(){var a=CoreHeckler.pages.records()[0];return(a.get("h")/a.get("w"))},preloadPages:function(){var b=this.get("currentPageNumber");if(b>1){var a=this.pageBitmapURI(b-1);this.imageCache[1]=new Image();this.imageCache[1].src=a}if(b+1<CoreHeckler.documentInfo.get("pageCount")){var a=this.pageBitmapURI(b+1);this.imageCache[2]=new Image();this.imageCache[2].src=a}},onLoadComplete:function(b,a){var c=this.get("loadingPageNumber");if(b!==this.pageBitmapURI(c)){return}if(a==SC.IMAGE_STATE_LOADED){CoreDocs.info("Page "+c+" image loaded");this.set("loadingPageImageCached",c)}else{if(this.tiledUpload){this.set("loadingInProgress",false);this.tiledUpload=false;this.loadPage(c)}else{this.set("loadingInProgress",false);this.set("loadingPageImageCached",null);CoreDocs.errorController.documentCorruptionError();CoreDocs.error("Image at URL %@ failed to load.".fmt(b))}}},loadPage:function(c){var a=this.get("currentPageNumber");if((c!=a&&!this.get("loadingInProgress"))||(this.get("loadingInProgress")&&this.get("loadingPageNumber")!=c)){var d=CoreHeckler.Page.find({pageNumber:c});if(d){this.resizeOnPageChange=this.differentSize(d,this.currentPageRecord());this.set("loadingInProgress",true);this.set("loadingPageNumber",c);if(CoreDocs.isMobile){CoreDocs.info("Page "+c+" image loaded");this.set("loadingPageImageCached",c)}else{if(this.imageCache[0]){this.imageCache[0].stopObserving()}var b=this.pageBitmapURI(c);this.imageCache[0]=$(new Image());this.imageCache[0].observe("load",this.onLoadComplete.bind(this,b,SC.IMAGE_STATE_LOADED));this.imageCache[0].observe("error",this.onLoadComplete.bind(this,b,SC.IMAGE_STATE_FAILED));this.imageCache[0].observe("abort",this.onLoadComplete.bind(this,b,SC.IMAGE_STATE_FAILED));this.imageCache[0].src=b}}}},loadingObserver:function(){var d=this.get("loadingPageNumber");var c=CoreHeckler.cellSelectionController.get("loadingPageDataLoaded");var a=CoreHeckler.rangedSelectionController.get("loadingPageDataLoaded");var f=CoreHeckler.objectSelectionController.get("loadingPageDataLoaded");var b=CoreHeckler.hyperlinkController.get("loadingPageDataLoaded");var e=this.get("loadingPageImageCached");if((c==d)&&(a==d)&&(e==d)&&(f==d)&&(b==d)&&(e==d)){CoreDocs.info("Page "+d+" is fully loaded");CoreHeckler.Graphics.clear();this.set("currentPageNumber",d);if(!CoreDocs.isMobile){$("canvas").scrollTop=0;$("canvas").scrollLeft=0}this.set("loadingInProgress",false);if(this.get("firstDisplay")==false){this.set("firstDisplay",true)}}}.observes("CoreHeckler.cellSelectionController.loadingPageDataLoaded","CoreHeckler.rangedSelectionController.loadingPageDataLoaded","CoreHeckler.hyperlinkController.loadingPageDataLoaded","CoreHeckler.objectSelectionController.loadingPageDataLoaded","loadingPageImageCached"),changeToPage:function(a){if(a>0){var b=CoreHeckler.Page.find({pageNumber:a});if(b){this.set("selection",[b])}}},setPageScale:function(a){this.set("pageScale",a);CoreHeckler.Graphics.resize()},loadNextPage:function(){this.changeToPage(this.get("currentPageNumber")+1)},loadPreviousPage:function(){this.changeToPage(this.get("currentPageNumber")-1)},currentPageRecord:function(){var a=this.get("currentPageNumber");return CoreHeckler.Page.find({pageNumber:a})},loadingPageRecord:function(){var a=this.get("loadingPageNumber");return CoreHeckler.Page.find({pageNumber:a})},selectionObserver:function(){var a=this.get("selection")[0];if(a){this.loadPage(a.get("pageNumber"))}}.observes("selection"),pageScaleFormatter:function(){this.set("formattedPageScale",Math.round(this.get("pageScale")*100)+"%")}.observes("pageScale"),zoomToFitWidth:function(){if(CoreDocs.isMobile){return}CoreHeckler.commentator.set("zoom",CoreHeckler.ZoomPreference.FIT_TO_WIDTH);this.fitToWidth=true;this.fitToWidthOrHeight=false;$view("#preview_image").resizePage()},zoomToFit:function(){if(CoreDocs.isMobile){return}CoreHeckler.commentator.set("zoom",CoreHeckler.ZoomPreference.ZOOM_TO_FIT);this.fitToWidth=false;this.fitToWidthOrHeight=true;$view("#preview_image").resizePage()},zoomToPageScale:function(a){if(CoreDocs.isMobile){return}CoreHeckler.commentator.set("zoom",a);this.fitToWidth=false;this.fitToWidthOrHeight=false;$view("#preview_image").zoomToPageScale(a)},zoomToPageScale50:function(){this.zoomToPageScale(0.5)},zoomToPageScale75:function(){this.zoomToPageScale(0.75)},zoomToPageScale100:function(){this.zoomToPageScale(1)},zoomToPageScale125:function(){this.zoomToPageScale(1.25)},zoomToPageScale150:function(){this.zoomToPageScale(1.5)},zoomToPageScale175:function(){this.zoomToPageScale(1.75)},zoomToPageScale200:function(){this.zoomToPageScale(2)}});require("core");require("models/canvas_comment");CoreHeckler.Selectioncomment=CoreHeckler.Canvascomment.extend({x:function(){var a=this.get("geometry");if(a&&a.commentRight){return a.commentRight}else{return 0}}.property("geometry"),y:function(){var a=this.get("geometry");if(a&&a.commentTop){return a.commentTop}else{return 0}}.property("geometry"),bottom:function(){var a=this.get("geometry");if(a&&a.commentBottom){return a.commentBottom}else{return 0}}.property("geometry"),left:function(){var a=this.get("geometry");if(a&&a.commentLeft){return a.commentLeft}else{return 0}}.property("geometry"),width:function(){var a=this.get("geometry");if(a&&a.commentLeft&&a.commentRight){return a.commentRight-a.commentLeft}else{return 0}}.property("geometry"),scaledGeometry:function(){if(!this._cachedScaledGeometry){var a=this.get("geometry");if(a){this._cachedScaledGeometry=a.getScaled()}else{return null}}return this._cachedScaledGeometry}.property("geometry"),invalidateScaledGeometry:function(){delete this._cachedScaledGeometry}.observes("CoreHeckler.pageController.pageScale")});require("core");require("models/selection_comment");CoreHeckler.Cellcomment=CoreHeckler.Selectioncomment.extend({trimComment:function(){var a=arguments.callee.base.apply(this,arguments);a.selection=this.get("selection");return a},commentType:function(){return CoreHeckler.Cellcomment}.property("guid"),geometry:function(){if(!this._cachedGeometry){if(CoreHeckler.pageController.get("currentPageNumber")!=this.get("page")){return null}var a=CoreHeckler.cellSelectionController.getCell(this.get("selection"));if(a){this._cachedGeometry=a}else{return null}}return this._cachedGeometry}.property("selection")});require("core");CoreHeckler.AbstractGraphics=SC.Object.extend({SELECTION_ID:"graphics_selection",SELECTION_COLOR:"#006EFF",OUTLINE_COLOR:"#F9D65F",TRIANGLE_FILL_COLOR:"#FF8A19",TRIANGLE_STROKE_COLOR:"#FFAA58",TRIANGLE_SIZE:7});CoreHeckler.SVGGraphics=CoreHeckler.AbstractGraphics.extend({parent:null,init:function(){arguments.callee.base.apply(this,arguments);var a=document.createElementNS("http://www.w3.org/2000/svg","svg");a.setAttribute("preserveAspectRatio","none");this.parent.appendChild(a);this.svg=a},resize:function(){var c=$("preview_image");var f=c.getWidth();var d=c.getHeight();if(f>1&&d>1){this.svg.setAttribute("width",f+"px");this.svg.setAttribute("height",d+"px");this.parent.style.width=f+"px";this.parent.style.height=d+"px"}var l=CoreHeckler.pageController.get("pageScale");if(l>0){var g=1/l;this.svg.setAttribute("style","stroke-width: "+g+"px")}var b=CoreHeckler.pageController.currentPageNativeWidth();var e=CoreHeckler.pageController.currentPageNativeHeight();if(b&&e){var h="0 0 %@ %@".fmt(b,e);var a=this.svg.getAttribute("viewBox");if(h!=a){this.svg.setAttribute("viewBox",h)}}this.safariShiftSvgHack();this.forceSafariToRedrawHack()},safariShiftSvgHack:function(){if(SC.browser.webkit&&parseFloat(SC.browser.webkit)<=525.27){var a=$("preview_image").getHeight();var d=[32768,65549,98304,131083,163840,196619];var g=false;for(var b=0;b<d.length;b+=2){var f=d[b];var e=d[b+1];if(f<a&&a<e){var c="-"+(e-a)+"px";this.parent.style.top=c;g=true;break}}if(!g){this.parent.style.top=""}}},clear:function(){while(this.svg.firstChild){this.svg.removeChild(this.svg.firstChild)}this.resize()},drawSelection:function(c,b){this.clearSelection();var a=this.createPolygons(c);if(b){a.setAttribute("style","stroke: "+this.SELECTION_COLOR+"; fill: none;")}else{a.setAttribute("style","fill: "+this.SELECTION_COLOR+"; fill-opacity: 0.25;")}a.id=this.SELECTION_ID;this.svg.appendChild(a);this.forceSafariToRedrawHack();return a},clearSelection:function(){var a=$(this.SELECTION_ID);if(a){a.parentNode.removeChild(a);this.forceSafariToRedrawHack()}},drawOutline:function(c,b){var a=this.createPolygons(c);if(b){a.setAttribute("style","stroke: "+this.OUTLINE_COLOR+"; fill: none;")}else{a.setAttribute("style","stroke: "+this.OUTLINE_COLOR+"; fill: "+this.OUTLINE_COLOR+"; fill-opacity: 0.15;")}this.svg.appendChild(a);this.forceSafariToRedrawHack();return a},drawTriangle:function(a,e){var b=this.TRIANGLE_SIZE;var d=$A([new IWPoint(a.x-b,a.y),new IWPoint(a.x,a.y+b),new IWPoint(a.x,a.y)]);var c=this.createPath(d,true,e);c.setAttribute("style","fill: "+this.TRIANGLE_FILL_COLOR+"; stroke: "+this.TRIANGLE_STROKE_COLOR+";");this.svg.appendChild(c);this.forceSafariToRedrawHack();return c},drawLine:function(c,b){var a=document.createElementNS("http://www.w3.org/2000/svg","line");a.setAttribute("style","stroke: "+this.OUTLINE_COLOR+";");this.updateLine(a,c,b);this.svg.appendChild(a);this.forceSafariToRedrawHack();return a},updateLine:function(a,c,b){if(!a||!c||!b){return}a.setAttribute("x1",c.x);a.setAttribute("y1",c.y);a.setAttribute("x2",b.x);a.setAttribute("y2",b.y);this.forceSafariToRedrawHack()},showLine:function(a){a.style.display=""},hideLine:function(a){a.style.display="none"},createPolygons:function(g){var e=document.createElementNS("http://www.w3.org/2000/svg","g");var b=g.computeTranslationToBoundingBoxOrigin(true);var f=-g.angle*180/Math.PI;var c="translate(%@, %@) rotate(%@)".fmt(b.x,b.y,f);e.setAttribute("transform",c);var a="";g.polygons.each(function(l){var m=l.outline;var n=[m];for(var h=m.next;h!=m;h=h.next){n.push(h)}a+=this.createPathString(n)}.bind(this));var d=document.createElementNS("http://www.w3.org/2000/svg","path");d.setAttribute("d",a);d.setAttribute("fill-rule","evenodd");e.appendChild(d);return e},createPath:function(c,e,d){var b=document.createElementNS("http://www.w3.org/2000/svg","path");var a="M ";c.each(function(g,l){var h=d?d.mapCanvasToRotated(g):g;a+="%@ %@ ".fmt(h.x,h.y);var f=(l==c.length-1);if(!f){a+="L "}});if(e){a+="z"}b.setAttribute("d",a);return b},createPathString:function(b){var a="M ";b.each(function(d,e){a+="%@ %@ ".fmt(d.x,d.y);var c=(e==b.length-1);if(!c){a+="L "}});a+="z ";return a},redrawHackState:0,forceSafariToRedrawHack:function(){if(SC.browser.webkit){this.redrawHackState=this.redrawHackState?0:1;this.parent.parentNode.style.borderColor="rgba(0,0,0,"+this.redrawHackState+")"}}});CoreHeckler.VMLGraphics=CoreHeckler.AbstractGraphics.extend({parent:null,init:function(){arguments.callee.base.apply(this,arguments);var b=document.createElement("v:group");var c=600;var a=600;b.style.width=c+"px";b.style.height=a+"px";b.style.top="0";b.style.left="0";b.style.position="absolute";b.coordsize="%@ %@".fmt(c,a);this.parent.appendChild(b);this.vml=b},resize:function(){var a=$("preview_image");this.vml.style.width=a.getWidth()+"px";this.vml.style.height=a.getHeight()+"px";this.vml.coordsize="%@ %@".fmt(CoreHeckler.pageController.currentPageNativeWidth(),CoreHeckler.pageController.currentPageNativeHeight())},clear:function(){while(this.vml.firstChild){this.vml.removeChild(this.vml.firstChild)}},drawSelection:function(e,d){this.clearSelection();var c=this.createPolygons(e);var b=c.firstChild;var a=c.lastChild;if(d){b.opacity=0;a.color=this.SELECTION_COLOR}else{b.color=this.SELECTION_COLOR;b.opacity=0.25;a.opacity=0}c.id=this.SELECTION_ID;this.vml.appendChild(c)},clearSelection:function(){var a=$(this.SELECTION_ID);if(a){a.parentNode.removeChild(a)}},drawOutline:function(e,d){var c=this.createPolygons(e);var b=c.firstChild;var a=c.lastChild;a.color=this.OUTLINE_COLOR;if(d){c.innerHTML=""}else{b.color=this.OUTLINE_COLOR;b.opacity=0.15}this.vml.appendChild(c);return c},drawTriangle:function(a,e){var b=this.TRIANGLE_SIZE;var d=$A([new IWPoint(a.x-b,a.y),new IWPoint(a.x,a.y+b),new IWPoint(a.x,a.y)]);var c=this.createPath(d,true,e);c.firstChild.color=this.TRIANGLE_FILL_COLOR;c.strokecolor=this.TRIANGLE_STROKE_COLOR;this.vml.appendChild(c);return c},drawLine:function(c,b){var a=document.createElement("v:line");a.strokecolor=this.OUTLINE_COLOR;this.updateLine(a,c,b);this.vml.appendChild(a);return a},updateLine:function(a,c,b){a.from=c.x+", "+c.y;a.to=b.x+", "+b.y},showLine:function(a){a.style.display=""},hideLine:function(a){a.style.display="none"},createPolygons:function(g){var h=g.computeTranslationToBoundingBoxOrigin(false);var d=-g.angle*180/Math.PI;var l=g.boundingBox.size;var b=Math.round(l.width);var c=Math.round(l.height);var f=[];g.polygons.each(function(n){var o=null;o=[];var p=n.outline;for(var m=p;;){o.push(m.x+","+m.y);m=m.next;if(m==p){break}}o.push("X\n");o[0]="M "+o[0]+" L";var q=o.join(" ");f.push(q)}.bind(this));var a=f.join("");var e=document.createElement("v:shape");e.style.position="absolute";e.style.left=h.x+"px";e.style.top=h.y+"px";e.style.width=l.width+"px";e.style.height=l.height+"px";e.style.rotation=d;e.coordsize=b+","+c;e.path=a;e.appendChild(this.createFillElement());e.appendChild(this.createStrokeElement());return e},createPath:function(f,h,g){var e=g.mapCanvasToRotated(f[0]);var d="";var b=0;f.each(function(l){l=g.mapCanvasToRotated(l);if(b++>0){if(d!=""){d+=", "}d+=Math.round(l.x-e.x)+","+Math.round(l.y-e.y)}}.bind(this));var c="M 0,0 L "+d+" X E";var a=document.createElement("v:shape");a.style.position="absolute";a.style.top=e.y+"px";a.style.left=e.x+"px";a.style.width="100px";a.style.height="100px";a.coordsize="100,100";a.path=c;a.appendChild(this.createFillElement());return a},createFillElement:function(){return document.createElement("v:fill")},createStrokeElement:function(){return document.createElement("v:stroke")}});if(Prototype.Browser.IE){CoreHeckler.Graphics=CoreHeckler.VMLGraphics.create({parent:$("graphics")})}else{CoreHeckler.Graphics=CoreHeckler.SVGGraphics.create({parent:$("graphics")})}require("core");CoreHeckler.documentController=SC.Object.create({properties:["republished"],poller:null,marketeerIdleTime:null,hasFatalErrorOccurred:false,hasSignedOut:false,currentOpenCommentView:null,startPollingForChangesAfterDelay:function(a){setTimeout(CoreHeckler.documentController.startPollingForChanges.bind(CoreHeckler.documentController),a)},startPollingForChanges:function(){this.poller=new PeriodicalExecuter(this.poll,CoreDocs.serverStatusController.pollIntervalMin);CoreHeckler.adaptor.sendMarketingInfo()},poll:function(){if(CoreHeckler.isDocumentReady){if(CoreHeckler.get("isPublicViewer")){CoreHeckler.adaptor.getPublicDocumentMetadata()}else{CoreHeckler.adaptor.getAllComments()}CoreHeckler.documentController.checkForInactivity()}},pollIfStale:function(){if(CoreHeckler.isDocumentReady&&CoreHeckler.documentController.poller){var a=parseInt((Date.now()-CoreHeckler.adaptor.lastChangeTime)/1000,10);CoreHeckler.adaptor.lastChangeTime=Date.now();if(a>CoreDocs.serverStatusController.pollIntervalMin){this.poll()}else{this.checkForInactivity()}}},checkForInactivity:function(){if(!CoreHeckler.documentController.poller){return}var e=CoreHeckler.documentController.poller;var a=CoreDocs.serverStatusController.pollIntervalMin;var b=parseInt((Date.now()-CoreHeckler.adaptor.lastChangeTime)/1000,10);if(b>3600){a=CoreDocs.serverStatusController.pollIntervalMax;var d=false;if(this.marketeerIdleTime){var c=parseInt((Date.now()-this.marketeerIdleTime)/1000,10);d=(c>3600)}else{d=true}if(d){CoreHeckler.adaptor.sendMarketingInfo();this.marketeerIdleTime=Date.now()}}else{if(b>1800){a=CoreDocs.serverStatusController.pollInterval2}else{if(b>600){a=CoreDocs.serverStatusController.pollInterval1}}}if(e.frequency!=a){e.stop();CoreHeckler.documentController.poller=new PeriodicalExecuter(CoreHeckler.documentController.poll,a)}},setMaxDecay:function(){CoreHeckler.adaptor.lastChangeTime=Date.now()-(CoreDocs.serverStatusController.pollIntervalMax*1000);this.checkForInactivity()},stopPollingForChanges:function(){if(this.poller){this.poller.stop();this.poller=null}},createCommentGuid:function(){var e;var b;var d=5;do{var a=CoreHeckler.documentComments.get("count")+CoreHeckler.floatingComments.get("count")+CoreHeckler.rangedComments.get("count")+CoreHeckler.cellComments.get("count");var c=Math.floor(Math.random()*1000);b=CoreHeckler.commentator.get("guid")+"-"+a+"-"+CoreHeckler.pageController.get("currentPageNumber")+"-"+c;e=CoreHeckler.Canvascomment.find({guid:b});if(!e){e=CoreHeckler.Documentcomment.find({guid:b})}}while(e);return b},documentInfoObserver:function(){$view("#authorImage").set("value",CoreHeckler.getPath("documentInfo.authorImage"));$view("#publishComment").set("value",CoreHeckler.getPath("documentInfo.formattedLastModifiedComment"));$view("#publishDate").set("value",CoreHeckler.getPath("documentInfo.formattedLastModifiedDate"));$view("#documentTitle").set("value",CoreHeckler.getPath("documentInfo.title"));$view("#page_type").set("value",CoreHeckler.getPath("documentInfo.pageType"))}.observes("CoreHeckler.documentInfo"),lastModifiedObserver:function(){$view("#publishComment").set("value",CoreHeckler.getPath("documentInfo.formattedLastModifiedComment"));$view("#publishDate").set("value",CoreHeckler.getPath("documentInfo.formattedLastModifiedDate"))}.observes("CoreHeckler.documentInfo.formattedLastModifiedComment","CoreHeckler.documentInfo.formattedLastModifiedDate"),authorObserver:function(){$view("#authorName").set("value",CoreHeckler.getPath("author.name"));$view("#authorEmail").set("title",CoreHeckler.getPath("author.email"))}.observes("CoreHeckler.author"),documentReadyObserver:function(){$view("#total_pages").set("value",CoreHeckler.pageController.getPath("arrangedObjects.length"))}.observes("CoreHeckler.isDocumentReady"),reloadDocument:function(){if(CoreHeckler.documentInfo.get("originalPublishDate")!=CoreHeckler.documentInfo.get("publishDate")){this.set("republished",true);window.location.reload()}}.observes("CoreHeckler.documentInfo.publishDate"),unloadDocument:function(){if(!CoreHeckler.get("isPublicViewer")&&!CoreHeckler.documentController.get("republished")&&!CoreHeckler.documentController.hasFatalErrorOccurred&&!CoreDocs.downloadsController.downloadInProgress&&!CoreHeckler.documentController.hasSignedOut){CoreHeckler.commentator.set("page",CoreHeckler.pageController.get("currentPageNumber"));CoreHeckler.adaptor.requests.saveDataToURI.asynchronous=false;CoreHeckler.adaptor.saveUserData(CoreHeckler.commentator);CoreHeckler.adaptor.sendMarketingInfo(true)}},fatalError:function(b,a){CoreHeckler.documentController.hasFatalErrorOccurred=true;CoreHeckler.documentController.stopPollingForChanges();CoreDocs.errorController.loadingError(b,a)}});require("core");require("controllers/document");CoreHeckler.documentCommentController=SC.CollectionController.create({canEditCollection:true,arrangedObjectsBinding:"CoreHeckler.documentComments.records",addComment:function(g,e,f){var d=new Date();var h=Math.round(d.getTime()/1000);var c={guid:CoreHeckler.documentController.createCommentGuid(),type:"Documentcomment",body:g,author:CoreHeckler.commentator.get("guid"),version:0,time:h,parent:null,deleted:false,system:e};var b=CoreHeckler.documentComments.newRecord({guid:c.guid});b.updateAttributes(c,false,true);CoreHeckler.documentComments.refresh();if(!f){this.save()}var a=$view("#document_comment_container");a.scrollToBottom.bind(a).delay(0);return b},postComment:function(){if(CoreHeckler.adaptor.fullMetadata.Document){CoreDocs.errorController.reportError(CoreDocs.loc("Document note limit reached","Dialog box title"),CoreDocs.loc("You must delete some document notes before you can make more.",""));return}var a=$("post_comment_field");var b=a.value;b=thoroughTrim(b);if(b.length>0){this.addComment(b,0)}a.value="";$view("#post_comment_field").suspendPostCommentEdit(a);a.blur();CoreDocs.Marketeer.reportNoteAdded()},save:function(a){if(!a){a=CoreHeckler.commentator.get("guid")}CoreHeckler.adaptor.saveDocumentComments(CoreHeckler.Documentcomment.findAll({author:a}),a)},lastCommentTime:function(){var b=$A(this.get("arrangedObjects"));var a=0;b.each(function(c){if(((c.get("time")>a)&&(!c.get("deleted")))){a=c.get("time")}});return a},clearCommentsPrompt:function(){CoreDocs.dialogController.showDialog(CoreDocs.loc("Are you sure you want to clear all notes?","Dialog box title"),CoreDocs.loc("This action cannot be undone.","Dialog warning for clearing all notes."),CoreDocs.loc("Clear","Verb to clear items."),CoreDocs.loc("Cancel","Verb to cancel dialog."),function(a){if(a){this.clearAllComments()}}.bind(this))},numberUndeletedComments:function(a){var b=0;var e=CoreHeckler.documentCommentController.content.records();if(!e){return b}for(var c=0;c<e.length;c+=1){var d=e[c];if(!d.get("deleted")){if(!(a&&d.get("system"))){b++}}}return b},clearAllComments:function(){CoreHeckler.documentController.poll();var e=this.get("arrangedObjects");var c=0;for(c=0;c<e.length;++c){if(e[c].get("deleted")){continue}e[c].set("body","");var b=new Date();var d=Math.round(b.getTime()/1000);e[c].set("time",d);e[c].set("deleted",true);CoreDocs.Marketeer.reportNoteDeleted()}this.addComment("",2,true);var a=$A(CoreHeckler.User.findAll());a.each(function(f){this.save(f.get("guid"))}.bind(this))}});require("core");require("controllers/document");CoreHeckler.cellCommentController=SC.Object.create({canEditCollection:true,arrangedObjectsBinding:"CoreHeckler.cellComments.records",addComment:function(f){if(CoreHeckler.adaptor.fullMetadata.Cell){CoreDocs.errorController.reportError(CoreDocs.loc("Comment limit reached","Dialog box title"),CoreDocs.loc("You must delete some cell comments before you can make more.",""));return}$view("#add_comment_to_page_button").set("inUse",true);var b=new Date();var o=Math.round(b.getTime()/1000);var g;var e;var h=CoreHeckler.pageController.get("currentPageNumber");if(!f){var m;var d=$A(this.arrangedObjects);d.each(function(r){if(h==r.get("page")&&!r.deletedAndNoComments()&&CoreHeckler.cellSelectionController.isSelectionEqualTo(r.get("selection"))){m=r;throw $break}});if(m){f=m.get("guid")}}if(!f){var q=CoreHeckler.pageController.get("pageScale");var n=CoreHeckler.cellSelectionController.get("currentSelection");var p=CoreHeckler.cellSelectionController.getCell(n);var c=Heckler.commentController.getNewCommentPosition(p);g=c.x;e=c.y}var a={guid:CoreHeckler.documentController.createCommentGuid(),type:"Cellcomment",body:"",author:CoreHeckler.commentator.get("guid"),time:o,deleted:false,parent:f,page:CoreHeckler.pageController.get("currentPageNumber"),selection:n,bx:g,by:e,bw:CoreHeckler.DEFAULT_BUBBLE_WIDTH};CoreHeckler.cellSelectionController.clearSelection();var l=$view(".other_comment_canvas").get("cell");return Heckler.commentController.addCommentHelper(a,CoreHeckler.Cellcomment,CoreHeckler.cellComments,l,f)},save:function(a){if(!a){a=CoreHeckler.commentator.get("guid")}CoreHeckler.adaptor.saveCellComments(CoreHeckler.Cellcomment.findAll({author:a}),a)}});require("core");CoreHeckler.NoCommentsView=SC.LabelView.extend({commentsObserver:function(a){this.set("isVisible",CoreHeckler.documentCommentController.numberUndeletedComments()===0)}.observes("CoreHeckler.documentCommentController.content.records","CoreHeckler.isDocumentReady"),setCleared:function(){var a=new Date();this.rootElement.innerHTML=CoreDocs.loc("Notes have been cleared.<br/>Today, ","")+a.format("h:mm a")}});require("core");CoreHeckler.View=SC.View.extend({init:function(){arguments.callee.base.apply(this,arguments);this._cachedElements={}},getElementByClassName:function(b){if(!this._cachedElements[b]){var a=this.$S("."+b+"?");this._cachedElements[b]=Element.extend(a)}return this._cachedElements[b]}});require("core");CoreHeckler.ContentEditableView=SC.TextareaFieldView.extend({emptyElement:'<div contenteditable="false"></div>',reallySafeTags:["p","font","div","span","br","i","b"],didBecomeFirstResponder:function(){arguments.callee.base.apply(this,arguments);if(Prototype.Browser.WebKit&&!this.getFieldValue()){this.rootElement.innerHTML="&nbsp;";setTimeout(function(){document.execCommand("inserthtml",false,"&nbsp;")},100)}},isEditable:function(a,b){if(b!=undefined){this.rootElement.contentEditable=b}return this.rootElement.contentEditable}.property(),keyUp:function(){if(this._value!=this.rootElement.innerHTML){this._value=this.rootElement.innerHTML;this.fieldValueDidChange(true)}},keyDown:function(a){if(this._value!=this.rootElement.innerHTML){this._value=this.rootElement.innerHTML;this.fieldValueDidChange(true)}return this.interpretKeyEvents(a)},setFieldValue:function(a){if(this.rootElement.innerHTML!=a){this.rootElement.innerHTML=a}},getFieldValue:function(){return this.rootElement.innerHTML},enableField:function(){if(!CoreDocs.isMobile){this.rootElement.contentEditable=true}},disableField:function(){this.rootElement.contentEditable=false}});require("core");require("views/content_editable");require("views/view");CoreHeckler.SubCommentView=CoreHeckler.View.extend({emptyElement:['<div class="sub_comment">','<div class="delete_button"></div>','<span class="author"></span>','<span class="colon">: </span> ','<div class="body"></div>','<div class="editingView"></div>',"</div>"].join(""),outlets:["body","editingView"],body:CoreHeckler.ContentEditableView.extend({valueBinding:"*owner.content.safeBody",init:function(){arguments.callee.base.apply(this,arguments);this.set("isEditable",false)}}).outletFor(".body?"),editingView:CoreHeckler.ContentEditableView.extend({valueBinding:"*owner.content.body"}).outletFor(".editingView?"),contentObserver:function(){if(!this.content){this.hide();return}if(this.content.get("deleted")){this.hide()}else{this.render();this.show()}}.observes("content"),ownerDeletedObserver:function(){if(!this.content){return}if(this.content.get("deleted")&&this.displayIsVisible){this.hide()}}.observes("*owner.content.deleted"),deletedObserver:function(){if(!this.content){return}if(!CoreDocs.isMobile&&this.get("content").get("deleted")){$view("#thumbnail_container").updateThumbnail(this.get("content").get("page"))}}.observes("*content.deleted"),render:function(){this.set("editing",false);this.renderDeleteButton();this.renderAuthor();this.renderTimeTip();if(!CoreDocs.isMobile){$(this.rootElement).observe("mouseover",function(a){this.showDeleteButton(true)}.bind(this));$(this.rootElement).observe("mouseout",function(a){this.showDeleteButton(false)}.bind(this))}},renderDeleteButton:function(){var b=this.getElementByClassName("delete_button");if(b.select("img").length==0){var a=new Element("img",{src:"/sw/core_heckler/de/de8bfa8a13b90476e8284b86766d6cd5fd3d8221/images/comment_delete_yellow.png",title:CoreDocs.loc("Delete this comment.","Delete this comments")});b.appendChild(a);b.observe("click",function(d){var c=new Effect.SlideUp(this.rootElement,{duration:0.2,afterFinish:function(){if(this.get("editing")){this.endInlineEdit(true)}else{this.performDeletion()}}.bind(this)})}.bind(this))}b.style.visibility="hidden"},renderAuthor:function(){var c=this.getElementByClassName("author");var a=this.content.get("author");var b=CoreHeckler.User.find({guid:a});c.innerHTML=b.get("displayFirst")},renderTimeTip:function(){var b=this.get("content").get("time");var a=new Date(b*1000);var c=a.format(CoreDocs.loc("MMM d, y h:mm a","date.format() parameters for shared documents publish date"));this.rootElement.title=CoreDocs.loc("Last Modified: ","")+c},showDeleteButton:function(a){var b=this.getElementByClassName("delete_button");if(a&&this.hasPermission()){b.style.visibility="visible"}else{b.style.visibility="hidden"}},hasPermission:function(){var c=CoreHeckler.commentator.guid;var b=this.content.get("author");var a=CoreHeckler.author.guid;return c==a||c==b},save:function(){this.owner.owner.owner.owner.save(this.content.get("author"))},hide:function(){arguments.callee.base.apply(this,arguments);if(this.owner.owner.owner.owner.hideIfNecessary){this.owner.owner.owner.owner.hideIfNecessary()}},editingObserver:function(){if(CoreDocs.isMobile){return}if(this.get("editing")===true){this.owner.owner.owner.owner.setEditingView(this);this.addClassName("editing");this.editingView.set("isEditable",true);CoreHeckler.documentController.pollIfStale()}else{this.owner.owner.owner.owner.unsetEditingView(this);this.removeClassName("editing");this.editingView.set("isEditable",false)}}.observes("editing"),initiateInlineEdit:function(){this.set("editing",true);this.content.set("editing",true);this.owner.owner.owner.owner.expand();this.editingView.set("isEditable",true);this.show();this.boundClickDuringEdit=this.clickDuringEdit.bind(this);Event.observe(document,"click",this.boundClickDuringEdit);var a=this.editingView.rootElement;if(a){a.focus()}},sanitizeHTML:function(e,b){if(e.nodeType!=Node.TEXT_NODE){var d=e.childNodes;var a=e.tagName;a=a?a.toLowerCase():"";if(a!="br"){for(var c=0,f=d.length;c<f;c++){var g=d[c];this.sanitizeHTML(g);if(!b){e.parentNode.insertBefore(g,e)}}if(!b){e.parentNode.removeChild(e)}}}},clickDuringEdit:function(h){var c=h.element();var f=$(c).up(".bubble");var a=$(this.rootElement).up(".bubble");if(f!==a){this.endInlineEdit()}else{if((this.rootElement===c)&&this.get("isVisible")){if(SC.browser.mozilla||SC.browser.msie){this.editingView.rootElement.blur()}this.editingView.rootElement.focus();try{var d=null;var b=null;var g=0;if(SC.browser.msie){d=document.selection;b=d.createRange();g=Math.max(d.text.length-1,0);b.moveEnd("character",g);b.moveStart("character",g);b.select()}else{d=window.getSelection();b=d.getRangeAt(0);g=d.focusOffset||Math.max(d.toString().length-1,1);b.setStart(d.focusNode,g);b.setEnd(d.focusNode,g);d.removeAllRanges();d.addRange(b)}}catch(h){}}}},endInlineEdit:function(a){if(!this.get("editing")){return}if(this.boundClickDuringEdit){Event.stopObserving(document,"click",this.boundClickDuringEdit);this.boundClickDuringEdit=null}var b=false;if(!a){if(SC.browser.webkit||SC.browser.msie){b=this.editingView.rootElement.innerText.escapeHTML();b=b.replace(/&nbsp;/gim," ")}else{this.sanitizeHTML(this.editingView.rootElement,true);b=this.editingView.rootElement.innerHTML;b=b.replace(/<br>|<br\/>/gim,"\r").replace(/&nbsp;/gim," ")}b=thoroughTrim(b)}if(b){this.set("editing",false);this.content.set("editing",false);this.content.set("body",b);this.save()}else{this.abortEditing()}},performDeletion:function(){if(CoreHeckler.isOwner&&(this.get("content").get("author")!=CoreHeckler.commentator.get("guid"))){CoreHeckler.documentController.poll()}this.get("content").doDelete();this.save();this.hide();if(this.owner.owner.owner.owner.updateLine){this.owner.owner.owner.owner.updateLine()}},abortEditing:function(){if(!this.get("editing")){return}this.set("editing",false);var a=this.get("content");if(a){a.set("editing",false);a.doDelete()}this.hide();if(a&&a.get("newRecord")){this.destroy();a.destroy()}if(this.owner.owner.owner.owner.updateLine){this.owner.owner.owner.owner.updateLine()}}});require("core");require("views/sub_comment");CoreHeckler.EntireCommentView=SC.View.extend({emptyElement:['<div class="entire_comment">','<div class="sub_comments"></div>',"</div>"].join(""),outlets:["subComments"],subComments:CoreDocs.SortedCollectionView.extend({contentBinding:"*owner.content.children",exampleView:CoreHeckler.SubCommentView,orderBy:"time"}).outletFor(".sub_comments?")});require("core");require("views/view");require("views/entire_comment");require("controllers/page");CoreHeckler.CanvasCommentView=CoreHeckler.View.extend({_oldX:0,_oldY:0,MIN_BUBBLE_WIDTH:140,MAX_BUBBLE_WIDTH:600,MIN_EDGE_DISTANCE:2,emptyElement:['<div class="canvas_comment collapsed">','<div class="bubble">','<img class="tail" alt="" src="/sw/core_heckler/de/de8bfa8a13b90476e8284b86766d6cd5fd3d8221/images/comment_tail.png"/>','<div class="header"></div>','<div class="entire_comments"></div>','<div class="footer"></div>',"</div>",'<div class="anchor"></div>','<div class="other"></div>',"</div>"].join(""),outlets:["entireComments"],entireComments:CoreDocs.CollectionView.extend({contentBinding:"*owner.content.siblings",exampleView:CoreHeckler.EntireCommentView,orderBy:"time"}).outletFor(".entire_comments?"),contentObserver:function(){if(!this.content||!this.content.get("isValid")){return}if(!CoreDocs.isMobile){$view("#thumbnail_container").updateThumbnail(this.get("content").get("page"));if(!this.get("content").get("deleted")&&this.isVisible()){this.renderOverlay()}}if(this.isDeleted()||!this.get("content").get("page")){this.hide();return}this.render();this.updateVisibility();this.updateCoordinates()}.observes("content"),pageChangeObserver:function(){this.updateVisibility();if(this.isVisible()){this.updateCoordinates();this.renderOverlay()}}.observes("CoreHeckler.pageController.currentPageNumber"),pageLoadingObserver:function(){if(this.editingView&&SC.Platform.IE){this.editingView.abortEditing()}}.observes("CoreHeckler.pageController.loadingPageNumber"),rescaleObserver:function(){if(this.isVisible()){this.updateVisibility();this.updateCoordinates()}else{this.hide()}}.observes("CoreHeckler.pageController.pageScale","owner.content.x","owner.content.y","bx","by"),commentsVisibleObserver:function(){if(this.isDeleted()){return}if(CoreHeckler.floatingCommentController.get("commentsVisible")){this.expand()}else{this.collapse()}this.updateVisibility()}.observes("CoreHeckler.floatingCommentController.commentsVisible"),firstDisplayObserver:function(){if(!CoreDocs.isMobile&&CoreHeckler.pageController.get("firstDisplay")&&CoreHeckler.floatingCommentController.get("commentsVisible")){this.expand()}}.observes("CoreHeckler.pageController.firstDisplay","rendered"),deleteAll:function(){if(this.editingView){this.editingView.abortEditing()}CoreHeckler.documentController.poll();var b=$A(this.entireComments.firstChild.subComments.get("content"));b.each(function(c){if(!c.get("deleted")){c.doDelete()}});var a=$A(CoreHeckler.User.findAll());a.each(function(c){this.save(c.get("guid"))}.bind(this));this.onDeleted();this.notifyPropertyChange("content")},render:function(){this.renderClassName();this.renderHeader();this.renderBubble();this.renderFooter();this.renderAnchor();if(!this.get("rendered")){this.set("rendered",true)}},renderClassName:function(){this.addClassName(this.getClassName())},renderHeader:function(){var c=this.getElementByClassName("header");c.innerHTML="";if(this.get("content").hasPermissionToClear()){var b=new Element("img",{"class":"delete button",title:CoreDocs.loc("Delete this group of comments.","Delete this group of comments."),src:"/sw/core_heckler/de/de8bfa8a13b90476e8284b86766d6cd5fd3d8221/images/comment_delete_yellow.png"});b.observe("click",this.deleteAll.bind(this));c.appendChild(b)}var a=new Element("img",{"class":"collapse button",title:CoreDocs.loc("Hide this group of comments.","Hide this group of comments."),src:"/sw/core_heckler/de/de8bfa8a13b90476e8284b86766d6cd5fd3d8221/images/comment_collapse.png"});a.observe("click",function(d){this.collapse();if(this.editingView){this.editingView.abortEditing()}}.bind(this));c.appendChild(a)},renderFooter:function(){var e=this.getElementByClassName("footer");e.innerHTML="";var c=new Element("img",{"class":"resize",src:"/sw/core_heckler/de/de8bfa8a13b90476e8284b86766d6cd5fd3d8221/images/comment_resize.png"});e.appendChild(c);this.postButton=this.createButton(CoreDocs.loc("Post","Button text"),"post_button plain",CoreDocs.loc("Post this comment.","Tooltip"));e.appendChild(this.postButton);if(!CoreHeckler.pageController.get("readOnlyFlag")){this.addCommentButton=this.createButton(CoreDocs.loc("Reply","Button text"),"add_comment_button plain",CoreDocs.loc("Reply to this comment.","Tooltip"));e.appendChild(this.addCommentButton);var a=this.get("content").get("guid");this.addCommentButton.observe("click",function(d){this.getController().addComment(a)}.bind(this))}this.postButton.observe("click",function(d){this.endInlineEdit()}.bind(this));c.observe("mousedown",this.bubbleMouseDown.bind(this));var b=new Draggable(c,{constraint:"horizontal",onDrag:this.bubbleResized.bind(this),onStart:this.startBubbleResize.bind(this),onEnd:this.onBubbleFinishedResize.bind(this),snap:function(d,f){return[0,f]}})},onBubbleFinishedResize:function(a,b){this.bubbleResized(a,b);this.save()},onDragStart:function(){var a=this.getElementByClassName("bubble");this.preDragLeft=a.style.left;this.preDragTop=a.style.top},onDragEnd:function(){var f=!(this.get("content").hasPermissionToMove());var b=this.getElementByClassName("bubble");if(f){var a=new Effect.Move(b,{x:parseInt(this.preDragLeft,10),y:parseInt(this.preDragTop,10),mode:"absolute",afterFinish:this.onDragFinalPosition.bind(this)})}else{this.onDragFinalPosition();var c=this.getElementByClassName("anchor");var g=CoreHeckler.pageController.get("pageScale");var e=(parseInt(b.style.left,10)-parseInt(c.style.left,10))/g;var d=(parseInt(b.style.top,10)-parseInt(c.style.top,10))/g;this.get("content").set("bx",e);this.get("content").set("by",d);this.save(this.get("content").get("author"))}return f},onDragFinalPosition:function(){},onRevert:function(){},bubbleConstrain:function(b,c,a){element_dimensions=Element.getDimensions(a.element);parent_dimensions=Element.getDimensions($("preview_image"));return[Math.min(Math.max(b,this.MIN_EDGE_DISTANCE),parent_dimensions.width-element_dimensions.width-this.MIN_EDGE_DISTANCE),Math.min(Math.max(c,this.MIN_EDGE_DISTANCE),parent_dimensions.height-element_dimensions.height-this.MIN_EDGE_DISTANCE)]},renderBubble:function(){var a=this.getElementByClassName("bubble");if(CoreDocs.isMobile){a.observe("click",function(){this.collapse()}.bind(this));var b=this.getElementByClassName("anchor");b.observe("click",function(){this.expand()}.bind(this))}else{var f=this.getElementByClassName("header");var c=new Draggable(a,{handle:f,starteffect:null,endeffect:null,onStart:this.onDragStart.bind(this),onEnd:this.onDragEnd.bind(this),change:this.didDrag.bind(this),snap:this.bubbleConstrain.bind(this)});var e=this.getElementByClassName("footer");var c=new Draggable(a,{handle:e,starteffect:null,endeffect:null,onStart:this.onDragStart.bind(this),onEnd:this.onDragEnd.bind(this),change:this.didDrag.bind(this),snap:this.bubbleConstrain.bind(this)})}},renderOverlay:function(){},hoverTimer:null,pinned:false,renderAnchor:function(){if(CoreDocs.isMobile){return}var b=this.getElementByClassName("anchor");var a=this.getElementByClassName("bubble");var d=this.getElementByClassName("header");var c=this.getElementByClassName("footer");b.observe("mouseover",function(){var e=$A(this.getAllCommentsHere());e.each(function(f){clearTimeout(f.hoverTimer);f.expand(true)})}.bind(this));b.observe("mouseout",function(){var e=$A(this.getAllCommentsHere());e.each(function(f){f.startHoverTimer();if(!f.boundHoverPause){f.boundHoverPause=f.hoverPause.bind(f);f.boundHoverUnpause=f.hoverUnpause.bind(f)}f.rootElement.observe("mouseover",f.boundHoverPause);f.rootElement.observe("mouseout",f.boundHoverUnpause)})}.bind(this));a.observe("mousedown",this.bubbleMouseDown.bind(this));d.observe("mousedown",this.bubbleMouseDown.bind(this));c.observe("mousedown",this.bubbleMouseDown.bind(this))},startHoverTimer:function(){this.hoverTimer=setTimeout(this.hoverExpire.bind(this),500)},hoverExpire:function(){if(this.get("pinned")===false){this.collapse()}this.rootElement.stopObserving("mouseover",this.boundHoverPause);this.rootElement.stopObserving("mouseout",this.boundHoverUnpause)},hoverPause:function(){clearTimeout(this.hoverTimer)},hoverUnpause:function(){clearTimeout(this.hoverTimer);this.startHoverTimer()},createButton:function(a,c,d){var b=new Element("a",{title:d,"class":"button regular mini normal "+c});b.innerHTML='<span class="button-inner"><span class="label">'+a+"</span></span>";b.observe("mousedown",function(){b.addClassName("active")});b.observe("mouseup",function(){b.removeClassName("active")});return b},bubbleMouseDown:function(){this.set("pinned",true);this.bringToFront()},commentAnchorClick:function(){clearTimeout(this.hoverTimer);if(this.hasClassName("collapsed")===false){if(this.get("pinned")){this.collapse()}else{this.bubbleMouseDown()}}else{this.expand();this.bringToFront()}return false},bringToFront:function(){var d=CoreHeckler.pageController.get("frontComment");if(d!=this){var c=this.getElementByClassName("bubble");var e=parseInt(Element.getStyle(c,"z-index")||0,10);var b=e+1;if(d){var a=d.getElementByClassName("bubble");b=parseInt(Element.getStyle(a,"z-index")||0,10);a.style.zIndex=e}c.style.zIndex=b;CoreHeckler.pageController.set("frontComment",this)}},maximumLeft:function(){var a=this.getElementByClassName("bubble");return(CoreHeckler.pageController.pageScaledWidth(this.get("content").get("page"))-a.getWidth()-this.MIN_EDGE_DISTANCE)},maximumTop:function(){var a=this.getElementByClassName("bubble");return(CoreHeckler.pageController.pageScaledHeight(this.get("content").get("page"))-a.getHeight()-this.MIN_EDGE_DISTANCE)},updateCoordinates:function(){if(this.content&&this.content.deletedAndNoComments()){return}var b=CoreHeckler.pageController.get("pageScale");rescaledX=this.content.get("x")*b;rescaledY=this.content.get("y")*b;if(!CoreDocs.isMobile){rescaledBubbleX=rescaledX+(this.content.get("bx")*b);rescaledBubbleY=rescaledY+(this.content.get("by")*b);var a=this.getElementByClassName("bubble");a.style.left=Math.max(this.MIN_EDGE_DISTANCE,Math.min(rescaledBubbleX,this.maximumLeft()))+"px";a.style.top=Math.max(this.MIN_EDGE_DISTANCE,Math.min(rescaledBubbleY,this.maximumTop()))+"px";var c=this.content.get("bw");if(c){a.style.width=Math.min(Math.max(this.MIN_BUBBLE_WIDTH,c),this.MAX_BUBBLE_WIDTH)+"px"}}},isVisible:function(){var a=0;if(this.get("content")){a=this.get("content").get("page")}return(this.content!=null&&this.content.get("hasComments")&&(CoreHeckler.pageController.get("currentPageNumber")==a))},isDeleted:function(){return !this.content||!this.content.get("hasComments")},updateVisibility:function(){if(this.isVisible()){this.show()}else{this.hide()}},endInlineEdit:function(){this.get("editingView").endInlineEdit(false)},unsetEditingView:function(b){if(this.get("editingView")!=b){return}var a=this.getElementByClassName("bubble");a.removeClassName("editing");this.set("editingView",null);$view("#add_comment_to_page_button").set("inUse",false);$view("#add_comment_to_page_button").updateEnabled()},setEditingView:function(b){var a=this.getElementByClassName("bubble");a.addClassName("editing");this.set("editingView",b);$view("#add_comment_to_page_button").set("inUse",true);this.bringToFront()},expand:function(b){if(!b){this.set("pinned",true)}if(CoreDocs.isMobile){if(CoreHeckler.documentController.currentOpenCommentView){CoreHeckler.documentController.currentOpenCommentView.collapse()}CoreHeckler.documentController.currentOpenCommentView=this;var c=CoreHeckler.pageController.get("pageScale");var a=this.content.get("left")*c;var d=this.content.get("bottom")*c;window.scrollTo(a,d)}this.removeClassName("collapsed")},collapse:function(){this.addClassName("collapsed");this.set("pinned",false)},save:function(a){CoreHeckler.documentController.pollIfStale();this.getController().save(a)},hideIfNecessary:function(){if(!this.isVisible()){this.onDeleted()}},onDeleted:function(){this.hide()},resizeStartedMouse:0,resizeStartedWidth:0,startBubbleResize:function(b,c){var a=this.getElementByClassName("bubble");this.resizeStartedMouse=c.clientX;this.resizeStartedWidth=a.getWidth()},bubbleResized:function(b,d){var a=this.getElementByClassName("bubble");var c=Math.min(Math.max(this.MIN_BUBBLE_WIDTH,this.resizeStartedWidth+d.clientX-this.resizeStartedMouse),this.MAX_BUBBLE_WIDTH);a.style.width=c+"px";this.content.set("bw",c);this.didDrag()},getAllCommentsHere:function(){CoreDocs.error("This method must be overridden")},getController:function(){CoreDocs.error("This method must be overridden")},getClassName:function(){CoreDocs.error("This method must be overridden")},didDrag:function(){},readOnlyObserver:function(){if(this.content.get("hasComments")){this.render()}}.observes("CoreHeckler.pageController.readOnlyFlag")});require("core");require("views/canvas_comment");CoreHeckler.FloatingCommentView=CoreHeckler.CanvasCommentView.extend({updateCoordinates:function(){arguments.callee.base.apply(this,arguments);var c=CoreHeckler.pageController.get("pageScale");rescaledX=this.content.get("x")*c;rescaledY=this.content.get("y")*c;var a=this.getElementByClassName("bubble");a.style.left=Math.max(this.MIN_EDGE_DISTANCE,Math.min(rescaledX,this.maximumLeft()))+"px";a.style.top=Math.max(this.MIN_EDGE_DISTANCE,Math.min(rescaledY,this.maximumTop()))+"px";var b=this.getElementByClassName("anchor");b.style.left=rescaledX+"px";b.style.top=rescaledY+"px"},onDragEnd:function(){var e=!(this.get("content").hasPermissionToMove());var a=this.getElementByClassName("bubble");if(e){new Effect.Move(a,{x:parseInt(this.preDragLeft,10),y:parseInt(this.preDragTop,10),mode:"absolute",afterUpdate:this.didDrag.bind(this)})}else{var b=this.getElementByClassName("anchor");var f=CoreHeckler.pageController.get("pageScale");var d=parseInt(a.style.left,10)/f;var c=parseInt(a.style.top,10)/f;this.get("content").set("x",d);this.get("content").set("y",c);this.save();this.updateCoordinates()}},getAllCommentsHere:function(){return[this]},getController:function(){return CoreHeckler.floatingCommentController},getClassName:function(){return"floating_comment"}});require("core");require("controllers/page");require("controllers/document");CoreHeckler.floatingCommentController=SC.CollectionController.create({properties:["commentsVisible"],canEditCollection:true,arrangedObjectsBinding:"CoreHeckler.floatingComments.records",pageView:null,floatingCommentCanvas:null,commentsVisible:true,addComment:function(e){if(CoreHeckler.adaptor.fullMetadata.Floating){CoreDocs.errorController.reportError(CoreDocs.loc("Comment limit reached","Dialog box title"),CoreDocs.loc("You must delete some floating comments before you can make more.",""));return}$view("#add_comment_to_page_button").set("inUse",true);if(this.pageView===null){this.pageView=$view(".preview_image")}if(this.floatingCommentCanvas===null){this.floatingCommentCanvas=$view(".floating_comment_canvas")}var f=$("canvas");var t=f.getWidth();var c=f.getHeight();var b=(t/2);var a=(c/2);var s=CoreHeckler.DEFAULT_BUBBLE_WIDTH/2*-1;var r=-50;b+=s;a+=r;var u=this.floatingCommentCanvas.get("content").length;var m=u*Math.floor((t/13));var h=u*Math.floor((c/17));b+=m;a+=h;b=b%(t-CoreHeckler.DEFAULT_BUBBLE_WIDTH);a=a%(c+2*r);b+=f.scrollLeft;a+=f.scrollTop;var g=CoreHeckler.pageController.get("pageScale");var n=b/g;var l=a/g;var q=this.get("content");var d=new Date();var o=Math.round(d.getTime()/1000);var p={guid:CoreHeckler.documentController.createCommentGuid(),type:"Floatingcomment",body:"",author:CoreHeckler.commentator.get("guid"),time:o,parent:e,page:CoreHeckler.pageController.get("currentPageNumber"),x:n,y:l,bx:s,by:r,bw:CoreHeckler.DEFAULT_BUBBLE_WIDTH};return Heckler.commentController.addCommentHelper(p,CoreHeckler.Floatingcomment,CoreHeckler.floatingComments,this.floatingCommentCanvas,e)},save:function(a){if(!a){a=CoreHeckler.commentator.get("guid")}var b=CoreHeckler.Floatingcomment.findAll({author:a});CoreHeckler.adaptor.saveFloatingComments(b,a)}});require("core");CoreHeckler.cellSelectionController=SC.Object.create({loadingPageDataLoaded:0,retry:false,init:function(){arguments.callee.base.apply(this,arguments);this.tables={};this.observeDivID="preview";this.clearSelection();this.lastDataPath=null},setSelection:function(a){this.set("currentSelection",a);if((a)&&(CoreHeckler.rangedSelectionController)){CoreHeckler.rangedSelectionController.clearSelection()}},clearSelection:function(){this.setSelection(null)},cellDataLoader:function(){var a=CoreHeckler.pageController.get("loadingPageNumber");if(CoreHeckler.documentInfo.get("documentType")!=CoreDocs.DocumentType.NUMBERS&&CoreHeckler.documentInfo.get("documentType")!=CoreDocs.DocumentType.PAGES){CoreDocs.info("Page "+a+" cell selection is fully loaded");this.set("loadingPageDataLoaded",a);return}if(a>0){var b=CoreHeckler.adaptor.getCredentialedURI(CoreHeckler.adaptor.getiDiskResourcesPath())+pageHash(a)+"/cells"+a+".txt?ts="+CoreHeckler.documentInfo.get("originalPublishDate");this.downloadSelectionData(b,a)}}.observes("CoreHeckler.pageController.loadingPageNumber"),downloadSelectionData:function(b,a){if(b==this.lastDataPath){return}this.clearSelection();var d={};if(Prototype.Browser.IE){d["If-Modified-Since"]="January 1, 1970 12:00:00 GMT"}this.tables={};var c=new Ajax.Request(b,{method:"get",requestHeaders:d,onFailure:function(e){if(a!=CoreHeckler.pageController.get("loadingPageNumber")){return}this.set("lastDataPath",null);if(e.status==404){this.retry=false;this.set("loadingPageDataLoaded",a)}else{if(!this.retry){this.retry=true;this.downloadSelectionData(b,a)}else{this.retry=false;this.set("loadingPageDataLoaded",a);CoreDocs.error("Cell data file %@ failed to load.  Document may be corrupt.".fmt(b))}}}.bind(this),onSuccess:function(g){if(a!=CoreHeckler.pageController.get("loadingPageNumber")){return}this.retry=false;var f=g.responseText;var e=$A(f.split("\n\n"));e.each(function(m){if(m!==""){var v={};var q=m.split("\n");var u=q.shift();var l=q.shift();var r=q.shift();var p=q.shift();var s=q.shift();var o=q.shift();var t=[];if(q.last()&&q.last().startsWith("SKIPPED")){var n=q.pop();t=$A(n.split(" ").slice(1)).invoke("toFloat")}var h=q;v.skippedRows=t;v.columns=$A(s.split(" ")).invoke("toFloat");v.rows=$A(o.split(" ")).invoke("toFloat");v.angle=p;v.boundingBox=this.computeBoundingBox(v);v.mergedCells=$A([]);v.rowOffset=parseInt(r,10);v.objectID=l;h.each(function(x){var w=$A(x.split(" ")).invoke("toFloat");var y={row:w[0],column:w[1],rowSpan:w[2],columnSpan:w[3]};v.mergedCells.push(y)}.bind(this));this.tables[u]=v}}.bind(this));this.lastDataPath=b;CoreDocs.info("Page "+a+" cell selection is fully loaded");this.set("loadingPageDataLoaded",a)}.bind(this)})},isSelectionEqualTo:function(d){var c=this.get("currentSelection");if(c.tableID!=d.tableID){return false}var e=CoreHeckler.cellSelectionController.getMergedCell(c);var a=CoreHeckler.cellSelectionController.getMergedCell(d);var b=e!=null&&a!=null&&e.column==a.column&&e.row==a.row;var f=c.column==d.column&&c.row==d.row;return b||f},getMergedCell:function(a){var b=this.tables[a.tableID];var c=null;b.mergedCells.each(function(d){if(d.row<=a.row&&a.row<d.row+d.rowSpan&&d.column<=a.column&&a.column<d.column+d.columnSpan){c=Object.clone(d);throw $break}});return c},getCell:function(h){if(!h||!this.tables[h.tableID]){return null}var n=this.tables[h.tableID];var c=this.getMergedCell(h);var l;if(c){l=c;l.row=l.row-n.rowOffset;if(l.row<0){l.rowSpan+=l.row;l.row=0}else{if(l.row+l.rowSpan>=n.rows.length){l.rowSpan=n.rows.length-l.row-1}}}else{l={row:h.row,column:h.column,rowSpan:1,columnSpan:1};l.row=l.row-n.rowOffset}if(n.skippedRows.indexOf(l.row)!==-1){return null}var g=n.columns[l.column];var e=n.rows[l.row];var a=n.columns[l.column+l.columnSpan]-g;var m=n.rows[l.row+l.rowSpan]-e;var f=new IWRect(g,e,a,m);if(CoreHeckler.documentInfo.get("documentType")==CoreDocs.DocumentType.PAGES){f.origin.x+=1;f.size.width-=1;f.size.height-=1}var b=CoreHeckler.objectSelectionController.getBoundingBox(n);var d=CoreHeckler.Geometry.create({unscaledBoundingBox:b,unscaledRectangles:[f],angle:n.angle});return d},computeBoundingBox:function(c){var e=c.columns.first();var d=c.rows.first();var b=c.columns.last();var a=c.rows.last();return new IWRect(e,d,b-e,a-d)},getCellUnderMousePosition:function(f){var h=new IWPoint(Event.pointerX(f),Event.pointerY(f));tableID=-1;for(var c in this.tables){var o=this.tables[c];var b=CoreHeckler.objectSelectionController.getBoundingBox(o);var m=CoreHeckler.Geometry.create({unscaledBoundingBox:b,angle:o.angle});var n=m.mapBrowserToCanvas(h);if(m.rotatedBox.distanceFromPoint(n)===0){var g=m.mapRotatedToCanvas(n);if(m.boundingBox.distanceFromPoint(g)===0){tableID=c;break}}}if(tableID==-1){return null}var o=this.tables[tableID];var d=this.binarySearch(g.x,o.columns,function(e,p){return e-p});var a=o.columns[d];var l=this.binarySearch(g.y,o.rows,function(p,e){return p-e});if(l<0||l>=o.rows.length-1||d<0||d>=o.columns.length-1){return null}return{tableID:tableID,column:d,row:(l+o.rowOffset),objectID:o.objectID}},binarySearch:function(d,f,a){var e=-1;var c=f.length;var b=null;while(c-e>1){b=(e+c)>>>1;if(a(d,f[b])>0){e=b}else{c=b}}return c-1}});require("core");CoreHeckler.playbackController=SC.Object.create({slideshow:null,currentSlide:function(a,b){if(b!==undefined){this._currentSlide=b}return this._currentSlide||(this._currentSlide=[CoreHeckler.Page.find({pageNumber:(CoreHeckler.pageController.get("loadingPageNumber")||1)})])}.property(),currentSlideNumber:function(){return this.get("currentSlide")[0].get("pageNumber")}.property("currentSlide"),setDelegate:function(a){this.set("slideshow",a)},onKeyPress:function(c){var b=c.charCode||c.keyCode,a={altKey:!!c.altKey,ctrlKey:!!c.ctrlKey,shiftKey:!!c.shiftKey,metaKey:!!c.metaKey};if(b==27){this.showExited()}else{if(this.get("slideshow").getEmbed()){this.get("slideshow").getEmbed().onKeyPress(b,a)}}},getProperty:function(a){return this.get("slideshow").getEmbed().getProperty(a)},setProperty:function(a,b){this.get("slideshow").getEmbed().setProperty(a,b)},propertyChanged:function(a,b){if(a=="currentSlide"){if(CoreHeckler.pageController&&this.get("currentSlideNumber")!=b){this.set("currentSlide",[CoreHeckler.Page.find({pageNumber:b})])}}else{this.get("slideshow").set(a,b)}},currentPageChangedObserver:function(){if(this.get("slideshow")&&this.get("slideshow").getEmbed()&&this.get("slideshow").getEmbed().getProperty){if(this.getProperty("currentSlide")!=this.get("currentSlideNumber")){this.get("slideshow").getEmbed().gotoSlide(this.get("currentSlideNumber"))}}}.observes("currentSlide"),showExited:function(){var a=$view("#thumbnail_container");if(this._thumbnailListBinding){this._thumbnailListBinding.disconnect()}a.get("selectionBinding").connect();this.get("slideshow").close();CoreHeckler.pageController.changeToPage.bind(CoreHeckler.pageController,this.get("currentSlideNumber")).defer()},showDidLoad:function(){this.get("slideshow").onFirstSlideReady()},showWillOpen:function(){},startSlideshow:function(){this.checkSupportedBrowser(function(){var a=$view("#thumbnail_container");a.get("selectionBinding").disconnect();if(this._thumbnailListBinding){this._thumbnailListBinding.connect()}else{this._thumbnailListBinding=a.bind("selection",SC.Binding.From("CoreHeckler.playbackController.currentSlide"))}this.set("currentSlide",null);this.get("slideshow").open()}.bind(this))},onMouseDown:function(a){var b=this.get("slideshow").getEmbed();if(b){b.onMouseDown({leftClick:a.isLeftClick(),rightClick:a.isRightClick(),middleClick:a.isMiddleClick()})}},checkSupportedBrowser:function(b){var a=function(){writeCookie("IWORK_COM_EMBED_VIEW","N","session",true);b()};if(readCookie("playbackWarning")){a();return}else{writeCookie("playbackWarning",1,"session")}if(SC.Platform.isMac&&SC.Platform.MacOS.major==10&&SC.Platform.MacOS.minor<5){CoreDocs.iconDialogController.showDialog("caution",null,CoreDocs.loc("This version of Mac OS X isn’t supported and won’t play all presentation animations.","Dialog title"),CoreDocs.loc("Viewing animated presentations on iWork.com requires Mac OS X 10.5 or later.","Dialog content")+"<br /><br /><a href='http://"+CoreDocs.loc("www.apple.com/macosx/","URL for more about OS X")+"' target='_blank'>"+CoreDocs.loc("Learn more about Mac OS X.","Dialog link")+"</a>",CoreDocs.loc("Continue",""),null,function(){a.delay(0.5)})}else{if(parseInt(SC.browser.webkit,10)<532||SC.Platform.isChrome){CoreDocs.iconDialogController.showDialog("caution",{title:CoreDocs.loc("Get Safari",""),link:"http://"+CoreDocs.loc("www.apple.com/safari/download/","URL for Safari 5 download")},CoreDocs.loc("Your browser is not supported and won’t play presentation animations.","Dialog title"),CoreDocs.loc("Viewing animated presentations on iWork.com requires the latest version of Safari.","Dialog content"),CoreDocs.loc("Continue",""),null,function(){a.delay(0.5)})}else{a()}}},triggerReflow:function(){this.get("slideshow").triggerReflow()}});require("core");CoreHeckler.objectSelectionController=SC.Object.create({currentSelection:null,loadingPageDataLoaded:0,retry:false,init:function(){arguments.callee.base.apply(this,arguments);this.objects={};this.lastDataPath=null},objectDataLoader:function(){var a=CoreHeckler.pageController.get("loadingPageNumber");this.set("loadingPageDataLoaded",a);return}.observes("CoreHeckler.pageController.loadingPageNumber"),downloadSelectionData:function(b,a){if(b==this.lastDataPath){return}this.objects={};var d={};if(Prototype.Browser.IE){d["If-Modified-Since"]="January 1, 1970 12:00:00 GMT"}var c=new Ajax.Request(b,{method:"get",requestHeaders:d,onSuccess:function(f){if(a!=CoreHeckler.pageController.get("loadingPageNumber")){return}this.retry=false;var e=$A(f.responseText.split("\n\n"));e.each(function(m){if(m!==""){var g=$A(m.split("\n"));var l={};var o=g.shift();var h=g.shift().split(" ");var n=g.shift().split(" ");l.geometry={angle:parseFloat(h[0]),horizontalFlip:parseInt(h[1],10),verticalFlip:parseInt(h[2],10),skewX:parseFloat(h[3]),skewY:parseFloat(h[4])};l.boundingBox=new IWRect(n[0],n[1],n[2],n[3]);this.objects[o]=l}}.bind(this));this.lastDataPath=b;this.set("loadingPageDataLoaded",a)}.bind(this),onFailure:function(e){if(a!=CoreHeckler.pageController.get("loadingPageNumber")){return}this.set("lastDataPath",null);if(e.status==404){this.retry=false;this.set("loadingPageDataLoaded",a)}else{if(!this.retry){this.retry=true;this.downloadSelectionData(b,a)}else{this.retry=false;this.set("loadingPageDataLoaded",a);CoreDocs.error("Object data file %@ failed to load.  Document may be corrupt.".fmt(b))}}}.bind(this)})},getObject:function(a){return this.objects[a]},getBoundingBox:function(c){var b=this.getObject(c.objectID);var a=b?b.boundingBox:c.boundingBox;return a},getGeometry:function(b){if(!b){return null}var a=this.getObject(b);return CoreHeckler.Geometry.create({unscaledBoundingBox:a.boundingBox,unscaledRectangles:[a.boundingBox],angle:a.geometry.angle})},getObjectUnderMousePosition:function(d){var c=new IWPoint(Event.pointerX(d),Event.pointerY(d));for(var g in this.objects){var f=this.getGeometry(g);var a=f.mapBrowserToCanvas(c);if(f.rotatedBox.distanceFromPoint(a)===0){var b=f.mapRotatedToCanvas(a);if(f.boundingBox.distanceFromPoint(b)===0){return g}}}return null},setSelection:function(a){this.set("currentSelection",a)}});require("core");require("models/comment");CoreHeckler.Documentcomment=SC.Record.extend({properties:["body","author","version","time","parent","deleted","system"],init:function(){arguments.callee.base.apply(this,arguments);this.set("deleted",false)},trimComment:function(){var a={guid:this.get("guid").toString(),type:this.get("type"),author:this.get("author"),time:this.get("time")};if(this.get("deleted")){a.deleted=this.get("deleted")}else{if(this.get("body")){a.body=this.get("body")}}if(this.get("system")){a.system=this.get("system")}return a},safeBody:function(){var a=this.get("body");if(a){return a.escapeHTML().replace(/\r\n|\r|\n/g,"<br/>").replace(/&amp;/g,"&").replace(/  /g," &nbsp;")}return""}.property("body"),expired:function(){var a=new Date();var b=new Date(this.get("time")*1000);return(this.get("deleted")&&(a-b)>(1000*60*60*24))}.property("deleted","time")});require("core");require("models/canvas_comment");CoreHeckler.Floatingcomment=CoreHeckler.Canvascomment.extend({trimComment:function(){var a=arguments.callee.base.apply(this,arguments);a.x=Math.round(this.get("x"));a.y=Math.round(this.get("y"));return a},commentType:function(){return CoreHeckler.Floatingcomment}.property("guid")});require("core");require("models/contact");CoreHeckler.CommentCollection=SC.Collection.extend({refresh:function(){var b=arguments.callee.base.apply(this,arguments);var a=$A(this.get("records"));a.each(function(c){c.recalculateChildren()});return b}});require("core");require("models/comment");require("models/document");require("models/document_comment");require("models/floating_comment");require("models/user");require("models/page");require("models/comment_collection");require("controllers/document");CoreHeckler.adaptor=CoreDocs.Adaptor.create({namespaces:["CoreHeckler","CoreDocs","Mac"],commentatorPath:null,documentName:null,credentials:null,hashedDocumentName:null,hashedDocumentPassword:null,commentatorPassword:null,contentType:"text/xml",secondaryUsers:[],ctag:0,lastChangeTime:Date.now(),failureCount:0,MAX_FAILURE_THRESHOLD:3,REMEMBER_DURATION:0,statusExceptionResponder:{onException:function(){CoreDocs.errorController.reportError(CoreDocs.loc("The document can't be accessed.",""),CoreDocs.loc("Double-check the link and try again.",""))}},fullMetadata:[],MAX_METADATA:95000,init:function(){arguments.callee.base.apply(this,arguments);this.requests=$H(this.requests||{}).merge({getDataFromURI:{action:"?webdav-method=PROPFIND",method:"get",useEtag:false,requestHeaders:{depth:"3"},asynchronous:true,onSuccess:"CoreHeckler.adaptor.handleGetSuccess",onFailure:"CoreHeckler.adaptor.handleGetFailure"},getPublicDataFromURI:{action:"",method:"get",useEtag:false,requestHeaders:{},asynchronous:true,onSuccess:"CoreHeckler.adaptor.handleGetPublicSuccess",onFailure:"CoreHeckler.adaptor.handleGetFailure"},getContentFromURI:{method:"get",action:"",useEtag:false,asynchronous:true,onSuccess:"CoreHeckler.adaptor.handleGetSuccess",onFailure:"CoreHeckler.adaptor.handleGetFailure"},saveDataToURI:{action:"?webdav-method=PROPPATCH",method:"post",useEtag:false,contentType:"text/xml",requestHeaders:{},onSuccess:"CoreHeckler.adaptor.handleSaveSuccess",onFailure:"CoreHeckler.adaptor.handleSaveFailure",asynchronous:true},saveComments:{action:"?protocol=roap&item=iwork&asset=metadata&name=&scope=Document",method:"post",useEtag:false,contentType:"application/text",requestHeaders:{},onSuccess:"CoreHeckler.adaptor.handleSaveSuccess",onFailure:"CoreHeckler.adaptor.handleSaveFailure",asynchronous:true},savePrivacy:{action:"?protocol=roap&item=iwork&asset=document&action=set&public=",method:"post",useEtag:false,contentType:"text/xml",requestHeaders:{},onSuccess:"CoreHeckler.adaptor.handleSaveSuccess",onFailure:"CoreHeckler.adaptor.handleSaveFailure",asynchronous:true},addReviewer:{action:"?protocol=roap&item=iwork&asset=reviewer&action=add&",method:"post",useEtag:false,contentType:"application/text",requestHeaders:{},onFailure:"CoreHeckler.adaptor.handleSaveFailure",asynchronous:false},getPassword:{action:"?protocol=roap&item=iwork&asset=reviewer&name=",method:"get",useEtag:false,requestHeaders:{},asynchronous:false},getMarketeerPassword:{action:"?protocol=roap&item=iwork&asset=account&scope=mktpass",method:"get",useEtag:false,requestHeaders:{},asynchronous:false},removeReviewer:{action:"?protocol=roap&item=iwork&asset=reviewer&action=remove&name=user@apple.com",method:"post",useEtag:false,contentType:"application/text",requestHeaders:{},asynchronous:false},getAllComments:{method:"get",action:"?protocol=roap&item=iwork&asset=metadata",requestHeaders:{},useEtag:false,asynchronous:false,onSuccess:"CoreHeckler.adaptor.handleGetCommentsSuccess",onFailure:"CoreHeckler.adaptor.handleGetFailure"},setStatus:{action:"?webdav-method=PROPPATCH",method:"post",useEtag:false,contentType:"text/xml",requestHeaders:{},onSuccess:"CoreHeckler.adaptor.handleSaveSuccess",onFailure:"CoreHeckler.adaptor.ignoreFailure",asynchronous:true},deleteFolder:{action:"?protocol=roap&item=folder&method=delete",method:"post",useEtag:false,contentType:"text/xml",requestHeaders:{depth:"0"},onSuccess:"CoreHeckler.adaptor.handleDeleteSuccess",onFailure:"CoreHeckler.adaptor.handleDeleteFailure"},deleteDocument:{action:"?protocol=roap&item=iwork&asset=document&action=remove",method:"post",useEtag:false,contentType:"application/text",onSuccess:"CoreHeckler.adaptor.handleDeleteSuccess",onFailure:"CoreHeckler.adaptor.handleDeleteFailure"},checkCredentials:{action:"?webdav-method=PROPFIND",method:"get",useEtag:false,requestHeaders:{depth:"1"},asynchronous:false,onSuccess:"CoreHeckler.adaptor.handleCheckCredentialsSuccess",onFailure:"CoreHeckler.adaptor.handleCheckCredentialsError"},sendEmail:{action:"?protocol=roap&item=iwork&asset=mail",method:"post",useEtag:false,asynchronous:false,contentType:"text/xml"},checkMailStatus:{action:"?scope=mailstatus&protocol=roap&asset=account&item=iwork",method:"get",useEtag:false,asynchronous:false,onSuccess:null,onFailure:null},incrementViewCounter:{action:"?webdav-method=propget&counter",method:"get",useEtag:false}}).toObject()},sendEmail:function(g,e,h,f){var d="<MAIL_ITEMS>         <INVITE>             <TO><![CDATA["+e+"]]></TO>             <SUBJECT><![CDATA[View “"+g+"” on iWork.com Beta]]></SUBJECT>             <DOCUMENT_URL><![CDATA["+h+"]]></DOCUMENT_URL>             <THUMBNAIL_URL><![CDATA["+f+"]]></THUMBNAIL_URL>             <DOCUMENT_TITLE><![CDATA["+g+"]]></DOCUMENT_TITLE>             <PUBLISHER_NAME><![CDATA["+CoreHeckler.get("author").get("displayName")+"]]></PUBLISHER_NAME>             <PUBLISHER_URL><![CDATA[mailto:"+CoreHeckler.get("author").get("email")+"]]></PUBLISHER_URL>         </INVITE>     </MAIL_ITEMS>";var a=this.getiDiskPath();this.requests.sendEmail.base=a;var b=this.requests.sendEmail.action.toQueryParams();var l=CoreHeckler.documentInfo.get("publisherLocale")||"en";if(!b.loc){this.requests.sendEmail.action+="&loc="+l}this.makeRequest("sendEmail",d);var c=this.server._lastRequest.transport.status;if(c!=200){CoreDocs.error(this.server._lastRequest.transport.responseText.trim())}return c},checkMailStatus:function(){var c=this.getiDiskPath();this.requests.checkMailStatus.base=c;this.makeRequest("checkMailStatus");var a=this.server._lastRequest.transport.status;var b=this.server._lastRequest.transport.responseText.trim();return b=="Validated"},incrementViewCounter:function(){var a=this.getiDiskRoot()+".Counters/"+encodeURIComponent(CoreHeckler.documentInfo.get("publishName"));this.requests.incrementViewCounter.base=a;this.makeRequest("incrementViewCounter")},getiDiskResourcesPath:function(){if(CoreHeckler.get("isPublicViewer")){return this.getiDiskPath()+"/"}else{return this.getiDiskPath()+"/Resources/"}},getiDiskPath:function(){return this.getiDiskRoot()+this.documentName},getiDiskRoot:function(){var a=arguments.callee.base.apply(this,arguments);if(!CoreHeckler.get("isPublicViewer")){a+=".iWork/Share/"}return a},getURI:function(){return this.getCredentialedURI(this.getiDiskPath())},getCredentialedURI:function(a){if(!this.credentials){return a}else{var c=this.username+"%40"+this.iDiskOwner+":"+this.password;var b=window.location.protocol+"//"+c+"@"+location.host+a;return b}},getBaseResourceName:function(){var b=CoreHeckler.adaptor.documentName.match("^(.*)\\..*$");if(b&&b[1]){b=b[1]}else{b=CoreHeckler.adaptor.documentName}var a=this.getCredentialedURI(this.getiDiskResourcesPath());a+=b;return a},setCredentials:function(b,a){this.username=b;this.password=a},getAllComments:function(){if(CoreHeckler.isDemo){return}var a=this.getiDiskPath();this.requests.getAllComments.base=a;this.requests.getAllComments.requestHeaders["If-None-Match"]=this.ctag;this.makeRequest("getAllComments")},checkDocumentPassword:function(c){this.hashedDocumentPassword=hex_md5(c).substring(0,10);this.createHashedDocumentName();var d=CoreHeckler.emailToSecondaryUser(CoreHeckler.commentatorEmail);var b=d+"-"+this.hashedDocumentName;var a=this.hashedDocumentPassword+this.commentatorPassword;this.setCredentials(b,a);this.checkCredentials()},createHashedDocumentName:function(){if(!this.get("hashedDocumentName")){this.set("hashedDocumentName",hex_md5(this.get("documentName")).substring(0,10))}},getDocumentMetadata:function(){if(CoreHeckler.isDemo){this.getDemoData()}CoreDocs.errorController.triggerAuthenticationHint();var a=this.getiDiskPath();this.requests.getDataFromURI.base=a;this.request.action="?ts="+this.timeStamp();this.makeRequest("getDataFromURI");CoreDocs.serverStatusController.checkServerStatus()},getPublicDocumentMetadata:function(){if(CoreHeckler.isDemo){this.getDemoData()}var a=this.getiDiskPath()+"/metadata.json";this.requests.getPublicDataFromURI.base=a;this.requests.getPublicDataFromURI.action="?ts="+this.timeStamp();if(this.documentLastModified){this.requests.getPublicDataFromURI.requestHeaders["If-Modified-Since"]=this.documentLastModified}this.makeRequest("getPublicDataFromURI");CoreDocs.serverStatusController.checkServerStatus()},deleteUser:function(a){this.requests.removeReviewer.base=this.getiDiskPath();this.requests.removeReviewer.action="?protocol=roap&item=iwork&asset=reviewer&action=remove&name="+encodeURIComponent(a.get("metadataFolder"));this.makeRequest("removeReviewer")},generatePassword:function(b){b=(typeof(b)=="undefined")?20:b;var a="";while(a.length<b){a+=((1+Math.random())*1048576).ceil().toString(16).toUpperCase()}return a.substring(0,b)},addUser:function(b){if(CoreHeckler.documentInfo.get("documentPassword")){var a=CoreHeckler.documentInfo.get("documentPassword")}var e=this.generatePassword();if(a){e=a+e.substring(0,10)}var c=[];c.push({guid:b.get("guid"),type:b.get("type"),firstName:b.get("firstName"),lastName:b.get("lastName"),email:b.get("email"),colorClass:b.get("colorClass"),role:b.get("role"),downloadRole:b.get("downloadRole"),added:b.get("added"),deleted:b.get("deleted"),page:b.get("page"),zoom:b.get("zoom")});this.requests.addReviewer.base=this.getiDiskPath();this.requests.addReviewer.action="?protocol=roap&item=iwork&asset=reviewer&action=add&name="+encodeURIComponent(b.get("metadataFolder"))+"&password="+e;this.makeRequest("addReviewer",c.toJSONString());var d=this.server._lastRequest.transport.responseText.toQueryParams();if(a&&d&&d.password&&d.password.length>=20){return d.password.substring(10,20)}else{if(a){return e.substring(10,20)}else{if(d&&d.password){return d.password}else{return e}}}},saveUserData:function(a){if(CoreHeckler.isDemo){return}var c=[];c.push({guid:a.get("guid"),type:a.get("type"),firstName:a.get("firstName"),lastName:a.get("lastName"),email:a.get("email"),colorClass:a.get("colorClass"),role:a.get("role"),downloadRole:a.get("downloadRole"),added:a.get("added"),deleted:a.get("deleted"),page:a.get("page"),zoom:a.get("zoom")});var b=this.getiDiskPath()+"/Metadata/"+a.get("metadataFolder");this.saveDataToURIforProperty(c.toJSONString(),b,"Heckler.user")},getPassword:function(a){this.requests.getPassword.base=this.getiDiskPath();this.requests.getPassword.action="?protocol=roap&item=iwork&asset=reviewer&name="+encodeURIComponent(a.get("metadataFolder"))+"&ts="+this.timeStamp();this.makeRequest("getPassword");var c=this.server._lastRequest.transport.responseText;try{c=c.evalJSON(true)}catch(b){c=null}if(c&&c.password){if(CoreHeckler.documentInfo.get("documentPassword")){return c.password.substring(10,20)}else{return c.password}}else{return null}},getMarketeerPassword:function(){var a=this.requests.getMarketeerPassword;a.base=this.getiDiskPath();this.request("getMarketeerPassword");var c=this.server._lastRequest.transport.responseText;try{c=c.evalJSON(true)}catch(b){c=null}return c?c.marketeerPassword:null},limitCheck:function(b,a){this.fullMetadata[a]=(b.length>this.MAX_METADATA)},getDemoData:function(){var a=this.getiDiskPath()+"/"+this.documentName+".xml";this.requests.getContentFromURI.requestHeaders=this.getXHecklerHeaders();this.requests.getContentFromURI.base=a;this.makeRequest("getContentFromURI")},checkCredentials:function(){var a=this.getiDiskPath();this.requests.checkCredentials.base=a;this.requests.checkCredentials.requestHeaders=this.getXHecklerHeaders();Ajax.Responders.register(this.statusExceptionResponder);this.makeRequest("checkCredentials")},documentToJSON:function(d){var c=[];var a={};for(var b=0;b<d.properties.length;b++){a[d.properties[b]]=d.get(d.properties[b])}c.push(a);return c.toJSONString()},saveDocument:function(b){var a=this.getiDiskPath()+"/Metadata/";this.saveDataToURIforProperty(this.documentToJSON(b),a,"Heckler.document")},saveDocumentPrivacy:function(c,d){var a=this.getiDiskPath();this.requests.savePrivacy.base=a;this.requests.savePrivacy.requestHeaders=this.getXHecklerHeaders();this.requests.savePrivacy.action="?protocol=roap&item=iwork&asset=document&action=set&public="+c.get("isPublic");var b='<?xml version="1.0"?><Heckler.metadata><Heckler.document><![CDATA['+this.documentToJSON(c)+"]]></Heckler.document><Heckler.comments><COMMENT_TYPE>DOCUMENT</COMMENT_TYPE><COMMENT_AUTHOR><![CDATA["+CoreHeckler.get("author").get("email")+"]]></COMMENT_AUTHOR><COMMENT_DATA><![CDATA["+this.commentsToJSON(d,"Document")+"]]></COMMENT_DATA></Heckler.comments></Heckler.metadata>";this.makeRequest("savePrivacy",b)},savePages:function(a){var e=[];for(var b=0;b<a.length;b++){var d=a[b];if(d.get("type")=="Page"){e.push({guid:d.get("guid").toString(),type:d.get("type"),pageNumber:d.get("pageNumber"),indentLevel:d.get("indentLevel")})}}var c=this.getiDiskPath()+"/Metadata/";this.saveDataToURIforProperty(e.toJSONString(),c,"Heckler.pages")},commentsToJSON:function(a,c){c+="comment";var d=[];for(var b=0;b<a.length;b++){var e=a[b];if((e.get("type")==c)&&(!e.get("expired"))){if(e.get("type")!="Documentcomment"&&e.get("editing")){continue}d.push(e.trimComment());e.set("newRecord",false)}}return d.toJSON()},saveComments:function(f,b,c){if(!b||b.length==0||CoreHeckler.isDemo){return}var e=(f=="Object"?"Floating":f),a=this.commentatorPath;if(c){var d=CoreHeckler.User.find({guid:c});a=d.get("metadataFolder")}this.requests.saveComments.base=this.getiDiskPath();this.requests.saveComments.action="?protocol=roap&item=iwork&asset=comment&name="+encodeURIComponent(a)+"&scope="+e;var g=this.commentsToJSON(b,f);this.limitCheck(g,e);this.makeRequest("saveComments",g)},saveDocumentComments:function(a,b){this.saveComments("Document",a,b)},saveFloatingComments:function(a,b){this.saveComments("Floating",a,b)},saveRangedComments:function(a,b){this.saveComments("Ranged",a,b)},saveCellComments:function(a,b){this.saveComments("Cell",a,b)},saveObjectComments:function(a,b){this.saveComments("Object",a,b)},makeRequest:function(a,b){this.request(a,b);if(this.requests[a].method=="post"&&this.requests[a].asynchronous){this.startConnectionTimeout()}},deleteDocument:function(a){if(CoreHeckler.isDemo){return}var b=this.getiDiskRoot()+a;this.requests.deleteDocument.base=b;this.makeRequest("deleteDocument")},setStatus:function(a){if(CoreHeckler.isDemo){return}this.requests.setStatus.base=CoreHeckler.adaptor.getiDiskPath();postBody='<?xml version="1.0"?><A:propertyupdate xmlns:A="DAV:" xmlns:B="urn:iwork:property"><A:set><A:prop><B:Heckler.status>'+a+"</B:Heckler.status></A:prop></A:set></A:propertyupdate>";this.makeRequest("setStatus",postBody)},handleCheckCredentialsError:function(b,a){if(window.location.toString().toQueryParams().s){CoreDocs.errorController.setInvalidPasswordWarningVisible(true);CoreDocs.errorController.setDocumentPasswordProcessing(false)}else{CoreHeckler.documentController.fatalError(CoreDocs.loc("Document doesn't exist.","Title"),CoreDocs.loc("The document you requested doesn't exist or is no longer active.","Details"))}},shouldDisplayFailure:function(){var a=(CoreHeckler.adaptor.failureCount>=CoreHeckler.adaptor.MAX_FAILURE_THRESHOLD);if(a){CoreHeckler.adaptor.failureCount=0}return a},handleFailure:function(){CoreHeckler.adaptor.failureCount++},handleSuccess:function(){CoreHeckler.adaptor.failureCount=0},handleGetFailure:function(a,b){CoreHeckler.adaptor.handleFailure();if(a.status==401){if(CoreHeckler.adaptor.getXHecklerScope()=="Reviewer"){if(!CoreDocs.browserController.checkCookiesEnabled()){CoreHeckler.documentController.fatalError(CoreDocs.loc("To log in to iWork.com, you must enable cookies in your browser.","Title"),CoreDocs.loc("Change your browser's settings and try again. <a href='http://www.apple.com/iwork/iwork-dot-com/'>Learn more...</a>","Details"));return}else{if(CoreHeckler.get("isDocumentReady")){window.location.reload();return}}}else{var c=window.location;window.location=CoreDocs.SIGNIN_URL_NEXT.fmt(escape(window.location));return}}if(CoreHeckler.get("isDocumentReady")&&!CoreHeckler.adaptor.shouldDisplayFailure()){return}if(a.status==304){}else{if(a.status==404){if(!CoreHeckler.get("isDocumentReady")){CoreHeckler.documentController.fatalError(CoreDocs.loc("Document doesn't exist.","Title"),CoreDocs.loc("The document you requested doesn't exist or is no longer active.","Details"))}else{CoreHeckler.documentController.fatalError(CoreDocs.loc("Document doesn't exist.","Title"),CoreDocs.loc("The publisher has removed this document.","Details"))}}else{if(a.status==402){CoreHeckler.documentController.fatalError(CoreDocs.loc("The account you requested doesn't exist or is currently inactive.","Title"),CoreDocs.loc("Double-check the account information and try again.","Details"))}else{if(!CoreHeckler.get("isDocumentReady")){CoreHeckler.documentController.fatalError(CoreDocs.loc("Connection Error","Title"),CoreDocs.loc("Your document could not be loaded. Please try again soon.","Details"));CoreDocs.error("Initial GET failed with HTTP "+a.status+". Loading halted.")}else{}}}}},handleGetStatusFailure:function(a,b){},handleSaveFailure:function(a,b){CoreHeckler.adaptor.cancelTimeout();if(a.status==404){CoreHeckler.documentController.fatalError(CoreDocs.loc("Your changes couldn't be saved.","Title"),CoreDocs.loc("The publisher has removed this document.","Details"))}else{if(a.status==419){CoreDocs.errorController.reportError(CoreDocs.loc("You've reached the maximum limit on contributions.\n","Title"),CoreDocs.loc("No additional notes or comments can be added until you delete some of your previous contributions.","Details"))}else{CoreDocs.errorController.reportError(CoreDocs.loc("Your changes couldn't be saved.","Title"),CoreDocs.loc("Please try again.","Details"));CoreDocs.error("Unhandled failure in handleSaveFailure: "+a.responseText)}}},ignoreFailure:function(a,b){},handleGetSuccess:function(a,b){CoreHeckler.adaptor.handleSuccess();if(!CoreHeckler.get("isDocumentReady")){CoreDocs.errorController.cancelAuthenticationHint();CoreHeckler.adaptor.loadDocument(a.responseXML)}},handleGetPublicSuccess:function(a,b){CoreHeckler.adaptor.handleSuccess();CoreHeckler.adaptor.documentLastModified=a.getResponseHeader("Last-Modified");if(!CoreHeckler.get("isDocumentReady")){CoreHeckler.adaptor.loadPublicDocument(a.responseText)}else{try{CoreHeckler.server.refreshRecordsWithData(a.responseText.evalJSON(true));CoreHeckler.documentController.checkForInactivity()}catch(c){CoreDocs.error("Error parsing public document metadata:");CoreDocs.error(c.toString())}}},handleGetCommentsSuccess:function(d,c){CoreHeckler.adaptor.handleSuccess();CoreHeckler.adaptor.lastChangeTime=Date.now();try{if(c){var f=c.without(undefined);CoreHeckler.server.refreshRecordsWithData(f)}else{CoreHeckler.server.refreshRecordsWithData(d.responseText.evalJSON(true))}var b=d.getResponseHeader("CTag");if(b){CoreHeckler.adaptor.ctag=b}if(!CoreHeckler.get("isDocumentReady")){return}else{CoreHeckler.documentController.checkForInactivity();var h=CoreHeckler.documentCommentController.lastCommentTime();CoreHeckler.documentComments.refresh();CoreHeckler.floatingComments.refresh();CoreHeckler.rangedComments.refresh();CoreHeckler.cellComments.refresh();CoreHeckler.users.refresh();var a=CoreHeckler.documentCommentController.lastCommentTime();if(h<a){$view("#document_comment_container").scrollToBottom()}}}catch(g){if(!CoreHeckler.get("isDocumentReady")){CoreDocs.errorController.reportError(CoreDocs.loc("Update failed","Dialog box title"),CoreDocs.loc("iWork.com could not load the document successfully.",""));CoreDocs.error(g.toString())}else{CoreDocs.error("Status was "+d.status);CoreDocs.error("Response was "+d.responseText);CoreDocs.error(g.toString());CoreDocs.error(" ")}}},loadDocument:function(a){CoreHeckler.loadDocumentStartTime=new Date();try{var c=["document","pages","user","downloads","comments"];for(var b=0;b<c.length;b++){CoreHeckler.adaptor.addXMLDataToStore(a,"Heckler."+c[b])}var f=this.getHecklerElementsByTagName(a,"Heckler.isPublic"),d=false;if(f.length){f[0].normalize();d=f[0].firstChild.nodeValue==="true"}this.setupDocumentAndBindControllers(d)}catch(g){CoreDocs.errorController.reportError(CoreDocs.loc("The document could not load.","The document could not load"));CoreDocs.error(g.toString())}},loadPublicDocument:function(b){CoreHeckler.loadDocumentStartTime=new Date();try{var a=b.evalJSON(true);CoreHeckler.server.refreshRecordsWithData(a);this.setupDocumentAndBindControllers(true)}catch(c){CoreDocs.errorController.reportError(CoreDocs.loc("The document could not load.","The document could not load"));CoreDocs.error(c.toString())}},setupDocumentAndBindControllers:function(b){CoreHeckler.set("documentInfo",CoreDocs.Document.find({}));if(!CoreHeckler.documentInfo){throw (CoreDocs.loc("No documents found.",""))}CoreHeckler.documentInfo.set("isPublic",b);CoreHeckler.documentInfo.set("originalPublishDate",CoreHeckler.documentInfo.get("publishDate"));document.title=CoreDocs.loc("iWork.com","The name of this product")+" - "+CoreHeckler.documentInfo.get("title");CoreHeckler.pages=SC.Collection.create({recordType:CoreHeckler.Page,orderBy:"pageNumber"});CoreHeckler.pages.refresh();CoreHeckler.users=SC.Collection.create({recordType:CoreHeckler.User,orderBy:"firstName ASC"});if(CoreHeckler.get("isPublicViewer")){CoreHeckler.commentator=CoreHeckler.users.newRecord({guid:-1,email:"noreply@iwork.com",role:CoreHeckler.CommentRole.VIEWER})}else{if(CoreHeckler.commentatorEmail){CoreHeckler.commentator=CoreHeckler.User.find({email:CoreHeckler.commentatorEmail})}}if(!CoreHeckler.commentator){CoreHeckler.commentator=CoreHeckler.User.find({guid:1})}CoreHeckler.users.refresh();CoreHeckler.adaptor.commentatorPath=CoreHeckler.commentator.get("metadataFolder");CoreHeckler.set("author",CoreHeckler.User.find({role:CoreHeckler.CommentRole.PUBLISHER}));CoreHeckler.User.find({role:CoreHeckler.CommentRole.PUBLISHER}).set("deleted",true);CoreHeckler.User.findAll({role:CoreHeckler.CommentRole.COMMENTER}).set("deleted",false);if(CoreDocs.downloadsController){if(CoreHeckler.commentator.get("downloadRole")===CoreHeckler.DownloadRole.VIEWER){CoreDocs.downloadsController.set("downloadsDisabled",YES)}Heckler.downloads=SC.Collection.create({recordType:CoreDocs.Download});Heckler.downloads.refresh()}CoreHeckler.documentComments=SC.Collection.create({recordType:CoreHeckler.Documentcomment});CoreHeckler.floatingComments=CoreHeckler.CommentCollection.create({recordType:CoreHeckler.Floatingcomment,conditions:{parent:null},orderBy:"time ASC"});CoreHeckler.rangedComments=CoreHeckler.CommentCollection.create({recordType:CoreHeckler.Rangedcomment,conditions:{parent:null},orderBy:"time ASC"});CoreHeckler.cellComments=CoreHeckler.CommentCollection.create({recordType:CoreHeckler.Cellcomment,conditions:{parent:null},orderBy:"time ASC"});CoreHeckler.objectComments=CoreHeckler.CommentCollection.create({recordType:CoreHeckler.Objectcomment,conditions:{parent:null},orderBy:"time ASC"});CoreHeckler.documentCommentController.set("content",CoreHeckler.documentComments);CoreHeckler.floatingCommentController.set("content",CoreHeckler.floatingComments);CoreHeckler.rangedCommentController.set("content",CoreHeckler.rangedComments);CoreHeckler.cellCommentController.set("content",CoreHeckler.cellComments);CoreHeckler.objectCommentController.set("content",CoreHeckler.objectComments);Event.observe(window,"beforeunload",CoreHeckler.documentController.unloadDocument);if(Heckler.sidebarController){Heckler.sidebarController.set("author",CoreHeckler.author)}if(Heckler.collaboratorsController){Heckler.collaboratorsController.set("content",CoreHeckler.users)}if(CoreDocs.downloadsController){CoreDocs.downloadsController.setDelegate(Heckler.documentDownloadsDelegate);CoreDocs.downloadsController.set("content",Heckler.downloads)}if(Heckler.publicSharingController){Heckler.publicSharingController.set("content",CoreHeckler.documentInfo)}if(!CoreHeckler.commentator.get("page")){CoreHeckler.commentator.set("page",1)}var a=CoreHeckler.commentator.get("page");CoreHeckler.pageController.changeToPage(a);var c=CoreHeckler.commentator.get("zoom");if((c==CoreHeckler.ZoomPreference.FIT_TO_WIDTH)||CoreDocs.isMobile){CoreHeckler.pageController.zoomToFitWidth()}else{if((CoreHeckler.documentInfo.get("documentType")==CoreDocs.DocumentType.KEYNOTE)||(c==CoreHeckler.ZoomPreference.ZOOM_TO_FIT)){CoreHeckler.pageController.zoomToFit()}else{if(!c){CoreHeckler.pageController.zoomToFitWidth()}else{CoreHeckler.pageController.zoomToPageScale(c)}}}if(CoreHeckler.commentator.get("role")==CoreHeckler.CommentRole.PUBLISHER){$view("body").addClassName("publisher")}else{if((CoreHeckler.commentator.get("role")==CoreHeckler.CommentRole.VIEWER)||(CoreDocs.serverStatusController.disableCommenting)){CoreHeckler.pageController.set("readOnlyFlag",1)}}if(CoreHeckler.get("isPublicViewer")){CoreHeckler.adaptor.incrementViewCounter();$view("body").addClassName("public_viewer");CoreHeckler.pageController.set("readOnlyFlag",1)}else{if(!(CoreHeckler.commentator.get("role")==CoreHeckler.CommentRole.PUBLISHER)){$view("body").addClassName("invited_viewer")}}CoreDocs.Marketeer.startSession();CoreHeckler.set("isDocumentReady",true);CoreHeckler.documentComments.refresh();CoreHeckler.floatingComments.refresh();CoreHeckler.rangedComments.refresh();CoreHeckler.cellComments.refresh();CoreHeckler.objectComments.refresh()},handleGetStatusSuccess:function(a,b){CoreHeckler.adaptor.handleSuccess();CoreHeckler.adaptor.addXMLDataToStore(a.responseXML,"Heckler.status")},handleCheckCredentialsSuccess:function(b,a){CoreDocs.errorController.setDocumentPasswordProcessing(false);CoreDocs.errorController.hideDocumentPasswordPrompt();CoreHeckler.adaptor.handleSuccess();CoreDocs.browserController.checkBrowserSupported(CoreHeckler.adaptor.getDocumentMetadata.bind(CoreHeckler.adaptor));Ajax.Responders.unregister(CoreHeckler.adaptor.statusExceptionResponder)},handleSaveSuccess:function(a,b){if(!a.status){CoreHeckler.adaptor.postTimedOut()}CoreHeckler.adaptor.cancelTimeout();CoreHeckler.adaptor.handleSuccess()},handleGetUsersSuccess:function(b,c){CoreHeckler.adaptor.handleSuccess();CoreHeckler.adaptor.cancelTimeout();var e=[];var d=b.responseXML;var a=d.getElementsByTagName("data")[0].childNodes;for(i=0;i<a.length;i++){e.push(a[i].textContent)}CoreHeckler.adaptor.secondaryUsers=e},addXMLDataToStore:function(c,d){var b=this.getHecklerElementsByTagName(c,d);for(i=0;i<b.length;i++){b[i].normalize();for(j=0;j<b[i].childNodes.length;j++){if(b[i].childNodes[j].nodeValue){var a=[];try{a=b[i].childNodes[j].nodeValue.evalJSON(true);for(k=a.length-1;k>=0;k--){if(a[k].type=="Objectcomment"){a.splice(k,1)}}CoreHeckler.server.refreshRecordsWithData(a)}catch(f){CoreDocs.errorController.reportError(CoreDocs.loc("Document couldn't be refreshed.","Dialog box title"),CoreDocs.loc("Please try again.",""));CoreDocs.error(f.toString())}}}}},xmlEscapeText:function(a){return a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")},saveDataToURIforProperty:function(f,c,e){if(CoreHeckler.isDemo){return}var b="hecklerdata";if(e){b=e}var d=this.xmlEscapeText(f);var a=c.split("/").pop();this.fullMetadata[a]=(d.length>this.MAX_METADATA);this.requests.saveDataToURI.base=c;postBody='<?xml version="1.0"?><A:propertyupdate xmlns:A="DAV:" xmlns:B="urn:iwork:property"><A:set><A:prop><B:'+b+">"+d+"</B:"+b+"></A:prop></A:set></A:propertyupdate>";this.makeRequest("saveDataToURI",postBody)},getXHecklerHeaders:function(){var a={"X-Heckler-Username":this.getXHecklerUsername(),"X-Heckler-Remember":this.REMEMBER_DURATION,"X-Heckler-Scope":this.getXHecklerScope()};if(this.password!=null){a["X-Heckler-Password"]=this.password}return a},getXHecklerUsername:function(){if(this.username){return this.username+"@"+this.iDiskOwner}else{return this.iDiskOwner}},getXHecklerScope:function(){return this.username?"Reviewer":"Publisher"},handleResponse:function(b,a,c,d){this.requestQueue[d].onSuccess(b,a)},timeStamp:function(){return new Date().getTime()}});require("core");require("views/canvas_comment");CoreHeckler.SelectionCommentView=CoreHeckler.CanvasCommentView.extend({onDragEnd:function(){var a=arguments.callee.base.apply(this,arguments);if(this.line&&!a){this.updateLine();CoreHeckler.Graphics.showLine(this.line)}},onDragFinalPosition:function(){arguments.callee.base.apply(this,arguments);if(this.line){this.updateLine();if(!this.hasClassName("collapsed")){CoreHeckler.Graphics.showLine(this.line)}}},onDragStart:function(){arguments.callee.base.apply(this,arguments);if(this.line){CoreHeckler.Graphics.hideLine(this.line)}},collapse:function(){arguments.callee.base.apply(this,arguments);if(this.line){CoreHeckler.Graphics.hideLine(this.line)}},expand:function(){arguments.callee.base.apply(this,arguments);if(this.line){this.updateLine();CoreHeckler.Graphics.showLine(this.line)}},updateLine:function(){if(this.line){var a=this.computeLineStart();var b=this.computeLineEnd();if(a&&b){CoreHeckler.Graphics.updateLine(this.line,a,b)}}},onDeleted:function(){arguments.callee.base.apply(this,arguments);if(this.line){this.line.style.display="none"}if(this.anchor){this.anchor.style.display="none"}if(this.outline){this.outline.style.display="none"}},pageScaleObserver:function(){if(!this.get("content")||!this.get("content").get("geometry")){return}this.setAnchorLocationInDOM()}.observes("CoreHeckler.pageController.pageScale"),setAnchorLocationInDOM:function(){var b=this.computeLineStart();var c=CoreHeckler.pageController.get("pageScale");var a=this.getElementByClassName("anchor");a.style.left=b.x*c+"px";a.style.top=b.y*c+"px";this.updateLine(true)},computeLineStart:function(){if(!this.get("content")||!this.get("content").get("geometry")){CoreDocs.error("Should not call computeLineStart: with no geometry!");return}var e=this.get("content").get("geometry");var a=3;var d=new IWPoint(e.commentRight,e.commentY);var c=new IWPoint(d.x-a,d.y+a);var b=e.mapCanvasToRotated(c);return b},computeLineEnd:function(){var a=this.getElementByClassName("bubble");if(!(a&&a.offsetWidth&&a.style.left&&a.style.left.length>0)){return}var d=CoreHeckler.pageController.get("pageScale");var c=parseInt(a.style.left,10)+a.offsetWidth/2;var b=parseInt(a.style.top,10)+a.offsetHeight/2;var e=new IWPoint(c/d,b/d);return e},renderOverlay:function(){if(!this.get("content")||!this.get("content").get("geometry")){return}var e=this.get("content").get("geometry");var c=this.computeLineStart();var d=this.computeLineEnd();if(!c||!d){var a=new IWPoint(0,0);this.line=CoreHeckler.Graphics.drawLine(a,a)}else{this.line=CoreHeckler.Graphics.drawLine(c,d)}var b=new IWPoint(e.commentRight,e.commentY);this.anchor=CoreHeckler.Graphics.drawTriangle(b,e);this.setAnchorLocationInDOM()},isVisible:function(){var a=arguments.callee.base.apply(this,arguments);if(!this.get("content")){return a}return a&&this.get("content").get("geometry")}});require("core");require("views/selection_comment");CoreHeckler.RangedCommentView=CoreHeckler.SelectionCommentView.extend({getController:function(){return CoreHeckler.rangedCommentController},getClassName:function(){return"ranged_comment"},getAllCommentsHere:function(){return[this]},renderAnchor:function(){arguments.callee.base.apply(this,arguments);var a=this.getElementByClassName("anchor");a.observe("mousedown",this.commentAnchorClick.bind(this))},renderOverlay:function(){arguments.callee.base.apply(this,arguments);if(!this.get("content")||!this.get("content").get("geometry")){return}var a=this.get("content").get("geometry");this.outline=CoreHeckler.Graphics.drawOutline(a)}});require("core");require("views/ranged_comment");CoreHeckler.RangedCommentCanvasView=SC.CollectionView.extend({emptyElement:'<div id="ranged_comment_canvas"></div>',exampleView:CoreHeckler.RangedCommentView,contentBinding:"CoreHeckler.rangedCommentController.arrangedObjects",init:function(){arguments.callee.base.apply(this,arguments);this.clickCount=0;if(Prototype.Browser.IE){this.rootElement.observe("dblclick",this.selectWord.bind(this))}if(CoreDocs.isMobile){this.rootElement.observe("mousedown",this.mouseDown.bind(this))}},renderSelection:function(){var a=CoreHeckler.rangedSelectionController.get("currentSelection");if(a){var b=CoreHeckler.rangedSelectionController.getSelectionGeometry(a);if(b){CoreHeckler.Graphics.drawSelection(b)}}else{if(!CoreHeckler.cellSelectionController.get("currentSelection")){CoreHeckler.Graphics.clearSelection()}}}.observes("CoreHeckler.pageController.pageScale","CoreHeckler.rangedSelectionController.currentSelection"),mouseMoved:function(c){if(CoreDocs.isMobile){return false}if(!Prototype.Browser.WebKit){this.resetClickCount()}var b=CoreHeckler.rangedSelectionController;var a=b.clickLocation(c);b.setLocation(a);return true},selectWord:function(c){if(CoreHeckler.cellSelectionController.get("currentSelection")){return false}var b=CoreHeckler.rangedSelectionController;var a=b.clickLocation(c);if(a.isText){b.selectWordAt(a);this.clickCount=2}},mouseDown:function(g){if(CoreDocs.isMobile){var f=CoreHeckler.pageController.get("currentPageNumber");var l=$A(CoreHeckler.Rangedcomment.findAll({page:f,parent:null}));var h=new IWPoint(Event.pointerX(g),Event.pointerY(g));var a=[];l.each(function(e){if(e.get("geometry").containsPoint(h)&&e.get("hasComments")){a.push(e)}});var c=$view(".other_comment_canvas").get("ranged");if(a.length>0){var b=a[0];b.set("temporarySiblings",(a.length>1)?a.slice(1):null);var n=c.viewForContentRecord(b);n.expand()}return false}g.preventDefault();var d=CoreHeckler.rangedSelectionController;this.clickCount++;clearTimeout(this.resetTimer);this.resetTimer=setTimeout(this.resetClickCount.bind(this),500);var m=d.clickLocation(g);if(!m){return false}if(m.isText&&this.clickCount==3){this.resetClickCount();d.selectParagraphAt(m)}else{if(m.isText&&this.clickCount==2){this.selectWord(g)}else{d.setAnchorLocation(m)}}return false},resetClickCount:function(){this.clickCount=0},mouseUp:function(c){if(CoreDocs.isMobile){return false}if(this.multiClicked){this.multiClicked=false;return true}var b=CoreHeckler.rangedSelectionController;var a=b.clickLocation(c);b.setLocation(a);b.setAnchorLocation(null);return true}});require("core");require("controllers/document_comment");CoreHeckler.PostDocumentCommentView=SC.TextareaFieldView.extend({init:function(){arguments.callee.base.apply(this,arguments);Event.observe(this.rootElement,"focus",this.startPostCommentEdit.bind(this));Event.observe(this.rootElement,"blur",this.suspendPostCommentEdit.bind(this));Event.observe(this.rootElement,"dragdrop",this.startPostCommentEdit.bind(this))},didBecomeFirstResponder:function(){},startPostCommentEdit:function(){$view("#sidebar_post_comment_button").set("isEnabled",true);var a=this.rootElement;if(this.hasClassName("ghost_text")){CoreHeckler.documentController.pollIfStale();a.value="";this.removeClassName("ghost_text")}var b=$("document_comments");b.removeClassName("not_editing");b.addClassName("editing")},suspendPostCommentEdit:function(){var a=this.rootElement;if((!a.value)||(a.value=="")){a.value=a.defaultValue;this.addClassName("ghost_text")}if(a.value==a.defaultValue){var b=$("document_comments");b.removeClassName("editing");b.addClassName("not_editing");if($view("#sidebar_post_comment_button")){$view("#sidebar_post_comment_button").set("isEnabled",false)}}},willLoseFirstResponder:function(){},postCommentChange:function(){}.observes("value")});require("core");require("views/selection_comment");CoreHeckler.CellCommentView=CoreHeckler.SelectionCommentView.extend({getClassName:function(){return"cell_comment"},getController:function(){return CoreHeckler.cellCommentController},getAllCommentsHere:function(){return[this]}});require("core");require("views/cell_comment");CoreHeckler.CellCommentCanvasView=SC.CollectionView.extend({emptyElement:'<div id="cell_comment_canvas"></div>',exampleView:CoreHeckler.CellCommentView,contentBinding:"CoreHeckler.cellCommentController.arrangedObjects",renderSelection:function(){var a=CoreHeckler.cellSelectionController.get("currentSelection");var c=CoreHeckler.cellSelectionController.getCell(a);if(c){CoreHeckler.Graphics.drawSelection(c,true)}else{if(!CoreHeckler.rangedSelectionController.get("currentSelection")){CoreHeckler.Graphics.clearSelection()}}if(a){var b=$A(CoreHeckler.Cellcomment.findAll({parent:null,deleted:false}));b.each(function(e){var d=e.get("selection");if(CoreHeckler.cellSelectionController.isSelectionEqualTo(d)){this.viewForContentRecord(e).commentAnchorClick()}}.bind(this))}}.observes("CoreHeckler.cellSelectionController.currentSelection"),mouseDown:function(){return false}});require("core");require("views/cell_comment_canvas");require("views/ranged_comment_canvas");CoreHeckler.CanvasView=SC.View.extend({documentReadyObserver:function(){if(CoreHeckler.get("isDocumentReady")){var e=this.get("rootView")||this;switch(CoreHeckler.documentInfo.get("documentType")){case CoreDocs.DocumentType.PAGES:var a=CoreHeckler.RangedCommentCanvasView.create();e.appendChild(a);this.set("ranged",a);var d=CoreHeckler.ObjectCommentCanvasView.create();a.appendChild(d);this.set("object",d);var c=CoreHeckler.CellCommentCanvasView.create();d.appendChild(c);this.set("cell",c);break;case CoreDocs.DocumentType.NUMBERS:var b=CoreHeckler.CellCommentCanvasView.create();e.appendChild(b);this.set("cell",b);break;default:break}}}.observes("CoreHeckler.isDocumentReady"),imageObserver:function(){var a=$("preview_image");this.rootElement.style.height=a.offsetHeight+"px";this.rootElement.style.width=a.offsetWidth+"px"}.observes("CoreHeckler.pageController.pageScale"),mouseDown:function(c){if(!CoreHeckler.pageController.get("readOnlyFlag")){if(CoreHeckler.documentInfo.get("documentType")==CoreDocs.DocumentType.NUMBERS){var b=CoreHeckler.cellSelectionController.getCellUnderMousePosition(c);CoreHeckler.cellSelectionController.setSelection(b)}else{if(CoreHeckler.documentInfo.get("documentType")==CoreDocs.DocumentType.PAGES){if($view("#ranged_comment_canvas").clickCount!=1){return true}var h=CoreHeckler.cellSelectionController;var a=CoreHeckler.objectSelectionController;var l=a.getObjectUnderMousePosition(c);var d=h.getCellUnderMousePosition(c);var f=a.get("currentSelection");var g=h.get("currentSelection");var m=false;var n=false;if(!f&&!g){if(l){n=true}else{if(d){m=true}}}else{if(d&&(d.objectID==f||(g&&d.objectID==g.objectID))){m=true}else{if(l){n=true}}}if(m){a.set("currentSelection",null);h.set("currentSelection",d)}else{if(n){h.set("currentSelection",null);a.set("currentSelection",l)}else{h.set("currentSelection",null);a.set("currentSelection",null)}}}}}return true}});require("core");require("models/selection_comment");CoreHeckler.Objectcomment=CoreHeckler.Selectioncomment.extend({commentType:function(){return CoreHeckler.Objectcomment}.property("guid"),trimComment:function(){var a=arguments.callee.base.apply(this,arguments);a.objectID=this.get("objectID");return a},geometry:function(){if(!this._cachedGeometry){if(CoreHeckler.pageController.get("currentPageNumber")!=this.get("page")){return null}var a=CoreHeckler.objectSelectionController.getGeometry(this.get("objectID"));if(a){this._cachedGeometry=a}else{return null}}return this._cachedGeometry}.property("selection")});require("core");require("views/canvas_comment");require("views/floating_comment");CoreHeckler.FloatingCommentCanvasView=SC.CollectionView.extend({exampleView:CoreHeckler.FloatingCommentView,contentBinding:"CoreHeckler.floatingCommentController.arrangedObjects"});require("core");CoreHeckler.Geometry=SC.Object.extend({unscaledBoundingBox:null,angle:0,scale:1,shouldComputeOutline:true,unscaledRectangles:$A([]),init:function(){arguments.callee.base.apply(this,arguments);this.computeScale();this.computeRotatedBox();if(this.rectangles.length>0){if(this.shouldComputeOutline){this.computePolygons()}this.computeDimensions()}},computeScale:function(){var b=$A([]);var c=this.scale;var a=function(d){return new IWRect(d.origin.x*c,d.origin.y*c,d.size.width*c,d.size.height*c)};this.unscaledRectangles.each(function(e){var d=a(e);b.push(d)});this.rectangles=b;this.boundingBox=a(this.unscaledBoundingBox)},getScaled:function(){var a=CoreHeckler.pageController.get("pageScale");return CoreHeckler.Geometry.create({unscaledBoundingBox:this.unscaledBoundingBox,unscaledRectangles:this.unscaledRectangles,angle:this.angle,scale:a,shouldComputeOutline:this.shouldComputeOutline})},mapRotatedToCanvas:function(m){var l=this.rotatedBox;var f=this.boundingBox;var p=l.origin.x+l.size.width/2;var o=l.origin.y+l.size.height/2;var e=(l.size.width-f.size.width)/2;var c=(l.size.height-f.size.height)/2;var g=m.x-p;var d=m.y-o;var n=Math.cos(this.angle);var h=Math.sin(this.angle);var b=g*n-d*h;var a=g*h+d*n;return new IWPoint(b+p-e,a+o-c)},mapCanvasToRotated:function(m){var l=this.rotatedBox;var f=this.boundingBox;var p=f.origin.x+f.size.width/2;var o=f.origin.y+f.size.height/2;var e=(l.size.width-f.size.width)/2;var c=(l.size.height-f.size.height)/2;var g=m.x-p;var d=m.y-o;var n=Math.cos(-this.angle);var h=Math.sin(-this.angle);var b=g*n-d*h;var a=g*h+d*n;return new IWPoint(b+p+e,a+o+c)},mapBrowserToCanvas:function(b){var f=b.x-getAbsoluteLeft("canvas");var d=b.y-getAbsoluteTop("canvas");var c=$("canvas");f+=c.scrollLeft;d+=c.scrollTop;var e=CoreHeckler.pageController.get("pageScale");var a=f/e;var g=d/e;return new IWPoint(a,g)},containsPoint:function(d){var a=this.mapBrowserToCanvas(d);if(this.rotatedBox.containsPoint(a)){var c=this.mapRotatedToCanvas(a);if(this.boundingBox.containsPoint(c)){for(var e=0;e<this.rectangles.length;e++){var b=this.rectangles[e];if(b.containsPoint(c)){SC.Benchmark.end("geometry.js containsPoint:");return true}}}}return false},computeDimensions:function(){var b=this.rectangles.first();var a=this.rectangles.last();this.commentTop=b.origin.y;this.commentLeft=b.origin.x;this.commentRight=b.origin.x+b.size.width;this.commentY=b.origin.y;this.commentBottom=a.origin.y+a.size.height},computeRotatedBox:function(){var c=this.boundingBox;var e=c.origin;var a=c.size.width;var d=c.size.height;var f=Math.cos(this.angle);var b=Math.sin(this.angle);size=new IWSize(Math.abs(d*b)+Math.abs(a*f),Math.abs(d*f)+Math.abs(a*b));this.rotatedBox=new IWRect(e,size)},computeTranslationToBoundingBoxOrigin:function(b){var n=this.boundingBox.size;var f=this.boundingBox.origin;var l=-this.angle;var e=Math.sin(l);var m=Math.cos(l);var a=Math.abs(m);var o=Math.abs(e);var c=f.x+(n.width*a+n.height*o)/2;var d=f.y+(n.width*o+n.height*a)/2;if(b){var h=c-(n.width*m-n.height*e)/2;var g=d-(n.width*e+n.height*m)/2}else{var h=c-n.width/2;var g=d-n.height/2}return new IWPoint(h,g)},computePolygons:function(){var a=CoreHeckler.OutlineAlgorithm.create({rectangles:this.rectangles,boundingBox:this.boundingBox});a.compute();this.polygons=$A(a.polygons)}});require("core");CoreHeckler.Hyperlink=SC.Object.extend({rect:{},url:null,page:null,retry:false,follow:function(){if(this.url){window.open(this.url)}else{if(this.page){CoreHeckler.pageController.changeToPage(this.page)}}},getTitle:function(){if(this.url){return this.url}else{return"Go to page "+this.page}}});CoreHeckler.hyperlinkController=SC.Object.create({loadingPageDataLoaded:0,init:function(){arguments.callee.base.apply(this,arguments);this.hyperlinks=[]},pageNumberObserver:function(){var a=CoreHeckler.pageController.get("loadingPageNumber");if(a>0){this.downloadHyperlinkData(a)}}.observes("CoreHeckler.pageController.loadingPageNumber"),downloadHyperlinkData:function(b){var a=CoreHeckler.adaptor.getCredentialedURI(CoreHeckler.adaptor.getiDiskResourcesPath())+pageHash(b)+"/links"+b+".txt?ts="+CoreHeckler.documentInfo.get("originalPublishDate");var d={};if(Prototype.Browser.IE){d["If-Modified-Since"]="January 1, 1970 12:00:00 GMT"}var c=new Ajax.Request(a,{method:"get",requestHeaders:d,onSuccess:function(e){if(b!=CoreHeckler.pageController.get("loadingPageNumber")){return}this.retry=false;this.hyperlinks=[];var g=$A(e.responseText.split("\n"));for(var o=0;o<g.length;o+=2){var f=g[o];var p=g[o+1];if(!f||!p){continue}var h=f.split(" ").invoke("toFloat");var m=new IWRect(h[0],h[1],h[2],h[3]);var n=null;if(p.charAt(0)=="#"){var l=parseInt(p.slice(1),10);n=CoreHeckler.Hyperlink.create({rect:m,page:l})}else{n=CoreHeckler.Hyperlink.create({rect:m,url:p})}this.hyperlinks.push(n)}CoreDocs.info("Page "+b+" hyperlinks are fully loaded");this.set("loadingPageDataLoaded",b)}.bind(this),onFailure:function(e){if(b!=CoreHeckler.pageController.get("loadingPageNumber")){return}this.hyperlinks=[];if(e.status==404){this.retry=false;this.set("loadingPageDataLoaded",b);CoreDocs.info("Page "+b+" hyperlinks are fully loaded")}else{if(!this.retry){this.retry=true;this.downloadHyperlinkData(b)}else{this.retry=false;this.set("loadingPageDataLoaded",b);CoreDocs.error("hyperlink data file for page %@ failed to load.  Document may be corrupt.".fmt(b))}}}.bind(this)})}});require("core");require("views/selection_comment");CoreHeckler.ObjectCommentView=CoreHeckler.SelectionCommentView.extend({renderOverlay:function(){arguments.callee.base.apply(this,arguments);if(!this.get("content")||!this.get("content").get("geometry")){return}var a=this.get("content").get("geometry");this.outline=CoreHeckler.Graphics.drawOutline(a)},getClassName:function(){return"object_comment"},getController:function(){return CoreHeckler.objectCommentController},getAllCommentsHere:function(){return[this]}});require("core");require("views/object_comment");CoreHeckler.ObjectCommentCanvasView=SC.CollectionView.extend({exampleView:CoreHeckler.ObjectCommentView,contentBinding:"CoreHeckler.objectCommentController.arrangedObjects",emptyElement:'<div id="object_comment_canvas"></div>',mouseDown:function(){return false},renderSelection:function(){var a=CoreHeckler.objectSelectionController.get("currentSelection");var c=CoreHeckler.objectSelectionController.getGeometry(a);if(c){CoreHeckler.Graphics.drawSelection(c,true)}else{CoreHeckler.Graphics.clearSelection()}if(a){var b=$A(CoreHeckler.Objectcomment.findAll({parent:null,deleted:false}));b.each(function(e){var d=e.get("objectID");if(CoreHeckler.objectSelectionController.get("currentSelection")==d){this.viewForContentRecord(e).commentAnchorClick()}}.bind(this))}}.observes("CoreHeckler.objectSelectionController.currentSelection")});function main(){browserSpecificSetup();CoreHeckler.server.prefix=["CoreHeckler","CoreDocs"];CoreHeckler.adaptor.server=CoreHeckler.server;SC.page.awake();if(!CoreDocs.isMobile){expandSmallBrowser(700,675)}var c=window.location.toString().toQueryParams();var b=(c.s)?true:false;var a=window.location.host.indexOf("public")==0;if(a&&c.d&&c.a){loadPublicDocument(c.d,c.a)}else{if(c.d&&c.a&&c.u&&c.p){loadDocumentWithCommentatorCredentials(c.d,c.a,c.u,c.p,b)}else{if(c.d&&c.a){loadDocumentAsAuthor(c.d,c.a,b)}else{if(c.d&&!c.a){loadDemoDocument(c.d)}else{CoreDocs.errorController.reportError(CoreDocs.loc("Invalid URL.","Invalid URL"),CoreDocs.loc("Unable to launch because the URL isn't valid.","Invalid URL details"))}}}}}function loadPublicDocument(a,b){CoreHeckler.adaptor.documentName=a;CoreHeckler.adaptor.iDiskOwner=b;CoreHeckler.set("isPublicViewer",true);CoreDocs.browserController.checkBrowserSupported(CoreHeckler.adaptor.getPublicDocumentMetadata.bind(CoreHeckler.adaptor))}function loadDocumentWithCommentatorCredentials(a,b,d,f,c){CoreHeckler.adaptor.documentName=a;CoreHeckler.adaptor.iDiskOwner=b;Heckler.documentTitle=a;CoreHeckler.commentatorEmail=d.toLowerCase();if(c){CoreHeckler.adaptor.commentatorPassword=f;CoreDocs.errorController.showDocumentPasswordPrompt()}else{var e=CoreHeckler.emailToSecondaryUser(CoreHeckler.commentatorEmail);CoreHeckler.adaptor.setCredentials(e,f);CoreHeckler.adaptor.checkCredentials()}}function loadDocumentAsAuthor(a,b){CoreHeckler.adaptor.documentName=a;CoreHeckler.adaptor.createHashedDocumentName();CoreHeckler.adaptor.iDiskOwner=b;CoreHeckler.isOwner=true;CoreDocs.browserController.checkBrowserSupported(CoreHeckler.adaptor.getDocumentMetadata.bind(CoreHeckler.adaptor))}function loadDemoDocument(a){CoreHeckler.isDemo=true;CoreHeckler.adaptor.documentName=a;CoreHeckler.commentatorEmail="emily_parker@me.com";CoreHeckler.adaptor.iDiskOwner="p1046258690";Heckler.documentTitle=a;var b=CoreHeckler.emailToSecondaryUser(CoreHeckler.commentatorEmail);CoreHeckler.adaptor.setCredentials(b,"123456");CoreDocs.browserController.checkBrowserSupported(CoreHeckler.adaptor.getDemoData.bind(CoreHeckler.adaptor))}require("core");require("utility");CoreHeckler.rangedSelectionController=SC.Object.create({currentSelection:null,loadingPageDataLoaded:0,retry:false,init:function(){arguments.callee.base.apply(this,arguments);this.anchorLocation=null;this.containers=[];this.storages={}},isLoaded:function(){var a=CoreHeckler.pageController.get("currentPageNumber");return this.get("loadingPageDataLoaded")===a},getSelectionGeometry:function(v){if(!this.isLoaded()||!v||!v.first||!v.first.storageID||isNaN(parseInt(v.first.offset,10))||!v.last||!v.last.storageID||isNaN(parseInt(v.last.offset,10))){return null}var u=this.getCharacterPosition(v.first.storageID,v.first.offset);var a=this.getCharacterPosition(v.last.storageID,v.last.offset);if(!u||!a){return null}var l=null;var s=null;var f=[];for(var b=u.containerIndex;b<=a.containerIndex;++b){var m=this.getContainer(b);if(m){var o=0;if(b==u.containerIndex){o=u.lineIndex}var q;if(b==a.containerIndex){q=a.lineIndex}else{q=m.lineFragments.length-1}var t=false;for(var p=o;p<=q;++p){var d=0;if(b==u.containerIndex&&p==u.lineIndex){d=u.charIndex}var e=-1;if(b==a.containerIndex&&p==a.lineIndex){e=parseInt(a.charIndex,10)}var h=m.lineFragments[p];if(!h){CoreDocs.error("RangedSelectionController.getSelectionGeometry. lineFragment is null; perhaps trying to render comments from other pages.");continue}var n=h.rectForSelection(d,e);if(isNaN(n.origin.x)||isNaN(n.origin.y)||isNaN(n.size.width)||isNaN(n.size.height)){CoreDocs.error("RangedSelectionController.getSelectionGeometry: at least one rectangle dimension is NaN.");continue}if(n.size.height===0||n.size.width===0){continue}f.push(n)}var g=CoreHeckler.objectSelectionController.getBoundingBox(m);if(l==null){l=g}else{l=l.union(g)}if(b==u.containerIndex){s=m.angle}else{if(m.angle!=s){return null}}}}if(f.length>0){var c=CoreHeckler.Geometry.create({unscaledBoundingBox:l,unscaledRectangles:f,angle:s,shouldComputeOutline:true});return c}return null},getContainer:function(a){return this.containers[a]},getStorage:function(a){return this.storages[a]},getOrCreateStorage:function(a){if(!this.storages[a]){this.storages[a]=new Storage()}return this.storages[a]},getCharacterPosition:function(c,b){var g=this.storages[c];if(!g){return null}for(var e=0;e<g.containers.length;e++){var a=g.containers[e];if(a.offset<=b){for(var f=a.lineFragments.length-1;f>=0;f--){var d=a.lineFragments[f];if(d.offset<=b){return new CharacterPosition(a.globalIndex,f,b-d.offset)}}}}},getStorageAndOffset:function(d){var b=this.getContainer(d.containerIndex);var c=b.lineFragments[d.lineIndex];var a=c.offset+d.charIndex;return{storageID:b.storageID,offset:a}},sortStorages:function(){var e=function(g,f){return g.offset-f.offset};var d=function(g,f){if(g.storageID>f.storageID){return 1}if(g.storageID<f.storageID){return -1}return 0};for(var a in this.storages){var c=this.storages[a];c.containers.sort(e);c.containers.reverse()}var b=function(g,f){if(g.storageID==f.storageID){return e(g,f)}else{return d(g,f)}};this.containers.sort(b);this.containers.each(function(f,g){f.globalIndex=g})},setSelection:function(a){if(CoreHeckler.pageController.get("readOnlyFlag")){return false}this.set("currentSelection",a);if((a)&&(CoreHeckler.cellSelectionController)){CoreHeckler.cellSelectionController.clearSelection()}},clearSelection:function(){this.setSelection(null);this.anchorLocation=null},linesDataLoader:function(){var a=CoreHeckler.pageController.get("loadingPageNumber");if(CoreHeckler.documentInfo.get("documentType")!=CoreDocs.DocumentType.PAGES){CoreDocs.info("Page "+a+" ranged selection is fully loaded");this.set("loadingPageDataLoaded",a);return}if(a>0){var b=CoreHeckler.adaptor.getCredentialedURI(CoreHeckler.adaptor.getiDiskResourcesPath())+pageHash(a)+"/lines"+a+".txt?ts="+CoreHeckler.documentInfo.get("originalPublishDate");this.downloadSelectionData(b,a)}}.observes("CoreHeckler.pageController.loadingPageNumber"),downloadSelectionData:function(b,a){if(b==this.get("lastDataPath")){return}this.set("lastDataPath",b);this.clearSelection();this.containers=$A([]);this.storages={};var d={};if(Prototype.Browser.IE){d["If-Modified-Since"]="January 1, 1970 12:00:00 GMT"}var c=new Ajax.Request(b,{method:"get",requestHeaders:d,onFailure:function(e){if(a!=CoreHeckler.pageController.get("loadingPageNumber")){return}this.set("lastDataPath",null);if(e.status==404){this.retry=false;this.set("loadingPageDataLoaded",a)}else{if(!this.retry){this.retry=true;this.downloadSelectionData(b,a)}else{this.retry=false;this.set("loadingPageDataLoaded",a);CoreDocs.error("Lines data file %@ failed to load.  Document may be corrupt.".fmt(b))}}}.bind(this),onSuccess:function(f){if(a!=CoreHeckler.pageController.get("loadingPageNumber")){return}this.retry=false;var e=$A(f.responseText.split("\n\n"));e.each(function(q){var m=$A([]);var w=$A(q.split("\n"));if(w.length>0){var l=parseInt(w.shift(),10);var p=w.shift();var o=w.shift();var n=w.shift();var v=w.shift();if(v){var r=$A(v.split(" ")).invoke("toFloat");if(r.length==4){var t=new IWRect(r[0],r[1],r[2],r[3]);var h=$A([]);var u=l;w.each(function(y){var B=$A(y.split(" "));var D=parseInt(B.shift(),10);var A=parseInt(B.shift(),10);var C=$A([]);var x=$A([]);var z=0;B.each(function(E,F){if(E=="b"){x.push(u+z)}else{if(E=="p"){h.push(u+z)}else{if(String(E).charAt(0)=="s"){var G=parseInt(E.split(":")[1],10);if(F==0){u+=G}else{var H=parseInt(B[F-1],10);G.times(function(){C.push(H);z++})}}else{C.push(parseInt(E,10));z++}}}});if(C.length>0){m.push(new LineFragment(D,A,C,x,u));u+=C.length;u-=1}});if(m.length>0){var g=new Container(t,m,l,p,o,h,this.containers.length,n);this.containers.push(g);var s=this.getOrCreateStorage(p);s.addContainer(g)}}}}}.bind(this));this.sortStorages();CoreDocs.info("Page "+a+" ranged selection is fully loaded");this.set("loadingPageDataLoaded",a)}.bind(this)})},setAnchorLocation:function(a){this.anchorLocation=a},setLocation:function(a){if(this.anchorLocation!==null&&a!==null){var d=a.compare(this.anchorLocation);if(d!==0){var e,c;if(d<0){e=a;c=this.anchorLocation}else{e=this.anchorLocation;c=a}var b={first:this.getStorageAndOffset(e),last:this.getStorageAndOffset(c)};if(b.first.storageID==b.last.storageID){CoreHeckler.objectSelectionController.setSelection(null);this.setSelection(b);return}}if(!CoreHeckler.objectSelectionController.get("currentSelection")){this.setSelection(null)}}},clickLocation:function(w){var c=new IWPoint(Event.pointerX(w),Event.pointerY(w));var n=$A([]);var l=$A([]);var t=$A([]);var b=null;for(var d=0,f=this.containers.length;d<f;++d){var q=this.containers[d];var p=CoreHeckler.objectSelectionController.getBoundingBox(q);var m=CoreHeckler.Geometry.create({unscaledBoundingBox:p,angle:q.angle});var u=m.mapBrowserToCanvas(c);var h=m.rotatedBox.distanceFromPoint(u);var s=m.mapRotatedToCanvas(u);if(h===0){var a=m.boundingBox.distanceFromPoint(s);if(a===0){var v=this.locationInContainer(s,d);var g=this.distanceFromLocation(s,v);l.push({location:v,distance:g})}}else{t.push(s);n.push(h)}}if(l.length>0){l.sort(function(x,e){return x.distance-e.distance});if(this.anchorLocation){l.each(function(z){var x=z.location;var y=this.containers[this.anchorLocation.containerIndex];var e=this.containers[x.containerIndex];if(e.storageID===y.storageID){b=x;throw $break}}.bind(this))}else{b=l.first().location}}if(b===null&&u!==null){var r=999999999;var o=0;n.each(function(x,e){if(x<r){r=x;o=e}});b=this.locationInContainer(t[o],o)}return b},distanceFromLocation:function(a,c){var b=this.containers[c.containerIndex];var d=b.lineFragments[c.lineIndex];var e=new IWPoint(d.characterBoundaries[c.charIndex],d.top);return a.distanceFromPoint(e)},locationInContainer:function(h,d){var g=null;var b=this.containers[d];if(b){var l=b.linePositions.lowerBound(h.y);if(l<b.linePositions.length&&b.linePositions[l]==h.y){++l}if(l>0){--l;var c=b.linePositions[l];while(l>0&&b.linePositions[l-1]==c){--l}var f=l;for(;f<b.linePositions.length&&b.linePositions[f]==c;++f){}for(;l<f;++l){var e=b.lineFragments[l];if(h.y<=e.bottom){var a=Math.abs(e.characterBoundaries.binarySearch(h.x))-1;if(a<e.characterBoundaries.length&&e.characterBoundaries[a]==h.x){++a}if(a>0){--a;if(a<e.characterBoundaries.length-1){g=new CharacterPosition(d,l,a);g.isText=true;break}else{if(l==f-1){g=new CharacterPosition(d,l,e.characterBoundaries.length-1);break}}}else{g=new CharacterPosition(d,l,0);break}}else{if(l==f-1){g=new CharacterPosition(d,l,e.characterBoundaries.length-1);break}}}}else{g=new CharacterPosition(d,0,0)}}else{g=new CharacterPosition(d,0,0)}return g},breaksForStorage:function(e,d,g){var b=e.containers;var f=[];f.push(b[b.length-1].offset);for(var c=b.length-1;c>=0;c--){var a=b[c];if(g){for(var h=0;h<a.lineFragments.length;h++){var l=a.lineFragments[h];f=f.concat(l.wordBreaks)}}if(d){f=f.concat(a.paragraphBreaks)}}f.push(this.endIndexForContainer(b[0]));return f.sort(function(n,m){return n-m})},endIndexForContainer:function(a){var b=a.lineFragments[a.lineFragments.length-1];var c=b.offset+b.characterBoundaries.length;return c},selectCharacterInterval:function(b,c){var e=this.getStorageAndOffset(b).offset;var a=this.containers[b.containerIndex];var h=this.storages[a.storageID];var g=c[0];var f=-1;for(var d=1;d<c.length;d++){f=c[d]-1;if(g<=e&&e<=f){this.setAnchorLocation(this.getCharacterPosition(a.storageID,g));this.setLocation(this.getCharacterPosition(a.storageID,f));this.setAnchorLocation(null);return}g=f+1}},selectWordAt:function(b){var a=this.containers[b.containerIndex];var c=this.storages[a.storageID];if(!c.wordBreaks){c.wordBreaks=this.breaksForStorage(c,true,true)}this.selectCharacterInterval(b,c.wordBreaks)},selectParagraphAt:function(b){var a=this.containers[b.containerIndex];var c=this.storages[a.storageID];if(!c.paragraphBreaks){c.paragraphBreaks=this.breaksForStorage(c,true,false)}this.selectCharacterInterval(b,c.paragraphBreaks)}});require("core");require("controllers/document");CoreHeckler.rangedCommentController=SC.CollectionController.create({canEditCollection:true,arrangedObjectsBinding:"CoreHeckler.rangedComments.records",init:function(){arguments.callee.base.apply(this,arguments)},addComment:function(f){if(CoreHeckler.adaptor.fullMetadata.Ranged){CoreDocs.errorController.reportError(CoreDocs.loc("Comment limit reached","Dialog box title"),CoreDocs.loc("You must delete some text selection comments before you can make more.",""));return}$view("#add_comment_to_page_button").set("inUse",true);if(!this.pageView){this.pageView=$view(".preview_image")}var g=0;var e=0;if(!f){var s=CoreHeckler.pageController.get("pageScale");var o=CoreHeckler.rangedSelectionController.get("currentSelection");var l=CoreHeckler.rangedSelectionController.getSelectionGeometry(o);var q;var h=CoreHeckler.pageController.get("currentPageNumber");var d=$A(this.arrangedObjects);d.each(function(t){if((h==t.get("page"))&&(!t.deletedAndNoComments())&&(t.sameAnchor(l))){q=t;throw $break}});if(q){f=q.get("guid")}else{var n=$A(this.getAllCommentsAt(o));if(n.length){var p=100/s;n.each(function(v){var u=v.get("content").get("bx");var t=v.get("content").get("by");if(t>by-p){g=u;e=t+p}})}else{var c=Heckler.commentController.getNewCommentPosition(l);g=c.x;e=c.y}}}var a=new Date();var m=Math.round(a.getTime()/1000);var r={guid:CoreHeckler.documentController.createCommentGuid(),type:"Rangedcomment",body:"",author:CoreHeckler.commentator.get("guid"),time:m,parent:f,page:CoreHeckler.pageController.get("currentPageNumber"),selection:Object.clone(o),bx:g,by:e,bw:CoreHeckler.DEFAULT_BUBBLE_WIDTH};CoreHeckler.rangedSelectionController.clearSelection();var b=$view(".other_comment_canvas").get("ranged");return Heckler.commentController.addCommentHelper(r,CoreHeckler.Rangedcomment,CoreHeckler.rangedComments,b,f)},getAllCommentsAt:function(g){var d=CoreHeckler.pageController.get("currentPageNumber");var c=[];var b=5;var a=CoreHeckler.Rangedcomment.findAll({page:d});if(g&&a){var f=CoreHeckler.rangedSelectionController.getSelectionGeometry(g);if(!f){return c}var e=$A($view(".other_comment_canvas").get("ranged"));a.each(function(l){var h=l.get("scaledGeometry");if(h&&Math.abs(h.commentTop-f.commentTop)<b&&Math.abs(h.commentRight-f.commentRight)<b&&!l.deletedAndNoComments()){c.push(e.viewForContentRecord(l))}})}return c},save:function(a){if(!a){a=CoreHeckler.commentator.get("guid")}CoreHeckler.adaptor.saveRangedComments(CoreHeckler.Rangedcomment.findAll({author:a}),a)}});require("core");CoreHeckler.HyperlinkCanvasView=SC.View.extend({init:function(){arguments.callee.base.apply(this,arguments)},rescaleObserver:function(){this.clear();this.render()}.observes("CoreHeckler.pageController.pageScale"),clear:function(){this.rootElement.innerHTML=""},render:function(){var a=$A(CoreHeckler.hyperlinkController.hyperlinks);a.each(function(c){var b=this.createHyperlinkDiv(c);this.rootElement.appendChild(b)}.bind(this))},createHyperlinkDiv:function(d){var a=new Element("div",{"class":"hyperlink"});var c=CoreHeckler.pageController.get("pageScale");var b=d.rect.scale(c);a.style.left=b.origin.x+"px";a.style.top=b.origin.y+"px";a.style.width=b.size.width+"px";a.style.height=b.size.height+"px";a.title=d.getTitle();a.observe("click",d.follow.bind(d));return a}});require("core");require("models/selection_comment");CoreHeckler.Rangedcomment=CoreHeckler.Selectioncomment.extend({trimComment:function(){var a=arguments.callee.base.apply(this,arguments);if(!this.deletedAndNoComments()&&this.get("selection")){a.selection=this.get("selection")}return a},commentType:function(){return CoreHeckler.Rangedcomment}.property("guid"),sameAnchor:function(a){var b=this.get("geometry");return b&&b.commentRight==a.commentRight&&b.commentY==a.commentY&&b.angle==a.angle},geometry:function(){if(!this._cachedGeometry){if(CoreHeckler.pageController.get("currentPageNumber")!=this.get("page")){return null}var a=CoreHeckler.rangedSelectionController.getSelectionGeometry(this.get("selection"));if(a){this._cachedGeometry=a}else{return null}}return this._cachedGeometry}.property("selection")});CoreHeckler.objectCommentController=SC.CollectionController.create({canEditCollection:true,arrangedObjectsBinding:"CoreHeckler.objectComments.records",addComment:function(g){if(CoreHeckler.adaptor.fullMetadata.Object){CoreDocs.errorController.reportError(CoreDocs.loc("Comment limit reached","Dialog box title"),CoreDocs.loc("You must delete some cell comments before you can make more.",""));return}$view("#add_comment_to_page_button").set("inUse",true);var b=new Date();var o=Math.round(b.getTime()/1000);var h;var f;var l=CoreHeckler.pageController.get("currentPageNumber");if(!g){var n;var e=$A(this.arrangedObjects);e.each(function(r){if(l==r.get("page")&&!r.deletedAndNoComments()&&CoreHeckler.objectSelectionController.get("currentSelection")==r.get("objectID")){n=r;throw $break}});if(n){g=n.get("guid")}}if(!g){var q=CoreHeckler.pageController.get("pageScale");var a=CoreHeckler.objectSelectionController.get("currentSelection");var m=CoreHeckler.objectSelectionController.getGeometry(a);var d=Heckler.commentController.getNewCommentPosition(m);h=d.x;f=d.y}var c={guid:CoreHeckler.documentController.createCommentGuid(),type:"Objectcomment",body:"",author:CoreHeckler.commentator.get("guid"),time:o,deleted:false,parent:g,page:CoreHeckler.pageController.get("currentPageNumber"),objectID:a,bx:h,by:f,bw:CoreHeckler.DEFAULT_BUBBLE_WIDTH};CoreHeckler.objectSelectionController.setSelection(null);var p=$view(".other_comment_canvas").get("object");return Heckler.commentController.addCommentHelper(c,CoreHeckler.Objectcomment,CoreHeckler.objectComments,p,g)},save:function(a){if(!a){a=CoreHeckler.commentator.get("guid")}var b=CoreHeckler.Objectcomment.findAll({author:a});CoreHeckler.adaptor.saveObjectComments(b,a)}});
