var ColumnBrowserView=Class.create();ColumnBrowserView.addMethods({initialize:function(a,b){this.delegate=b;if(!a||!a.surface||!$(a.surface)){console.log("ColumnBrowser could not initialize: Element with the provided ID could not be found");return}this.surface=$(a.surface);this.surface.addClassName("m-columnbrowser-surface");this.openColumnsSurface=Builder.node("div",{id:"m-open-columns"});this.surface.insert(this.openColumnsSurface);this.openColumnContainer=Builder.node("ul",{id:"m-open-column-container"});this.openColumnsSurface.insert(this.openColumnContainer);this.openColumnResizeHandle=Builder.node("div",{id:"m-open-column-resize"});this.openColumnsSurface.insert(this.openColumnResizeHandle);this.closedColumnContainer=Builder.node("ul",{id:"m-closed-column-container"});this.openColumnsSurface.insert(this.closedColumnContainer);this.update();this.updateSortables();this.resize()},updateSortables:function(){if(this.openColumnSortables){Sortables.destroy(this.openColumnContainer)}var a=["m-open-column-container","m-closed-column-container"];this.openColumnSortables=Sortable.create(this.openColumnContainer,{constraint:"horizontal",overlap:"horizontal",handle:"m-drag-handle",containment:a,onChange:this.delegate.facetDragged.bind(this.delegate),onUpdate:this.delegate.updateOpenFacetsOrder.bind(this.delegate)});if(this.closedColumnSortables){Sortables.destroy(this.closedColumnContainer)}this.closedColumnSortables=Sortable.create(this.closedColumnContainer,{constraint:null,revert:"failure"})},getCurrentColumns:function(){var a=new Array();this.openColumnContainer.childElements().each(function(d){var b=d.id.substr(5);var c=this.delegate.getColumnWithID(b);a.push(c)}.bind(this));return a},resize:function(){var e=this.delegate.getOpenColumnsArray();var c=this.surface.getWidth();var m=this.surface.getHeight();var j=this.getColumnHeight();var h=0;var b=0;e.each(function(n){if(n.view.hasFixedWidth()){h++;b+=n.view.getFixedWidth()}});var f=e.length-h;var d=Math.ceil((c-b)/f);var i=(c-b)-(d*(f-1));if(d<this.minColumnWidth){d=this.minColumnWidth;i=d}this.surface.setStyle({height:m+"px"});var g=(d*(e.length-1))+i;var k=0;var l=false;e.each(function(n){if(n.view.hasFixedWidth()){k+=n.view.getFixedWidth();l=true}else{if(n.view.hasCustomWidth()&&n.view.getCustomWidth()>this.minColumnWidth&&n.view.getCustomWidth()>d){k+=n.view.getCustomWidth();l=true}else{n.view.removeCustomWidth();k+=d}}}.bind(this));if(l){g=k;this.openColumnContainer.setStyle({width:g+"px",height:j+"px"});e.each(function(n){if(n.view.hasFixedWidth()){n.view.setDimensions(n.view.getFixedWidth(),j)}else{if(n.view.hasCustomWidth()){n.view.setDimensions(n.view.getCustomWidth(),j)}else{n.view.setDimensions(d,j)}}})}else{this.openColumnContainer.setStyle({width:g+"px",height:j+"px"});e.each(function(n){n.view.setDimensions(d,j)});e[e.length-1].view.setWidth(i)}if(this.hasScrollBar()){var a=this.getColumnHeight(true);e.each(function(n){if(n.view.getHeight()!=a){n.view.setHeight(a)}});this.openColumnContainer.setStyle({height:a+"px"})}this.checkScrollPositionIsValid()},checkScrollPositionIsValid:function(){if(this.openColumnContainer.getWidth()-this.surface.scrollLeft<this.surface.getWidth()){this.surface.scrollLeft=this.openColumnContainer.getWidth()-this.surface.getWidth()}},getColumnHeight:function(b){var a=b?this.surface.clientHeight:this.surface.getHeight();a-=this.openColumnResizeHandle.getHeight();return a},hasScrollBar:function(){return(this.openColumnContainer.getWidth()>this.surface.getWidth())},update:function(){this.openColumnContainer.childElements().each(function(a){a.remove()});this.delegate.getOpenColumnsArray().each(function(a){a.view.updateTitleBar();this.openColumnContainer.insert(a.view.getSurface());a.view.getSurface().show()}.bind(this));this.closedColumnContainer.childElements().each(function(a){a.remove()});this.delegate.getClosedColumnsArray().each(function(a){a.view.updateTitleBar();this.closedColumnContainer.insert(a.view.getSurface());a.view.getSurface().show()}.bind(this))}});var ViewInterface=Class.create();ViewInterface.addMethods({surface:null,getSurface:function(){return this.surface}});var Resizables={resizers:[],observers:[],register:function(a){if(this.resizers.length==0){this.eventMouseUp=this.endResize.bindAsEventListener(this);this.eventMouseMove=this.updateResize.bindAsEventListener(this);this.eventKeypress=this.keyPress.bindAsEventListener(this);Event.observe(document,"mouseup",this.eventMouseUp);Event.observe(document,"mousemove",this.eventMouseMove);Event.observe(document,"keypress",this.eventKeypress)}this.resizers.push(a)},unregister:function(a){this.resizers=this.resizers.reject(function(b){return b==a});if(this.resizers.length==0){Event.stopObserving(document,"mouseup",this.eventMouseUp);Event.stopObserving(document,"mousemove",this.eventMouseMove);Event.stopObserving(document,"keypress",this.eventKeypress)}},activate:function(a){if(a.options.delay){this._timeout=setTimeout(function(){Resizables._timeout=null;window.focus();Resizables.activeResizable=a}.bind(this),a.options.delay)}else{window.focus();this.activeResizable=a}},deactivate:function(){this.activeResizable=null},updateResize:function(a){if(!this.activeResizable){return}var b=[Event.pointerX(a),Event.pointerY(a)];if(this._lastPointer&&(this._lastPointer.inspect()==b.inspect())){return}this._lastPointer=b;this.activeResizable.updateResize(a,b)},endResize:function(a){if(this._timeout){clearTimeout(this._timeout);this._timeout=null}if(!this.activeResizable){return}this._lastPointer=null;this.activeResizable.endResize(a);this.activeResizable=null},keyPress:function(a){if(this.activeResizable){this.activeResizable.keyPress(a)}},addObserver:function(a){this.observers.push(a);this._cacheObserverCallbacks()},removeObserver:function(a){this.observers=this.observers.reject(function(b){return b.element==a});this._cacheObserverCallbacks()},notify:function(a,b,c){if(this[a+"Count"]>0){this.observers.each(function(d){if(d[a]){d[a](a,b,c)}})}if(b.options[a]){b.options[a](b,c)}},_cacheObserverCallbacks:function(){["onStart","onEnd","onResize"].each(function(a){Resizables[a+"Count"]=Resizables.observers.select(function(b){return b[a]}).length})}};var Resizable=Class.create();Resizable._resizing={};Resizable.prototype={initialize:function(b){var c={handle:false,endeffect:function(e){var d=typeof e._opacity=="number"?e._opacity:1;new Effect.Opacity(e,{duration:0.2,from:0.7,to:d,queue:{scope:"_resizable",position:"end"},afterFinish:function(){Resizable._resizing[e]=false}})},zindex:1000,revert:false,snap:false,delay:0};if(!arguments[1]||typeof arguments[1].endeffect=="undefined"){Object.extend(c,{starteffect:function(d){d._opacity=Element.getOpacity(d);Resizable._resizing[d]=true;new Effect.Opacity(d,{duration:0.2,from:d._opacity,to:0.7})}})}var a=Object.extend(c,arguments[1]||{});this.element=$(b);if(a.handle&&(typeof a.handle=="string")){this.handle=this.element.down("."+a.handle,0)}if(!this.handle){this.handle=$(a.handle)}if(!this.handle){this.handle=this.element}Element.makePositioned(this.element);this.delta=this.currentDelta();this.options=a;this.resizing=false;this.eventMouseDown=this.initResize.bindAsEventListener(this);Event.observe(this.handle,"mousedown",this.eventMouseDown);Resizables.register(this)},reverteffect:function(d,a,c){var e=this._edim[0]-a;var b=this._edim[1]-c;new Effect.ReSize(d,{direction:"vert",amount:b});new Effect.ReSize(d,{direction:"horizontal",amount:e})},destroy:function(){Event.stopObserving(this.handle,"mousedown",this.eventMouseDown);Resizables.unregister(this)},currentDelta:function(){return([parseInt(Element.getStyle(this.element,"left")||"0"),parseInt(Element.getStyle(this.element,"top")||"0")])},initResize:function(a){if(typeof Resizable._resizing[this.element]!="undefined"&&Resizable._resizing[this.element]){return}if(Event.isLeftClick(a)){var e=Event.element(a);if((tag_name=e.tagName.toUpperCase())&&(tag_name=="INPUT"||tag_name=="SELECT"||tag_name=="OPTION"||tag_name=="BUTTON"||tag_name=="TEXTAREA")){return}var d=[Event.pointerX(a),Event.pointerY(a)];this._initialX=d[0];this._initialY=d[1];var c=Element.getDimensions(this.element);this._edim=[c.width,c.height];this._min=[1,1];this._max=[0,0];var f=Position.cumulativeOffset(this.element);this.offset=[0,1].map(function(g){return(d[g]-f[g])});if(this.options.preserveRatio){this._ratio=c.width/c.height}if(this.options.bind==true||this.options.flip){this._parentDim=Element.getDimensions(this.element.parentNode);this._cop=Position.cumulativeOffset(this.element.parentNode);this._coe=Position.cumulativeOffset(this.element);this.elementOffset=[this._coe[0]-this._cop[0],this._coe[1]-this._cop[1]];if(this.options.flip){var b=[parseInt(Element.getStyle(this.element,"margin-left"))||"0",parseInt(Element.getStyle(this.element,"margin-top"))||"0"];this.element.setStyle({overflow:"hidden"});this._mc=[(this._edim[0]-(this._initialX-(this._coe[0]))),(this._edim[1]-(this._initialY-(this._coe[1])))];this._inf=Position.positionedOffset(this.element);this._inf[0]-=this.element.parentNode!=document.body?this._cop[0]:0;this._inf[1]-=this.element.parentNode!=document.body?this._cop[1]:0}}if(this.options.min){if(this.options.min instanceof Array){this._min=this._min.map(function(g,h){return(this.options.min[h]>0?this.options.min[h]:1)}.bind(this))}else{this._min=this._min.map(function(g,h){return(this.options.min>0?this.options.min:1)}.bind(this))}}if(this.options.max){if(this.options.max instanceof Array){this._max=this._max.map(function(g,h){return(this.options.max[h]>=this._min[h])?this.options.max[h]:0}.bind(this))}else{this._max=this._max.map(function(g,h){return(this.options.max>=this._min[h])?this.options.max:0}.bind(this))}}Resizables.activate(this);Event.stop(a)}},startResize:function(b){this.resizing=true;if(this.options.zindex){this.originalZ=parseInt(Element.getStyle(this.element,"z-index")||0);this.element.style.zIndex=this.options.zindex}if(this.options.ghosting){this._clone=this.element.cloneNode(true);this.element.parentNode.insertBefore(this._clone,this.element);var a=this._clone.style;Position.absolutize(this._clone);if(navigator.appName.indexOf("Microsoft")!=-1&&parseInt(Element.getStyle(this.element,"margin-top"))>0){this.element.style.top=a.marginTop}a.margin="0px"}Resizables.notify("onStart",this,b);if(this.options.starteffect){this.options.starteffect(this.element)}},updateResize:function(a,b){if(!this.resizing){this.startResize(a)}Resizables.notify("onResize",this,a);this.draw(b);if(this.options.change){this.options.change(this)}Event.stop(a)},finishResize:function(b,d){this.resizing=false;if(this.options.ghosting){if(navigator.appName.indexOf("Microsoft")!=-1&&parseInt(Element.getStyle(this.element,"margin-top"))>0){this.element.style.top=this._clone.style.marginTop}Element.remove(this._clone);this._clone=null}Resizables.notify("onEnd",this,b);var a=this.options.revert;if(a&&typeof a=="function"){a=a(this.element)}if(a&&this.reverteffect){var c=Element.getDimensions(this.element);this.reverteffect(this.element,c.width,c.height)}if(this.options.zindex){this.element.style.zIndex=this.originalZ}if(this.options.endeffect){this.options.endeffect(this.element)}Resizables.deactivate(this)},keyPress:function(a){if(a.keyCode!=Event.KEY_ESC){return}this.finishResize(a,false);Event.stop(a)},endResize:function(a){if(!this.resizing){return}this.finishResize(a,true);Event.stop(a)},draw:function(j){var h=Position.cumulativeOffset(this.element);var g=this.currentDelta();h[0]-=g[0];h[1]-=g[1];var c=[0,1].map(function(d){return(j[d]-h[d]-this.offset[d])}.bind(this));var i=c[0]+this._edim[0]-g[0];var a=c[1]+this._edim[1]-g[1];c[0]=(i>this._min[0])?i:this._min[0];c[1]=(a>this._min[1])?a:this._min[1];if(this.options.snap){if(typeof this.options.snap=="function"){c=this.options.snap(c[0],c[1],this)}else{if(this.options.snap instanceof Array){c=c.map(function(d,k){var l=Math.round(d/this.options.snap[k])*this.options.snap[k];return(this.options.snap[k]>0)?((l>this._min[k])?l:this._min[k]):this._edim[k]}.bind(this))}else{c=c.map(function(d,k){var l=Math.round(d/this.options.snap)*this.options.snap-g[k];return(this.options.snap>0)?((l>this._min[k])?l:this._min[k]):this._edim[k]}.bind(this))}}}if(this.options.bind){if(this._parentDim.width<=c[0]+this.elementOffset[0]){c[0]=this._parentDim.width-this.elementOffset[0]-2}if(this._parentDim.height<=c[1]+this.elementOffset[1]){c[1]=this._parentDim.height-this.elementOffset[1]-2}}if(this.options.min){c[0]=c[0]>this._min[0]?c[0]:this._min[0];c[1]=c[1]>this._min[1]?c[1]:this._min[1]}if(this.options.max){c[0]=c[0]<this._max[0]?c[0]:(this._max[0]>0?this._max[0]:c[0]);c[1]=c[1]<this._max[1]?c[1]:(this._max[1]>0?this._max[1]:c[1])}var b=this.element.style;if(this.options.flip){var f=(j[0]+this._mc[0]);var e=(j[1]+this._mc[1]);if(f<=this._coe[0]){b.left=f-this._cop[0]+"px";c[0]=this._coe[0]-this.element.offsetLeft}else{b.left=this._inf[0]+"px"}if(e<=this._coe[1]){b.top=e-this._cop[1]+"px";c[1]=this._coe[1]-this.element.offsetTop}else{b.top=this._inf[1]+"px"}}if(this.options.preserveRatio){c[0]=this._ratio*c[1]}if((!this.options.constraint)||(this.options.constraint=="horizontal")){b.width=c[0]+"px"}if((!this.options.constraint)||(this.options.constraint=="vertical")){b.height=c[1]+"px"}if(b.visibility=="hidden"){b.visibility=""}}};var ColumnSubViewInterface=Class.create(ViewInterface);ColumnSubViewInterface.addMethods({scrollToRow:function(a){},reloadData:function(){},reloadRow:function(a){},resetScroll:function(){},resize:function(){},indexOfTopRow:function(){}});var ListView=Class.create(ColumnSubViewInterface);ListView.addMethods({delegate:null,list:null,scrollSpacer:null,rowHeight:16,clickTimeout:null,isAwaitingDoubleClick:false,initialize:function(a){this.delegate=a;if(window.mSpaceOptions&&window.mSpaceOptions.rowHeight){this.rowHeight=window.mSpaceOptions.rowHeight}this.surface=Builder.node("div",{className:"m-list",style:"height: 100px"});this.surface.observe("scroll",this.scrollHasChanged.bindAsEventListener(this));this.noResults=Builder.node("ul",{className:"no-results",style:"display: none"},[Builder.node("li",{},"No Results")]);this.surface.insert(this.noResults);this.list=Builder.node("ul",{});this.surface.insert(this.list);this.scrollSpacer=Builder.node("li",{className:"m-list-scroll-spacer"});this.scrollSpacer.setStyle({height:"0px"});this.list.insert(this.scrollSpacer);this.surface.observe("selectstart",function(b){b.stop()});this.surface.observe("mousedown",function(b){b.stop()})},loadData:function(){var b=this.numberOfVisibleRows();if(this.delegate.getCount()==0){this.noResults.show()}else{this.noResults.hide()}var d=this.list.childElements().length-1;var f=this.indexOfTopRow();for(var e=0;e<b;e++){var c=f+e;var a;a=Builder.node("li",{className:"m-listitem"});if(e<d){a=this.list.childElements()[e+1];this.updateListItem(a,c)}else{this.buildListItem(a,e);this.updateListItem(a,c);this.list.insert(a)}}if(this.hasSelections()){this.surface.addClassName("m-has-selections")}else{this.surface.removeClassName("m-has-selections")}if(this.hasHighlights()){this.surface.addClassName("m-has-highlights")}else{this.surface.removeClassName("m-has-highlights")}},reloadData:function(){if(this.delegate.isFiltered()){this.loadData();this.resize();return}var b=this.numberOfVisibleRows();if(this.delegate.getCount()==0){this.noResults.show()}else{this.noResults.hide()}var e=this.indexOfTopRow();var f=this.list.childElements();for(var d=0;d<b;d++){var c=e+d;var a=f[d+1];this.updateListItem(a,c)}},reloadRow:function(e){var b=this.numberOfVisibleRows();var d=this.indexOfTopRow();if(e>=d&&e<=d+b){var c=e-d;var a=this.list.childElements()[c+1];this.updateListItem(a,e)}},buildListItem:function(a,c){a.setStyle({height:this.rowHeight+"px","line-height":this.rowHeight+"px"});var b=Builder.node("div",{className:"m-marquee"});var d=Builder.node("div",{className:"m-title"});b.insert(d);a.insert(b);a.observe("click",this.itemClick.curry(c).bindAsEventListener(this));a.observe("mouseover",this.itemMouseOver.curry(c).bindAsEventListener(this));a.observe("mouseout",this.itemMouseOut.curry(c).bindAsEventListener(this));if(this.hasPreviewCues()){var e=Builder.node("div",{className:"m-preview-cue-button"});e.observe("click",this.previewCueClick.curry(c).bindAsEventListener(this));e.observe("mouseover",this.previewCueMouseover.curry(c).bindAsEventListener(this));e.observe("mouseout",this.previewCueMouseout.curry(c).bindAsEventListener(this));a.insert(e)}},updateListItem:function(a,b){if(!a||b==null){return}a.removeClassName("m-odd");a.removeClassName("m-even");a.removeClassName("m-selected");a.removeClassName("m-highlighted");a.removeClassName("m-hidden");if(this.isRowHighlighted(b)){a.addClassName("m-highlighted")}if(this.isRowSelected(b)){a.addClassName("m-selected")}if(b%2==0){a.addClassName("m-odd")}else{a.addClassName("m-even")}a.down(".m-title").update(this.getTitleForRow(b));a.down(".m-marquee").setStyle({marginLeft:"0px"});if(a.down(".m-title").title=="undefined"){a.addClassName("m-hidden")}},resize:function(){this.list.setStyle({height:this.rowHeight*this.getCount()+"px"});this.loadData()},indexOfTopRow:function(){return Math.floor(this.surface.scrollTop/this.rowHeight)},numberOfVisibleRows:function(){var a=this.numberOfPossibleVisibleRows();return(a<this.getCount())?a:this.getCount()},numberOfPossibleVisibleRows:function(){return noOfRows=Math.ceil(this.surface.getHeight()/this.rowHeight)+1},isRowVisible:function(a){return(a>=this.indexOfTopRow()&&a<this.indexOfTopRow()+this.numberOfVisibleRows()-1)},isRowCompletelyVisible:function(d){d=parseInt(d);var a=this.isRowVisible(d);var c=(d*this.rowHeight)-this.surface.scrollTop;var b=((d+1)*this.rowHeight)-this.surface.scrollTop;return(c>=0&&b<=this.surface.getHeight())},resetScroll:function(){this.surface.scrollTop=0;this.scrollSpacer.setStyle({height:0+"px"});this.reloadData()},scrollToRow:function(b){if(b<0||b>=this.getCount()){return}if(this.isRowCompletelyVisible(b)){if(this.getCount()<=this.numberOfPossibleVisibleRows()||b==0){this.list.setStyle({height:this.rowHeight*this.getCount()+"px"});this.scrollSpacer.setStyle({height:"0px"});this.surface.scrollTop=0}return}var a=b*this.rowHeight;this.list.setStyle({height:this.rowHeight*this.getCount()+"px"});this.scrollSpacer.setStyle({height:a+"px"});this.surface.scrollTop=a},itemClick:function(b,a){if(this.isLoading()){return}var c=this.indexOfTopRow()+b;if(this.isAwaitingDoubleClick){clearTimeout(this.clickTimeout);this.isAwaitingDoubleClick=false;this.doubleClick(c,a)}else{this.clickTimeout=setTimeout(this.singleClick.curry(c,Object.clone(a)).bind(this),200);this.isAwaitingDoubleClick=true}},itemMouseOver:function(b,a){this.scrollMarquee(b)},itemMouseOut:function(c,b){if(this.marqueeEffect){this.marqueeEffect.cancel()}clearTimeout(this.marqueeTimer);this.marqueeTimer=null;var a=this.list.childElements()[c+1];a.down(".m-marquee").setStyle({marginLeft:"0px"})},scrollMarquee:function(c){if(this.marqueeEffect){this.marqueeEffect.cancel()}var a=this.list.childElements()[c+1];var b=a.down(".m-marquee");var g=a.down(".m-title");var e=this.list.getWidth();var h=g.getWidth();var f=h-e+10;var d=f/40;if(f>0){this.marqueeEffect=new Effect.Morph(b,{style:"margin-left: "+(0-f)+"px",duration:d,delay:1,afterFinish:function(){if(this.marqueeEffect){this.marqueeEffect.cancel()}this.marqueeEffect=new Effect.Morph(b,{style:"margin-left: 0px",duration:d,delay:1,afterFinish:function(){this.scrollMarquee(c)}.bind(this)})}.bind(this)})}},singleClick:function(a,b){clearTimeout(self.clickTimeout);this.isAwaitingDoubleClick=false;if(this.delegate&&this.delegate.singleClick){this.delegate.singleClick(a,b)}},doubleClick:function(a,b){if(this.delegate&&this.delegate.doubleClick){this.delegate.doubleClick(a,b)}},previewCueClick:function(b,a){var c=this.indexOfTopRow()+b;a.stop()},previewCueMouseover:function(b,a){var c=this.indexOfTopRow()+b;a.stop()},previewCueMouseout:function(b,a){var c=this.indexOfTopRow()+b;a.stop()},scrollHasChanged:function(e){var c=this.surface.scrollTop;var d=this.indexOfTopRow();var b=c-(d*this.rowHeight);var a=c-b;if(a+(this.rowHeight*this.numberOfVisibleRows())>this.list.getHeight()){a=this.list.getHeight()-(this.rowHeight*this.numberOfVisibleRows())}this.scrollSpacer.setStyle({height:a+"px"});if(this.marqueeEffect){this.marqueeEffect.cancel()}this.reloadData()},getCount:function(){if(this.delegate&&this.delegate.getCount){return this.delegate.getCount()}else{return 0}},getTitleForRow:function(a){if(this.delegate&&this.delegate.getTitleForRow){return this.delegate.getTitleForRow(a)}else{return""}},isRowSelected:function(a){if(this.delegate&&this.delegate.isRowSelected){return this.delegate.isRowSelected(a)}else{return false}},isRowHighlighted:function(a){if(this.delegate&&this.delegate.isRowHighlighted){return this.delegate.isRowHighlighted(a)}else{return false}},hasPreviewCues:function(){if(this.delegate&&this.delegate.hasPreviewCues){return this.delegate.hasPreviewCues()}else{return false}},isLoading:function(){if(this.delegate&&this.delegate.isLoading){return this.delegate.isLoading()}else{return false}},hasSelections:function(){if(this.delegate&&this.delegate.hasSelections){return this.delegate.hasSelections()}else{return false}},hasHighlights:function(){if(this.delegate&&this.delegate.hasHighlights){return this.delegate.hasHighlights()}else{return false}}});var ShortListView=Class.create(ListView);ShortListView.addMethods({initialize:function($super,a){$super(a);this.surface.addClassName("m-shortlist");this.surface.stopObserving("scroll");this.scrollSpacer.remove()},loadData:function(){this.list.update("");if(this.delegate.getCount()==0){this.noResults.show()}else{this.noResults.hide()}for(var b=0;b<this.delegate.getCount();b++){var a=Builder.node("li",{className:"m-listitem"});this.buildListItem(a,b);this.updateListItem(a,b);this.list.insert(a)}if(this.hasSelections()){this.surface.addClassName("m-has-selections")}else{this.surface.removeClassName("m-has-selections")}if(this.hasHighlights()){this.surface.addClassName("m-has-highlights")}else{this.surface.removeClassName("m-has-highlights")}},reloadData:function(){if(this.delegate.isFiltered()){this.loadData();this.resize();return}if(this.delegate.getCount()==0){this.noResults.show()}else{this.noResults.hide()}var c=this.list.childElements();for(var b=0;b<c.length;b++){var a=c[b];this.updateListItem(a,b)}},itemClick:function(b,a){if(this.isLoading()){return}if(this.isAwaitingDoubleClick){clearTimeout(self.clickTimeout);this.isAwaitingDoubleClick=false;this.doubleClick(b,a)}else{self.clickTimeout=setTimeout(this.singleClick.curry(b,Object.clone(a)).bind(this),200);this.isAwaitingDoubleClick=true}},scrollMarquee:function(c){if(this.marqueeEffect){this.marqueeEffect.cancel()}var a=this.list.childElements()[c];var b=a.down(".m-marquee");var g=a.down(".m-title");var e=this.list.getWidth();var h=g.getWidth();var f=h-e+10;var d=f/40;if(f>0){this.marqueeEffect=new Effect.Morph(b,{style:"margin-left: "+(0-f)+"px",duration:d,delay:1,afterFinish:function(){if(this.marqueeEffect){this.marqueeEffect.cancel()}this.marqueeEffect=new Effect.Morph(b,{style:"margin-left: 0px",duration:d,delay:1,afterFinish:function(){this.scrollMarquee(c)}.bind(this)})}.bind(this)})}},itemMouseOut:function(c,b){if(this.marqueeEffect){this.marqueeEffect.cancel()}clearTimeout(this.marqueeTimer);this.marqueeTimer=null;var a=this.list.childElements()[c];a.down(".m-marquee").setStyle({marginLeft:"0px"})},scrollToRow:function(b){if(b<0||b>=this.getCount()){return}if(this.isRowCompletelyVisible(b)){return}var a=b*this.rowHeight;this.surface.scrollTop=a}});var ColumnView=Class.create(ViewInterface);ColumnView.addMethods({delegate:null,subView:null,closedSurface:null,spacer:null,outline:null,titlebar:null,title:null,closeButton:null,loadingWheel:null,subViewSurface:null,width:0,height:null,loadingCount:0,options:{fixedWidth:0},initialize:function(b){this.delegate=b.delegate;var a=Object.clone(this.options);this.options=Object.extend(a,b);this.surface=Builder.node("li",{className:"m-column",id:"m-id-"+this.getID()});if(this.delegate.getAttribute&&this.delegate.getAttribute("cssclass")){this.surface.addClassName(this.delegate.getAttribute("cssclass"))}this.closedSurface=Builder.node("div",{className:"m-closed-column",title:"Click & Drag to add as a Column"},[this.getTitle()]);this.surface.insert(this.closedSurface);this.spacer=Builder.node("div",{className:"m-spacer"});this.surface.insert(this.spacer);this.outline=Builder.node("div",{className:"m-outline"});this.spacer.insert(this.outline);this.titlebar=Builder.node("div",{className:"m-titlebar m-drag-handle"});this.outline.insert(this.titlebar);this.icon=Builder.node("div",{className:"m-icon"});this.titlebar.insert(this.icon);this.title=Builder.node("div",{className:"m-title",style:"height: 100%"},this.getTitle());this.titlebar.insert(this.title);this.buttonsContainer=Builder.node("div",{className:"m-column-buttons",style:"height: 100%"});this.titlebar.insert(this.buttonsContainer);this.buildButtons();this.resizeHandle=Builder.node("div",{className:"m-resize",title:"Click & drag to resize, double click to reset"});this.spacer.insert(this.resizeHandle);if(this.hasFixedWidth()){this.resizeHandle.hide()}this.filterSurface=Builder.node("div",{className:"m-column-filter"});this.outline.insert(this.filterSurface);this.filterInput=Builder.node("input");this.filterInput.observe("keypress",this.filterInputKeyboardListener.bindAsEventListener(this));this.filterSurface.insert(this.filterInput);this.filterSurface.hide();this.initializeView();var b={handle:this.resizeHandle,change:function(){document.fire("columnbrowser:userresizehchange")},onEnd:function(){this.customWidth=this.surface.getWidth();document.fire("columnbrowser:userresizeend")}.bind(this)};if(!Prototype.Browser.WebKit){Object.extend(b,{onStart:function(){document.fire("columnbrowser:userresizestart")}})}new Resizable(this.surface,b);this.resizeHandle.observe("dblclick",this.resizeHandleDblClickListener.bindAsEventListener(this))},buildButtons:function(){this.loadingWheel=Builder.node("div",{className:"m-column-loading",title:"Loading..."});this.buttonsContainer.insert(this.loadingWheel);this.filterButton=Builder.node("div",{className:"m-filter-button",title:"Search This Column"});this.filterButton.observe("click",this.toggleInColumnSearch.bindAsEventListener(this));this.buttonsContainer.insert(this.filterButton);this.closeButton=Builder.node("div",{className:"m-close-button",title:"Close Column"});this.closeButton.observe("click",this.closeButtonClick.bindAsEventListener(this));this.closeButton.observe("mouseover",this.closeButtonMouseover.bindAsEventListener(this));this.closeButton.observe("mouseout",this.closeButtonMouseout.bindAsEventListener(this));this.buttonsContainer.insert(this.closeButton)},initializeView:function(){if(this.delegate.getMaxCount()<50){this.subView=new ShortListView(this.delegate)}else{this.subView=new ListView(this.delegate)}this.subViewSurface=this.subView.getSurface();this.outline.insert(this.subViewSurface)},lightWeightResize:function(b){this.spacer.setStyle({height:b+"px"});this.outline.setStyle({height:b+"px"});if(this.outline.offsetHeight>this.spacer.offsetHeight){var a=b-(this.outline.offsetHeight-this.spacer.offsetHeight);this.outline.setStyle({height:a+"px"})}},resize:function(){this.surface.setStyle({width:this.getWidth()+"px"});var b=this.getHeight();this.spacer.setStyle({height:b+"px"});this.outline.setStyle({height:b+"px"});if(this.outline.offsetHeight>this.spacer.offsetHeight){var a=b-(this.outline.offsetHeight-this.spacer.offsetHeight);this.outline.setStyle({height:a+"px"})}var c=this.outline.clientHeight-this.titlebar.getHeight();if(this.filterSurface.visible()){c-=this.filterSurface.getHeight()}if(this.icon.getWidth()==0){this.icon.hide()}else{this.icon.show()}var h=this.titlebar.getWidth()-(this.icon.getWidth()+this.buttonsContainer.getWidth())-10;this.title.setStyle({width:h+"px"});this.subViewSurface.setStyle({height:c+"px"});this.subViewSurface.show();this.subView.resize();var f=$$(".m-column");if(f[0]){var g=f[0].down(".m-spacer");var e=f[0].getWidth()-g.getWidth();var d=Math.floor(e/2);this.resizeHandle.setStyle({width:d+"px",right:d+"px"});this.resizeHandle.style.zIndex=10000}},removeFromDOM:function(a){if(a){var b={duration:0.3,afterFinish:function(c){this.surface.remove();document.fire("columnbrowser:resize")}.bind(this)};Effect.Fade(this.surface,b)}else{this.surface.remove();document.fire("columnbrowser:resize")}},setLoading:function(a){if(a){this.loadingWheel.show();this.subView.getSurface().setOpacity(0.5)}else{this.loadingWheel.hide();this.subView.getSurface().setOpacity(1)}},toggleInColumnSearch:function(){if(this.filterSurface.visible()){this.closeInColumnSearch()}else{this.openInColumnSearch()}},closeInColumnSearch:function(){this.filterSurface.hide();this.filterInput.value="";this.updateFilter();this.resize();this.subView.scrollToRow(this.topVisibleItemBeforeFiltering)},openInColumnSearch:function(){this.topVisibleItemBeforeFiltering=this.subView.indexOfTopRow();this.filterSurface.show();this.resize()},filterInputKeyboardListener:function(a){if(a.keyCode=="27"){clearTimeout(this.filterInputTimeout);a.stop();this.filterInput.value="";this.updateFilter();return}if(this.filterInputTimeout){clearTimeout(this.filterInputTimeout)}this.filterInputTimeout=setTimeout(this.updateFilter.bind(this),500)},updateFilter:function(){if(this.delegate&&this.delegate.updateFilter){this.delegate.updateFilter($F(this.filterInput))}},updateTitleBar:function(){this.title.update(this.getTitle());this.titlebar.title=this.delegate.getTitle()+" ("+this.delegate.getCount()+" items)"},closeButtonClick:function(a){this.closeColumn();a.stop()},closeButtonMouseover:function(a){},closeButtonMouseout:function(a){},getTitle:function(){if(this.delegate&&this.delegate.getTitle){return this.delegate.getTitle()}else{return"No Title"}},getID:function(){if(this.delegate&&this.delegate.getID){return this.delegate.getID()}else{return 0}},closeColumn:function(){if(this.delegate&&this.delegate.close){this.delegate.close()}},setWidth:function(a){this.width=a;this.resize()},setHeight:function(a){this.height=a;this.resize()},setDimensions:function(b,a){this.width=b;this.height=a;this.resize()},removeCustomWidth:function(){this.customWidth=0},prepareAsClosedColumn:function(){this.surface.setStyle({width:""});this.subView.getSurface().hide()},getWidth:function(){return this.width},getCustomWidth:function(){return this.customWidth},hasCustomWidth:function(){return typeof(this.customWidth)!="undefined"&&parseInt(this.customWidth)>0},hasFixedWidth:function(){return this.options.fixedWidth},getFixedWidth:function(){return(this.options.fixedWidth)?this.options.fixedWidth:false},getHeight:function(){return(this.height?this.height:this.surface.getHeight())},resizeHandleDblClickListener:function(a){this.removeCustomWidth();document.fire("columnbrowser:resize")}});var ColumnViewSPARQL=Class.create(ColumnView);ColumnViewSPARQL.addMethods({initialize:function($super,a){$super(a);this.loadingSurface=Builder.node("div",{className:"m-loading",style:"z-index: 20000; position: absolute; top: 0px; left 0px; width: 100%; height: 100%"});this.subViewSurface.insert(this.loadingSurface);this.resizeHandle.hide();this.surface.setAttribute("id","mfid_"+this.getID())},initializeView:function(){this.subView=new ListView(this.delegate);this.subViewSurface=this.subView.getSurface();this.outline.insert(this.subViewSurface)},setLoading:function(a){if(a){this.loadingSurface.show()}else{this.loadingSurface.hide()}}});var Facet=Class.create();var FACET_TYPE_CLASS=0;var FACET_TYPE_LITERAL=1;Facet.addMethods({initialize:function(a,b){this.delegate=b;this.data=[];this.selectedRows={};this.options={label:"",classURI:"",labelURI:"",firstOrder:false,type:FACET_TYPE_CLASS,predicateList:[],formatterCallback:false};Object.extend(this.options,a);if(this.options.firstOrder){this.delegate.setFirstOrderFacet(this)}this.view=new ColumnViewSPARQL({delegate:this})},removeSelections:function(){this.selectedRows=new Object()},getCount:function(){return this.data.length},getID:function(){return this.getTitleAsPrefix()},getConstraintSPARQL:function(){var f=this.getTitleAsPrefix();var e=this.getURIVariable();var b=this.getLabelVariable();var d=this.getLinkingSPARQL();d+=e+" <"+this.options.labelURI+"> "+b+" .\n";var g="";for(var a in this.selectedRows){if(this.selectedRows[a]){if(this.options.type==FACET_TYPE_CLASS){g+="<"+this.getURIForIndex(parseInt(a))+"> <"+this.options.labelURI+"> "+b+" .\n"}else{var c=this.getLabelDataTypeForIndex(parseInt(a));if(c){g+=e+" <"+this.options.labelURI+'> "'+this.getLabelForIndex(parseInt(a))+'"^^<'+this.getLabelDataTypeForIndex(parseInt(a))+"> .\n"}else{g+=e+" <"+this.options.labelURI+'> "'+this.getLabelForIndex(parseInt(a))+'" .\n'}}}}if(g!=""){return d+g}else{return""}},getSelectSPARQL:function(){var b=this.getURIVariable();var a=this.getLabelVariable();if(!this.options.firstOrderFacet&&this.options.type==FACET_TYPE_LITERAL){return"SELECT DISTINCT "+a+" WHERE {\n"}else{return"SELECT DISTINCT "+b+" "+a+" WHERE {\n"}},getSPARQLForExternal:function(){var c=this.getURIVariable();var a=this.getLabelVariable();var b="";b+=this.getFirstOrderFacetSPARQL();b+=this.getLinkingSPARQL();b+=this.delegate.getConstraintSPARQL(this);b+=this.getConstraintSPARQL();b+=c+" <"+this.options.labelURI+"> "+a+" .\n";return{vars:{uri:c,label:a},sparql:b}},buildUpdateQuery:function(){var c=this.getSPARQLPrefixes();var b=this.getURIVariable();var a=this.getLabelVariable();c+=this.getSelectSPARQL();c+=this.getFirstOrderFacetSPARQL();c+=this.getLinkingSPARQL();c+=this.delegate.getConstraintSPARQL(this);c+=b+" <"+this.options.labelURI+"> "+a+" .\n";c+="} ORDER BY "+a+" LIMIT 1000";return c},update:function(){this.removeSelections();this.view.setLoading(true);var a=this.buildUpdateQuery();this.performQuery(a)},initialLoad:function(){this.view.setLoading(true);var c=this.getURIVariable();var a=this.getLabelVariable();var b=this.getSPARQLPrefixes();b+=this.getSelectSPARQL();b+=this.getFirstOrderFacetSPARQL();b+=this.getLinkingSPARQL();b+=c+" <"+this.options.labelURI+"> "+a+" .\n";b+="} ORDER BY "+a+" LIMIT 1000";this.performQuery(b)},getFirstOrderFacetSPARQL:function(){var c=this.delegate.getFirstOrderFacet();var b=c.getTitleAsPrefix();var a="?"+b+"_uri a <"+this.delegate.getFirstOrderFacetClassURI()+"> .\n";return a},getLinkingSPARQL:function(){var j="";var e=this.getURIVariable();var c=this.getLabelVariable();var a=this.delegate.getFirstOrderFacet().getURIVariable();for(var f=0;f<this.options.predicateList.length;f++){var g=(f==0)?a:e+"_o"+(f-1);var d=(f==this.options.predicateList.length-1)?e:e+"_o"+f;var h=this.options.predicateList[f];if(Object.isString(h)){var b=h;h={uri:b,reverse:false}}if(h.reverse){j+=d+" <"+h.uri+"> "+g+" .\n"}else{j+=g+" <"+h.uri+"> "+d+" .\n"}}if(!this.options.firstOrderFacet&&this.options.classURI){j+=e+" a <"+this.options.classURI+"> .\n"}return j},performQuery:function(c){var a=this.delegate.getURLForEndPoint();a+="&query="+escape(c);var b=this.delegate.getFacetIndex(this);this.delegate.performRequest(c,"window.facets['"+this.getTitle()+"'].processJSON",this.getTitleAsPrefix())},processJSON:function(a){this.data=a.results.bindings;this.view.subView.resize();this.view.setLoading(false);this.garbageCollect()},garbageCollect:function(){$$("script[gc='"+this.getTitleAsPrefix()+"']").each(function(a){a.remove()})},getTitle:function(){return this.options.label},getTitleAsPrefix:function(){return this.options.label.toLowerCase().replace(/[\s]+/,"_")},getLabelVariable:function(){return"?"+this.getTitleAsPrefix()+"_label"},getURIVariable:function(){if(!this.options.firstOrderFacet&&this.options.type==FACET_TYPE_LITERAL&&this.options.predicateList.length==0){return"?"+this.delegate.getFirstOrderFacet().getTitleAsPrefix()+"_uri"}else{return"?"+this.getTitleAsPrefix()+"_uri"}},getTitleForRow:function(b){if(b>=this.data.length){return""}var a=this.data[b][this.getTitleAsPrefix()+"_label"].value;if(this.options.formatterCallback&&Object.isFunction(this.options.formatterCallback)){return this.options.formatterCallback(a)}else{return a}},isRowSelected:function(a){return this.selectedRows[a]},getSPARQLPrefixes:function(){var a="PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n";a+="PREFIX void: <http://rdfs.org/ns/void#>\n";a+="PREFIX dc: <http://purl.org/dc/elements/1.1/>\n";a+="PREFIX dcterms: <http://purl.org/dc/terms/>\n";return a},isFiltered:function(){return false},singleClick:function(a,b){if(this.selectedRows[a]){this.removeSelections()}else{this.removeSelections();this.selectedRows[a]=true}console.log("user selected: "+this.getLabelForIndex(a)+" (in "+this.getTitle()+")");this.view.subView.resize();this.delegate.updateFacets(this);document.fire("mspace:singleclick")},getLabelForIndex:function(a){return this.data[a][this.getTitleAsPrefix()+"_label"].value},getLabelDataTypeForIndex:function(a){if(this.data[a][this.getTitleAsPrefix()+"_label"].datatype){return this.data[a][this.getTitleAsPrefix()+"_label"].datatype}else{return false}},getURIForIndex:function(a){return this.data[a][this.getTitleAsPrefix()+"_uri"].value},close:function(){this.delegate.closeFacet(this)},resetWidth:function(){this.view.surface.setStyle({width:"auto"})}});var ColumnBrowser=Class.create();ColumnBrowser.addMethods({initialize:function(b,a,c){this.delegate=c;this.openFacets=new Array();this.closedFacets=new Array();this.facets=new Object();this.facetsByID=new Object();window.facets=this.facets;if(b.facets){b.facets.each(function(e){var d=new Facet(e,this);this.facets[d.getTitle()]=d;this.facetsByID[d.getID()]=d;this.closedFacets.push(d)}.bind(this))}if(b.defaultSlice){b.defaultSlice.each(function(d){var e=this.facets[d];this.openFacet(e)}.bind(this))}this.view=new ColumnBrowserView(a,this);this.openFacets.each(function(d){d.initialLoad()}.bind(this))},openFacet:function(d,a){if(d){if(Object.isUndefined(a)){this.openFacets.push(d)}else{this.openFacets.splice(a,0,d)}var b=-1;for(var c=0;c<this.closedFacets.length;c++){if(this.closedFacets[c].getTitle()==d.getTitle()){b=c}}if(b>=0){this.closedFacets.splice(b,1)}}else{console.log("'"+facetLabel+"' is not a defined facet")}},closeFacet:function(c){if(c){this.closedFacets.push(c);var a=-1;for(var b=0;b<this.openFacets.length;b++){if(this.openFacets[b].getTitle()==c.getTitle()){a=b}}if(a>=0){this.openFacets.splice(a,1)}c.resetWidth()}else{console.log("'"+facetLabel+"' is not a defined facet")}this.view.update();this.view.updateSortables();this.view.resize()},getOpenColumnsArray:function(){return this.openFacets},getClosedColumnsArray:function(){return this.closedFacets},getFacetIndex:function(b){for(var a=0;a<this.openFacets.length;a++){if(this.openFacets[a].getTitle()==b.getTitle()){return a}}return -1},setFirstOrderFacet:function(a){this.firstOrderFacet=a;this.firstOrderFacetClassURI=a.options.classURI},getFirstOrderFacetClassURI:function(){return this.firstOrderFacetClassURI},getURLForEndPoint:function(){return this.delegate.getURLForEndPoint()},getColumnWithID:function(a){return this.facetsByID[a]},performRequest:function(a,c,b){this.delegate.performRequest(a,c,b)},updateFacets:function(c){var a=this.getFacetIndex(c);for(var b=a+1;b<this.openFacets.length;b++){this.openFacets[b].update()}},facetDragged:function(b){var a=b.id.substr(5);this.lastFacetDragged=this.facetsByID[a]},updateOpenFacetsOrder:function(d){var g=this.lastFacetDragged;var b=false;this.closedFacets.each(function(h){if(h.getTitle()==g.getTitle()){b=true}});if(b){var c=0;var e=0;this.view.openColumnContainer.childElements().each(function(h){if(h==g.view.getSurface()){c=e}e++});this.openFacet(g,c);g.initialLoad();this.view.update();this.view.updateSortables();this.view.resize();return}var f=this.getFacetIndex(this.lastFacetDragged);this.openFacets=this.view.getCurrentColumns();var a=this.getFacetIndex(this.lastFacetDragged);if(a==0){this.openFacets.each(function(h){h.removeSelections();h.update()})}else{if(a>f){var c=f-1;if(c<0){c=0}this.updateFacets(this.openFacets[c])}else{this.updateFacets(this.openFacets[a-1])}}},getFirstOrderFacet:function(a){return this.firstOrderFacet},getConstraintSPARQL:function(e){var a=this.getFacetIndex(e);var d="";for(var c=0;c<a;c++){var b=this.openFacets[c];d+=b.getConstraintSPARQL()}return d}});var mSpaceSPARQL=Class.create();mSpaceSPARQL.addMethods({initialize:function(b,a){if(!window.console){window.console=new Object();window.console.log=function(){}}this.options={surface:"ColumnContainer",rowHeight:20,proxy:"http://proxy.mspace.fm/sparql-jsonp/",endpoint:"",useProxy:true};Object.extend(this.options,a);window.mSpaceOptions=this.options;this.validateProxy();this.columnBrowser=new ColumnBrowser(b,a,this)},validateProxy:function(){if(!this.options.useProxy){return}if(this.options.proxy.indexOf("http://")!==0){this.options.proxy=window.location.protocol+"//"+window.location.host+"/"+this.options.proxy}},getURLForEndPoint:function(){if(this.options.useProxy){return this.options.proxy+"?endpoint="+escape(this.options.endpoint)}else{return this.options.endpoint+"?format=json"}},getFirstOrderFacet:function(){return this.columnBrowser.getFirstOrderFacet()},performRequest:function(d,f,e){console.log(d);var a=this.getURLForEndPoint();a+="&query="+escape(d);var c=document.createElement("script");c.setAttribute("type","text/javascript");c.setAttribute("gc",e);c.setAttribute("src",a+"&jsonp="+escape(f));var b=document.getElementsByTagName("head")[0];b.appendChild(c)},getSPARQLForExternal:function(){return this.getFirstOrderFacet().getSPARQLForExternal()}});