/*
 MIT
 @url http://livepipe.net/control/window
 @require prototype.js, effects.js, draggable.js, resizable.js, livepipe.js
*/
if(typeof Draggable!="undefined")Draggable.prototype.draw=function(a){var c=Position.cumulativeOffset(this.element);if(this.options.ghosting){var b=Position.realOffset(this.element);c[0]+=b[0]-Position.deltaX;c[1]+=b[1]-Position.deltaY}b=this.currentDelta();c[0]-=b[0];c[1]-=b[1];this.options.scroll&&this.options.scroll!=window&&this._isScrollChild&&(c[0]-=this.options.scroll.scrollLeft-this.originalScrollLeft,c[1]-=this.options.scroll.scrollTop-this.originalScrollTop);b=[0,1].map(function(b){return a[b]-
c[b]-this.offset[b]}.bind(this));this.options.snap&&(b=typeof this.options.snap=="function"?this.options.snap(b[0],b[1],this):this.options.snap instanceof Array?b.map(function(b,a){return Math.round(b/this.options.snap[a])*this.options.snap[a]}.bind(this)):b.map(function(b){return Math.round(b/this.options.snap)*this.options.snap}.bind(this)));if(this.options.onDraw)this.options.onDraw.bind(this)(b);else{var d=this.element.style;if(this.options.constrainToViewport){var e=document.viewport.getDimensions(),
f=this.element.getDimensions(),g=parseInt(this.element.getStyle("margin-top")),h=parseInt(this.element.getStyle("margin-left")),e=[[0-h,0-g],[e.width-f.width-h,e.height-f.height-g]];if(!this.options.constraint||this.options.constraint=="horizontal")this.element.style.left=b[0]>=e[0][0]&&b[0]<=e[1][0]?b[0]+"px":(b[0]<e[0][0]?e[0][0]:e[1][0])+"px";if(!this.options.constraint||this.options.constraint=="vertical")this.element.style.top=b[1]>=e[0][1]&&b[1]<=e[1][1]?b[1]+"px":(b[1]<=e[0][1]?e[0][1]:e[1][1])+
"px"}else{if(!this.options.constraint||this.options.constraint=="horizontal")d.left=b[0]+"px";if(!this.options.constraint||this.options.constraint=="vertical")d.top=b[1]+"px"}if(d.visibility=="hidden")d.visibility=""}};if(typeof Prototype=="undefined")throw"Control.Window requires Prototype to be loaded.";if(typeof IframeShim=="undefined")throw"Control.Window requires IframeShim to be loaded.";if(typeof Object.Event=="undefined")throw"Control.Window requires Object.Event to be loaded.";
Control.Window=Class.create({initialize:function(a,c){Control.Window.windows.push(this);this.remoteContentLoaded=this.ajaxRequest=this.sourceContainer=this.href=this.isOpen=this.container=!1;this.numberInSequence=Control.Window.windows.length+1;this.indicator=!1;this.effects={fade:!1,appear:!1};this.indicatorEffects={fade:!1,appear:!1};this.options=Object.extend({beforeOpen:Prototype.emptyFunction,afterOpen:Prototype.emptyFunction,beforeClose:Prototype.emptyFunction,afterClose:Prototype.emptyFunction,
height:null,width:null,className:!1,position:"center",offsetLeft:0,offsetTop:0,iframe:!1,hover:!1,indicator:!1,closeOnClick:!1,iframeshim:!0,fade:!1,fadeDuration:0.75,draggable:!1,onDrag:Prototype.emptyFunction,resizable:!1,minHeight:!1,minWidth:!1,maxHeight:!1,maxWidth:!1,onResize:Prototype.emptyFunction,constrainToViewport:!1,method:"post",parameters:{},onComplete:Prototype.emptyFunction,onSuccess:Prototype.emptyFunction,onFailure:Prototype.emptyFunction,onException:Prototype.emptyFunction,onRemoteContentLoaded:Prototype.emptyFunction,
insertRemoteContentAt:!1},c||{});this.indicator=this.options.indicator?$(this.options.indicator):!1;if(a)if(typeof a=="string"&&a.match(Control.Window.uriRegex))this.href=a;else if(this.container=$(a),this.createDefaultContainer(a),this.container&&(this.container.readAttribute("href")&&this.container.readAttribute("href")!=""||this.options.hover&&this.options.hover!==!0)){if(this.options.hover&&this.options.hover!==!0)this.sourceContainer=$(this.options.hover);else{this.sourceContainer=this.container;
this.href=this.container.readAttribute("href");var b=this.href.match(/^#(.+)$/);b&&b[1]?(this.container=$(b[1]),this.href=!1):this.container=!1}this.sourceContainerOpenHandler=function(b){this.open(b);b.stop();return!1}.bindAsEventListener(this);this.sourceContainerCloseHandler=function(b){this.close(b)}.bindAsEventListener(this);this.sourceContainerMouseMoveHandler=function(b){this.position(b)}.bindAsEventListener(this);this.options.hover?(this.sourceContainer.observe("mouseenter",this.sourceContainerOpenHandler),
this.sourceContainer.observe("mouseleave",this.sourceContainerCloseHandler),this.options.position=="mouse"&&this.sourceContainer.observe("mousemove",this.sourceContainerMouseMoveHandler)):this.sourceContainer.observe("click",this.sourceContainerOpenHandler)}this.createDefaultContainer(a);if(this.options.insertRemoteContentAt===!1)this.options.insertRemoteContentAt=this.container;b={margin:0,position:"absolute",zIndex:Control.Window.initialZIndexForWindow()};if(this.options.width)b.width=$value(this.options.width)+
"px";if(this.options.height)b.height=$value(this.options.height)+"px";this.container.setStyle(b);this.options.className&&this.container.addClassName(this.options.className);this.positionHandler=this.position.bindAsEventListener(this);this.outOfBoundsPositionHandler=this.ensureInBounds.bindAsEventListener(this);this.bringToFrontHandler=this.bringToFront.bindAsEventListener(this);this.container.observe("mousedown",this.bringToFrontHandler);this.container.hide();this.closeHandler=this.close.bindAsEventListener(this);
if(this.options.iframeshim)this.iFrameShim=new IframeShim,this.iFrameShim.hide();this.applyResizable();this.applyDraggable();Event.observe(window,"resize",this.outOfBoundsPositionHandler);this.notify("afterInitialize")},open:function(a){if(this.isOpen)return this.bringToFront(),!1;if(this.notify("beforeOpen")===!1)return!1;if(this.options.closeOnClick)this.options.closeOnClick===!0?this.closeOnClickContainer=$(document.body):this.options.closeOnClick=="container"?this.closeOnClickContainer=this.container:
this.options.closeOnClick=="overlay"?(Control.Overlay.load(),this.closeOnClickContainer=Control.Overlay.container):this.closeOnClickContainer=$(this.options.closeOnClick),this.closeOnClickContainer.observe("click",this.closeHandler);if(this.href&&!this.options.iframe&&!this.remoteContentLoaded){this.remoteContentLoaded=!0;if(this.href.match(/\.(jpe?g|gif|png|tiff?)$/i))a=new Element("img"),a.observe("load",function(b){this.getRemoteContentInsertionTarget().insert(b);this.position();this.notify("onRemoteContentLoaded")!==
!1&&(this.options.indicator&&this.hideIndicator(),this.finishOpen())}.bind(this,a)),a.writeAttribute("src",this.href);else if(!this.ajaxRequest)this.options.indicator&&this.showIndicator(),this.ajaxRequest=new Ajax.Request(this.href,{method:this.options.method,parameters:this.options.parameters,onComplete:function(b){this.notify("onComplete",b);this.ajaxRequest=!1}.bind(this),onSuccess:function(b){this.getRemoteContentInsertionTarget().insert(b.responseText);this.notify("onSuccess",b);this.notify("onRemoteContentLoaded")!==
!1&&(this.options.indicator&&this.hideIndicator(),this.finishOpen())}.bind(this),onFailure:function(b){this.notify("onFailure",b);this.options.indicator&&this.hideIndicator()}.bind(this),onException:function(b,a){this.notify("onException",b,a);this.options.indicator&&this.hideIndicator()}.bind(this)});return!0}else if(this.options.iframe&&!this.remoteContentLoaded){this.remoteContentLoaded=!0;this.options.indicator&&this.showIndicator();this.getRemoteContentInsertionTarget().insert(Control.Window.iframeTemplate.evaluate({href:this.href}));
var c=this.container.down("iframe");c.onload=function(){this.notify("onRemoteContentLoaded");this.options.indicator&&this.hideIndicator();c.onload=null}.bind(this)}this.finishOpen(a);return!0},close:function(a){if(!this.isOpen||this.notify("beforeClose",a)===!1)return!1;this.options.closeOnClick&&this.closeOnClickContainer.stopObserving("click",this.closeHandler);this.options.fade?this.effects.fade=new Effect.Fade(this.container,{queue:{position:"front",scope:"Control.Window"+this.numberInSequence},
from:1,to:0,duration:this.options.fadeDuration/2,afterFinish:function(){this.iFrameShim&&this.iFrameShim.hide();this.isOpen=!1;this.notify("afterClose")}.bind(this)}):(this.container.hide(),this.iFrameShim&&this.iFrameShim.hide());this.ajaxRequest&&this.ajaxRequest.transport.abort();!this.options.draggable&&!this.options.resizable&&this.options.position=="center"&&Event.stopObserving(window,"resize",this.positionHandler);!this.options.draggable&&this.options.position=="center"&&Event.stopObserving(window,
"scroll",this.positionHandler);this.options.indicator&&this.hideIndicator();if(!this.options.fade)this.isOpen=!1,this.notify("afterClose");return!0},position:function(a){if(this.options.position=="mouse"){var c=[Event.pointerX(a),Event.pointerY(a)];this.container.setStyle({top:c[1]+$value(this.options.offsetTop)+"px",left:c[0]+$value(this.options.offsetLeft)+"px"})}else{var a=this.container.getDimensions(),b=document.viewport.getDimensions();Position.prepare();var d=Position.deltaX+Math.floor((b.width-
a.width)/2),c=Position.deltaY+(b.height>a.height?Math.floor((b.height-a.height)/2):0);this.options.position=="center"?this.container.setStyle({top:a.height<=b.height?(c!=null&&c>0?c:0)+"px":0,left:a.width<=b.width?(d!=null&&d>0?d:0)+"px":0}):this.options.position=="relative"?(c=this.sourceContainer.cumulativeOffset(),d=c[1]+$value(this.options.offsetTop),c=c[0]+$value(this.options.offsetLeft),this.container.setStyle({top:a.height<=b.height?(this.options.constrainToViewport?Math.max(0,Math.min(b.height-
a.height,d)):d)+"px":0,left:a.width<=b.width?(this.options.constrainToViewport?Math.max(0,Math.min(b.width-a.width,c)):c)+"px":0})):this.options.position.length&&(d=$value(this.options.position[1])+$value(this.options.offsetTop),c=$value(this.options.position[0])+$value(this.options.offsetLeft),this.container.setStyle({top:a.height<=b.height?(this.options.constrainToViewport?Math.max(0,Math.min(b.height-a.height,d)):d)+"px":0,left:a.width<=b.width?(this.options.constrainToViewport?Math.max(0,Math.min(b.width-
a.width,c)):c)+"px":0}));this.iFrameShim&&this.updateIFrameShimZIndex()}},ensureInBounds:function(){if(this.isOpen){var a=document.viewport.getDimensions(),c=this.container.cumulativeOffset(),b=this.container.getDimensions();c.left+b.width>a.width&&this.container.setStyle({left:Math.max(0,a.width-b.width)+"px"});c.top+b.height>a.height&&this.container.setStyle({top:Math.max(0,a.height-b.height)+"px"})}},bringToFront:function(){Control.Window.bringToFront(this);this.notify("bringToFront")},destroy:function(){this.container.stopObserving("mousedown",
this.bringToFrontHandler);this.draggable&&(Resizables.removeObserver(this.container),this.draggable.handle.stopObserving("mousedown",this.bringToFrontHandler),this.draggable.destroy());this.resizable&&(Resizables.removeObserver(this.container),this.resizable.handle.stopObserving("mousedown",this.bringToFrontHandler),this.resizable.destroy());this.container&&!this.sourceContainer&&this.container.remove();this.sourceContainer&&(this.options.hover?(this.sourceContainer.stopObserving("mouseenter",this.sourceContainerOpenHandler),
this.sourceContainer.stopObserving("mouseleave",this.sourceContainerCloseHandler),this.options.position=="mouse"&&this.sourceContainer.stopObserving("mousemove",this.sourceContainerMouseMoveHandler)):this.sourceContainer.stopObserving("click",this.sourceContainerOpenHandler));this.iFrameShim&&this.iFrameShim.destroy();Event.stopObserving(window,"resize",this.outOfBoundsPositionHandler);Control.Window.windows=Control.Window.windows.without(this);this.notify("afterDestroy")},applyResizable:function(){if(this.options.resizable){if(typeof Resizable==
"undefined")throw"Control.Window requires resizable.js to be loaded.";var a=null;this.options.resizable===!0?(a=new Element("div",{className:"resizable_handle"}),this.container.insert(a)):a=$(this.options.resziable);this.resizable=new Resizable(this.container,{handle:a,minHeight:this.options.minHeight,minWidth:this.options.minWidth,maxHeight:this.options.constrainToViewport?function(a){return document.viewport.getDimensions().height-parseInt(a.style.top||0)-(a.getHeight()-parseInt(a.style.height||
0))}:this.options.maxHeight,maxWidth:this.options.constrainToViewport?function(a){return document.viewport.getDimensions().width-parseInt(a.style.left||0)-(a.getWidth()-parseInt(a.style.width||0))}:this.options.maxWidth});this.resizable.handle.observe("mousedown",this.bringToFrontHandler);Resizables.addObserver(new Control.Window.LayoutUpdateObserver(this,function(){this.iFrameShim&&this.updateIFrameShimZIndex();this.notify("onResize")}.bind(this)))}},applyDraggable:function(){if(this.options.draggable){if(typeof Draggables==
"undefined")throw"Control.Window requires dragdrop.js to be loaded.";var a=null;this.options.draggable===!0?(a=new Element("div",{className:"draggable_handle"}),this.container.insert(a)):a=$(this.options.draggable);this.draggable=new Draggable(this.container,{handle:a,constrainToViewport:this.options.constrainToViewport,zindex:this.container.getStyle("z-index"),starteffect:function(){if(Prototype.Browser.IE)this.old_onselectstart=document.onselectstart,document.onselectstart=function(){return!1}}.bind(this),
endeffect:function(){document.onselectstart=this.old_onselectstart}.bind(this)});this.draggable.handle.observe("mousedown",this.bringToFrontHandler);Draggables.addObserver(new Control.Window.LayoutUpdateObserver(this,function(){this.iFrameShim&&this.updateIFrameShimZIndex();this.notify("onDrag")}.bind(this)))}},createDefaultContainer:function(a){if(!this.container)this.container=new Element("div",{id:"control_window_"+this.numberInSequence}),$(document.body).insert(this.container),typeof a=="string"&&
$(a)==null&&!a.match(/^#(.+)$/)&&!a.match(Control.Window.uriRegex)&&this.container.update(a)},finishOpen:function(a){this.bringToFront();if(this.options.fade){if(typeof Effect=="undefined")throw"Control.Window requires effects.js to be loaded.";this.effects.fade&&this.effects.fade.cancel();this.effects.appear=new Effect.Appear(this.container,{queue:{position:"end",scope:"Control.Window."+this.numberInSequence},from:0,to:1,duration:this.options.fadeDuration/2,afterFinish:function(){this.iFrameShim&&
this.updateIFrameShimZIndex();this.isOpen=!0;this.notify("afterOpen")}.bind(this)})}else this.container.show();this.position(a);!this.options.draggable&&!this.options.resizable&&this.options.position=="center"&&Event.observe(window,"resize",this.positionHandler,!1);!this.options.draggable&&this.options.position=="center"&&Event.observe(window,"scroll",this.positionHandler,!1);if(!this.options.fade)this.isOpen=!0,this.notify("afterOpen");return!0},showIndicator:function(){this.showIndicatorTimeout=
window.setTimeout(function(){this.options.fade?this.indicatorEffects.appear=new Effect.Appear(this.indicator,{queue:{position:"front",scope:"Control.Window.indicator."+this.numberInSequence},from:0,to:1,duration:this.options.fadeDuration/2}):this.indicator.show()}.bind(this),Control.Window.indicatorTimeout)},hideIndicator:function(){this.showIndicatorTimeout&&window.clearTimeout(this.showIndicatorTimeout);this.indicator.hide()},getRemoteContentInsertionTarget:function(){return typeof this.options.insertRemoteContentAt==
"string"?this.container.down(this.options.insertRemoteContentAt):$(this.options.insertRemoteContentAt)},updateIFrameShimZIndex:function(){this.iFrameShim&&this.iFrameShim.positionUnder(this.container)}});
Object.extend(Control.Window,{windows:[],baseZIndex:9999,indicatorTimeout:250,iframeTemplate:new Template('<iframe src="#{href}" width="100%" height="100%" frameborder="0"></iframe>'),uriRegex:/^(\/|\#|https?\:\/\/|[\w]+\/)/,bringToFront:function(a){Control.Window.windows=Control.Window.windows.without(a);Control.Window.windows.push(a);Control.Window.windows.each(function(a,b){var d=Control.Window.baseZIndex+b;a.container.setStyle({zIndex:d});a.isOpen&&a.iFrameShim&&a.updateIFrameShimZIndex();if(a.options.draggable)a.draggable.options.zindex=
d})},open:function(a,c){var b=new Control.Window(a,c);b.open();return b},initialZIndexForWindow:function(){return Control.Window.baseZIndex+(Control.Window.windows.length-1)}});Object.Event.extend(Control.Window);
Control.Window.LayoutUpdateObserver=Class.create({initialize:function(a,c){this.w=a;this.element=$(a.container);this.observer=c},onStart:Prototype.emptyFunction,onEnd:function(a,c){c.element==this.element&&this.iFrameShim&&this.w.updateIFrameShimZIndex()},onResize:function(a,c){c.element==this.element&&this.observer(this.element)},onDrag:function(a,c){c.element==this.element&&this.observer(this.element)}});
Control.Overlay={id:"control_overlay",loaded:!1,container:!1,lastOpacity:0,styles:{position:"fixed",top:0,left:0,width:"100%",height:"100%",zIndex:9998},ieStyles:{position:"absolute",top:0,left:0,zIndex:9998},effects:{fade:!1,appear:!1},load:function(){if(Control.Overlay.loaded)return!1;Control.Overlay.loaded=!0;Control.Overlay.container=new Element("div",{id:Control.Overlay.id});$(document.body).insert(Control.Overlay.container);Prototype.Browser.IE?(Control.Overlay.container.setStyle(Control.Overlay.ieStyles),
Event.observe(window,"scroll",Control.Overlay.positionOverlay),Event.observe(window,"resize",Control.Overlay.positionOverlay),Control.Overlay.observe("beforeShow",Control.Overlay.positionOverlay)):Control.Overlay.container.setStyle(Control.Overlay.styles);Control.Overlay.iFrameShim=new IframeShim;Control.Overlay.iFrameShim.hide();Event.observe(window,"resize",Control.Overlay.positionIFrameShim);Control.Overlay.container.hide();return!0},unload:function(){if(!Control.Overlay.loaded)return!1;Event.stopObserving(window,
"resize",Control.Overlay.positionOverlay);Control.Overlay.stopObserving("beforeShow",Control.Overlay.positionOverlay);Event.stopObserving(window,"resize",Control.Overlay.positionIFrameShim);Control.Overlay.iFrameShim.destroy();Control.Overlay.container.remove();Control.Overlay.loaded=!1;return!0},show:function(a,c){if(Control.Overlay.notify("beforeShow")===!1)return!1;Control.Overlay.lastOpacity=a;Control.Overlay.positionIFrameShim();Control.Overlay.iFrameShim.show();if(c){if(typeof Effect=="undefined")throw"Control.Window requires effects.js to be loaded.";
Control.Overlay.effects.fade&&Control.Overlay.effects.fade.cancel();Control.Overlay.effects.appear=new Effect.Appear(Control.Overlay.container,{queue:{position:"end",scope:"Control.Overlay"},afterFinish:function(){Control.Overlay.notify("afterShow")},from:0,to:Control.Overlay.lastOpacity,duration:(c===!0?0.75:c)/2})}else Control.Overlay.container.setStyle({opacity:a||1}),Control.Overlay.container.show(),Control.Overlay.notify("afterShow");return!0},hide:function(a){if(Control.Overlay.notify("beforeHide")===
!1)return!1;Control.Overlay.effects.appear&&Control.Overlay.effects.appear.cancel();Control.Overlay.iFrameShim.hide();a?Control.Overlay.effects.fade=new Effect.Fade(Control.Overlay.container,{queue:{position:"front",scope:"Control.Overlay"},afterFinish:function(){Control.Overlay.notify("afterHide")},from:Control.Overlay.lastOpacity,to:0,duration:(a===!0?0.75:a)/2}):(Control.Overlay.container.hide(),Control.Overlay.notify("afterHide"));return!0},positionIFrameShim:function(){Control.Overlay.container.visible()&&
Control.Overlay.iFrameShim.positionUnder(Control.Overlay.container)},positionOverlay:function(){Control.Overlay.container.setStyle({width:document.body.clientWidth+"px",height:document.body.clientHeight+"px"})}};Object.Event.extend(Control.Overlay);Control.ToolTip=Class.create(Control.Window,{initialize:function($super,c,b,d){$super(b,Object.extend(Object.extend(Object.clone(Control.ToolTip.defaultOptions),d||{}),{position:"mouse",hover:c}))}});Object.extend(Control.ToolTip,{defaultOptions:{offsetLeft:10}});
Control.Modal=Class.create(Control.Window,{initialize:function($super,c,b){Control.Modal.InstanceMethods.beforeInitialize.bind(this)();$super(c,Object.extend(Object.clone(Control.Modal.defaultOptions),b||{}))}});
Object.extend(Control.Modal,{defaultOptions:{overlayOpacity:0.5,closeOnClick:"overlay"},current:!1,open:function(a,c){var b=new Control.Modal(a,c);b.open();return b},close:function(){Control.Modal.current&&Control.Modal.current.close()},InstanceMethods:{beforeInitialize:function(){Control.Overlay.load();this.overlayFinishedOpening=!1;this.observe("beforeOpen",Control.Modal.Observers.beforeOpen.bind(this));this.observe("afterOpen",Control.Modal.Observers.afterOpen.bind(this));this.observe("afterClose",
Control.Modal.Observers.afterClose.bind(this))}},Observers:{beforeOpen:function(){if(this.overlayFinishedOpening)Control.Window.windows.without(this).invoke("close");else throw Control.Overlay.observeOnce("afterShow",function(){this.overlayFinishedOpening=!0;this.open()}.bind(this)),Control.Overlay.show(this.options.overlayOpacity,this.options.fade?this.options.fadeDuration:!1),$break;},afterOpen:function(){Control.Modal.current=this},afterClose:function(){Control.Overlay.hide(this.options.fade?this.options.fadeDuration:
!1);this.overlayFinishedOpening=Control.Modal.current=!1}}});
Control.LightBox=Class.create(Control.Window,{initialize:function($super,c,b){this.allImagesLoaded=!1;b.modal?(b=Object.extend(Object.clone(Control.LightBox.defaultOptions),b||{}),b=Object.extend(Object.clone(Control.Modal.defaultOptions),b),b=Control.Modal.InstanceMethods.beforeInitialize.bind(this)(b),$super(c,b)):$super(c,Object.extend(Object.clone(Control.LightBox.defaultOptions),b||{}));(this.hasRemoteContent=this.href&&!this.options.iframe)?this.observe("onRemoteContentLoaded",Control.LightBox.Observers.onRemoteContentLoaded.bind(this)):
this.applyImageObservers();this.observe("beforeOpen",Control.LightBox.Observers.beforeOpen.bind(this))},applyImageObservers:function(){var a=this.getImages();this.numberImagesToLoad=a.length;this.numberofImagesLoaded=0;a.each(function(a){a.observe("load",function(){++this.numberofImagesLoaded;if(this.numberImagesToLoad==this.numberofImagesLoaded)this.allImagesLoaded=!0,this.onAllImagesLoaded()}.bind(this,a));a.hide()}.bind(this))},onAllImagesLoaded:function(){this.getImages().each(function(a){this.showImage(a)}.bind(this));
this.hasRemoteContent?(this.options.indicator&&this.hideIndicator(),this.finishOpen()):this.open()},getImages:function(){return this.container.select(Control.LightBox.imageSelector)},showImage:function(a){a.show()}});Object.extend(Control.LightBox,{imageSelector:"img",defaultOptions:{},Observers:{beforeOpen:function(){if(!this.hasRemoteContent&&!this.allImagesLoaded)throw $break;},onRemoteContentLoaded:function(){this.applyImageObservers();if(!this.allImagesLoaded)throw $break;}}});

