(function(){var addedMap={};var rmvedMap={};site9.DomMgr={toString:function(){return"<site9.DomMgr>";},domAdded:function(rootEl){var j=jQuery(rootEl);for(var SEL in addedMap){var list=addedMap[SEL];var els=j.find(SEL);if(j.is(SEL)){els=j.add(els);}for(var i=0;i<els.length;i++){site9._notifyListeners(els[i],list);}}},domRmved:function(rootEl){var j=jQuery(rootEl);for(var SEL in rmvedMap){var list=rmvedMap[SEL];var els=j.find(SEL);if(j.is(SEL)){els=j.add(els);}for(var i=0;i<els.length;i++){site9._notifyListeners(els[i],list);}}},addDomAddedListener:function(SEL,handler,scope){if(!(SEL)){throw"IllegalArgumentException: A selector is required, use '*' to select all elements.";}var list=addedMap[SEL];if(!(list)){list=addedMap[SEL]=[];}site9._addListener(handler,scope,list,this);},removeDomAddedListener:function(SEL,handler,scope){if(!(SEL)){throw"IllegalArgumentException: A selector is required, use '*' to select all elements.";}var list=addedMap[SEL];if(!(list)){console.warn("... cannot remove dom-added listener: ",scope,".",handler," for selector: ",SEL,": no listeners exist");return ;}site9._removeListener(handler,scope,list,this);if(list.length===0){delete addedMap[SEL];}},addDomRmvedListener:function(SEL,handler,scope){if(!(SEL)){throw"IllegalArgumentException: A selector is required, use '*' to select all elements.";}var list=rmvedMap[SEL];if(!(list)){list=rmvedMap[SEL]=[];}site9._addListener(handler,scope,list,this);},removeDomRmvedListener:function(SEL,handler,scope){if(!(SEL)){throw"IllegalArgumentException: A selector is required, use '*' to select all elements.";}var list=rmvedMap[SEL];if(!(list)){console.warn("... cannot remove dom-removed listener: ",scope,".",handler," for selector: ",SEL,": no listeners exist");return ;}site9._removeListener(handler,scope,list,this);if(list.length===0){delete rmvedMap[SEL];}}};jQuery(window).unload(function(){for(var SEL in addedMap){var list=addedMap[SEL];site9._clearListeners(list);}for(var SEL in rmvedMap){var list=rmvedMap[SEL];site9._clearListeners(list);}});})();(function(){var map={};var listeners=[];var visListeners=[];var storageEnabled=false;var active=true;var compiled={getValue:{},setValue:{},pushValue:{},popValue:{},flippers:{}};var PAIR_SEP=",";var BITS_SEP=":";function loadState(){var oldStorageEnabled=storageEnabled;if(oldStorageEnabled){storageEnabled=false;}var serialized=site9.StateManager.getState("ps");var data={};for(var state in map){data[state]=0;}if(serialized){var pairs=serialized.split(PAIR_SEP);for(var i=0,n=pairs.length;i!==n;i++){var bits=pairs[i].split(BITS_SEP);if(bits.length===2&&(bits[0]!=="")&&!(isNaN(bits[0]))&&(bits[1]!=="")&&!(isNaN(bits[1]))){data[bits[0]]=bits[1];}else{console.warn("... bad entry: ",pairs[i]," ... ",bits);}}}for(var state in data){site9.PageStateMgr.getState(state).setValue(data[state]);}if(oldStorageEnabled){storageEnabled=true;}}var _storeStateTimeout=null;function storeState(){if(storageEnabled){if(_storeStateTimeout===null){_storeStateTimeout=setTimeout(_storeState,50);}}}function _storeState(){_storeStateTimeout=null;var b=[];var oids=[];for(var oid in map){oids.push(oid);}oids.sort();for(var i=0,n=oids.length;i!==n;i++){var oid=oids[i];var value=map[oid].getValue();if(value){if(b.length){b[b.length]=PAIR_SEP;}b[b.length]=oid;b[b.length]=BITS_SEP;b[b.length]=value;}}site9.StateManager.setState("ps",b.join(""));}site9.PageStateMgr={toString:function(){return"<site9.PageStateMgr>";},getState:function(oid){return(map[oid]||new PageState(oid));},getAllStateValuesAsSource:function(){var parsed={};for(var state in map){parsed[state]=[this.getState(state).getValue()];}return this.formatParsed(parsed);},setAllStateValuesFromSource:function(s){var parsed=this.parseSource(s);for(var state in parsed){var values=parsed[state];var st=this.getState(state);for(var i=0;i<values.length;i++){st.setValue(values[i]);}}},onchange:function(event){site9._notifyListeners(event,listeners);storeState();},addListener:function(handler,scope){return site9._addListener(handler,scope,listeners,this);},removeListener:function(handler,scope){return site9._removeListener(handler,scope,listeners,this);},isActive:function(){return active;},setActive:function(flag){active=!!(flag);},applyVisibility:function(el,visible,flipped){jQuery(el).setClass("launch-visible",visible).setClass("launch-hidden",!(visible));},addVisListener:function(handler,scope){return site9._addListener(handler,scope,visListeners,this);},removeVisListener:function(handler,scope){return site9._removeListener(handler,scope,visListeners,this);},compileStates:function(el,states){var j=jQuery(el);var handlers=this.__getHandlersForStates(states);for(var eventName in handlers){var handler=handlers[eventName];if(eventName==="visibility"){site9.PageStateMgr.addListener(handler,el);handler.call(el,{});}else{j.bind(eventName,handler);}}},uncompileStates:function(el,states){var j=jQuery(el);var handlers=this.__getHandlersForStates(states);for(var eventName in handlers){var handler=handlers[eventName];if(eventName==="visibility"){site9.PageStateMgr.removeListener(handler,el);}else{j.unbind(eventName,handler);}}},__getHandlersForStates:function(states){var handlers={};if(states){if("hover" in states){states.mouseenter=states.mouseleave=states.hover;delete states.hover;}for(var eventName in states){var s=states[eventName];var handler=null;if(eventName==="visibility"){handler=this._compileVisibilityFlipper(s);}else{var action="setValue";switch(eventName){case"mouseenter":action="pushValue";break;case"mouseleave":action="popValue";break;}handler=this._compileWriter(s,action,true,(eventName==="contextmenu"));}if(handler){handlers[eventName]=handler;}}}return handlers;},_compileVisibilityFlipper:function(s){var action="flippers";if(!s){return null;}var handlerKey=s;var fn=compiled[action][handlerKey];if(!(fn)){var reader=this._compileReader(s);fn=compiled[action][handlerKey]=(function(event){var visible=!(jQuery(this).hasClass("launch-visibility-hidden"));var flipped=reader();if(flipped){visible=!(visible);}site9.PageStateMgr.applyVisibility(this,visible,flipped);});}return fn;},__isValidSourceState:function(state){return(state!=="")&&!(isNaN(state));},__isValidSourceValue:function(value){return(value!=="")&&!(isNaN(value)&&value!=="++"&&value!=="--");},parseSource:function(s){var parsed={};if(s){s=s.replace(/[\(\)]/g,"").replace(/[\&\|]/g,",");var parts=s.split(",");for(var i=0,n=parts.length;i!==n;i++){var tokens=parts[i].split(":");var state=tokens[0];var value=tokens[1];if(this.__isValidSourceState(state)&&this.__isValidSourceValue(value)){var values=parsed[state];if(!values){values=parsed[state]=[];}values.push(value);}else{console.warn("site9.PageStateMgr.parseSource(): Dropping invalid entry: ",parts[i]);}}}return parsed;},formatParsed:function(parsed){var parts=[];if(parsed){for(var state in parsed){var values=parsed[state];for(var i=0;i<values.length;i++){var value=values[i];if(this.__isValidSourceState(state)&&this.__isValidSourceValue(value)){parts.push(state+":"+value);}else{console.warn("site9.PageStateMgr.formatParsed(): Dropping invalid entry: ",state+":"+value);}}}}return parts.join(",");},_compileReader:function(s){var action="getValue";if(!s){return null;}var handlerKey=s;var fn=compiled[action][handlerKey];if(!(fn)){var parsed=this.parseSource(s);var ands=[];for(var state in parsed){var values=parsed[state];var ors=[];for(var i in values){if(i>=0){var value=values[i];ors.push("(mgr.getState('"+state+"')."+action+"()=="+value+")");}}ands.push("("+ors.join("||")+")");}s="var mgr=site9.PageStateMgr;return !("+ands.join("&&")+");";fn=compiled[action][handlerKey]=(new Function("event",s));}return fn;},_compileWriter:function(s,action,onlyWhenActive,preventDefault){if(!s){return null;}var handlerKey=(s+(onlyWhenActive?" (only when active)":""));var fn=compiled[action][handlerKey];if(!(fn)){var parsed=this.parseSource(s);var statements=[];for(var state in parsed){var values=parsed[state];for(var i in values){if(i>=0){var value=values[i];var expr;expr=value;statements.push("st=mgr.getState('"+state+"');st."+action+"("+expr+");");}}}s=statements.join("");s="var mgr=site9.PageStateMgr;if("+(onlyWhenActive?"mgr.isActive()":"true")+"){var st;"+s+"}";if(preventDefault){s+="return false;";}fn=compiled[action][handlerKey]=(new Function("event",s));}return fn;},_domAdded:function PageStateMgr_domAdded(el){this.compileStates(el,el.s9.events);this.compileStates(el,{visibility:el.s9.visibility});},_domRmved:function PageStateMgr_domRmved(el){this.uncompileStates(el,{visibility:el.s9.visibility});this.uncompileStates(el,el.s9.events);},_awake:function PageStateMgr_awake(event){loadState();storageEnabled=true;site9.StateManager.addListener("ps",loadState,window);},_sleep:function PageStateMgr_sleep(event){site9.StateManager.removeListener("ps",loadState,window);storageEnabled=false;for(var state in map){site9._clearListeners(map[state].listeners);delete map[state];}site9._clearListeners(listeners);site9._clearListeners(visListeners);}};site9.addAwakeListener(site9.PageStateMgr._awake,site9.PageStateMgr);site9.addSleepListener(site9.PageStateMgr._sleep,site9.PageStateMgr);site9.DomMgr.addDomAddedListener("[x-launch-comp]",site9.PageStateMgr._domAdded,site9.PageStateMgr);site9.DomMgr.addDomRmvedListener("[x-launch-comp]",site9.PageStateMgr._domRmved,site9.PageStateMgr);function PageState(oid){this.getOid=function(){return oid;};this.value=0;this.stack=[];this.listeners=[];map[oid]=this;}PageState.prototype={toString:function(){return"<PageState "+this.getOid()+">";},getValue:function(){return this.value;},setValue:function(value){this.stack=[];this._setValue(value,"set");},pushValue:function(value){var oldValue=this.value;this.stack.push(oldValue);this._setValue(value,"push");return oldValue;},popValue:function(){var oldValue=this.value;this._setValue(this.stack.pop(),"pop");return oldValue;},_setValue:function(value,eventType){var event={state:this,from:this.getValue(),to:(Number(value)||0),type:eventType};if(event.from!==event.to){this.value=event.to;this.onchange(event);}},onchange:function(event){site9._notifyListeners(event,this.listeners);site9.PageStateMgr.onchange(event);},addListener:function(handler,scope){return site9._addListener(handler,scope,this.listeners,this);},removeListener:function(handler,scope){return site9._removeListener(handler,scope,this.listeners,this);}};})();(function(){var isMobileSafari=(jQuery("html").hasClass("pf-touch")&&jQuery("html").hasClass("ua-safari"));var listeners=[];var orientation=0;var ORIENTATION_CLASS_NAMES={"oriented-up":0,"oriented-down":180,"oriented-left":90,"oriented-right":-90,"oriented-face":-1,"oriented-back":-1};function onNativeOrientationChange(event){site9.OrientationMgr.setOrientation(window.orientation);}site9.OrientationMgr={toString:function(){return"<site9.OrientationMgr>";},getOrientation:function(){return orientation;},setOrientation:function(newOrientation){var oldOrientation=this.getOrientation();newOrientation=Math.min(Math.max(-90,90*Math.round((newOrientation||0)/90)),180);if(oldOrientation!=newOrientation){orientation=newOrientation;this.onchange({target:this,type:"orientationchange",from:oldOrientation,to:newOrientation,preventDefault:function(){}});}},onchange:function(event){var j=jQuery("html");var orientation=this.getOrientation();for(var aClassName in ORIENTATION_CLASS_NAMES){j.setClass(aClassName,(orientation==ORIENTATION_CLASS_NAMES[aClassName]));}if(isMobileSafari){window.scrollTo(0,0);}site9._notifyListeners(event,listeners);},addListener:function(handler,scope){return site9._addListener(handler,scope,listeners,this);},removeListener:function(handler,scope){return site9._removeListener(handler,scope,listeners,this);},_awake:function site9_OrientationMgr_awake(event){var document=event.target;if(document.body.addEventListener){document.body.addEventListener("orientationchange",onNativeOrientationChange,false);}},_sleep:function site9_OrientationMgr_sleep(event){var document=event.target;site9._clearListeners(listeners);if(document.body.removeEventListener){document.body.removeEventListener("orientationchange",onNativeOrientationChange,false);}}};site9.addAwakeListener(site9.OrientationMgr._awake,site9.OrientationMgr);site9.addSleepListener(site9.OrientationMgr._sleep,site9.OrientationMgr);})();site9.support_ie={walkNode:function(node){var pseudoInheritted=/^\#(fcc|ffcccc)$/i;if(!(node.tagName)){return ;}var j=jQuery(node);if(pseudoInheritted.test(j.css("color"))){var pColor=jQuery(node.parentNode).css("color");if(pColor){j.css("color",pColor);}}if(node.tagName=="SELECT"||node.tagName=="OPTION"){if(pseudoInheritted.test(j.css("background-color"))){var pColor="transparent";var pNode=node;while(pColor=="transparent"&&pNode.parentNode){pNode=pNode.parentNode;pColor=jQuery(pNode).css("background-color");}if(pColor){j.css("background-color",pColor);}}}var list=node.childNodes;for(var i=0;i<list.length;i++){this.walkNode(list[i]);}}};if(jQuery.browser.msie){jQuery(window).load(function(){function resizeWrappedContentModules(){var maxRight=jQuery(window).width();jQuery(".WrappedContentModule").each(function(){var j=jQuery(this);var left=j.offset().left;var p=j.offsetParent();var right=Math.min(p.offset().left+p.outerWidth(),maxRight);if((left+j.outerWidth())!=right){j.width((right-left)+(j.width()-j.outerWidth()));}});}jQuery(window).resize(resizeWrappedContentModules);resizeWrappedContentModules();function makeActive(){jQuery(this).not(":disabled").addClass("x_active");}function makeInactive(){jQuery(this).removeClass("x_active");}jQuery(".Button button").mousedown(makeActive).mouseup(makeInactive).blur(makeInactive);site9.support_ie.walkNode(document.body);});}(function(){site9.support={};site9.support.local={};})();(function(){var MouseScrollEventName=(jQuery.browser.mozilla?"DOMMouseScroll":"mousewheel");var frameEl;var stylesEl;var canvasSizingRules;var DOM;var site9_events;var docEl;var docEl_;var updateCanvasSizing;var _updateCanvasSizing;var scroll;var publishScrollEvent;var _publishScrollEvent;var overflow;var publishOverflowEvent;var _publishOverflowEvent;var handleWindowScroll;var handleMouseScroll;function _locateFirstScrollable(el){while(el&&(el.offsetWidth===el.scrollWidth)&&(el.offsetHeight===el.scrollHeight)){el=el.parentNode;}if(el===document.documentElement){el=null;}return el;}site9.addAwakeListener(function Workspace_awake(){frameEl=window.frameElement;if(!(frameEl)||(frameEl.id!="launch_ws_canvas_frame")){return ;}if(frameEl.onready){frameEl.onready({target:frameEl});}DOM=window.parent.launch.ws.util.DOM;site9_events=window.parent.site9.events;stylesEl=jQuery("<style/>").appendTo("head").get(0);canvasSizingRules=[stylesEl.sheet.cssRules.item(stylesEl.sheet.insertRule("#protoshare-body {}",stylesEl.sheet.cssRules.length)),stylesEl.sheet.cssRules.item(stylesEl.sheet.insertRule("#protoshare-body {}",stylesEl.sheet.cssRules.length))];docEl=document.documentElement;docEl_={update:function(){var domScroll=DOM.getScroll(docEl);this.scrollLeft=domScroll[0];this.scrollTop=domScroll[1];this.scrollWidth=docEl.scrollWidth;this.scrollHeight=docEl.scrollHeight;this.clientWidth=docEl.clientWidth;this.clientHeight=docEl.clientHeight;}};updateCanvasSizing=function(){if(_updateCanvasSizing.timeout){clearTimeout(_updateCanvasSizing.timeout);}_updateCanvasSizing.timeout=setTimeout(_updateCanvasSizing,500);};_updateCanvasSizing=function(){if(_updateCanvasSizing.timeout){clearTimeout(_updateCanvasSizing.timeout);}_updateCanvasSizing.timeout=null;docEl_.update();canvasSizingRules[0].style.width=((docEl_.scrollLeft+docEl_.clientWidth)+"px");canvasSizingRules[1].style.height=((docEl_.scrollTop+docEl_.clientHeight)+"px");setTimeout(function(){docEl_.update();publishOverflowEvent();canvasSizingRules[0].style.width=(docEl_.scrollWidth+"px");canvasSizingRules[1].style.height=(docEl_.scrollHeight+"px");},0);};scroll={"left":0,"top":0};publishScrollEvent=function(){if(!(frameEl.onscroll)){return ;}if(_publishScrollEvent.timeout){return ;}_publishScrollEvent.timeout=setTimeout(_publishScrollEvent,0);};_publishScrollEvent=function(){if(_publishScrollEvent.timeout){clearTimeout(_publishScrollEvent.timeout);}_publishScrollEvent.timeout=null;docEl_.update();var oldScroll=scroll;scroll={"left":docEl_.scrollLeft,"top":docEl_.scrollTop};if(scroll["left"]!=oldScroll["left"]||scroll["top"]!=oldScroll["top"]){frameEl.onscroll({target:frameEl,scrollLeft:scroll["left"],scrollTop:scroll["top"]});}};overflow={x:false,y:false};publishOverflowEvent=function(){if(!(frameEl.onoverflow)){return ;}if(_publishOverflowEvent.timeout){return ;}_publishOverflowEvent.timeout=setTimeout(_publishOverflowEvent,2);};_publishOverflowEvent=function(){if(_publishOverflowEvent.timeout){clearTimeout(_publishOverflowEvent.timeout);}_publishOverflowEvent.timeout=null;docEl_.update();var oldOverflow=overflow;overflow={x:(docEl_.scrollWidth!==docEl_.clientWidth),y:(docEl_.scrollHeight!==docEl_.clientHeight)};if(overflow.x!=oldOverflow.x||overflow.y!=oldOverflow.y){frameEl.onoverflow({target:frameEl,overflowX:overflow.x,overflowY:overflow.y});}};handleWindowScroll=function(event){publishScrollEvent();updateCanvasSizing();};jQuery(window).scroll(handleWindowScroll);handleMouseScroll=function(event){if(!(event.detail>0||event.wheelDelta<0)){return ;}if(event.metaKey||event.ctrlKey||_locateFirstScrollable(event.target)){return ;}docEl_.update();var wh=DOM.getRect(document.getElementById("protoshare-body")).getWH();var dx,dy;if(event.type==="DOMAutoScroll"){dx=event.dx;dy=event.dy;}else{dx=200;dy=200;}if(dx){if((docEl_.scrollLeft+docEl_.clientWidth)>=docEl_.scrollWidth){canvasSizingRules[0].style.width=(wh[0]+dx)+"px";}}if(dy){if((docEl_.scrollTop+docEl_.clientHeight)>=docEl_.scrollHeight){canvasSizingRules[1].style.height=(wh[1]+dy)+"px";}}publishOverflowEvent();};docEl.addEventListener(MouseScrollEventName,handleMouseScroll,false);site9_events.attach(docEl,"DOMAutoScroll",handleMouseScroll);jQuery(window).resize(updateCanvasSizing);updateCanvasSizing();});function destroyDeferredFunction(fn){if(fn.timeout){clearTimeout(fn.timeout);}fn.timeout=null;return null;}site9.addSleepListener(function Workspace_sleep(){if(!(frameEl)||(frameEl.id!="launch_ws_canvas_frame")){return ;}if(frameEl.onunready){frameEl.onunready({target:frameEl});}jQuery(window).unbind("resize",updateCanvasSizing);site9_events.detach(docEl,"DOMAutoScroll",handleMouseScroll);docEl.removeEventListener(MouseScrollEventName,handleMouseScroll,false);jQuery(window).unbind("scroll",handleWindowScroll);DOM=null;site9_events=null;docEl=null;docEl_=null;_updateCanvasSizing=destroyDeferredFunction(_updateCanvasSizing);updateCanvasSizing=null;_publishScrollEvent=destroyDeferredFunction(_publishScrollEvent);publishScrollEvent=null;scroll=null;_publishOverflowEvent=destroyDeferredFunction(_publishOverflowEvent);publishOverflowEvent=null;overflow=null;handleWindowScroll=null;handleMouseScroll=null;canvasSizingRules=null;stylesEl.parentNode.removeChild(stylesEl);stylesEl=null;frameEl=null;});})();(function(){site9.support.wireframing={};})();(function(){function splitContentParts(el,div){var _contentParts={};if(div){var json=div.previousSibling.nodeValue;json=json.replace(/^\(/,"").replace(/\)$/,"");_contentParts=eval("("+json+")");}return _contentParts;}site9.support.wireframing.FlashMovie={domAdded:function FlashMovie_domAdded(el){var div=jQuery(el).children("div")[0];var _contentParts=splitContentParts(el,div);if(_contentParts.src){var a="protoshare-swf-",b=1;while(document.getElementById(a+b)||document.getElementById(a+b+"_INST")){b++;}div.id=(a+b);var so=new deconcept.SWFObject(_contentParts.src,div.id+"_INST","100%","100%",8,null);so.addParam("wmode","opaque");so.write(div.id);}},domRmved:function FlashMovie_domRmved(el){jQuery(el).children('div[id^="protoshare-swf-"]').attr("id","").html("");}};site9.DomMgr.addDomAddedListener(".FlashMovie",site9.support.wireframing.FlashMovie.domAdded,site9.support.wireframing.FlashMovie);site9.DomMgr.addDomRmvedListener(".FlashMovie",site9.support.wireframing.FlashMovie.domRmved,site9.support.wireframing.FlashMovie);})();(function(){site9.support.iphone={};})();(function(){function suppressSingleTouchGestures(event){if(event.touches.length<2){event.preventDefault();}}site9.support.iphone[1]={domAdded:function iPhoneScreen_domAdded(el){el.addEventListener("touchmove",suppressSingleTouchGestures,false);},domRmved:function iPhoneScreen_domRmved(el){el.removeEventListener("touchmove",suppressSingleTouchGestures,false);}};site9.DomMgr.addDomAddedListener(".s9-iphone-screen",site9.support.iphone[1].domAdded,site9.support.iphone[1]);site9.DomMgr.addDomRmvedListener(".s9-iphone-screen",site9.support.iphone[1].domRmved,site9.support.iphone[1]);})();
