var annotations={};var markers={};var currentProcessData=null;var default_modelviewer_id="modelviewer";var modelviewer=null;callMoviInit=function(pcp_model_url,pcp_model_id,modelviewer_id){modelviewer=new MOVI.widget.ModelViewer(modelviewer_id);modelviewLoading(modelviewer,pcp_model_url,pcp_model_id,modelviewer_id);};function loadProcessData(data){currentProcessData=data;if(!currentRevision){currentRevision=data.process.head;}
if(currentRevision!=0){loadModel(currentRevision);}}
function modelviewLoading(modelviewer,pcp_model_url,pcp_model_id,modelviewer_id){modelviewer.loadModel(pcp_model_url,{onSuccess:function(mv){setUpUI(mv,pcp_model_id,modelviewer_id);var commenting=new ShapeCommenting(mv,pcp_model_id);$(".shape_link").live("click",function(){var href=$(this).attr("href");var resourceId=href.substr(href.lastIndexOf("#")+1);$.scrollTo("#"+modelviewer_id,{duration:200});commenting.showComment(resourceId);});if(self.document.location.hash){mv.scrollToShape(self.document.location.hash.substring(1));var highlightMarker=new MOVI.util.Marker(mv.canvas.getShape(self.document.location.hash.substring(1)),{"border":"2px solid #7a8b1f"});highlightMarker.show();}},onFailure:function(mv){},onTimeout:function(mv){}});}
function setUpUI(modelviewer,model_id,modelviewer_id){modelviewer.fitModelToViewer();var modelnavigator=new MOVI.widget.ModelNavigator(modelviewer_id+"_navigator",modelviewer);var zoomslider=new MOVI.widget.ZoomSlider(modelviewer_id+"_zoomslider",modelviewer);$(zoomslider.get("element")).parent().find(".zoom_in_button").click(function(){zoomslider.slider.setValue(100,true);});$(zoomslider.get("element")).parent().find(".zoom_out_button").click(function(){zoomslider.slider.setValue(0,true);});var resize=new YAHOO.util.Resize(modelviewer_id,{handles:['b'],minHeight:150});resize.on("startResize",function(){modelviewer.onZoomLevelChangeStart.fire(modelviewer.getZoomLevel());});resize.on("resize",function(){modelnavigator.update();zoomslider.onChange();},this,true);resize.on("endResize",function(){modelviewer.setStyle("width","");modelviewer.onZoomLevelChangeEnd.fire(modelviewer.getZoomLevel());});resize.reset();}
loadModelClick=function(e){e.preventDefault();var parts=this.href.split("/");loadModel(parseInt(parts[parts.length-2]));};update_nav_link=function(link_id,revision){if(currentProcessData.revisions[revision]!=null){$("#"+link_id).css("visibility","visible");$("#"+link_id).attr("href",processBaseUrl+revision+"/");}else{$("#"+link_id).css("visibility","hidden");}};update_edit_link=function(link_id,revision){var href=$("#"+link_id).attr("href");var parts=href.split("/");parts[parts.length-2]=revision;href=parts.join("/");$("#"+link_id).attr("href",href);};update_revision_hint=function(revision){if(currentProcessData.revisions[revision+1]==null){$("#editing_older_revision").hide();}else{$("#editing_older_revision").show();}};update_meta=function(revision){var revdata=currentProcessData.revisions[revision];$("#revision_meta_revision").html(revision);$("#revision_meta_create_on").html(revdata.meta_date);$("#revision_meta_edited_by").html('<a href="'+revdata.meta_user_url+'">'+revdata.meta_user+'</a>');$("#revision_meta_message").html(revdata.message);};update_timemachine_link=function(link_id){if(currentProcessData.process.head>0){$("#"+link_id).show();}else{$("#"+link_id).hide();}};loadModel=function(revision){update_nav_link("prev_rev_link",revision-1);update_nav_link("next_rev_link",revision+1);update_edit_link("edit_revision_link",revision);update_timemachine_link("timemachine_link");update_revision_hint(revision);update_meta(revision);callMoviInit(currentProcessData.revisions[revision].model_url,currentProcessData.process.id,default_modelviewer_id);};processInit=function(context){$(".load_model_link",context).click(loadModelClick);$(".reload_movi_editor",context).click(function(e){e.preventDefault();currentRevision=null;$.getScript(processDataUrl+"?callback=loadProcessData");tb_remove();});};(function(){$(document).ready(function(){processInit($(document));});})();var COMMENT_ICON_URL=MEDIA_URL+"img/shapecomments.png";function ShapeCommenting(modelviewer,modelId){var Element=YAHOO.util.Element;this.modelviewer=modelviewer;this.annotations={};this.markers={};this.modelId=modelId;this.comments=this.getShapeComments();this.initComments();this.enableSelection();}
ShapeCommenting.prototype={getInputValue:function(roolEl,name){return $("input[name='"+name+"']",rootEl).attr("value");},setInputValue:function(rootEl,name,value){$("input[name='"+name+"']",rootEl).attr("value",value);},getShapeComments:function(){var getMetaValue=function(rootEl,name){return $("span[class="+name+"]:first",rootEl).text();}
var modelId=this.modelId;var result={};$("#comment-list div.linked_comment",document).each(function(i){if(getMetaValue($(this),"commented_object_id")==modelId){var clone=$(this).clone(true);clone.find("*[id^=meta]").remove();clone.find("*[id]").each(function(){var id=$(this).attr("id");$(this).attr("id","clone_"+id);});result[getMetaValue($(this),"belongs_to")]="<div class='shape_annotation'>"+
clone.html()+"</div>";}});return result;},getNewCommentFormHtml:function(shapeId){$("#writenew_annotation input[name='belongs_to']").attr("value",shapeId);var result="<div class='shape_annotation'>";result+=$("#writenew_annotation").html();$("#writenew_annotation input[name='belongs_to']").attr("value","");result+="<div class='clear_left'></div></div>";return result;},showComment:function(resourceId){this.modelviewer.scrollToShape(resourceId);if(this.annotations[resourceId])
this.annotations[resourceId].show();},initComments:function(){var nodes=modelviewer.canvas.getNodes();for(i in nodes){var node=nodes[i];this.markers[node.resourceId]=new MOVI.util.Marker(node);if(this.comments[node.resourceId]){this.annotations[node.resourceId]=new MOVI.util.Annotation(this.markers[node.resourceId],this.comments[node.resourceId]);this.markers[node.resourceId].setRectClassName("comment-marker");var icon=new YAHOO.util.Element(document.createElement("div"));icon.setStyle("width","32px");icon.setStyle("height","32px");icon.set("innerHTML","<img src=\""+COMMENT_ICON_URL+"\" alt=\"shape comments\" />");icon.setStyle("cursor","pointer");(function(annotations){var id=node.resourceId;icon.on("click",function(){annotations[id].toggle();});})(this.annotations);pcpInit($(this.annotations[node.resourceId].get("element")));this.markers[node.resourceId].addIcon("northwest",icon);this.markers[node.resourceId].show();this.annotations[node.resourceId].hide();}else{this.annotations[node.resourceId]=new MOVI.util.Annotation(this.markers[node.resourceId],this.getNewCommentFormHtml(node.resourceId));this.annotations[node.resourceId].hide();this.markers[node.resourceId].setRectClassName("new-comment-marker");this.markers[node.resourceId].hide();this.setInputValue(this.annotations[node.resourceId],"belongs_to",node.resourceId);}}},enableSelection:function(){var selection=new MOVI.util.ShapeSelect(this.modelviewer);var prevSelected;selection.onSelectionChanged(function(){var shapes=selection.getSelectedShapes();var marker=selection.getSelectionMarker();if(shapes.length==0){if(prevSelected&&!this.comments[prevSelected.resourceId])
this.markers[prevSelected.resourceId].hide();this.annotations[prevSelected.resourceId].hide();prevSelected=null;}else{var shape=shapes[0];if(prevSelected){this.annotations[prevSelected.resourceId].hide();if(!this.comments[prevSelected.resourceId])
this.markers[prevSelected.resourceId].hide();}
if(this.annotations[shape.resourceId]&&this.comments[shape.resourceId]){marker.hide();this.annotations[shape.resourceId].toggle();}else if(this.annotations[shape.resourceId]){this.annotations[shape.resourceId].toggle();}
prevSelected=shape;}},this);},addShapeComment:function(){}};(function($){var m=$.scrollTo=function(b,h,f){$(window).scrollTo(b,h,f)};m.defaults={axis:'xy',duration:parseFloat($.fn.jquery)>=1.3?0:1};m.window=function(b){return $(window).scrollable()};$.fn.scrollable=function(){return this.map(function(){var b=this,h=!b.nodeName||$.inArray(b.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!h)return b;var f=(b.contentWindow||b).document||b.ownerDocument||b;return $.browser.safari||f.compatMode=='BackCompat'?f.body:f.documentElement})};$.fn.scrollTo=function(l,j,a){if(typeof j=='object'){a=j;j=0}if(typeof a=='function')a={onAfter:a};if(l=='max')l=9e9;a=$.extend({},m.defaults,a);j=j||a.speed||a.duration;a.queue=a.queue&&a.axis.length>1;if(a.queue)j/=2;a.offset=n(a.offset);a.over=n(a.over);return this.scrollable().each(function(){var k=this,o=$(k),d=l,p,g={},q=o.is('html,body');switch(typeof d){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px)?$/.test(d)){d=n(d);break}d=$(d,this);case'object':if(d.is||d.style)p=(d=$(d)).offset()}$.each(a.axis.split(''),function(b,h){var f=h=='x'?'Left':'Top',i=f.toLowerCase(),c='scroll'+f,r=k[c],s=h=='x'?'Width':'Height';if(p){g[c]=p[i]+(q?0:r-o.offset()[i]);if(a.margin){g[c]-=parseInt(d.css('margin'+f))||0;g[c]-=parseInt(d.css('border'+f+'Width'))||0}g[c]+=a.offset[i]||0;if(a.over[i])g[c]+=d[s.toLowerCase()]()*a.over[i]}else g[c]=d[i];if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],u(s));if(!b&&a.queue){if(r!=g[c])t(a.onAfterFirst);delete g[c]}});t(a.onAfter);function t(b){o.animate(g,j,a.easing,b&&function(){b.call(this,l,a)})};function u(b){var h='scroll'+b;if(!q)return k[h];var f='client'+b,i=k.ownerDocument.documentElement,c=k.ownerDocument.body;return Math.max(i[h],c[h])-Math.min(i[f],c[f])}}).end()};function n(b){return typeof b=='object'?b:{top:b,left:b}}})(jQuery);