{"version":3,"sources":["components/com_appbuilder/libraries/tinySHA1.r4.js","components/com_appbuilder/assets/scripts/appbuilder/dropdown.js","components/com_appbuilder/assets/scripts/appbuilder/picker.js","components/com_appbuilder/assets/scripts/appbuilder/events.js","components/com_appbuilder/assets/scripts/maps/maps.js","components/com_appbuilder/libraries/elabel-google.js","components/com_appbuilder/libraries/mootools/mootools-core.js","components/com_appbuilder/libraries/mootools/mootools-more.js","components/com_appbuilder/libraries/iscroll/src/iscroll.js","components/com_appbuilder/libraries/pdfobject/code/pdfobject.js","components/com_appbuilder/libraries/lscache/lscache.js","components/com_appbuilder/assets/scripts/phone/functions.js","components/com_appbuilder/libraries/spinningwheel/spinningwheel.js","components/com_appbuilder/assets/scripts/phone/scroller.js","components/com_appbuilder/assets/scripts/phone/analytics.js","components/com_appbuilder/assets/scripts/phone/bbm.js","components/com_appbuilder/assets/scripts/phone/phone.js","components/com_appbuilder/assets/scripts/phone/navigator.js","components/com_appbuilder/assets/scripts/phone/navigator.screen.appsscreen.js","components/com_appbuilder/assets/scripts/phone/navigator.screen.gallery.js","components/com_appbuilder/assets/scripts/phone/navigator.screen.list.js","components/com_appbuilder/assets/scripts/phone/navigator.screen.map.js","components/com_appbuilder/assets/scripts/phone/jsapi.js","components/com_appbuilder/assets/scripts/phone/history.js","components/com_appbuilder/assets/scripts/phone/loader.js","components/com_appbuilder/assets/scripts/phone/fileloader.js","components/com_appbuilder/assets/scripts/phone/storage.js","components/com_appbuilder/assets/scripts/phone/events.js","components/com_appbuilder/assets/scripts/phone/actions.js","components/com_appbuilder/assets/scripts/phone/sound.js","components/com_appbuilder/libraries/leaflet/leaflet.js","components/com_appbuilder/libraries/add2home/src/add2home.js","components/com_appbuilder/assets/scripts/phone/cache.js","components/com_appbuilder/assets/scripts/appbuilder/popup.js","components/com_appbuilder/assets/scripts/appbuilder/select.js","components/com_appbuilder/assets/scripts/appbuilder/tabs2.js","components/com_appbuilder/assets/scripts/appbuilder/toggle.js","components/com_appbuilder/assets/scripts/items/edit_select.js","components/com_appbuilder/assets/scripts/items/choose_variables.js","components/com_appbuilder/assets/scripts/items/type_action_switcher.js","components/com_appbuilder/assets/scripts/items/action_selector2.js","components/com_appbuilder/assets/scripts/discounts/discount.js","components/com_appbuilder/assets/scripts/our_local.js","components/com_appbuilder/assets/scripts/appbuilder/functions.js","components/com_appbuilder/assets/scripts/appbuilder/hintbox.js","components/com_appbuilder/assets/scripts/export/export.js","components/com_appbuilder/assets/scripts/items/blockly.js","components/com_appbuilder/assets/scripts/appbuilder/forms.js","components/com_appbuilder/libraries/drag.ghost.js","components/com_appbuilder/libraries/file-uploader/client/fileuploader.js","components/com_appbuilder/assets/scripts/files/browser.js","components/com_appbuilder/assets/scripts/files/groups.js","components/com_appbuilder/assets/scripts/files/uploader.js","components/com_appbuilder/assets/scripts/files/chooser.js","components/com_appbuilder/libraries/mif.tree.js","components/com_appbuilder/assets/scripts/apps/tree.js","components/com_appbuilder/libraries/Locate.js","components/com_appbuilder/libraries/Locate.Extras.js","components/com_appbuilder/assets/scripts/items/map.js","components/com_appbuilder/assets/scripts/appbuilder/instant.js","components/com_appbuilder/assets/scripts/appbuilder/icons.js","components/com_appbuilder/assets/scripts/apps/template.js","components/com_appbuilder/libraries/cwcomplete.js","components/com_appbuilder/assets/scripts/brand/chooser.js","components/com_appbuilder/assets/scripts/clients/viewer.js","components/com_appbuilder/assets/scripts/appbuilder/table.js","components/com_appbuilder/assets/scripts/discounts/table.js","components/com_appbuilder/assets/scripts/clients/table.js","components/com_appbuilder/assets/scripts/stores/table.js","components/com_appbuilder/assets/scripts/payments/table.js","components/com_appbuilder/assets/scripts/payments/recurtable.js","components/com_appbuilder/assets/scripts/apps/badwords.js","components/com_appbuilder/assets/scripts/apps/checkquicklink.js","components/com_appbuilder/libraries/mooeditable/Source/MooEditable/MooEditable.js","components/com_appbuilder/libraries/mooeditable/Source/MooEditable/MooEditable.UI.ButtonOverlay.js","components/com_appbuilder/libraries/mooeditable/Source/MooEditable/MooEditable.Extras.js","components/com_appbuilder/libraries/mooeditable/Source/MooEditable/MooEditable.Forecolor.js","components/com_appbuilder/libraries/mooeditable/Source/MooEditable/MooEditable.Table.js","components/com_appbuilder/assets/scripts/items/mooeditable.js","components/com_appbuilder/libraries/codemirror/lib/codemirror.js","components/com_appbuilder/libraries/codemirror/mode/javascript/javascript.js","components/com_appbuilder/libraries/codemirror/mode/css/css.js","components/com_appbuilder/libraries/codemirror/mode/xml/xml.js","components/com_appbuilder/libraries/codemirror/mode/htmlmixed/htmlmixed.js","components/com_appbuilder/libraries/codemirror/mode/clike/clike.js","components/com_appbuilder/libraries/codemirror/mode/php/php.js","components/com_appbuilder/assets/scripts/items/codemirror.js","components/com_appbuilder/libraries/jscolor.js","components/com_appbuilder/assets/scripts/items/jscolor.js","components/com_appbuilder/libraries/datepicker/Locale.en-US.DatePicker.js","components/com_appbuilder/libraries/datepicker/Picker.js","components/com_appbuilder/libraries/datepicker/Picker.Attach.js","components/com_appbuilder/libraries/datepicker/Picker.Date.js","components/com_appbuilder/assets/scripts/discounts/date-picker.js","components/com_appbuilder/assets/scripts/appbuilder/default.js","components/com_appbuilder/assets/scripts/appbuilder/userinfo.js","components/com_appbuilder/libraries/scroll-gallery/scrollGallery.js","components/com_appbuilder/assets/scripts/academy/academy.js","components/com_appbuilder/assets/scripts/academy/importusers.js","components/com_appbuilder/assets/scripts/academy/edituser.js","components/com_appbuilder/assets/scripts/academy/addUserToClass.js","components/com_appbuilder/assets/scripts/ioio/ioio_fake.js"],"names":["SHA1","s","U","a","b","c","push","L","P","A","B","e","d","length","i","charAt","join","f","g","h","v","w","x","y","z","M","j","O","k","t","charCodeAt","slice","setupDropdowns","root","getElementsOnce","each","toggler","open","p","getParent","hide","removeClass","document","id","body","removeEvent","Dropdown","hideAll","addEvent","stop","addClass","setupPickers","picker","input","getElement","get","pickerOptions","getElements","el","set","setupEvents","checkRange","value","range","show","appbuilder","window","map","delay","included","navigator","offline","failed","onInitialize","cb","this","include","script","createElement","type","async","src","location","protocol","getElementsByTagName","parentNode","insertBefore","initialize","clearTimeout","failedTimeout","position","requested","onPosition","after","ret","getPosition","Date","getTime","timestamp","geolocation","getCurrentPosition","timeout","maximumAge","setupInfoBox","InfoBox","opts","google","maps","OverlayView","call","latlng_","latlng","map_","offsetVertical_","offsetHorizontal_","height_","element_","element","me","boundsChangedListener_","event","addListener","panMap","apply","infoboxes","setMap","prototype","remove","div_","removeChild","draw","pixPosition","getProjection","fromLatLngToDivPixel","style","display","left","clientWidth","clientHeight","top","panes","getPanes","div","floatPane","appendChild","className","bounds","getBounds","iwWidth","width_","iwHeight","iwOffsetX","iwOffsetY","mapDiv","getDiv","mapWidth","offsetWidth","mapHeight","offsetHeight","boundsSpan","toSpan","longSpan","lng","latSpan","lat","degPixelX","degPixelY","mapWestLng","getSouthWest","mapEastLng","getNorthEast","mapNorthLat","mapSouthLat","iwWestLng","iwEastLng","iwNorthLat","iwSouthLat","shiftLng","shiftLat","center","getCenter","centerX","centerY","setCenter","LatLng","removeListener","MooTools","version","build","typeOf","item","$family","nodeName","nodeType","test","nodeValue","callee","Function","instanceOf","object","constructor","$constructor","parent","hasOwnProperty","enumerables","toString","overloadSetter","usePlural","self","overloadGetter","args","result","arguments","extend","key","implement","Array","from","Type","isEnumerable","Number","number","parseFloat","isFinite","String","$hidden","protect","$protected","name","lower","toLowerCase","Object","hooks","hooksOf","method","hook","previous","alias","existing","mirror","force","methods","isType","l","generic","proto","methodsEnumerable","propertyIsEnumerable","forEachMethod","fn","RegExp","Boolean","min","max","Math","floor","random","bind","forEach","cloneOf","clone","mergeOne","source","current","merge","append","original","extended","UID","now","every","filter","results","indexOf","some","clean","invoke","methodName","associate","keys","obj","link","contains","array","getLast","getRandom","combine","erase","splice","empty","flatten","concat","pick","hexToRgb","rgb","toInt","rgbToHex","hex","bit","regex","params","string","separator","trim","replace","camelCase","match","toUpperCase","hyphenate","capitalize","escapeRegExp","base","parseInt","toFloat","substitute","regexp","limit","round","precision","pow","toFixed","times","math","attempt","that","F","bound","context","pass","setTimeout","periodical","setInterval","subset","values","getLength","keyOf","toQueryString","queryString","qs","val","encodeURIComponent","ua","userAgent","platform","UA","mode","documentMode","Browser","Platform","Features","xpath","air","query","json","Plugins","Request","XMLHTTP","XMLHttpRequest","MSXML2","ActiveXObject","MSXML","xhr","plugins","description","GetVariable","Flash","exec","text","execScript","setAttribute","head","scripts","all","code","Document","Window","Element","Event","html","documentElement","execCommand","attachEvent","addEventListener","unloadEvent","detachEvent","arrayFrom","childNodes","_keys","DOMEvent","win","$extended","shift","shiftKey","control","ctrlKey","alt","altKey","meta","metaKey","target","srcElement","which","keyCode","fromCharCode","doc","compatMode","page","pageX","clientX","scrollLeft","pageY","clientY","scrollTop","client","pageXOffset","pageYOffset","wheel","wheelDelta","detail","rightClick","button","related","relatedTarget","rotation","scale","targetTouches","changedTouches","touches","touch","preventDefault","stopPropagation","cancelBubble","returnValue","defineKey","defineKeys","38","40","37","39","27","32","8","9","46","13","Class","newClass","reset","$prototyping","$caller","caller","Error","$name","$owner","wrap","$origin","wrapper","retain","Mutators","getInstance","klass","Extends","Implements","items","instance","Chain","$chain","chain","callChain","clearChain","removeOn","full","first","Events","$events","internal","addEvents","events","fireEvent","index","removeEvents","fns","Options","setOptions","options","option","parser","rawMatch","combinator","combinatorChildren","tagName","attributeKey","attributeOperator","attributeQuote","attributeValue","pseudoMarker","pseudoClass","pseudoQuote","pseudoClassQuotedValue","pseudoClassValue","separatorIndex","parsed","expressions","combinatorIndex","currentSeparator","reversed","reverseCombinator","tag","currentParsed","reUnescape","classList","classes","pseudos","attributes","operator","cache","reverseCache","parse","expression","isReversed","Slick","currentCache","raw","reverse","exp","last","parts","cexp","exports","local","featuresCache","isNativeCode","isXML","xmlVersion","xml","setDocument","ownerDocument","feature","rootUid","getUIDXML","features","isXMLDocument","brokenStarGEBTN","starSelectsClosedQSA","idGetsName","brokenMixedCaseQSA","brokenGEBCN","brokenCheckedQSA","brokenEmptyAttributeQSA","isHTMLDocument","nativeMatchesSelector","starSelectsClosed","starSelectsComments","brokenSecondClassNameGEBCN","cachedGetElementsByClassName","brokenFormAttributeGetter","selected","testNode","testRoot","innerHTML","getElementById","createComment","firstChild","getElementsByClassName","querySelectorAll","getAttribute","matchesSelector","mozMatchesSelector","webkitMatchesSelector","slick_expando","getUID","getUIDHTML","node","attributeGetters","attributeNode","getAttributeNode","hasAttribute","attribute","specified","nativeRootContains","nativeDocumentContains","compareDocumentPosition","documentSorter","sourceIndex","aRange","createRange","bRange","setStart","setEnd","compareBoundaryPoints","Range","START_TO_END","reSimpleSelector","reEmptyAttribute","qsaFailExpCache","search","found","uniques","hasOthers","contextIsDocument","simpleSelector","simpleSelectors","nodes","symbol","matchClass","sort","querySelector","disableQSA","_expression","_context","currentId","removeAttribute","posNTH","posNTHLast","posNTHType","posNTHTypeLast","pushArray","pushUID","m","n","currentItems","currentExpression","currentBit","lastBit","bitUniques","uidx","uidk","uid","uniqueNumber","cacheNTH","matchNTH","parseNTHArgument","argument","special","createNTHPseudo","child","sibling","positions","ofType","count","pos","matchSelector","matchNode","selector","matchError","simpleExpCounter","matchPseudo","pseudoName","part","cls","combinators"," ","children","getById","idNode","getByClass",">","nextSibling","+","^","~","++","~~","!","!>","!+","previousSibling","!^","lastChild","!~","innerText","textContent","not","first-child","last-child","only-child","prev","next","nth-child","nth-last-child","nth-of-type","nth-last-of-type","even","odd","first-of-type","last-of-type","only-of-type","enabled","disabled","checked","focus","activeElement","href","for","htmlFor","cssText","tabindex","maxlength","MAXLENGTH","maxLength","find","container","defineAttributeGetter","lookupAttributeGetter","definePseudo","lookupPseudo","pseudo","override","uidOf","props","konstructor","Constructors","attr","newElement","_fireEvent","elements","Elements","Prototype","IFrame","iframe","properties","isObject","onload","uniqueID","onLoad","contentWindow","frames","unshift","newElements","collection","0","1","createElementAcceptsHTML","escapeQuotes","defaultChecked","newTextNode","createTextNode","getDocument","getWindow","types","nocash","toElement","textnode","whitespace","zero","$","nc","injectCombinator","getNext","getPrevious","getAllNext","getAllPrevious","getSiblings","getChildren","getParents","getFirst","$$","inserters","before","bottom","inside","propertyGetters","propertySetters","property","real","bools","booleans","bool","class","pollutesGetAttribute","setProperty","setter","attributeWhiteList","retrieve","setProperties","getProperty","getter","expando","outer","outerHTML","substr","getProperties","removeProperty","removeProperties","prop","Properties","hasClass","toggleClass","adopt","fragment","createDocumentFragment","appendText","where","grab","inject","replaces","replaceChild","wraps","getSelected","opt","collected","storage","clearAttributes","formProps","textarea","destroy","dispose","contents","keepid","cloneNode","ce","te","mergeAttributes","no","eo","ie","co","to","old","removeEventListener","dflt","store","eliminate","CollectGarbage","supportsHTML5Elements","tags","split","supportsTableInnerHTML","tr","supportsTRInnerHTML","translations","table","select","tbody","thead","tfoot","level","testForm","color","doesNotRemoveStyles","styles","setStyles","hasOpacity","opacity","hasFilter","reAlpha","setVisibility","visibility","setOpacity","currentStyle","hasLayout","zoom","getComputedStyle","getOpacity","floatName","cssFloat","defaultView","computed","getPropertyValue","setStyle","Styles","getStyle","ShortStyles","isNaN","size","opera","getStyles","right","width","height","maxWidth","maxHeight","minWidth","minHeight","backgroundColor","backgroundPosition","fontSize","letterSpacing","lineHeight","clip","margin","padding","border","borderWidth","borderStyle","borderColor","zIndex","fontWeight","textIndent","direction","Short","All","sd","bd","bdw","bds","bdc","realType","custom","condition","onAdd","defn","nativeEvent","NativeEvents","list","onRemove","attached","cloneEvents","eventType","click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","gesturestart","gesturechange","gestureend","blur","change","submit","paste","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll","mouseenter","mouseleave","check","prefix","propertychange","propertyName","eventListenerSupport","focusin","focusout","bubbleUp","capture","_key","formObserver","forms","listen","form","listeners","listener","_fn","inputObserver","relay","useCapture","newType","delegation","stored","_uid","_type","_match","_map","elementEvent","__match","delegator","__uid","styleNumber","styleString","borderBox","topBorder","leftBorder","isBody","getCompatElement","brokenOffsetParent","offsetParent","isOffset","isOffsetStatic","scrollTo","getSize","getScrollSize","scrollWidth","scrollHeight","getScroll","getScrolls","getOffsetParent","isOffsetCheck","getOffsets","getBoundingClientRect","ios","htmlScroll","elemScrolls","isFixed","clientLeft","clientTop","offsetLeft","offsetTop","firefox","safari","relative","offset","relativePosition","getCoordinates","computePosition","setPosition","getHeight","getWidth","getScrollTop","getScrollLeft","getScrollHeight","getScrollWidth","getTop","getLeft","Fx","fps","unit","duration","frameSkip","subject","getTransition","cos","PI","step","diff","time","frameInterval","frame","compute","transition","delta","isRunning","cancel","start","Durations","pushInstance","pullInstance","pause","resume","instances","short","normal","long","timers","loop","clearInterval","CSS","prepare","pixelLeft","Parsers","serve","returned","render","Cache","selectorTest","styleSheets","sheet","domain","rules","cssRules","rule","selectorText","Color","one","Tween","tween","fade","how","toggle","flag","highlight","end","Morph","morph","trans","Transitions","Sine","easeInOut","data","Transition","easeIn","easeOut","linear","transitions","Pow","Expo","Circ","sin","acos","Back","Bounce","Elastic","progressSupport","url","headers","X-Requested-With","Accept","format","isSuccess","emulation","urlEncoded","encoding","evalScripts","evalResponse","noCache","withCredentials","onStateChange","readyState","running","status","onreadystatechange","onprogress","onloadstart","timer","response","responseText","responseXML","success","failure","processScripts","getHeader","stripScripts","onSuccess","onFailure","loadstart","progress","setHeader","getResponseHeader","send","_method","pathname","trimPosition","lastIndexOf","user","password","setRequestHeader","sender","HTML","update","javascript","temp","tree","isString","JSON","\b","\t","\n","\f","\r","\"","\\","escape","chr","validate","encode","stringify","toJSON","decode","secure","eval","X-Request","Cookie","path","write","date","setTime","toGMTString","cookie","read","decodeURIComponent","ready","loaded","shouldPoll","checks","testElement","domready","poll","doScrollWorks","doScroll","state","Swiff","quality","allowScriptAccess","wMode","swLiveConnect","callBacks","vars","CallBacks","callBack","flashVars","classid","movie","param","remote","rs","CallFunction","__flash__argumentsToXML","More","Pseudos","storageOf","_monitorEvents","splitType","parsedPseudos","splits","stack","stackFn","monitor","once","throttle","_throttled","_pause","refactor","refactors","origin","Binds","binds","Occlude","occlude","occluded","wait","chains","effects","effect","pauseFx","nil","average","sum","unique","shuffle","r","reduce","reduceRight","defined","getFromPath","cleanValues","run","locales","getSet","Locale","Set","define","locale","use","getCurrent","inherit","inherits","sets","defineData","_base","names","months","months_abbr","days","days_abbr","dateOrder","shortDate","shortTime","AM","PM","firstDayOfWeek","ordinal","dayOfMonth","lessThanMinuteAgo","minuteAgo","minutesAgo","hourAgo","hoursAgo","dayAgo","daysAgo","weekAgo","weeksAgo","monthAgo","monthsAgo","yearAgo","yearsAgo","lessThanMinuteUntil","minuteUntil","minutesUntil","hourUntil","hoursUntil","dayUntil","daysUntil","weekUntil","weeksUntil","monthUntil","monthsUntil","yearUntil","yearsUntil","DateMethods","Methods","ms","year","mo","sec","hr","pad","digits","increment","interval","units","decrement","isLeapYear","clearTime","resolution","getLastDayOfMonth","daysInMonth","getDayOfYear","UTC","day","setDay","getMsg","parseDay","getWeek","firstDayOfYear","dayOfWeek","dividend","month","startOfWeek","getOrdinal","getTimezone","getGMTOffset","off","abs","setAMPM","ampm","getAMPM","str","isValid","valueOf","formats","$0","$1","toISOString","compare","strftime","rfcDayAbbr","rfcMonthAbbr","db","compact","rfc822","rfc2822","iso8601","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","parsePatterns","nativeParse","parseWord","word","num","translated","startCentury","startYear","second","minute","hour","week","pattern","bits","re","handler","parseMonth","parseUTC","localDate","utcSeconds","orderIndex","defineFormat","defineParser","defineParsers","define2DigitYearStart","defineFormats","regexOf","replacers","H","I","o","Y","S","currentLanguage","recompile","language","handle","getTimezoneOffset","timeDiffInWords","distanceOfTimeInWords","timeDiff","vals","durations","getTimePhrase","suffix","eon","Infinity","msg","getDay","newDay","addDays","getDate","decimal","group","currency","getOption","negative","decimals","negativeLocale","toPrecision","zeros","newOutput","substring","formatCurrency","scientific","formatPercentage","C","D","E","G","N","R","T","ue","UE","u","Z","th","TH","dh","DH","ss","oe","OE","ae","AE","tidy","*","'","...","-","»","walk","replacements","getRegexForTag","regstr","standardize","repeat","ceil","getTags","stripTags","truncate","trail","atChar","parseQueryString","decodeKeys","decodeValues","cleanQueryString","URI","schemes","http","https","ftp","rtsp","mms","file","uri","scheme","port","directory","parseDirectory","baseDirectory","regs","directoryDot","endSlash","dir","pop","host","setData","getData","go","toURI","clearData","baseDir","relDir","toAbsolute","toRelative","Hash","getClean","$H","has","hasValue","undefined","getKeys","getValues","notation","getTextInRange","getSelectedText","setSelectionRange","getSelectionStart","getSelectionEnd","selection","getSelectedRange","selectionStart","selectionEnd","parentElement","duplicate","moveStart","moveToElementText","setEndPoint","setCaretPosition","selectRange","getCaretPosition","createTextRange","collapse","moveEnd","insertAtCursor","insertAroundCursor","defaultMiddle","selStart","excludeScripts","copyFromEvents","pressed","16","17","18","20","33","34","35","36","144","145","186","187","188","190","191","192","219","220","221","222","107","getStylesList","planes","directions","edge","calculateEdgeSize","total","isVisible","measure","toMeasure","expose","restore","getDimensions","computeSize","dim","getComputedSize","dimensions","edges","plane","capitalized","edgesize","supportsPositionFixed","supportTested","testPositionFixed","pin","enable","forceScroll","pinnedPosition","scrollFixer","currentPosition","unpin","togglePin","Position","relativeTo","getOptions","setPositionOption","setEdgeOption","setOffsetOption","setDimensionsOption","getCoordinateFromValue","edgeOption","parentOffset","parentScroll","parentPositioned","setPositionCoordinates","toEdge","allowNegative","toMinMax","relFixedPosition","toRelFixedPosition","ignoreScroll","toIgnoreScroll","ignoreMargins","toIgnoreMargins","offsetY","offsetX","calc","winSize","xy","minmax","lr","winScroll","relScroll","edgeOffset","computedRight","computedLeft","totalWidth","computedTop","computedBottom","totalHeight","calculatePosition","returnPos","isDisplayed","swapClass","add","clearSelection","getSelection","removeAllRanges","IframeShim","browsers","ie6","mac","makeShim","shim","scrolling","frameborder","Mask","maskMargins","useIframeShim","iframeShimOptions","hideOnClick","hidden","showMask","hideMask","destroyOnHide","mask","unmask","Spinner","containerPosition","content","messageContainer","img","fxOptions","deactivate","active","message","noFx","useSpinner","spinnerOptions","spinnerTarget","_send","spinner","getSpinner","spin","unspin","Form","requestOptions","sendButtonClicked","extraData","resetForm","setTarget","attach","request","makeRequest","evt","exception","attachReset","OverText","saveClickedButton","fv","onFormValidate","onSubmit","detach","disable","valid","stopOnFailure","targetName","clickedCleaner","fq","hideTheseOf","hideThese","hideInputs","otClasses","ot","labelClass","Reveal","transitionOpacity","dissolve","hiding","showing","startStyles","overflow","reveal","heightOverride","widthOverride","nix","isBoolean","wink","isNumber","Append","useReveal","revealOptions","kids","finish","required","minLength","integer","numeric","alpha","alphanum","dateSuchAs","dateInFormatMDY","email","currencyDollar","oneRequired","errorPrefix","warningPrefix","noSpace","reqChkByNode","requiredChk","reqChkByName","startDate","endDate","currendDate","afterDate","beforeDate","startMonth","sameMonth","creditcard","InputValidator","errorMsg","field","getProps","getError","err","validators","validatorProps","Validator","fieldSelectors","ignoreHidden","ignoreDisabled","useTitles","evaluateOnSubmit","evaluateFieldsOnBlur","evaluateFieldsOnChange","serial","watchFields","getFields","fields","validationMonitor","validateField","resetField","paused","warned","passed","validationTypes","cn","getValidator","validatorsFailed","hasValidator","warn","validator","ignoreField","enforceField","adders","addAllThese","selectedIndex","elLength","dateFormat","dateLocale","dateNouns","wordsInValue","formatted","Inline","showError","errorElement","hideError","scrollToErrorsOnSubmit","scrollToErrorsOnBlur","scrollToErrorsOnChange","scrollFxOptions","insertAdvice","makeAdvice","showAdvice","hideAdvice","title","cssClass","advice","getAdvice","getFieldId","getPropName","getAllAdviceMessages","warner","warnOnly","msgPos","par","fx","Scroll","toEnforce","enforceChildrenOf","toIgnore","ignoreChildrenOf","eleArr","toToggle","toToggleChildrenOf","nodeId","useTitle","label","grpName","groupName","oneCheckedItem","getElementsByName","matchName","matchInput","eleVal","matchVal","afterLabel","afterElement","beforeLabel","beforeElement","emptyValue","startMo","sameMonthAs","d1","d2","ccNum","valid_type","cur","chunks","positionOptions","pollInterval","textOverride","cursor","textHolder","assert","reposition","startPolling","pollingPaused","poller","stopPolling","suppressFocus","showAll","iFrom","iTo","iNow","iProps","Accordion","fixedHeight","fixedWidth","alwaysHide","trigger","initialDisplayFx","resetHeight","isElement","togglers","internalChain","addSection","idx","displayer","padding-top","border-top","padding-bottom","border-bottom","padding-left","border-left","padding-right","border-right","fullOpacity","fullWidth","fullHeight","removeSection","displayIndex","remover","useFx","selfHidden","Move","destination","topLeft","wheelStops","stopper","calculateScroll","scrollSize","toTop","toLeft","toRight","toBottom","axes","axis","toElementEdge","containerSize","toElementCenter","Slide","hideOverflow","layout","vertical","horizontal","caseIn","caseOut","slideIn","slideOut","slide","SmoothScroll","links","anchor","useLink","hash","Sort","setDefaultOrder","currentOrder","newOrder","vert","newPos","mapped","rearrangeDOM","rearranged","getDefaultOrder","getCurrentOrder","forward","backward","sortByElements","swap","two","Drag","snap","grid","invert","modifiers","htype","handles","mouse","ondragstartFixed","ondragstart","drag","eventStop","coordinates","limitZI","sqrt","makeResizable","droppables","precalculate","includeMargins","checkDroppables","overed","calculateLimit","containerCoordinates","elementMargin","elementBorder","containerMargin","containerBorder","offsetParentPadding","coords","ie7","getDroppableCoordinates","makeDraggable","Slider","onTick","setKnobPosition","initialStep","steps","knob","previousChange","previousEnd","setSliderDimensions","setRange","dragOptions","onDrag","draggedKnob","onStart","onBeforeStart","isDragging","onCancel","onComplete","setSnap","clickedElement","scrolledElement","autosize","toPosition","stepWidth","half","checkStep","stepSize","toStep","Sortables","revert","lists","idle","addLists","removeLists","addItems","removeItems","getClone","getDroppables","constrain","insert","dragging","onSnap","onEnter","serialize","modifier","isFunction","JSONP","onRequest","log","console","onError","callbackKey","injectScript","counter","request_map","getScript","clear","Queue","autoAdvance","concurrent","requests","queue","reqBinders","addRequests","addRequest","req","getName","_groupSend","removeRequest","getRunning","q","hasNext","runNext","runAll","onException","initialDelay","startTimer","lastDelay","completeCheck","stopTimer","hsbToRgb","hsb","rgbToHsb","mix","colors","setHue","setSaturation","percent","setBrightness","$RGB","$HSB","$HEX","red","green","blue","hue","brightness","saturation","rr","gr","br","Group","len","togo","autoSave","save","Table","HtmlTable","cellpadding","cellspacing","rows","footers","tBodies","setHeaders","tHead","getHead","setFooters","tFoot","foot","row","what","tds","td","rowProperties","pushMany","classZebra","zebra","zebraOnlyVisibleRows","updateZebras","setRowStyle","pushed","sortIndex","sortReverse","parsers","defaultParser","classSortable","classHeadSort","classHeadSortRev","classNoSort","classGroupHead","classGroup","classCellSort","classSortSpan","sortable","thSelector","sorted","headClick","sortSpans","enableSort","attachSorts","detachSorts","sortEnabled","setParsers","detectParsers","detectParser","cell","thDiv","convert","ParserPriority","parserName","cells","previousSerialization","tableState","setSortedState","setHeadSort","setRowSort","pre","rowIndex","setGroupSort","getParser","clearSort","rel","parseData","reSort","disableSort","span","input-checked","input-value","numberLax","float","floatLax","Keyboard","defaultEventType","manager","nonParsedEvents","_manager","_setup","toggleActive","isActive","activate","_activeKB","relinquish","manage","drop","_instances","trace","_disable","_handle","preventKeyboardPropagation","bubbles","ignore","mods","ctrl","mod","keyboard","hasConsole","widget","wiget","addShortcut","shortcut","_shortcuts","_shortcutIndex","getKeyboard","addShortcuts","removeShortcut","getShortcut","removeShortcuts","getShortcuts","rebind","newKeys","shortcuts","getActiveShortcuts","activeKBS","activeSCS","kb","many","useKeyboard","classRowSelected","classRowHovered","classSelectable","shiftForMultiSelect","allowMultiSelect","selectable","selectHiddenRows","selectedRows","clickRow","activateKeyboard","selectEnabled","enableSelect","selectNone","attachSelects","disableSelect","updateSelects","toggleRow","isSelected","selectRow","_nocheck","focused","deselectRow","selectAll","startRow","endRow","_deselect","tmp","deselectRange","enterRow","hovered","leaveRow","binders","shiftFocus","getRowByOffset","rangeStart","includeHiddenRows","click:relay(tr)","contextmenu:relay(tr)","selectKeysDefined","held","mover","keydown:shift+up","keydown:shift+down","keyup:shift+up","keyup:shift+down","keyup:up","keyup:down","shiftHint","Select Previous Row","Select Next Row","Scroller","area","velocity","onChange","docBody","getCoords","prefixStyle","vendor","dummyStyle","vendors","cssVendor","transform","transitionProperty","transitionDuration","transformOrigin","transitionTimingFunction","transitionDelay","isAndroid","appVersion","isIDevice","isTouchPad","has3d","hasTouch","hasTransform","hasTransitionEnd","RESIZE_EV","START_EV","MOVE_EV","END_EV","CANCEL_EV","TRNEND_EV","","webkit","Moz","nextFrame","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","callback","cancelFrame","cancelRequestAnimationFrame","webkitCancelAnimationFrame","webkitCancelRequestAnimationFrame","mozCancelRequestAnimationFrame","oCancelRequestAnimationFrame","msCancelRequestAnimationFrame","translateZ","iScroll","scroller","hScroll","vScroll","bounce","bounceLock","momentum","lockDirection","useTransform","useTransition","topOffset","checkDOMChanges","handleClick","hScrollbar","vScrollbar","fixedScrollbar","hideScrollbar","fadeScrollbar","scrollbarClass","zoomMin","zoomMax","doubleTapZoom","wheelAction","snapThreshold","onRefresh","onBeforeScrollStart","onScrollStart","onBeforeScrollMove","onScrollMove","onBeforeScrollEnd","onScrollEnd","onTouchEnd","onDestroy","onZoomStart","onZoom","onZoomEnd","refresh","_bind","checkDOMTime","_checkDOMChanges","canIScroll","currPageX","currPageY","pagesX","pagesY","aniTime","wheelZoomCount","handleEvent","_start","_move","_end","_resize","_wheel","_transitionEnd","moved","zoomed","animating","scrollerW","scrollerH","_scrollbar","bar","hScrollbarSize","hScrollbarWrapper","hScrollbarIndicatorSize","hScrollbarIndicator","hScrollbarMaxScroll","hScrollbarProp","maxScrollX","vScrollbarSize","vScrollbarWrapper","vScrollbarIndicatorSize","vScrollbarIndicator","vScrollbarMaxScroll","vScrollbarProp","maxScrollY","_scrollbarPos","_pos","matrix","c1","c2","point","_transitionTime","distX","distY","absDistX","absDistY","dirX","dirY","touchesDistStart","originX","wrapperOffsetLeft","originY","wrapperOffsetTop","_unbind","absStartX","absStartY","startX","startY","pointX","pointY","startTime","timeStamp","deltaX","deltaY","newX","newY","touchesDist","lastScale","minScrollY","ev","newDuration","momentumX","dist","momentumY","newPosX","newPosY","doubleTapTimer","createEvent","initMouseEvent","view","screenX","screenY","_fake","dispatchEvent","_resetPos","_momentum","wrapperW","wrapperH","_snap","resetX","resetY","wheelDeltaX","wheelDeltaY","deltaScale","_startAni","animate","onAnimationEnd","maxDistUpper","maxDistLower","speed","newDist","newTime","outsideDist","_offset","sizeX","sizeY","bubble","els","scrollToElement","scrollToPage","relScale","isReady","PDFObject","pluginTypeFound","pdfOpenParams","hasReaderActiveX","axObj","hasReader","regx","hasGeneric","plugin","mimeTypes","enabledPlugin","setCssForFullWindowPdf","html_style","body_style","embed","targetID","targetNode","encodeURI","pdfParams","lscache","expirationKey","CACHESUFFIX","currentTime","supportsStorage","localStorage","getItem","supportsJSON","setItem","removeItem","storedKey","mainKey","storedKeys","expiration","parsedStorage","expirationTime","SpinningWheel","cellHeight","friction","slotData","lockScreen","currentTarget","tapDown","scrollStart","tapCancel","scrollHasStarted","scrollMove","tapUp","scrollEnd","backWithinBoundaries","onOrientationChange","onScroll","swWrapper","innerHeight","calculateSlotsWidth","slotEl","activeSlot","swSlotWrapper","swSlots","swFrame","slotWidth","create","out","ul","background","slotPosition","slotYPosition","slotMaxScroll","defaultValue","scrollToValue","cancelAction","cancelDone","close","addSlot","getSelectedValues","slot","xPos","scrollStartY","scrollStartTime","topDelta","scrollDistance","scrollDuration","newScrollDistance","newPosition","slotNum","dest","runtime","yPos","doneAction","setCancelAction","action","setDoneAction","app","makeElement","createScreen","hasBack","scrolls","back","tab","inner","makeConfirm","question","okfnc","cancelfnc","okbtn","cancelbtn","confirm","alert","isPhoneGap","notification","isMobile","btnIndex","loadScript","onfail","forceReload","online","decoy","decoyEl","isIE","debug","a1","a2","a3","a4","agent","platformBB","android","BB10","playBook","ipodIos7","iphoneIos7","ipadIos7","smartphone","blackberry","cordova","PhoneGap","hasPhoneDialer","PhoneDialer","info","telPreview","emailPreview","hasCORS","hasGAPlugin","gaPlugin","device","canCapture","captureVideo","captureImage","captureAudio","camera","getPicture","canChoose","mapMarker","system","hasDataCoverage","onLine","blankImage","canvas","getContext","toDataURL","canGetImageData","getImageDataURL","Image","drawImage","crossOrigin","onerror","onabort","started","startHeightTracker","headerElement","styleElement","updateMinHeight","styleSheet","Analytics","pages","phone","currentAppName","currentAppId","pushVar","pushEvent","pushPageview","screen","screenName","setAccount","account","accountHandle","ga","cat","pluginReady","trackEvent","eventCategory","eventAction","eventLabel","eventValue","mainonly","trackPage","setVariable","init","BBM","bbmSetup","access","cbs","uuid","canBBM","setup","postSetup","accessChanged","bbm","onaccesschanged","processCbs","register","accessible","shareApp","users","inviteToDownload","Phone","controller","timeoutUpdate","fullscreen","statusbar","files","updateSingle","browserHistory","splash","homeButton","fixed","masking","prefixes","currentIOS7","temporaryStorage","Storage","LocalStorage","history","History","loader","Loader","Navigator","currentMasking","applyTabMask","standalone","innerWidth","resetPos","setHorizontal","setRealSize","realSize","data-linktype","data-href","data-no-glow","checkHistory","linktypes","noresize","removeTabMask","hor","updateApp","appUrl","showLoading","getLastUpdate","setLastUpdate","fetchId","flush","hideLoading","fetch","published","getUniqueId","uniqueId","getMilliseconds","fetchUrl","direct","loadingcb","FileLoader","fetchLive","fetchedObj","postVars","alwaysLive","updated","updatedObj","refreshes","storeObj","flushStorage","currentApp","currentScreen","refreshScreen","clearStorage","afterSearch","appObj","searchword","jsAPI","JSAPI","linkCatcher","web","linktype","moveAdsInToBody","tabBar","clearHistory","isScrolling","callEventHandler","postLink","sound","stopAll","currentAppUrl","showApp","currentTabId","login","historyChange","checkVariables","appid","screenid","ok","session_time","showScreen","onTimeout","currentScreenId","popHistory","typeX","weblinks","inappbrowser","slash","dot","filename","strPath","openPDF","pdfobject","toolbar","messages","navpanes","support","play","youtube","findTitle","vimeo","twitter","screenname","itemsInner","twttr","widgets","facebook","showRemoteScreen","mainScreenId","fetchObj","jscode","screenObj","javascripts","js","iot","typeurl","APP_BROWSER","BrowserArguments","external","dispatch","initEvent","AndroidPdfPlugin","openOnlinePDF","mess","getTitle","defaultTitle","tEl","thisEl","iotConfig","pinMap","initAppEvents","showapphtml","fixIEStyles","appNavigatorInner","sides","innerA","innerB","swapAB","morpher","changeScreens","showScreenHTML","backParam","checkAds","api","splashhtml","inserted","secured","loginLink","initScreenEvents","highlightSearchWords","showTabs","statusType","phoneEl","selectedTab","newTab","headerEl","backEl","titleEl","titleSpan","titleText","backWidth","amendHistory","hasHistory","backCenter","backRight","resizeTitle","titleWidth","headerWidth","pushHistory","screenSetups","func","gallery","appsscreen","iphone","resizeE","screenorientationchange","orientation","moveAdsInToScreen","loadVar","varName","hasAds","saveVar","post","href2","inp","toLocaleDateString","adsItems","holder","gads","gad","showAd","adsbygoogle","ad","getAd","editor","ads","screenEl","bodyText","newText","lcBodyText","pageData","-webkit-mask","-o-mask","-ms-mask","searchBox","searchResults","apps","gotoPage","getPage","otext","onwebkitspeechchange","itemsEl","selectEl","opEl","done","oset","oget","op","pickerEl","2","3","4","5","6","7","10","11","12","14","15","19","21","22","23","24","25","26","28","29","30","31","years","thisYear","getFullYear","yearRange","appbuild","getMonth","hours","mins","45","50","55","am","pm","getHours","getMinutes","autocompleteEl","completionsEl","completionsInner","showCompletions","getCompletions","localSearchBoxes","searchData","screenId","localSearchBox","resultsArray","matchesCount","searchTerm","words","screenIds","resultElement","data-highlight","screens","formEl","varTagName","varType","captureEl","on","capturebtn","choosebtn","icon","captured","mediaFiles","setURL","fullPath","scrollRefresh","disableRefresh","newicon","audio","playing","destinationType","DestinationType","FILE_URI","sourceType","PictureSourceType","PHOTOLIBRARY","mediaType","MediaType","PICTURE","allowEdit","VIDEO","ALLMEDIA","markerEl","lon","mapHolder","mapsLoading","hiddenItems","setView","tileLayer","maxZoom","addTo","zoomControl","latLngBounds","latLng","latitude","longitude","markerIcon","iconUrl","iconSize","iconAnchor","popupAnchor","marker","bindPopup","openPopup","getLatLng","panTo","setZoom","fitBounds","setMessage","hideLoadingAni","showTab","showWeb","showFile","showYoutube","showVimeo","showTwitter","username","showFacebook","showBBM","playSound","stopSound","settings","maintype","tel","togglePinValue","setPin","getVariable","formField","addTabEvent","eid","removeTabEvent","identifier","addScreenEvent","removeScreenEvent","addVariableEvent","eName","removeVariableEvent","runOnce","runonce","getAppId","getTabId","getScreenId","getItemId","getCurrentAppId","getCurrentTabId","getCurrentScreenId","closeConfirm","confirms","addApiEvent","variable","period","eventDescriptor","addIotEvent","addShakeEvent","addCompassEvent","addLocationEvent","pinName","getPinValue","ajaxRequest","httpMethod","responseType","parameters","successCb","failCb","BrowserHistory","resumeListener","handleHistory","exitApp","disableAnimation","appChange","registered","historyIgnore","handlePopHistory","encodeHistoryHash","decodeHistoryHash","hashchange","onhashchange","messageEl","loadingAni","showTimeout","showLoadingAni","fetchedType","requestKey","FileUploadOptions","fileKey","fileName","mimeType","fetchURL","lastupdate","FileTransfer","upload","res","getRequestQueue","rand","requestQueue","scriptEl","fetched","remotedbs","keyStacks","keyStackLimits","image","inputs","pushKey","keyStack","internalStore","getKey","rdb","internalFetch","storeQueue","work","refreshAfter","storeAppScreen","fetchAppScreen","objCopy","pattern2","handleUrl","storeImg","im","extra","quote","rep","iScrollOptions","scrollToTop","setEnabled","dots","currentPage","homeUnderlay","setopacity","iscroll","xx","elementSize","innerSize","scrollWheel","mouseTimeout","makeScrollBar","scrollBar","scrollKnob","sT","sH","appEvents","screenEvents","jsApi","ActionHandler","EventsList","actual","needed","fireAction","removeCompassEvent","removeShakeEvent","removeLocationEvent","cleanEvents","linkType","webType","remoteDirect","emailTo","emailSubject","emailBody","twitterUsername","codeType","blocklyJs","iotVariable","iotValue","elem","canPlayType","ogg","mp3","wav","m4a","audios","Audio","module","amd","_leaflet_id","ei","ii","_","ni","ri","ai","hi","Mixin","oi","_a","_b","_c","_d","createElementNS","Ji","W","ee","ne","pointerType","MSPOINTER_TYPE_MOUSE","Pt","se","pointerId","buttons","Vi","bi","le","he","V","K","X","J","et","Q","it","tt","baseVal","correspondingElement","nt","filters","Enabled","Opacity","st","rt","Ri","at","_leaflet_pos","ji","ht","ut","mt","lt","ft","ct","tabIndex","_t","fe","outline","dt","pt","boundingClientRect","gt","vt","ye","qi","Ei","Ct","zi","St","yt","originalEvent","_stopped","Mt","xt","wt","zt","Lt","bt","Tt","deltaMode","xe","deltaZ","we","ge","_simulatedClick","_simulated","Zt","At","kt","Et","Dt","Uint8Array","Bt","Nt","It","ke","Rt","Ot","jt","Wt","Ht","_code","Ft","geometry","pointToLayer","coordsToLatLng","Ut","$e","Ke","Vt","nn","geometries","qt","Gt","Kt","Yt","Xt","sn","Jt","mn","$t","Xi","vn","Qt","$i","Pn","ti","freeze","isArray","si","cancelAnimationFrame","ui","lastId","stamp","wrapNum","falseFn","formatNum","splitWords","getParamString","template","emptyImageUrl","requestFn","cancelFn","requestAnimFrame","cancelAnimFrame","callInitHooks","__super__","statics","includes","_initHooks","_initHooksCalled","mergeOptions","addInitHook","li","_on","_off","_events","ctx","_firingCount","fire","listens","sourceTarget","_propagateEvent","_eventParents","addEventParent","removeEventParent","layer","propagatedFrom","clearAllEventListeners","addOneTimeEventListener","hasEventListeners","ci","_i","trunc","_add","subtract","_subtract","divideBy","_divideBy","multiplyBy","_multiplyBy","scaleBy","unscaleBy","_round","_floor","_ceil","_trunc","distanceTo","equals","getBottomLeft","getTopRight","getTopLeft","getBottomRight","intersects","overlaps","_southWest","_northEast","getNorthWest","getNorth","getWest","getSouthEast","getSouth","getEast","toBBoxString","pi","distance","wrapLatLng","toBounds","di","latLngToPoint","transformation","_transform","projection","project","pointToLatLng","unproject","untransform","LN2","getProjectedBounds","infinite","wrapLng","wrapLat","wrapLatLngBounds","atan2","mi","MAX_LATITUDE","atan","fi","gi","vi","yi","xi","wi","Pi","Li","Ti","Mi","Ci","Si","Zi","ki","Bi","Ai","Ii","Oi","Ni","WebKitCSSMatrix","Di","L_DISABLE_3D","Wi","Hi","Fi","Ui","PointerEvent","MSPointerEvent","L_NO_TOUCH","DocumentTouch","Gi","Ki","Yi","devicePixelRatio","deviceXDPI","logicalXDPI","createSVGRect","behavior","adj","Qi","ielt9","android23","androidStock","chrome","gecko","phantom","opera12","ie3d","webkit3d","gecko3d","any3d","mobile","mobileWebkit","mobileWebkit3d","msPointer","pointer","mobileOpera","mobileGecko","retina","svg","vml","_e","de","pe","ve","TRANSFORM","TRANSITION","TRANSITION_END","toFront","toBack","setClass","getClass","testProp","setTransform","disableTextSelection","enableTextSelection","disableImageDrag","enableImageDrag","preventOutline","restoreOutline","getSizedParentNode","getScale","Pe","disableScrollPropagation","disableClickPropagation","getMousePosition","getWheelDelta","fakeStop","skipped","isExternalTarget","Le","_el","_inProgress","_duration","_easeOutPower","_startPos","_startTime","_animate","_step","_complete","_animId","_runFrame","_easeOut","be","crs","minZoom","layers","maxBounds","renderer","zoomAnimation","zoomAnimationThreshold","fadeAnimation","markerZoomAnimation","transform3DLimit","zoomSnap","zoomDelta","trackResize","_handlers","_layers","_zoomBoundLayers","_sizeChanged","_initContainer","_initLayout","_onResize","_initEvents","setMaxBounds","_zoom","_limitZoom","_zoomAnimated","_createAnimProxy","_proxy","_catchTransitionEnd","_addLayers","_limitCenter","_stop","_loaded","pan","_tryAnimatedZoom","_tryAnimatedPan","_sizeTimer","_resetView","zoomIn","zoomOut","setZoomAround","getZoomScale","containerPointToLatLng","latLngToContainerPoint","_getBoundsCenterZoom","paddingTopLeft","paddingBottomRight","getBoundsZoom","fitWorld","panBy","getZoom","_panAnim","_onPanTransitionStep","_onPanTransitionEnd","noMoveStart","_mapPane","_getMapPanePos","easeLinearity","_rawPanBy","flyTo","_flyToFrame","getScaleZoom","_moveEnd","_moveStart","flyToBounds","_panInsideMaxBounds","setMinZoom","setMaxZoom","panInsideBounds","_enforcingBounds","panInside","getPixelBounds","invalidateSize","_lastCenter","debounceMoveend","oldSize","newSize","locate","_locateOptions","watch","_handleGeolocationError","_handleGeolocationResponse","_locationWatchId","watchPosition","stopLocate","clearWatch","accuracy","addHandler","_containerId","_container","_clearControlPos","_resizeRequest","_clearHandlers","_panes","_renderer","createPane","_checkIfLoaded","_moved","layerPointToLatLng","_getCenterLayerPoint","getMinZoom","_layersMinZoom","getMaxZoom","_layersMaxZoom","_size","_getTopLeftPoint","getPixelOrigin","_pixelOrigin","getPixelWorldBounds","getPane","getContainer","latLngToLayerPoint","containerPointToLayerPoint","layerPointToContainerPoint","mouseEventToContainerPoint","mouseEventToLayerPoint","mouseEventToLatLng","_onScroll","_fadeAnimated","_initPanes","_initControlPos","_paneRenderers","markerPane","shadowPane","_getNewPixelOrigin","pinch","_getZoomSpan","_targets","_handleDOMEvent","_onMoveEnd","_findEventTargets","_draggableMoved","_fireDOMEvent","_mouseEvents","_radius","containerPoint","layerPoint","bubblingMouseEvents","boxZoom","whenReady","_latLngToNewLayerPoint","_latLngBoundsToNewLayerBounds","_getCenterOffset","_getBoundsOffset","_limitOffset","_rebound","mapPane","_animatingZoom","_onZoomTransitionEnd","_destroyAnimProxy","_nothingToAnimate","_animateZoom","_animateToCenter","_animateToZoom","noUpdate","Te","removeControl","addControl","_controlCorners","_refocusOnMap","ze","_controlContainer","Me","collapsed","autoZIndex","hideSingleBase","sortLayers","sortFunction","_layerControlInputs","_lastZIndex","_handlingClick","_addLayer","_update","_checkDisabledLayers","_onLayerChange","_expandIfNotCollapsed","addBaseLayer","addOverlay","removeLayer","_getLayer","expand","_section","_layersLink","_baseLayersList","_separator","_overlaysList","overlay","setZIndex","_addItem","_createRadioElement","hasLayer","layerId","_onInputClick","addLayer","_expand","_collapse","Ce","zoomInText","zoomInTitle","zoomOutText","zoomOutTitle","_zoomInButton","_createButton","_zoomIn","_zoomOutButton","_zoomOut","_updateDisabled","_disabled","Se","metric","imperial","_addScales","updateWhenIdle","_mScale","_iScale","_updateScales","_updateMetric","_updateImperial","_getRoundNum","_updateScale","Ze","_attributions","attributionControl","getAttribution","addAttribution","setPrefix","removeAttribution","Layers","Zoom","Scale","Attribution","attribution","Ee","_enabled","addHooks","removeHooks","Be","Ae","Ie","pointerdown","MSPointerDown","Oe","Re","clickTolerance","_element","_dragStartTarget","_preventOutline","_onDown","_dragging","finishDrag","_moving","_startPoint","_parentScale","_onMove","_onUp","_lastTarget","SVGElementInstance","correspondingUseElement","_newPos","_animRequest","_lastEvent","_updatePosition","Ne","simplify","pointToSegmentDistance","closestPointOnSegment","clipSegment","_getEdgeIntersection","_getBitCode","_sqClosestPointOnSegment","isFlat","_flat","De","clipPolygon","je","We","R_MINOR","tan","He","LonLat","Mercator","SphericalMercator","Fe","Ue","Ve","Earth","EPSG3395","EPSG3857","EPSG900913","EPSG4326","Simple","qe","pane","removeFrom","_mapToAdd","addInteractiveTarget","removeInteractiveTarget","_layerAdd","getEvents","beforeAdd","eachLayer","_addZoomLimit","_updateZoomLevels","_removeZoomLimit","Ge","getLayerId","clearLayers","getLayer","getLayers","bringToFront","bringToBack","Ye","tooltipAnchor","createIcon","_createIcon","createShadow","_getIconUrl","_createImg","_setIconStyles","shadowAnchor","marginLeft","marginTop","Xe","iconRetinaUrl","shadowUrl","shadowSize","imagePath","_detectIconPath","Je","_marker","_icon","_draggable","dragstart","_onDragStart","predrag","_onPreDrag","_onDrag","dragend","_onDragEnd","_adjustPan","autoPanSpeed","autoPanPadding","_panRequest","_oldLatLng","closePopup","autoPan","_shadow","_latlng","oldLatLng","interactive","zIndexOffset","riseOnHover","riseOffset","draggable","_initIcon","_removeIcon","_removeShadow","viewreset","setLatLng","setZIndexOffset","setIcon","_popup","_setPos","_bringToFront","_resetZIndex","_updateOpacity","_initInteraction","_zIndex","_updateZIndex","_getPopupAnchor","_getTooltipAnchor","Qe","stroke","weight","lineCap","lineJoin","dashArray","dashOffset","fill","fillColor","fillOpacity","fillRule","getRenderer","_initPath","_reset","_addPath","_removePath","redraw","_updatePath","_updateStyle","_bringToBack","_path","_project","_clickTolerance","tolerance","tn","radius","setRadius","getRadius","_point","_updateBounds","_radiusY","_pxBounds","_updateCircle","_empty","_bounds","_containsPoint","en","_mRadius","smoothFactor","noClip","_setLatLngs","getLatLngs","_latlngs","setLatLngs","isEmpty","closestLayerPoint","_parts","_rings","addLatLng","_defaultShape","_convertLatLngs","_projectLatlngs","_clipPoints","_simplifyPoints","_updatePoly","addData","defaultOptions","resetStyle","onEachFeature","_setLayerStyle","rn","toGeoJSON","toMultiPoint","an","hn","errorOverlayUrl","_url","_image","_initImage","setUrl","setBounds","zoomanim","onselectstart","onmousemove","_overlayOnError","un","autoplay","onloadeddata","ln","_source","_removeTimeout","getContent","_content","setContent","_updateContent","_updateLayout","isOpen","_contentNode","hasChildNodes","_getAnchor","_containerBottom","_containerLeft","_containerWidth","autoPanPaddingTopLeft","autoPanPaddingBottomRight","keepInView","closeButton","autoClose","closeOnEscapeKey","openOn","popup","closeOnClick","closePopupOnClick","preclick","_close","moveend","_wrapper","_tipContainer","_tip","_closeButton","_onCloseButtonClick","whiteSpace","_popupHandlersAdded","_openPopup","_onKeyPress","_movePopup","unbindPopup","togglePopup","isPopupOpen","setPopupContent","getPopup","_n","permanent","sticky","tooltip","closeTooltip","_setPosition","openTooltip","bindTooltip","_tooltip","_initTooltipInteractions","unbindTooltip","_tooltipHandlersAdded","_moveTooltip","_openTooltip","toggleTooltip","isTooltipOpen","setTooltipContent","getTooltip","dn","bgPos","Default","pn","tileSize","updateWhenZooming","updateInterval","maxNativeZoom","minNativeZoom","noWrap","keepBuffer","_levels","_tiles","_removeAllTiles","_tileZoom","_setAutoZIndex","isLoading","_loading","viewprereset","_invalidateAll","createTile","getTileSize","_onOpaqueTile","_noPrune","_pruneTiles","_fadeFrame","_updateLevels","_onUpdateLevel","_removeTilesAtZoom","_onRemoveLevel","_setZoomTransform","_onCreateLevel","_level","_retainParent","_retainChildren","_removeTile","_tileCoordsToKey","_setView","_clampZoom","_abortLoading","_resetGrid","_setZoomTransforms","_tileSize","_globalTileRange","_pxBoundsToTileRange","_wrapX","_wrapY","_getTiledPixelBounds","_isValidTile","_addTile","_tileCoordsToBounds","_keyToBounds","_keyToTileCoords","_tileCoordsToNwSe","tile","_initTile","WebkitBackfaceVisibility","_getTilePos","_wrapCoords","_tileReady","_noTilesToLoad","subdomains","errorTileUrl","zoomOffset","tms","zoomReverse","detectRetina","_onTileRemove","_tileOnLoad","_tileOnError","getTileUrl","_getSubdomain","_getZoomForUrl","complete","defaultWmsParams","service","transparent","uppercase","wmsParams","_crs","_wmsVersion","setParams","WMS","wms","gn","_updatePaths","_destroyContainer","_onZoom","zoomend","_onZoomEnd","_onAnimZoom","_updateTransform","_center","_onViewPreReset","_postponeUpdatePaths","_draw","_onMouseMove","_onClick","_handleMouseOut","_ctx","_redrawRequest","_redrawBounds","_redraw","translate","_updateDashArray","_order","_drawLast","_drawFirst","_requestRedraw","_extendRedrawBounds","_dashArray","_clear","clearRect","beginPath","rect","_drawing","closePath","_fillStroke","arc","globalAlpha","fillStyle","setLineDash","lineWidth","strokeStyle","moving","_handleMouseHover","_hoveredLayer","yn","namespaces","xn","coordsize","_stroke","_fill","stroked","filled","dashStyle","endcap","joinstyle","_setPath","wn","zoomstart","_onZoomStart","_rootGroup","_svgSize","_getPaneRenderer","_createRenderer","preferCanvas","Ln","_boundsToLatLngs","pointsToPath","geometryToLayer","coordsToLatLngs","latLngToCoords","latLngsToCoords","getFeature","asFeature","bn","_pane","overlayPane","_resetStateTimeout","_destroy","_onMouseDown","_resetState","_clearDeferredResetState","_onMouseUp","_onKeyDown","_box","_finish","boxZoomBounds","doubleClickZoom","Tn","_onDoubleClick","inertia","inertiaDeceleration","inertiaMaxSpeed","worldCopyJump","maxBoundsViscosity","zn","_onPreDragLimit","_onPreDragWrap","_positions","_times","_offsetLimit","_viscosity","_lastTime","_lastPos","_absPos","_prunePositions","_initialWorldOffset","_worldWidth","_viscousLimit","keyboardPanDelta","Mn","keyCodes","down","up","_setPanDelta","_setZoomDelta","_onFocus","_onBlur","_addHooks","_removeHooks","_focused","_panKeys","_zoomKeys","scrollWheelZoom","wheelDebounceTime","wheelPxPerZoomLevel","Cn","_onWheelScroll","_delta","_lastMousePos","_timer","_performZoom","tap","tapTolerance","Sn","_fireClick","_holdTimeout","_isTapValid","_simulateEvent","touchZoom","bounceAtZoomLimits","Zn","_onTouchStart","_zooming","_centerPoint","_startLatLng","_pinchStartLatLng","_startDist","_startZoom","_onTouchMove","_onTouchEnd","BoxZoom","DoubleClickZoom","ScrollWheelZoom","Tap","TouchZoom","Control","Evented","Util","Handler","DomEvent","DomUtil","PosAnimation","Draggable","LineUtil","PolyUtil","Point","Bounds","Transformation","Projection","LatLngBounds","CRS","GeoJSON","geoJSON","geoJson","Layer","LayerGroup","layerGroup","FeatureGroup","featureGroup","ImageOverlay","imageOverlay","VideoOverlay","videoOverlay","DivOverlay","Popup","Tooltip","Icon","DivIcon","divIcon","Marker","TileLayer","GridLayer","gridLayer","SVG","Renderer","Canvas","Path","CircleMarker","circleMarker","Circle","circle","Polyline","polyline","Polygon","polygon","Rectangle","rectangle","Map","En","noConflict","addToHome","isReturningVisitor","expire","isExpired","overrideChecks","isSafari","isSessionActive","isStandalone","touchIcon","nav","balloon","OSVersion","intl","isRetina","isIPad","arrow","clicked","orientationCheck","startDelay","iPadXShift","scrollY","scrollX","bottomOffset","animationIn","webkitTransform","webkitTransitionDuration","transitionEnd","closeTimeout","lifespan","manualShow","positionInterval","posY","posX","webkitTransitionProperty","animationOut","sessionStorage","iterations","m42","m41","lastVisit","autostart","returningVisitor","hookOnLoad","ar","ca_es","cs_cz","da_dk","de_de","el_gr","en_us","es_es","fi_fi","fr_fr","he_il","hr_hr","hu_hu","it_it","ja_jp","ko_kr","nb_no","nl_nl","pl_pl","pt_br","pt_pt","ru_ru","sv_se","th_th","tr_tr","uk_ua","zh_cn","zh_tw","addToHomeConfig","applicationCache","startUpdate","updateEl","UPDATEREADY","swapCache","reload","closeable","defaultCloseAction","closeall","stretch","popupclass","popups","failedLoading","task","retValue","handleAction","eventsManager","closeEvents","phone_item_refresh","phone_item_navigate","main","phone_navigate","phone_edit","page_url","make","getOptionsFromClass","getScrollingParent","smax","checkChoosers","showUnderlay","slider","hideUnderlay","contentHeight","contentWidth","windowHeight","windowWidth","docS","poptions","getURL","getForm","tParent","toObject","getInlineValidator","underlayCount","underlay","choosers","accordian","switches","switchables","onActive","onBackground","addChooser","showSimple","subtitle","cover","z-index","Select","accordion","selectedLi","saveBtn","nextBtn","btns","Tabs2","tabsBar","tabs","lis","tabToOpen","Toggle","buttonGroup","EditSelect","deleteRow","newRow","delEl","c3","VariableChooser","variables","buttonClick","chooser","targetP","actions","actionTargetId","actionTarget","extensionBtnId","extensionBtn","actionsTabId","requestData","con","confirmPopup","data-popup","documentclick","showSomething","parentPopup","tabParent","actionsTab","actionsTabActions","triggerId","actionsTabActionsClick","screenType","itemAction","outputsEl","iotEl","outputs","output","data-iconId","data-value","data-type","data-title","data-variable","Discount","payment_id","payment_amount","discount_amount","btn","setInfo","discount_code","DiscountRecur","recur","payment_recur_id","ongoing_amount","first_amount","first_amount_times","discount","setFormVariable","endsWith","isScrollable","limitEl","toTextArea","Blockly","Xml","workspaceToDom","mainWorkspace","domToText","JavaScript","workspaceToCode","copyCSS","dom","camelize","formatDate","formatMoney","lastIndex","ucFirst","eventsView","eventsButton","toggleEvents","appEl","openEvents","eventsTab","safeRefreshEvents","screen_id","app_id","updateIotInputs","boardid","iotInputs","iotApi","event_icon","event_variable","HintBox","boxTag","boxState","boxElement","Export","handleState","progressEl","statusEl","progressElBar","getState","readyScreens","checkStatusEl","downloadEl","failState","controls","downloadUrl","updater","appId","formData","typeexport","blocklyId","expanded","workspace","showCode","setValue","xml_text","textToDom","domToWorkspace","addChangeListener","RangePicker","currentValue","srcInput","Ghost","ghost","deghost","cs","makeGhostDraggable","qq","arr","elt","descendant","css","setText","candidates","obj2url","prefixDone","uristrings","nextObj","nextTemp","FileUploaderBasic","_options","multiple","maxConnections","allowedExtensions","sizeLimit","minSizeLimit","onProgress","responseJSON","typeError","sizeError","minSizeError","emptyError","onLeave","showMessage","_filesInProgress","_handler","_createUploadHandler","_button","_createUploadButton","_preventLeaveInProgress","getInProgress","UploadButton","UploadHandlerXhr","isSupported","_onInputChange","handlerClass","_onProgress","_onComplete","_onCancel","_onSubmit","_uploadFileList","_validateFile","_uploadFile","fileContainer","fileSize","_isAllowedExtension","_error","replacement","_formatFileName","_formatSize","allowed","lcaseFn","bytes","FileUploader","listElement","fileTemplate","dropActive","fail","_listElement","_find","_classes","_bindCancelEvent","_setupDragDrop","dropArea","dz","UploadDropZone","onLeaveNotDescendants","onDrop","dataTransfer","_isValidFileDrag","elementFromPoint","_addToList","_getItemByFileId","qqFileId","fileElement","_disableDropOutside","_attachEvents","dropOutsideDisabled","dropEffect","effectAllowed","isWebkit","hoverClass","focusClass","_input","_createInput","getInput","fontFamily","UploadHandlerAbstract","_queue","_params","copy","_upload","_cancel","_dequeue","cancelAll","getQueue","nextId","UploadHandlerForm","_inputs","fileInput","_createIframe","_createForm","_attachLoadEvent","_getIframeContentJSON","contentDocument","_files","_xhrs","File","getLoaded","lengthComputable","ext","FileBrowser","selectedFile","selectedFiles","editable","systemEditable","eventReceiver","cssclass","showSubtext","fileIdPrefix","selectFile","deselectFile","selectGroup","clearFile","uploadedFile","addDroppable","removeDroppable","removeDroppables","listView","gridView","deleteFile","editFile","makeFiles","loadFiles","normalEl","hiddenEl","droppingEl","createDropzone","droppingView","needsCreateDropzone","droppable","showDroppingTimeout","loadFilesRequest","group_id","draggables","oks","featherEditor","Aviary","Feather","apiKey","apiVersion","tools","launch","postData","onSave","imageId","newURL","iconSrc","postImageUrl","browser","browserSelect","browserDeselect","changeDroppables","deletedFile","updateFile","clickEvent","setFile","background-image","edit","imgEl","groupEl","newGroup","GroupBrowser","groups","group_type","selectedGroup","selectedGroupEl","makeGroups","loadGroups","addGroup","parentEl","group_parent","gEl","setGroup","makeGroupEls","parentId","browserExpand","browserCollapse","data-group-parent","treeAction","actionIcon","editBtn","addGroupBtn","treeClick","groupId","dragenter","dragleave","Uploader","defaultText","groupKey","fileSuccess","createUploadBtn","uploader","showhide","iostop","iocount","inout","progressbar","uploadable","FileChooser","requestName","requestUpload","showInput","typeControl","attachment","attachmentControl","imageEl","browse","browseBtn","uploadBtn","clearBtn","showDropping","inputContainer","inputEl","readonly","updateImageStyle","posHor","posVer","background-repeat","background-size","background-position","popupInner","proressbar","Mif","ids","Tree","forest","animateScroll","expandTo","dfltType","defaults","openIcon","closeIcon","loadable","dfltState","$index","updateOpenState","initExpandTo","DOMidPrefix","initScroll","initSelection","initHover","_toggle","drawToggle","toggleClick","toggleDblclick","blurOnClick","keyDown","keyUp","Focus","$getIndex","_getNextVisible","hover","getTarget","Nodes","getVisiblePosition","drawChildren","drawRoot","isRoot","loadNode","added","Node","structure","$calculate","_property","getDOM","getGadjetType","isLoaded","hasVisibleChildren","$loading","$toggling","$draw","load_event","hasChildren","Draw","recursive","isLast","isFirst","getPreviousVisible","getNextVisible","isLastVisible","addType","processType","removeType","setType","updateProperty","nv","cv","isUpdatable","_previous","_next","getHTML","checkbox","hasCheckbox","zeroSpace","closeIconUrl","forestRoot","openIconUrl","injectAfter","selectClass","attachSelect","unselect","defaultHoverState","gadjet","hoverState","cnode","ctarget","Hover","over","updateHover","Load","subChildren","loadOptions","KeyNav","Engine","trident","goForward","goBack","goLeft","goRight","goStart","goEnd","goPageUp","goPageDown","initSortable","node1","node2","previousVisible","oldTree","nodeCopy","childCopy","copyDenied","removeDenied","scrollDelay","scrollSpeed","startPlace","allowContainerDrop","addToGroups","setDroppables","dropDenied","dragDisabled","leave","enter","dropZone","addGhost","startZone","onstop","emptydrop","beforeDrop","dragTargetSelect","addDragTarget","removeDragTarget","onleave","relatedZone","getZone","$clear","zone","onenter","autoScroll","sign","ondrag","checkTarget","ghostType","openTimer","injectTop","deny","toNode","trarget","attachRenameEvents","beforeRenameComplete","renameCancel","disableEvents","eventStorage","enableEvents","Rename","autoExpand","startRename","renameName","renameNode","finishRename","beforeRename","newName","renameComplete","oldName","rename","renameDenied","initCheckbox","checkboxType","checkboxClick","setParentCheckbox","getChecked","includePartially","switch","setCheckboxState","oldState","childState","CookieStorage","initSave","restored","AppTree","checkboxtype","selectType","preview","removePreview","cloned","phoneContainer","toolbox","toolboxPosition","treeEl","treetype","getNodeTypes","thing","hiddenField","extraItems","itemType","rss","remotexml","screenlink","tablink","extension","Locate","loi","loiType","enableHighAccuracy","watcher","altitude","altitudeAccuracy","heading","cardinalDirection","handleError","watchId","stopWatcher","deg2rad","angle","dlat","dlong","earthRadius","dLat","dLon","address","geocoder","GClientGeocoder","GLatLng","getLocations","setAddress","$extend","Placemark","MapChooser","defaultAddress","latLngContainer","latEl","updatePositionFromInput","lngEl","zoomEl","addressFrm","addressEl","addressBtn","mapEl","mapOptions","myIcon","updatePosition","findAddress","setCurrentLocation","getGeocoder","geocode","foundAddress","GeocoderStatus","OK","loc","Geocoder","onLocate","Instant","instant","IconsScroll","icons","allowScroll","myWidth","fxscroll","amoveleft","scrollerWidth","amoveright","selectCurrent","Template","nameEl","descEl","selectSomething","CwAutocompleter","ajaxMethod","ajaxParam","inputMinLength","targetfieldForKey","targetfieldForValue","suggestionBoxOuterClass","suggestionBoxListClass","suggestionBoxLoadingClass","suggestionBoxHoverClass","clearChoicesOnBlur","clearChoicesOnEsc","clearChoicesOnChoose","setValuesOnChoose","suggestionContainer","choiceContainer","choiceElement","onChoose","inputfield","prevlength","textfield","clickeddoc","mywidth","myleft","mytop","choices","clearChoices","keypressed","docclick","blurLater","ajax","ajaxComplete","doRetrieveValues","setValues","myvalue","avalue","whatfound","foundtype","enterValue","lielems","moveUp","moveDown","myevent","BrandChooser","brand_id","ClientViewer","clients","elementClick","clientsClick","appsClick","insideOpen","emptyInside","currentInside","appIcon","viewer","editTask","newTask","getHeaders","dataToRow","getRows","default","DiscountTable","percentage","amount","usages","recure_until","recure_times","uses","cost","ClientsTable","keyword","doSubmit","clickButton","appimage","appname","useremail","userid","user_id","client_id","clientid","downloadData","checkTr","inIds","StoreTable","price","StoreFieldTable","indexRow","deleted","help","PaymentTable","admin","amount_paid","date_paid","getStatus","getActions","payment","PaymentRecurTable","second_amount_times","getPeriod","trial","second_amount","startdate","stopdate","BadWordsTable","SlugCheck","slug","blockEls","urlRegex","protectRegex","MooEditable","cleanup","paragraphise","xhtml","semantics","handleSubmit","handleLabel","baseCSS","extraCSS","externalCSS","rootElement","baseURL","dialogs","protectedElements","act","Actions","dialog","frameBorder","UI","Toolbar","onItemAction","saveContent","editorDisabled","getRange","designMode","docHTML","BASECSS","EXTRACSS","EXTERNALCSS","BASEHREF","contentEditable","winElement","editorMouseUp","editorMouseDown","editorMouseOver","editorMouseOut","editorMouseEnter","editorMouseLeave","editorContextMenu","editorClick","editorDoubleClick","editorKeyPress","editorKeyUp","editorKeyDown","editorFocus","editorBlur","keyListener","firefox2","styleCSS","execute","Selection","oldContent","checkStates","selectNode","checkStatesDelay","insertNode","setStartAfter","setEndAfter","focusNode","nbsp","ns","startContainer","getNode","isBlock","insertContent","ctrlmeta","editorCut","editorCopy","editorPaste","command","param1","param2","busy","toggleView","ensureRootElement","childNode","states","queryCommandState","oSource","match2","rangeCount","getRangeAt","addRange","selectNodeContents","setBaseAndExtent","isCollapsed","boundingWidth","toStart","collapseToStart","collapseToEnd","cloneContents","htmlText","getText","commonAncestorContainer","endContainer","startOffset","endOffset","pasteHTML","deleteContents","createContextualFragment","phrases","bold","italic","underline","strikethrough","unorderedList","orderedList","indent","outdent","undo","redo","removeHyperlink","addHyperlink","selectTextHyperlink","enterURL","enterImageURL","addImage","addSeparator","addLineSeparator","addItem","onAction","except","Button","Dialog","contentClass","AlertDialog","alertText","onOpen","onClick","PromptDialog","questionText","answerText","answer","font-weight","beforeToggleView","newValue","font-style","text-decoration","insertunorderedlist","insertorderedlist","unlink","createlink","prompt","urlimage","toggleview","Settings","mooeditable","mooEditable","ButtonOverlay","overlayHTML","overlayClass","overlaySize","overlayContentClass","renderOverlay","clickOverlay","openOverlay","closeOverlay","overlayVisible","positionOverlay","blockFormatting","paragraph","heading1","heading2","heading3","alignLeft","alignRight","alignCenter","alignJustify","removeFormatting","insertHorizontalRule","formatBlock","menulist","justifyleft","text-align","justifyright","justifycenter","justifyfull","removeformat","forecolor","buttonOverlay","tableColumns","tableRows","tableWidth","tableClass","tableType","tableHeader","tableCell","tableAlign","tableAlignNone","tableAlignCenter","tableAlignRight","tableValign","tableValignNone","tableValignTop","tableValignMiddle","tableValignBottom","addTable","editTable","addTableRow","editTableRow","mergeTableRow","splitTableRow","deleteTableRow","addTableCol","editTableCol","mergeTableCell","splitTableCell","deleteTableCol","TableDialog","tableadd","tableedit","tablerowedit","tablecoledit","col","ro","tablerowadd","tablerowspan","cellIndex","rowSpan","deleteCell","tablerowsplit","insertCell","tablerowdelete","tablecoladd","ref","tablecolspan","colSpan","tablecolsplit","cols","tablecoldelete","CodeMirror","place","setGuttersForLineNumbers","docStart","makeDisplay","updateGutters","autofocus","focusInput","keyMaps","overlays","modeGen","overwrite","suppressEdits","pasteIncoming","draggingText","Delayed","themeChanged","lineWrapping","Doc","operation","attachDoc","resetInput","registerEventHandlers","hasFocus","onFocus","onBlur","optionHandlers","Init","initHooks","inputDiv","scrollbarH","scrollbarV","scrollbarFiller","gutterFiller","lineDiv","selectionDiv","otherCursor","lineSpace","sizer","heightForcer","scrollerCutOff","gutters","lineGutter","ie_lt8","paddingRight","khtml","viewOffset","lastSizeC","showingFrom","showingTo","lineNumWidth","lineNumInnerWidth","lineNumChars","prevInput","alignWidgets","pollingFast","cachedCharWidth","cachedTextHeight","measureLineCache","measureLineCachePos","inaccurateSelection","maxLine","maxLineLength","maxLineChanged","wheelDX","wheelDY","wheelStartX","wheelStartY","loadMode","cm","getMode","modeOption","iter","line","stateAfter","frontier","startWorker","curOp","regChange","wrappingChanged","computeMaxLength","estimateLineHeights","clearCaches","updateScrollbars","estimateHeight","textHeight","wrapping","perLine","charWidth","lineIsHidden","est","estHeight","updateLineHeight","keyMapChanged","keyMap","theme","guttersChanged","alignHorizontally","specs","removeChildren","gutterClass","gElt","lineLength","merged","collapsedSpanAtStart","getLine","ch","collapsedSpanAtEnd","lineNumbers","docHeight","paddingVert","needsH","needsV","scrollbarWidth","coverGutterNextToScrollbar","fixedGutter","mac_geLion","mac_geMountainLion","visibleLines","viewPort","paddingTop","lineAtHeight","comp","compensateForHScroll","gutterW","alignable","maybeUpdateLineNumberWidth","lineNumberFor","innerW","lineNumberFormatter","firstLineNumber","getRect","updateDisplay","changes","oldFrom","oldTo","visible","updateDisplayInner","updateSelection","signalLater","positionsChangedFrom","viewportMargin","sawCollapsedSpans","lineNo","visualLine","intact","computeIntact","newTo","intactLines","updateViewOffset","patchDisplay","prevBottom","lineObj","bot","box","heightAtLine","intact2","l2","fixedPos","gutterTotalWidth","gutterLeft","gutterWidth","wrapperWidth","updateNumbersFrom","rm","currentWheelTarget","dims","nextIntact","lineN","showIfHidden","wnode","positionLineWidget","lineNumber","setTextContent","reuse","lineNode","buildLineElement","lineElement","lineContent","markers","gutterMarkers","bgClass","wrapClass","isOk","widgetsSeen","above","gutterWrap","ws","noHScroll","coverGutter","paddingLeft","posEq","sel","showCursorWhenSelecting","updateSelectionCursor","updateSelectionRange","moveInputWithCursor","headPos","cursorCoords","wrapOff","lineOff","cursorHeight","other","drawForLine","fromArg","toArg","retTop","charCoords","Pos","lineLen","rVal","iterateBidiSections","getOrder","rightPos","leftPos","pl","singleLine","fromObj","middleTop","middleBot","toObj","removeChildrenAndAdd","restartBlink","blinker","cursorBlinkRate","startState","highlightWorker","prevChange","workTime","copyState","getStateBefore","changed","oldStyles","highlightLine","ischange","processLine","workDelay","findStartLine","minindent","minline","lim","indented","countColumn","tabSize","measureChar","measureLine","findCachedMeasurement","memo","markedSpans","textClass","clearCachedMeasurement","exists","cached","measureLineInner","emptyArray","vranges","maxBot","ie_lt9","rtop","rbot","measureRight","vr","measureLineWidth","hasBadSpan","sp","zeroWidthElement","intoCoordSystem","widgetHeight","yOff","lOff","xOff","fromCoordSystem","lineSpaceBox","editorBox","measurement","getBidi","partPos","order","bidiLeft","bidiRight","getBidiPartAt","bidiOther","PosMaybeOutside","outside","coordsChar","coordsCharInner","mergedPos","getX","wrongLine","innerOff","adjust","bidi","lineLeft","lineRight","fromX","fromOutside","toX","toOutside","moveVisually","isExtendingChar","middle","middleX","measureText","startOperation","updateInput","userSelChange","textChanged","selectionChanged","cursorActivity","updateMaxLine","updateScrollPos","nextOpId","delayedCallbackDepth","delayedCallbacks","endOperation","maxScrollLeft","setScrollLeft","newScrollPos","calculateScrollPos","scrollToPos","scrollPosIntoView","clipPos","scrollToPosMargin","scrollCursorIntoView","maybeHiddenMarkers","unhidden","maybeUnhiddenMarkers","lines","signal","delayed","cm1","withOp","docOperation","runInOp","lendiff","slowPoll","readInput","fastPoll","missed","hasSelection","isReadOnly","inputHasSelection","same","makeChange","splitLines","minimal","hasCopyEvent","selectInput","readOnly","cantEdit","reFocus","onResize","unregister","drag_","onDragEvent","addStop","e_stop","prepareCopy","onMouseDown","posFromMouse","clickInGutter","eventInWidget","e_preventDefault","findWordAt","extendSelection","captureMiddleClick","onContextMenu","setScrollTop","onScrollWheel","onKeyEvent","onKeyDown","onKeyPress","dragDrop","onDragStart","e_target","liberal","space","doSelect","lastPos","startstart","startend","posLess","curCount","editorSize","e_button","lastDoubleClick","selectLine","lastClick","dragAndDrop","dragEnd","e2","FileReader","reader","readAsText","curFrom","curTo","setSelection","replaceRange","replaceSelection","mX","mY","hasHandler","lineBox","setDragImage","_top","dragImg","isScroller","dx","dy","HORIZONTAL_AXIS","VERTICAL_AXIS","wheelPixelsPerUnit","pixels","wheelSamples","movedX","movedY","sample","doHandleBinding","dropShift","commands","prevShift","Pass","allKeyMaps","extraKeys","handleKeyBinding","startMap","getKeyMap","auto","maybeTransition","isModifierKey","keyName","handled","keymaps","lookupKey","oldKeyCode","handleCharBinding","lastStoppedKey","charCode","electricChars","smartIndent","indentLine","prepareSelectAllHack","extval","rehide","oldCSS","scrollPos","detectingSelectAll","changeEnd","lst","clipPostChange","preLine","lastLine","clipToLen","computeSelAfterChange","hint","adjustPos","filterChange","canceled","selUpdate","ignoreReadOnly","sawReadOnlySpans","removeReadOnlyRanges","makeChangeNoReadonly","selAfter","addToHistory","NaN","makeChangeSingleDoc","stretchSpansOverChange","rebased","linkedDocs","sharedHist","rebaseHist","makeChangeFromHistory","hist","undone","dirtyCounter","anti","anchorBefore","anchorAfter","headBefore","headAfter","historyChangeFromChange","mergeOldSpans","shiftDoc","shiftPos","spans","removed","getBetween","makeChangeSingleDocInEditor","updateDoc","recomputeMaxLength","checkWidthStart","changeObj","copyPos","clipLine","linelen","isLine","bias","posBefore","filterSelectionChange","checkAtomic","filtered","goalColumn","skipAtomic","inv","reCheckSelection","mayClear","flipped","curPos","inclusiveLeft","inclusiveRight","explicitlyCleared","atomic","cursorScrollMargin","pTop","scrollIntoView","startTop","startLeft","x1","y1","x2","y2","screentop","docBottom","atTop","atBottom","newTop","screenw","screenleft","gutterw","atLeft","addToScrollPos","aggressive","indentation","curSpace","curSpaceString","indentUnit","indentString","indentWithTabs","spaceStr","changeLine","findPosH","visually","findNextLine","possible","moveOnce","boundToLine","moveLogically","origDir","sawType","isWordChar","hitSide","findPosV","startChar","deflt","notOnInit","nstate","lookup","nofallthrough","fallthrough","keyNames","noShift","altGraphKey","flipCtrlCmd","StringStream","lastColumnPos","lastColumnValue","TextMarker","markText","shared","markTextShared","copyObj","replacedWith","collapsedAtStart","collapsedAtEnd","curLine","collapsedSpanAt","addMarkedSpan","clearOnEnter","startStyle","endStyle","SharedTextMarker","primary","linked","isParent","getMarkedSpanFor","removeMarkedSpan","attachLine","markedSpansBefore","startCh","isInsert","nw","startsBefore","insertLeft","endsAfter","markedSpansAfter","endCh","oldFirst","oldLast","sameLine","newMarkers","gapMarkers","gap","getOldSpans","stretched","oldCur","stretchCur","mark","mk","newParts","sps","lineIsHiddenInner","endLine","detachMarkedSpans","detachLine","attachMarkedSpans","widgetOperation","addLineWidget","LineWidget","aboveVisible","makeLine","updateLine","cleanUpLine","runMode","flattenSpans","curText","curStyle","stream","blankLine","eol","maxHighlightLength","token","txt","len_","opaque","getLineStyles","styleToClass","styleToClassCache","realLine","lineBefore","sawBefore","simple","builder","addedOne","addToken","buildTokenMeasure","buildToken","buildTokenSplitSpaces","insertLineContent","tokenSpecialChars","tabWidth","fullStyle","spanAffectsWrapping","buildCollapsedSpan","spanStyle","spanEndStyle","spanStartStyle","allText","nextChange","foundBookmark","upto","tokenText","spansFor","firstLine","lastText","lastSpans","nlines","LeafChunk","BranchChunk","chunkSize","sharedHistOnly","propagate","skip","chunk","sz","getLines","lh","bidiOrdering","makeHistory","undoDepth","lastTime","lastOp","lastOrigin","attachLocalSpans","histChange","opId","historyEventDelay","removeClearedSpans","copyHistoryArray","newChanges","rebaseHistSel","rebaseHistArray","sub","copied","readAfter","stopMethod","e_stopPropagation","emitter","fireDelayed","startIndex","startValue","spaceStrs","createObj","Obj","inst","nonASCIISingleCaseWordChar","knownScrollbarWidth","zwspSupported","lineStart","visual","lineEnd","compareBidiLevel","linedir","moveInLine","byUnit","qtwebkit","windows","opera_version","setOption","getDoc","addKeyMap","removeKeyMap","spec","modeSpec","removeOverlay","indentSelection","getTokenAt","getStateAfter","defaultTextHeight","defaultCharWidth","setGutterMarker","gutterID","clearGutter","addLineClass","removeLineClass","upd","removeLineWidget","lineInfo","getViewport","addWidget","horiz","vspace","hspace","triggerOnKeyDown","cmd","moveH","rtlMoveVisually","deleteH","moveV","toggleOverwrite","getScrollInfo","sPos","setSize","interpret","swapDoc","getInputField","getWrapperElement","getScrollerElement","getGutterElement","modes","mimeModes","defineMode","dependencies","defineMIME","mime","resolveMode","mfactory","modeObj","modeExtensions","exts","skipToEnd","extendMode","defineExtension","defineDocExtension","defineOption","defineInitHook","innerMode","killLine","getCursor","deleteLine","goDocStart","goDocEnd","goLineStart","goLineStartSmart","getLineHandle","firstNonWS","goLineEnd","goLineRight","goLineLeft","goLineUp","goLineDown","goCharLeft","goCharRight","goColumnLeft","goColumnRight","goWordLeft","goGroupRight","goGroupLeft","goWordRight","delCharBefore","delCharAfter","delWordBefore","delWordAfter","delGroupBefore","delGroupAfter","indentAuto","indentMore","indentLess","insertTab","defaultTab","somethingSelected","transposeChars","newlineAndIndent","basic","Left","Right","Up","Down","End","Home","PageUp","PageDown","Delete","Backspace","Tab","Shift-Tab","Enter","Insert","pcDefault","Ctrl-A","Ctrl-D","Ctrl-Z","Shift-Ctrl-Z","Ctrl-Y","Ctrl-Home","Alt-Up","Ctrl-End","Ctrl-Down","Ctrl-Left","Ctrl-Right","Alt-Left","Alt-Right","Ctrl-Backspace","Ctrl-Delete","Ctrl-S","Ctrl-F","Ctrl-G","Shift-Ctrl-G","Shift-Ctrl-F","Shift-Ctrl-R","Ctrl-[","Ctrl-]","macDefault","Cmd-A","Cmd-D","Cmd-Z","Shift-Cmd-Z","Cmd-Y","Cmd-Up","Cmd-End","Cmd-Down","Cmd-Left","Cmd-Right","Alt-Backspace","Ctrl-Alt-Backspace","Alt-Delete","Cmd-S","Cmd-F","Cmd-G","Shift-Cmd-G","Cmd-Alt-F","Shift-Cmd-Alt-F","Cmd-[","Cmd-]","emacsy","Ctrl-B","Ctrl-P","Ctrl-N","Alt-F","Alt-B","Ctrl-E","Ctrl-V","Shift-Ctrl-V","Ctrl-H","Alt-D","Ctrl-K","Ctrl-T","fromTextArea","getValue","placeholder","leaveSubmitMethodAlone","realSubmit","wrappedSubmit","getTextArea","sol","peek","eat","eatWhile","eatSpace","skipTo","backUp","column","consume","caseInsensitive","cased","oldH","removeInner","insertInner","iterN","oldHeight","spilled","newleaf","maybeSpill","used","nextDocId","lineSep","setLine","removeLine","getLineNumber","lineCount","setCursor","setExtending","historySize","markClean","isClean","getHistory","setHistory","histData","setBookmark","realOpts","findMarksAt","getAllMarks","posFromIndex","indexFromPos","copyHistory","linkedDoc","unlinkDoc","splitIds","iterLinkedDocs","getEditor","eachLine","dontDelegate","replaceGetRect","nl","compareEndPoints","oncopy","44","59","91","92","93","109","127","189","63276","63277","63275","63273","63234","63232","63235","63233","63302","63272","charType","lowTypes","arabicTypes","bidiRE","isNeutral","isStrong","countsAsLeft","countsAsNum","nstart","config","parserConfig","tokenize","nextUntilUnescaped","escaped","tp","cont","jsTokenBase","jsTokenString","jsTokenComment","lastType","isOperatorChar","known","keywords","maybeEnd","JSLexical","align","inScope","varname","localVars","parseJS","cc","cx","marked","lexical","jsonMode","statement","lex","inList","globalVars","pushcontext","defaultVars","popcontext","pushlex","poplex","expect","wanted","vardef1","block","maybeelse","functiondef","forspec1","maybelabel","funarg","expressionInner","maybeoperatorComma","expressionNoComma","maybeoperatorNoComma","maybeop","atomicTypes","maybeexpression","commasep","objprop","getterSetter","proceed","maybetype","typedef","isTS","vardef2","forspec2","formaybein","forspec3","typescript","kw","atom","jsKeywords","if","while","with","else","do","try","finally","return","break","continue","new","delete","throw","var","const","let","function","catch","case","in","typeof","instanceof","true","false","null","tsKeywords","interface","extends","public","private","protected","static","super","any","basecolumn","textAfter","firstChar","closing","statementIndent","blockCommentStart","blockCommentEnd","lineComment","tokenBase","tokenString","tokenParenthesized","nonInclusive","atMediaTypes","atMediaFeatures","propertyKeywords","colorKeywords","valueKeywords","allowNested","baseIndent","newContext","lastState","keySet","tokenCComment","<","tokenSGMLComment","dashes","/","#","inText","inBlock","doctype","isClose","inTag","inAttribute","terminator","depth","curState","pushContext","startOfLine","noIndent","Kludges","doNotIndent","popContext","tagStart","curStream","endtag","implicitlyClosed","endclosetag","autoSelfClosers","maybePopContext","nextTagName","parentTagName","contextGrabbers","attvalue","allowMissing","attvaluemaybe","allowUnquoted","multilineTagIndentFactor","htmlMode","keygen","track","wbr","dd","optgroup","rp","article","aside","blockquote","dl","fieldset","footer","h1","h2","h3","h4","h5","h6","header","hgroup","menu","ol","section","alignCDATA","comb","fullLine","configuration","htmlState","scriptType","scriptTypes","matches","localMode","localState","cssMode","maybeBackup","pat","scriptTypesConf","conf","curPunc","tokenComment","blockKeywords","builtin","atoms","multiLineStrings","Context","statementIndentUnit","dontAlignCalls","cppHook","tokenAtString","mimes","cKeywords","@","heredoc","delim","phpConfig","isPHP","curMode","phpMode","pending","php","openPHP","startOpen","htmlNew","phpNew","matchBrackets","enterMode","tabMode","jscolor","bindClass","binding","preloading","install","preload","getDir","detected","detectDir","srcAbs","eInvalidProp","imgRequire","loadImage","images","sld","cross","imgLoaded","requireImage","fetchElement","mixed","evnt","createEventObject","getElementPos","e1","getElementSize","getMousePos","getViewPos","getViewSize","removeDotSegments","authority","RGB_HSV","HSV_RGB","removePicker","owner","boxB","drawPicker","padB","padM","sldB","sldM","seg","segSize","posPad","THIS","pickerBorder","pickerFace","pickerInset","posSld","onmouseup","onmouseout","onmousedown","abortBlur","holdPad","setPad","holdSld","setSld","valueElement","pickerZIndex","pickerBorderColor","pickerFaceColor","pickerInsetColor","eOldIE","modeID","padImg","redrawPad","redrawSld","yComponent","hsv","isPickerOwner","blurTarget","importColor","pickerOnfocus","hidePicker","blurValue","posM","fromHSV","leaveSld","leavePad","caps","pickerMode","pickerPosition","showPicker","ts","vp","vs","ps","pp","jscStyle","exportColor","leaveValue","leaveStyle","fromString","flags","fromRGB","updateField","select_a_time","use_mouse_wheel","time_confirm_button","Picker","pickerClass","animationDuration","useFadeInOut","positionOffset","showOnInit","constructPicker","Quad","oldContents","newContents","dragger","opened","pickersize","elementCoords","setBodySize","bodysize","setTitle","setTitleEvent","Attach","attachTo","attachedEvents","attachedElements","toggles","documentEvent","toggleElements","allElements","eventWrapper","kd","toggleIndex","inputIndex","DatePicker","timePicker","timePickerOnly","timeWheelStep","yearPicker","yearsPerPage","startDay","startView","pickOnly","canAlwaysGoUp","years_title","months_title","days_title","time_title","newViews","minDate","maxDate","limitDate","storeDate","currentView","cap","hidePrevious","$next","$show","showPrevious","setPreviousEvent","hideNext","showNext","setNextEvent","renderYears","renderers","renderMonths","limitLeft","limitRight","renderDays","renderTime","yearmonth","currentDate","today","isUnavailable","thisyear","selectedyear","weekcontainer","dateString","todayString","toDateString","currentString","titles","localeDaysShort","setDate","initMinutes","hoursInput","minutesInput","minutes","defineRenderer","availableDates","addClipboardToMenu","menuItems","clipboardAction","typeAndId","clipboard","srctype","targettype","makeEditable","checkExc","scrollingParent","startEditing","deleting","reclone","repos","dis","subels","origsubels","elHighlight","elPosition","startMoving","enableMenu","tableX","sortables","SortablesX","onSort","childElementCount","lii","fullEls","emptyEls","curIndex","curRow","showMenu","hasLink","removeEditable","overlayElement","overlayTimeoutId","overlayTimeout","tutorial","userInfo","appDescriptionBox","screenEdit","toolboxEnablers","enableToolboxType","apptoolboxEnablers","enableAppToolbox","appName","desc","previewUrl","previewLink","appPreviewLink","webviewUrl","webviewLink","flagEl","tabEl","tab_screentype","tab_id","searchForm","srch","itemEl","item_type","linkingEl","item_id","setDevice","previewType","devices","boardPlugged","isPlugged","cable","previewHor","toggleHor","isHorizontal","previewReal","toggleReal","isRealSize","cookieH","cookieR","fs","iotBoards","setBoard","boardId","board","boards","needsUserInfo","scrollGallery","thumbarea","imagearea","clickable","tumbObjs","imgObjs","scrollimageareaFx","imgObjekt","scrollthumbareaFx","firstImage","academy","academyButton","academyPopupContent","trackProgress","progressItems","stepProgressState","modules","nededModulesA","allmodules","nededModulesB","idB","linkid","injectTo","scrollEl","countPages","panelP","galleries","galleryElement","scrollGalleryHead","thumbareaContent","scrollGalleryFoot","imageareaContent","panels","panel","dashboard","namefilter","findbtn","showVerify","ImportUsers","EditUsers","usertype","moreoptions","popupContent","addHeight","removeHeight","userslist","AddUsersToClass","searchbox","clas","userids","ioio","loopCb","PIN_OUTPUT_PWM","PIN_OUTPUT_DIGITAL","PIN_INPUT_DIGITAL","PIN_INPUT_ANALOG","setDigitalOutput","handleDigital","setPwnOutput","handlePwm","toggleDigitalOutput","handleToggle"],"mappings":"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","file":"components/com_appbuilder/assets/compressed/js/default.js","sourcesContent":["function SHA1(s){function U(a,b,c){while(0>>(32-b))}function P(a,b,c){return a^b^c}function A(a,b){var c=(b&0xFFFF)+(a&0xFFFF),d=(b>>>16)+(a>>>16)+(c>>>16);return((d&0xFFFF)<<16)|(c&0xFFFF)}var B=\"0123456789abcdef\";return(function(a){var c=[],d=a.length*4,e;for(var i=0;i>2]>>((3-(i%4))*8);c.push(B.charAt((e>>4)&0xF)+B.charAt(e&0xF))}return c.join('')}((function(a,b){var c,d,e,f,g,h=a.length,v=0x67452301,w=0xefcdab89,x=0x98badcfe,y=0x10325476,z=0xc3d2e1f0,M=[];U(M,0x5a827999,20);U(M,0x6ed9eba1,20);U(M,0x8f1bbcdc,20);U(M,0xca62c1d6,20);a[b>>5]|=0x80<<(24-(b%32));a[(((b+65)>>9)<<4)+15]=b;for(var i=0;i>>16)+(a>>>16)+(b>>>16)+(c>>>16)+(d>>>16)+(f>>>16);return((g&0xFFFF)<<16)|(f&0xFFFF)})(j<20?(function(t,a,b){return(t&a)^(~t&b)}(d,e,f)):j<40?P(d,e,f):j<60?(function(t,a,b){return(t&a)^(t&b)^(a&b)}(d,e,f)):P(d,e,f),g,M[j],O[j],L(c,5));g=f;f=e;e=L(d,30);d=c;c=k}v=A(v,c);w=A(w,d);x=A(x,e);y=A(y,f);z=A(z,g)}return[v,w,x,y,z]}((function(t){var a=[],b=255,c=t.length*8;for(var i=0;i>5]|=(t.charCodeAt(i/8)&b)<<(24-(i%32))}return a}(s)).slice(),s.length*8))))}","Dropdown = function(ul, pos) {\n\tif(Dropdown.hideAll) {\n\t\tDropdown.hideAll();\n\t}\n\tvar body = document.id(document.body),\n\t\thide = Dropdown.hideAll = function(e) {\n\t\t\tcover.destroy();\n\t\t\tholder.destroy();\n\t\t\tDropdown.hideAll = null;\n\t\t},\n\t\tcover = new Element('div').setStyles({\n\t\t\tposition: 'fixed',\n\t\t\ttop: 0,\n\t\t\tleft: 0,\n\t\t\tbottom: 0,\n\t\t\tright: 0,\n\t\t\t'z-index': 900\n\t\t}).addEvent('click', hide).inject(body),\n\t\tholder = new Element('div', {\n\t\t\t'class': 'open'\n\t\t}).adopt(\n\t\t\tul\n\t\t).setStyles({\n\t\t\tposition: 'absolute',\n\t\t\ttop: pos.y,\n\t\t\tleft: pos.x\n\t\t}).addEvent('click', hide).inject(body);\n\treturn hide;\n};\n\nfunction setupDropdowns(root) {\n\troot.getElementsOnce('[data-toggle=\"dropdown\"]').each(function(toggler) {\n\t\tvar open = false,\n\t\t\tp = toggler.getParent('.dropdown'),\n\t\t\thide = function(e) {//Dont stop event because it stops a[href] from working\n\t\t\t\tp.removeClass('open');\n\t\t\t\tdocument.id(document.body).removeEvent('click', hide);\n\t\t\t\tDropdown.hideAll = null;\n\t\t\t\topen = false;\n\t\t\t};\n\t\ttoggler.addEvent('click', function(e) {\n\t\t\te.stop();\n\t\t\tif(Dropdown.hideAll) {\n\t\t\t\tDropdown.hideAll(e);\n\t\t\t}\n\t\t\telse if(!open) {\n\t\t\t\tp.addClass('open');\n\t\t\t\tdocument.id(document.body).addEvent('click', hide);\n\t\t\t\tDropdown.hideAll = hide;\n\t\t\t\topen = true;\n\t\t\t}\n\t\t});\n\t});\n}\n\nif(window.Popup) {\n\tPopup.addChooser(setupDropdowns);\n}\n","function setupPickers(root) {\n\troot.getElementsOnce('.picker-chooser').each(function(picker) {\n \n var input = root.getElement(picker.get('data-input'));\n var pickerOptions = picker.getElements('.option');\n pickerOptions.each(function(el) {\n el.addEvent('click',function(){\n pickerOptions.removeClass('selected');\n el.addClass('selected');\n input.set('value', el.get('data-value'));\n });\n\t\t});\n\t});\n}\n\nif(window.Popup) {\n\tPopup.addChooser(setupPickers);\n}\n","/**\n * Created by vitaliy on 4/21/15.\n */\nappbuilder.eventsManager = {\n\n eventsView: null,\n eventsButton: null,\n phoneEl: null,\n state: false,\n\n init: function () {\n appbuilder.eventsManager.phoneEl = document.getElement('#phone .phone');\n if (appbuilder.eventsManager.phoneEl) {\n appbuilder.eventsManager.eventsView = new Element('div', {'class': 'events-view'});\n\n appbuilder.eventsManager.eventsView.inject(appbuilder.eventsManager.phoneEl.getElement('.phone-inner'));\n appbuilder.eventsManager.eventsButton = new Element('div', {\n 'class': 'events-btn', events: {\n 'click': appbuilder.eventsManager.toggleEvents\n }\n }).inject(appbuilder.eventsManager.phoneEl.getElement('.phone-inner'));\n appbuilder.app.current.addEvent('app', function (id, appEl, remote) {\n appbuilder.eventsManager.closeEvents();\n if (id > 1) {\n appbuilder.eventsManager.eventsButton.show();\n } else {\n appbuilder.eventsManager.eventsButton.hide();\n }\n });\n\n }\n },\n\n openEvents: function () {\n\n if (!appbuilder.eventsManager.state) {\n appbuilder.eventsManager.state = true;\n appbuilder.eventsManager.phoneEl.addClass('show-events');\n appbuilder.eventsManager.load();\n appbuilder.eventsManager.eventsButton.addClass('up');\n\n var eventsTab = document.id('events-btn-tab');\n\n if (eventsTab) {\n eventsTab.click();\n }\n }\n\n },\n\n closeEvents: function () {\n if (appbuilder.eventsManager.state) {\n appbuilder.eventsManager.phoneEl.removeClass('show-events');\n appbuilder.eventsManager.eventsButton.removeClass('up');\n window.setTimeout(function () {\n appbuilder.eventsManager.eventsView.set('html', '');\n }, 1000);\n document.getElement('.content-items.items').click(); //show first tab\n appbuilder.eventsManager.state = false;\n }\n },\n\n safeRefreshEvents: function () {\n if (appbuilder.eventsManager.phoneEl.hasClass('show-events')) {\n appbuilder.eventsManager.load();\n }\n },\n\n\n isOpen: function () {\n return appbuilder.eventsManager.state;\n },\n\n toggleEvents: function () {\n if (appbuilder.eventsManager.state) {\n appbuilder.eventsManager.closeEvents();\n } else {\n appbuilder.eventsManager.openEvents();\n }\n },\n\n load: function () {\n appbuilder.eventsManager.eventsView.set('html', '
');\n new Request.JSON({\n url: 'index.php',\n data: {\n option: 'com_appbuilder',\n controller: 'events',\n task: 'events',\n rand:Math.random(),\n screen_id: appbuilder.app.current.history.currentScreenId,\n app_id: appbuilder.app.current.history.currentApp\n },\n onSuccess: function (popup) {\n appbuilder.eventsManager.eventsView.set('html', popup.content);\n appbuilder.eventsManager.eventsView.getElements(\"[data-href]\").addEvent('click', function (e) {\n appbuilder.eventsManager.closeEvents();\n });\n appbuilder.eventsManager.eventsView.getElements('.btn').addEvent('click', function (e) {\n e.stop();\n new Popup({\n request: {\n data:{\n 'rand':Math.random()\n },\n url: e.target.get('href'),\n 'data': {\n screen_id: appbuilder.app.current.history.currentScreenId,\n app_id: appbuilder.app.current.history.currentApp\n }\n },\n embed: true\n });\n })\n }\n }).get();\n },\n\n updateIotInputs: function () {\n if (appbuilder.boardid) {\n\n appbuilder.eventsManager.eventsView.set('html', '
');\n var iotInputs = document.id('iot-inputs');\n\n iotInputs.set('html', '
');\n\n new Request.JSON({\n withCredentials: true,\n url: appbuilder.iotApi + '/api/boards/' + appbuilder.boardid + '/inputs',\n data:{\n 'rand':Math.random()\n },\n onSuccess: function (inputs) {\n\n if (inputs.length == 0) {\n iotInputs.set('html', 'No iot events available');\n } else {\n inputs.each(function (input) {\n\n var A = new Element('a', {\n href: iotInputs.get('data-newurl') + '&event_icon=' + input.icon + '&event_iot_name=' + encodeURIComponent(input.variable),\n 'data-popup': \"values\",\n 'class': \"icon\"\n }).inject(iotInputs);\n\n new Element('img', {\n 'class': 'tool',\n 'src': input.iconUrl\n }).inject(A);\n new Element('h3', {'html': input.title}).inject(A);\n\n A.addEvent('click', function (e) {\n e.stop();\n new Popup({\n request: {\n url: iotInputs.get('data-newurl'),\n data: {\n event_icon: input.icon,\n event_variable: input.variable,\n screen_id: appbuilder.app.current.history.currentScreenId,\n app_id: appbuilder.app.current.history.currentApp\n }\n }\n });\n });\n return;\n });\n }\n }\n }).get();\n }\n }\n}\n\n\nfunction setupEvents(root) {\n root.getElementsOnce('#event_method').each(function (toggler) {\n\n var range = document.getElement('#event_range')\n\n function checkRange(value) {\n if (range) {\n if (toggler.value == 'equal' || toggler.value == 'notequal') {\n range.getParent('.control-group').show();\n } else {\n range.getParent('.control-group').hide();\n }\n }\n }\n\n checkRange(toggler.value);\n\n toggler.addEvent('change', function () {\n checkRange(toggler.value);\n\n });\n });\n}\n\nif (window.Popup) {\n Popup.addChooser(setupEvents);\n}\n","appbuilder = window.appbuilder || {};\n\n(function() {\n\tappbuilder.map = {};\n\tvar NOT_INCLUDED = 0, LOADING = 1, INCLUDED = 2, FAILED = 3;\n\tvar apikey = 'AIzaSyAYEajX1XgsUhzSGsq1Ga8XIxvkHuN2-SI';//Torsten\n var included = window.navigator.offline !== false ? NOT_INCLUDED : FAILED;\n\tvar delay;\n\t\n\tvar failed = function() {\n\t\tif(included == LOADING) {\n\t\t\tincluded = FAILED;\n\t\t\tonInitialize.each(function(cb) {\n\t\t\t\tcb.delay(0, this, [false]);\n\t\t\t});\n\t\t\tonInitialize = [];\n\t\t}\n\t};\n\n\tappbuilder.map.include = function(cb) {\n\t //to-do refactor it to use corret with google maps and open street maps\n\t //to-do maybe can be error with offline init map\n\t\tif(included == INCLUDED) {\n\t\t\tcb(true);\n\t\t}\n\t\telse if(included == FAILED) {\n\t\t\tcb(false);\n\t\t}\n\t\telse if(included == LOADING) {\n\t\t\tonInitialize.push(cb);\n\t\t}\n\t\telse {\n\t\t var script = document.createElement(\"script\");\n\t\t\tscript.type = \"text/javascript\";\n\t\t\tscript.async = true;\n\t\t\tscript.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'maps.googleapis.com/maps/api/js?sensor=false&callback=appbuilder.map.initialize&key='+apikey;\n\t\t\tincluded = LOADING;\n\t\t\tonInitialize.push(cb);\n\t\t\tvar s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(script, s);\n\t\t\tdelay = failed.delay(10000);\n\t\t}\n\t};\n\n\tvar onInitialize = [];\n\tappbuilder.map.initialize = function() {\n\t\tclearTimeout(delay);\n\t\tincluded = INCLUDED;\n\t\tonInitialize.each(function(cb) {\n\t\t\tcb.delay(0, this, [true]);\n\t\t});\n\t\tonInitialize = [];\n\t};\n\t\n\tvar position = false;\n\tvar requested = false;\n\tvar onPosition = [];\n\tvar failedTimeout;\n\t\n\tvar after = function(ret) {\n\t\tposition = ret;\n\t\tonPosition.each(function(cb) {\n\t\t\tcb(ret);\n\t\t});\n\t\trequested = false;\n\t\tonPosition = [];\n\t\tclearTimeout(failedTimeout);\n\t};\n\t\n\tappbuilder.map.getPosition = function(cb) {\n\t\tif(position && (new Date().getTime() - position.timestamp) < 60000) {\n\t\t\tcb(position);\n\t\t}\n\t\telse if(requested) {\n\t\t\tonPosition.push(cb);\n\t\t}\n\t\telse if(navigator.geolocation) {\n\t\t\trequested = true;\n\t\t\tonPosition.push(cb);\n\t\t\tnavigator.geolocation.getCurrentPosition(function(p) {\n\t\t\t\tafter(p);\n\t\t\t}, function() {\n\t\t\t\tafter(false);\n\t\t\t}, {\n\t\t\t\ttimeout: 10000,\n\t\t\t\tmaximumAge: 60000\n\t\t\t});\n\t\t\tfailedTimeout = (function() {\n\t\t\t\tafter(false);\n\t\t\t}).delay(12000);\n\t\t}\n\t\telse {\n\t\t\tcb(false);\n\t\t}\n\t};\n\t\n})();","var setupInfoBox = function() {\n\n\n\tvar infoboxes = [];\n\n\tfunction InfoBox(opts) {\n\t\tgoogle.maps.OverlayView.call(this);\n\t\tthis.latlng_ = opts.latlng;\n\t\tthis.map_ = opts.map;\n\t\tthis.offsetVertical_ = -35;\n\t\tthis.offsetHorizontal_ = -145;\n\t\tthis.height_ = 25;\n\t\t//this.width_ = 290;\n\t\tthis.element_ = opts.element;\n \n\t\tvar me = this;\n\t\tthis.boundsChangedListener_ = google.maps.event.addListener(this.map_, \"bounds_changed\", function() {\n\t\t\treturn me.panMap.apply(me);\n\t\t});\n \n\t\tinfoboxes.push(this);\n \n\t\t// Once the properties of this OverlayView are initialized, set its map so\n\t\t// that we can display it. This will trigger calls to panes_changed and\n\t\t// draw.\n\t\tthis.setMap(this.map_);\n\t}\n \n\t/* InfoBox extends GOverlay class from the Google Maps API\n */\n\tInfoBox.prototype = new google.maps.OverlayView();\n\t\n\tvar setMap = InfoBox.prototype.setMap;\n\t\n\tInfoBox.prototype.setMap = function(map) {\n\t\tinfoboxes.each(function(i) {\n\t\t\tif(i != this) {\n\t\t\t\tsetMap.call(i, null);\n\t\t\t}\n\t\t});\n\t\tsetMap.call(this, map);\n\t}\n \n\t/* Creates the DIV representing this InfoBox\n */\n\tInfoBox.prototype.remove = function() {\n\t\tif (this.div_) {\n\t\t\tthis.div_.parentNode.removeChild(this.div_);\n\t\t\tthis.div_ = null;\n\t\t}\n\t};\n \n\t/* Redraw the Bar based on the current projection and zoom level\n */\n\tInfoBox.prototype.draw = function() {\n\t\t// Creates the element if it doesn't exist already.\n\t\tthis.createElement();\n\t\tif (!this.div_) return;\n \n\t\t// Calculate the DIV coordinates of two opposite corners of our bounds to\n\t\t// get the size and position of our Bar\n\t\tvar pixPosition = this.getProjection().fromLatLngToDivPixel(this.latlng_);\n\t\tif (!pixPosition) return;\n \n\t\t// Now position our DIV based on the DIV coordinates of our bounds\n\t\tthis.div_.style.display = 'block';\n\t\t//this.div_.style.width = this.width_ + \"px\";\n\t\tthis.div_.style.left = (pixPosition.x - (this.div_.clientWidth / 2)) + \"px\";\n\t\tthis.height_ = this.div_.clientHeight;\n\t\tthis.div_.style.top = (pixPosition.y - this.div_.clientHeight - 48) + \"px\";\n\n \n\t};\n \n\t/* Creates the DIV representing this InfoBox in the floatPane. If the panes\n * object, retrieved by calling getPanes, is null, remove the element from the\n * DOM. If the div exists, but its parent is not the floatPane, move the div\n * to the new pane.\n * Called from within draw. Alternatively, this can be called specifically on\n * a panes_changed event.\n */\n\tInfoBox.prototype.createElement = function() {\n\t\tvar panes = this.getPanes();\n\t\tvar div = this.div_;\n\t\tif (!div) {\n\t\t\tdiv = this.div_ = document.createElement(\"div\");\n\t\t\t//div.style.position = \"absolute\";\n\t\t\tdiv.className=\"ios-map-marker\";\n\t\t\tdiv.style.display = 'none';\n\t\t\t\n\t\t\tvar a = document.createElement('div');\n\t\t\ta.className = 'arrow';\n\t\t\tdiv.appendChild(a);\n\t\t\t\n\t\t\tdiv.appendChild(this.element_);\n\t\t\t\n\t\t\tpanes.floatPane.appendChild(div);\n\t\t\tthis.panMap();\n\t\t} else if (div.parentNode != panes.floatPane) {\n\t\t\t// The panes have changed. Move the div.\n\t\t\tdiv.parentNode.removeChild(div);\n\t\t\tpanes.floatPane.appendChild(div);\n\t\t} else {\n\t\t// The panes have not changed, so no need to create or move the div.\n\t\t}\n\t}\n \n\t/* Pan the map to fit the InfoBox.\n */\n\tInfoBox.prototype.panMap = function() {\n\t\t// if we go beyond map, pan map\n\t\tvar map = this.map_;\n\t\tvar bounds = map.getBounds();\n\t\tif (!bounds) return;\n \n\t\t// The position of the infowindow\n\t\tvar position = this.latlng_;\n \n\t\t// The dimension of the infowindow\n\t\tvar iwWidth = this.width_;\n\t\tvar iwHeight = this.height_;\n \n\t\t// The offset position of the infowindow\n\t\tvar iwOffsetX = this.offsetHorizontal_;\n\t\tvar iwOffsetY = this.offsetVertical_;\n \n\t\t// Padding on the infowindow\n\t\tvar padX = 40;\n\t\tvar padY = 40;\n \n\t\t// The degrees per pixel\n\t\tvar mapDiv = map.getDiv();\n\t\tvar mapWidth = mapDiv.offsetWidth;\n\t\tvar mapHeight = mapDiv.offsetHeight;\n\t\tvar boundsSpan = bounds.toSpan();\n\t\tvar longSpan = boundsSpan.lng();\n\t\tvar latSpan = boundsSpan.lat();\n\t\tvar degPixelX = longSpan / mapWidth;\n\t\tvar degPixelY = latSpan / mapHeight;\n \n\t\t// The bounds of the map\n\t\tvar mapWestLng = bounds.getSouthWest().lng();\n\t\tvar mapEastLng = bounds.getNorthEast().lng();\n\t\tvar mapNorthLat = bounds.getNorthEast().lat();\n\t\tvar mapSouthLat = bounds.getSouthWest().lat();\n \n\t\t// The bounds of the infowindow\n\t\tvar iwWestLng = position.lng() + (iwOffsetX - padX) * degPixelX;\n\t\tvar iwEastLng = position.lng() + (iwOffsetX + iwWidth + padX) * degPixelX;\n\t\tvar iwNorthLat = position.lat() - (iwOffsetY - padY) * degPixelY;\n\t\tvar iwSouthLat = position.lat() - (iwOffsetY + iwHeight + padY) * degPixelY;\n \n\t\t// calculate center shift\n\t\tvar shiftLng =\n\t\t(iwWestLng < mapWestLng ? mapWestLng - iwWestLng : 0) +\n\t\t(iwEastLng > mapEastLng ? mapEastLng - iwEastLng : 0);\n\t\tvar shiftLat =\n\t\t(iwNorthLat > mapNorthLat ? mapNorthLat - iwNorthLat : 0) +\n\t\t(iwSouthLat < mapSouthLat ? mapSouthLat - iwSouthLat : 0);\n \n\t\t// The center of the map\n\t\tvar center = map.getCenter();\n \n\t\t// The new map center\n\t\tvar centerX = center.lng() - shiftLng;\n\t\tvar centerY = center.lat() - shiftLat;\n \n\t\t// center the map to the new shifted center\n\t\tmap.setCenter(new google.maps.LatLng(centerY, centerX));\n \n\t\t// Remove the listener after panning is complete.\n\t\tif(this.boundsChangedListener_) {\n\t\t\tgoogle.maps.event.removeListener(this.boundsChangedListener_);\n\t\t\tthis.boundsChangedListener_ = null;\n\t\t}\n\t};\n\n\tthis.InfoBox = InfoBox;\n\n};","/*\n---\nMooTools: the javascript framework\n\nweb build:\n - http://mootools.net/core/76bf47062d6c1983d66ce47ad66aa0e0\n\npackager build:\n - packager build Core/Core Core/Array Core/String Core/Number Core/Function Core/Object Core/Event Core/Browser Core/Class Core/Class.Extras Core/Slick.Parser Core/Slick.Finder Core/Element Core/Element.Style Core/Element.Event Core/Element.Delegation Core/Element.Dimensions Core/Fx Core/Fx.CSS Core/Fx.Tween Core/Fx.Morph Core/Fx.Transitions Core/Request Core/Request.HTML Core/Request.JSON Core/Cookie Core/JSON Core/DOMReady Core/Swiff\n\n...\n*/\n\n/*\n---\n\nname: Core\n\ndescription: The heart of MooTools.\n\nlicense: MIT-style license.\n\ncopyright: Copyright (c) 2006-2012 [Valerio Proietti](http://mad4milk.net/).\n\nauthors: The MooTools production team (http://mootools.net/developers/)\n\ninspiration:\n - Class implementation inspired by [Base.js](http://dean.edwards.name/weblog/2006/03/base/) Copyright (c) 2006 Dean Edwards, [GNU Lesser General Public License](http://opensource.org/licenses/lgpl-license.php)\n - Some functionality inspired by [Prototype.js](http://prototypejs.org) Copyright (c) 2005-2007 Sam Stephenson, [MIT License](http://opensource.org/licenses/mit-license.php)\n\nprovides: [Core, MooTools, Type, typeOf, instanceOf, Native]\n\n...\n*/\n\n(function(){\n\nthis.MooTools = {\n\tversion: '1.4.5',\n\tbuild: '74e34796f5f76640cdb98853004650aea1499d69'\n};\n\n// typeOf, instanceOf\n\nvar typeOf = this.typeOf = function(item){\n\tif (item == null) return 'null';\n\tif (item.$family != null) return item.$family();\n\n\tif (item.nodeName){\n\t\tif (item.nodeType == 1) return 'element';\n\t\tif (item.nodeType == 3) return (/\\S/).test(item.nodeValue) ? 'textnode' : 'whitespace';\n\t} else if (typeof item.length == 'number'){\n\t\tif (item.callee) return 'arguments';\n\t\tif ('item' in item) return 'collection';\n\t}\n\n\treturn typeof item;\n};\n\nvar instanceOf = this.instanceOf = function(item, object){\n\tif (item == null) return false;\n\tvar constructor = item.$constructor || item.constructor;\n\twhile (constructor){\n\t\tif (constructor === object) return true;\n\t\tconstructor = constructor.parent;\n\t}\n\t/**/\n\tif (!item.hasOwnProperty) return false;\n\t/**/\n\treturn item instanceof object;\n};\n\n// Function overloading\n\nvar Function = this.Function;\n\nvar enumerables = true;\nfor (var i in {toString: 1}) enumerables = null;\nif (enumerables) enumerables = ['hasOwnProperty', 'valueOf', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'constructor'];\n\nFunction.prototype.overloadSetter = function(usePlural){\n\tvar self = this;\n\treturn function(a, b){\n\t\tif (a == null) return this;\n\t\tif (usePlural || typeof a != 'string'){\n\t\t\tfor (var k in a) self.call(this, k, a[k]);\n\t\t\tif (enumerables) for (var i = enumerables.length; i--;){\n\t\t\t\tk = enumerables[i];\n\t\t\t\tif (a.hasOwnProperty(k)) self.call(this, k, a[k]);\n\t\t\t}\n\t\t} else {\n\t\t\tself.call(this, a, b);\n\t\t}\n\t\treturn this;\n\t};\n};\n\nFunction.prototype.overloadGetter = function(usePlural){\n\tvar self = this;\n\treturn function(a){\n\t\tvar args, result;\n\t\tif (typeof a != 'string') args = a;\n\t\telse if (arguments.length > 1) args = arguments;\n\t\telse if (usePlural) args = [a];\n\t\tif (args){\n\t\t\tresult = {};\n\t\t\tfor (var i = 0; i < args.length; i++) result[args[i]] = self.call(this, args[i]);\n\t\t} else {\n\t\t\tresult = self.call(this, a);\n\t\t}\n\t\treturn result;\n\t};\n};\n\nFunction.prototype.extend = function(key, value){\n\tthis[key] = value;\n}.overloadSetter();\n\nFunction.prototype.implement = function(key, value){\n\tthis.prototype[key] = value;\n}.overloadSetter();\n\n// From\n\nvar slice = Array.prototype.slice;\n\nFunction.from = function(item){\n\treturn (typeOf(item) == 'function') ? item : function(){\n\t\treturn item;\n\t};\n};\n\nArray.from = function(item){\n\tif (item == null) return [];\n\treturn (Type.isEnumerable(item) && typeof item != 'string') ? (typeOf(item) == 'array') ? item : slice.call(item) : [item];\n};\n\nNumber.from = function(item){\n\tvar number = parseFloat(item);\n\treturn isFinite(number) ? number : null;\n};\n\nString.from = function(item){\n\treturn item + '';\n};\n\n// hide, protect\n\nFunction.implement({\n\n\thide: function(){\n\t\tthis.$hidden = true;\n\t\treturn this;\n\t},\n\n\tprotect: function(){\n\t\tthis.$protected = true;\n\t\treturn this;\n\t}\n\n});\n\n// Type\n\nvar Type = this.Type = function(name, object){\n\tif (name){\n\t\tvar lower = name.toLowerCase();\n\t\tvar typeCheck = function(item){\n\t\t\treturn (typeOf(item) == lower);\n\t\t};\n\n\t\tType['is' + name] = typeCheck;\n\t\tif (object != null){\n\t\t\tobject.prototype.$family = (function(){\n\t\t\t\treturn lower;\n\t\t\t}).hide();\n\t\t\t\n\t\t}\n\t}\n\n\tif (object == null) return null;\n\n\tobject.extend(this);\n\tobject.$constructor = Type;\n\tobject.prototype.$constructor = object;\n\n\treturn object;\n};\n\nvar toString = Object.prototype.toString;\n\nType.isEnumerable = function(item){\n\treturn (item != null && typeof item.length == 'number' && toString.call(item) != '[object Function]' );\n};\n\nvar hooks = {};\n\nvar hooksOf = function(object){\n\tvar type = typeOf(object.prototype);\n\treturn hooks[type] || (hooks[type] = []);\n};\n\nvar implement = function(name, method){\n\tif (method && method.$hidden) return;\n\n\tvar hooks = hooksOf(this);\n\n\tfor (var i = 0; i < hooks.length; i++){\n\t\tvar hook = hooks[i];\n\t\tif (typeOf(hook) == 'type') implement.call(hook, name, method);\n\t\telse hook.call(this, name, method);\n\t}\n\n\tvar previous = this.prototype[name];\n\tif (previous == null || !previous.$protected) this.prototype[name] = method;\n\n\tif (this[name] == null && typeOf(method) == 'function') extend.call(this, name, function(item){\n\t\treturn method.apply(item, slice.call(arguments, 1));\n\t});\n};\n\nvar extend = function(name, method){\n\tif (method && method.$hidden) return;\n\tvar previous = this[name];\n\tif (previous == null || !previous.$protected) this[name] = method;\n};\n\nType.implement({\n\n\timplement: implement.overloadSetter(),\n\n\textend: extend.overloadSetter(),\n\n\talias: function(name, existing){\n\t\timplement.call(this, name, this.prototype[existing]);\n\t}.overloadSetter(),\n\n\tmirror: function(hook){\n\t\thooksOf(this).push(hook);\n\t\treturn this;\n\t}\n\n});\n\nnew Type('Type', Type);\n\n// Default Types\n\nvar force = function(name, object, methods){\n\tvar isType = (object != Object),\n\t\tprototype = object.prototype;\n\n\tif (isType) object = new Type(name, object);\n\n\tfor (var i = 0, l = methods.length; i < l; i++){\n\t\tvar key = methods[i],\n\t\t\tgeneric = object[key],\n\t\t\tproto = prototype[key];\n\n\t\tif (generic) generic.protect();\n\t\tif (isType && proto) object.implement(key, proto.protect());\n\t}\n\n\tif (isType){\n\t\tvar methodsEnumerable = prototype.propertyIsEnumerable(methods[0]);\n\t\tobject.forEachMethod = function(fn){\n\t\t\tif (!methodsEnumerable) for (var i = 0, l = methods.length; i < l; i++){\n\t\t\t\tfn.call(prototype, prototype[methods[i]], methods[i]);\n\t\t\t}\n\t\t\tfor (var key in prototype) fn.call(prototype, prototype[key], key)\n\t\t};\n\t}\n\n\treturn force;\n};\n\nforce('String', String, [\n\t'charAt', 'charCodeAt', 'concat', 'indexOf', 'lastIndexOf', 'match', 'quote', 'replace', 'search',\n\t'slice', 'split', 'substr', 'substring', 'trim', 'toLowerCase', 'toUpperCase'\n])('Array', Array, [\n\t'pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift', 'concat', 'join', 'slice',\n\t'indexOf', 'lastIndexOf', 'filter', 'forEach', 'every', 'map', 'some', 'reduce', 'reduceRight'\n])('Number', Number, [\n\t'toExponential', 'toFixed', 'toLocaleString', 'toPrecision'\n])('Function', Function, [\n\t'apply', 'call', 'bind'\n])('RegExp', RegExp, [\n\t'exec', 'test'\n])('Object', Object, [\n\t'create', 'defineProperty', 'defineProperties', 'keys',\n\t'getPrototypeOf', 'getOwnPropertyDescriptor', 'getOwnPropertyNames',\n\t'preventExtensions', 'isExtensible', 'seal', 'isSealed', 'freeze', 'isFrozen'\n])('Date', Date, ['now']);\n\nObject.extend = extend.overloadSetter();\n\nDate.extend('now', function(){\n\treturn +(new Date);\n});\n\nnew Type('Boolean', Boolean);\n\n// fixes NaN returning as Number\n\nNumber.prototype.$family = function(){\n\treturn isFinite(this) ? 'number' : 'null';\n}.hide();\n\n// Number.random\n\nNumber.extend('random', function(min, max){\n\treturn Math.floor(Math.random() * (max - min + 1) + min);\n});\n\n// forEach, each\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nObject.extend('forEach', function(object, fn, bind){\n\tfor (var key in object){\n\t\tif (hasOwnProperty.call(object, key)) fn.call(bind, object[key], key, object);\n\t}\n});\n\nObject.each = Object.forEach;\n\nArray.implement({\n\n\tforEach: function(fn, bind){\n\t\tfor (var i = 0, l = this.length; i < l; i++){\n\t\t\tif (i in this) fn.call(bind, this[i], i, this);\n\t\t}\n\t},\n\n\teach: function(fn, bind){\n\t\tArray.forEach(this, fn, bind);\n\t\treturn this;\n\t}\n\n});\n\n// Array & Object cloning, Object merging and appending\n\nvar cloneOf = function(item){\n\tswitch (typeOf(item)){\n\t\tcase 'array': return item.clone();\n\t\tcase 'object': return Object.clone(item);\n\t\tdefault: return item;\n\t}\n};\n\nArray.implement('clone', function(){\n\tvar i = this.length, clone = new Array(i);\n\twhile (i--) clone[i] = cloneOf(this[i]);\n\treturn clone;\n});\n\nvar mergeOne = function(source, key, current){\n\tswitch (typeOf(current)){\n\t\tcase 'object':\n\t\t\tif (typeOf(source[key]) == 'object') Object.merge(source[key], current);\n\t\t\telse source[key] = Object.clone(current);\n\t\tbreak;\n\t\tcase 'array': source[key] = current.clone(); break;\n\t\tdefault: source[key] = current;\n\t}\n\treturn source;\n};\n\nObject.extend({\n\n\tmerge: function(source, k, v){\n\t\tif (typeOf(k) == 'string') return mergeOne(source, k, v);\n\t\tfor (var i = 1, l = arguments.length; i < l; i++){\n\t\t\tvar object = arguments[i];\n\t\t\tfor (var key in object) mergeOne(source, key, object[key]);\n\t\t}\n\t\treturn source;\n\t},\n\n\tclone: function(object){\n\t\tvar clone = {};\n\t\tfor (var key in object) clone[key] = cloneOf(object[key]);\n\t\treturn clone;\n\t},\n\n\tappend: function(original){\n\t\tfor (var i = 1, l = arguments.length; i < l; i++){\n\t\t\tvar extended = arguments[i] || {};\n\t\t\tfor (var key in extended) original[key] = extended[key];\n\t\t}\n\t\treturn original;\n\t}\n\n});\n\n// Object-less types\n\n['Object', 'WhiteSpace', 'TextNode', 'Collection', 'Arguments'].each(function(name){\n\tnew Type(name);\n});\n\n// Unique ID\n\nvar UID = Date.now();\n\nString.extend('uniqueID', function(){\n\treturn (UID++).toString(36);\n});\n\n\n\n})();\n\n\n/*\n---\n\nname: Array\n\ndescription: Contains Array Prototypes like each, contains, and erase.\n\nlicense: MIT-style license.\n\nrequires: Type\n\nprovides: Array\n\n...\n*/\n\nArray.implement({\n\n\t/**/\n\tevery: function(fn, bind){\n\t\tfor (var i = 0, l = this.length >>> 0; i < l; i++){\n\t\t\tif ((i in this) && !fn.call(bind, this[i], i, this)) return false;\n\t\t}\n\t\treturn true;\n\t},\n\n\tfilter: function(fn, bind){\n\t\tvar results = [];\n\t\tfor (var value, i = 0, l = this.length >>> 0; i < l; i++) if (i in this){\n\t\t\tvalue = this[i];\n\t\t\tif (fn.call(bind, value, i, this)) results.push(value);\n\t\t}\n\t\treturn results;\n\t},\n\n\tindexOf: function(item, from){\n\t\tvar length = this.length >>> 0;\n\t\tfor (var i = (from < 0) ? Math.max(0, length + from) : from || 0; i < length; i++){\n\t\t\tif (this[i] === item) return i;\n\t\t}\n\t\treturn -1;\n\t},\n\n\tmap: function(fn, bind){\n\t\tvar length = this.length >>> 0, results = Array(length);\n\t\tfor (var i = 0; i < length; i++){\n\t\t\tif (i in this) results[i] = fn.call(bind, this[i], i, this);\n\t\t}\n\t\treturn results;\n\t},\n\n\tsome: function(fn, bind){\n\t\tfor (var i = 0, l = this.length >>> 0; i < l; i++){\n\t\t\tif ((i in this) && fn.call(bind, this[i], i, this)) return true;\n\t\t}\n\t\treturn false;\n\t},\n\t/**/\n\n\tclean: function(){\n\t\treturn this.filter(function(item){\n\t\t\treturn item != null;\n\t\t});\n\t},\n\n\tinvoke: function(methodName){\n\t\tvar args = Array.slice(arguments, 1);\n\t\treturn this.map(function(item){\n\t\t\treturn item[methodName].apply(item, args);\n\t\t});\n\t},\n\n\tassociate: function(keys){\n\t\tvar obj = {}, length = Math.min(this.length, keys.length);\n\t\tfor (var i = 0; i < length; i++) obj[keys[i]] = this[i];\n\t\treturn obj;\n\t},\n\n\tlink: function(object){\n\t\tvar result = {};\n\t\tfor (var i = 0, l = this.length; i < l; i++){\n\t\t\tfor (var key in object){\n\t\t\t\tif (object[key](this[i])){\n\t\t\t\t\tresult[key] = this[i];\n\t\t\t\t\tdelete object[key];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t},\n\n\tcontains: function(item, from){\n\t\treturn this.indexOf(item, from) != -1;\n\t},\n\n\tappend: function(array){\n\t\tthis.push.apply(this, array);\n\t\treturn this;\n\t},\n\n\tgetLast: function(){\n\t\treturn (this.length) ? this[this.length - 1] : null;\n\t},\n\n\tgetRandom: function(){\n\t\treturn (this.length) ? this[Number.random(0, this.length - 1)] : null;\n\t},\n\n\tinclude: function(item){\n\t\tif (!this.contains(item)) this.push(item);\n\t\treturn this;\n\t},\n\n\tcombine: function(array){\n\t\tfor (var i = 0, l = array.length; i < l; i++) this.include(array[i]);\n\t\treturn this;\n\t},\n\n\terase: function(item){\n\t\tfor (var i = this.length; i--;){\n\t\t\tif (this[i] === item) this.splice(i, 1);\n\t\t}\n\t\treturn this;\n\t},\n\n\tempty: function(){\n\t\tthis.length = 0;\n\t\treturn this;\n\t},\n\n\tflatten: function(){\n\t\tvar array = [];\n\t\tfor (var i = 0, l = this.length; i < l; i++){\n\t\t\tvar type = typeOf(this[i]);\n\t\t\tif (type == 'null') continue;\n\t\t\tarray = array.concat((type == 'array' || type == 'collection' || type == 'arguments' || instanceOf(this[i], Array)) ? Array.flatten(this[i]) : this[i]);\n\t\t}\n\t\treturn array;\n\t},\n\n\tpick: function(){\n\t\tfor (var i = 0, l = this.length; i < l; i++){\n\t\t\tif (this[i] != null) return this[i];\n\t\t}\n\t\treturn null;\n\t},\n\n\thexToRgb: function(array){\n\t\tif (this.length != 3) return null;\n\t\tvar rgb = this.map(function(value){\n\t\t\tif (value.length == 1) value += value;\n\t\t\treturn value.toInt(16);\n\t\t});\n\t\treturn (array) ? rgb : 'rgb(' + rgb + ')';\n\t},\n\n\trgbToHex: function(array){\n\t\tif (this.length < 3) return null;\n\t\tif (this.length == 4 && this[3] == 0 && !array) return 'transparent';\n\t\tvar hex = [];\n\t\tfor (var i = 0; i < 3; i++){\n\t\t\tvar bit = (this[i] - 0).toString(16);\n\t\t\thex.push((bit.length == 1) ? '0' + bit : bit);\n\t\t}\n\t\treturn (array) ? hex : '#' + hex.join('');\n\t}\n\n});\n\n\n\n\n/*\n---\n\nname: String\n\ndescription: Contains String Prototypes like camelCase, capitalize, test, and toInt.\n\nlicense: MIT-style license.\n\nrequires: Type\n\nprovides: String\n\n...\n*/\n\nString.implement({\n\n\ttest: function(regex, params){\n\t\treturn ((typeOf(regex) == 'regexp') ? regex : new RegExp('' + regex, params)).test(this);\n\t},\n\n\tcontains: function(string, separator){\n\t\treturn (separator) ? (separator + this + separator).indexOf(separator + string + separator) > -1 : String(this).indexOf(string) > -1;\n\t},\n\n\ttrim: function(){\n\t\treturn String(this).replace(/^\\s+|\\s+$/g, '');\n\t},\n\n\tclean: function(){\n\t\treturn String(this).replace(/\\s+/g, ' ').trim();\n\t},\n\n\tcamelCase: function(){\n\t\treturn String(this).replace(/-\\D/g, function(match){\n\t\t\treturn match.charAt(1).toUpperCase();\n\t\t});\n\t},\n\n\thyphenate: function(){\n\t\treturn String(this).replace(/[A-Z]/g, function(match){\n\t\t\treturn ('-' + match.charAt(0).toLowerCase());\n\t\t});\n\t},\n\n\tcapitalize: function(){\n\t\treturn String(this).replace(/\\b[a-z]/g, function(match){\n\t\t\treturn match.toUpperCase();\n\t\t});\n\t},\n\n\tescapeRegExp: function(){\n\t\treturn String(this).replace(/([-.*+?^${}()|[\\]\\/\\\\])/g, '\\\\$1');\n\t},\n\n\ttoInt: function(base){\n\t\treturn parseInt(this, base || 10);\n\t},\n\n\ttoFloat: function(){\n\t\treturn parseFloat(this);\n\t},\n\n\thexToRgb: function(array){\n\t\tvar hex = String(this).match(/^#?(\\w{1,2})(\\w{1,2})(\\w{1,2})$/);\n\t\treturn (hex) ? hex.slice(1).hexToRgb(array) : null;\n\t},\n\n\trgbToHex: function(array){\n\t\tvar rgb = String(this).match(/\\d{1,3}/g);\n\t\treturn (rgb) ? rgb.rgbToHex(array) : null;\n\t},\n\n\tsubstitute: function(object, regexp){\n\t\treturn String(this).replace(regexp || (/\\\\?\\{([^{}]+)\\}/g), function(match, name){\n\t\t\tif (match.charAt(0) == '\\\\') return match.slice(1);\n\t\t\treturn (object[name] != null) ? object[name] : '';\n\t\t});\n\t}\n\n});\n\n\n/*\n---\n\nname: Number\n\ndescription: Contains Number Prototypes like limit, round, times, and ceil.\n\nlicense: MIT-style license.\n\nrequires: Type\n\nprovides: Number\n\n...\n*/\n\nNumber.implement({\n\n\tlimit: function(min, max){\n\t\treturn Math.min(max, Math.max(min, this));\n\t},\n\n\tround: function(precision){\n\t\tprecision = Math.pow(10, precision || 0).toFixed(precision < 0 ? -precision : 0);\n\t\treturn Math.round(this * precision) / precision;\n\t},\n\n\ttimes: function(fn, bind){\n\t\tfor (var i = 0; i < this; i++) fn.call(bind, i, this);\n\t},\n\n\ttoFloat: function(){\n\t\treturn parseFloat(this);\n\t},\n\n\ttoInt: function(base){\n\t\treturn parseInt(this, base || 10);\n\t}\n\n});\n\nNumber.alias('each', 'times');\n\n(function(math){\n\tvar methods = {};\n\tmath.each(function(name){\n\t\tif (!Number[name]) methods[name] = function(){\n\t\t\treturn Math[name].apply(null, [this].concat(Array.from(arguments)));\n\t\t};\n\t});\n\tNumber.implement(methods);\n})(['abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'exp', 'floor', 'log', 'max', 'min', 'pow', 'sin', 'sqrt', 'tan']);\n\n\n/*\n---\n\nname: Function\n\ndescription: Contains Function Prototypes like create, bind, pass, and delay.\n\nlicense: MIT-style license.\n\nrequires: Type\n\nprovides: Function\n\n...\n*/\n\nFunction.extend({\n\n\tattempt: function(){\n\t\tfor (var i = 0, l = arguments.length; i < l; i++){\n\t\t\ttry {\n\t\t\t\treturn arguments[i]();\n\t\t\t} catch (e){}\n\t\t}\n\t\treturn null;\n\t}\n\n});\n\nFunction.implement({\n\n\tattempt: function(args, bind){\n\t\ttry {\n\t\t\treturn this.apply(bind, Array.from(args));\n\t\t} catch (e){}\n\n\t\treturn null;\n\t},\n\n\t/**/\n\tbind: function(that){\n\t\tvar self = this,\n\t\t\targs = arguments.length > 1 ? Array.slice(arguments, 1) : null,\n\t\t\tF = function(){};\n\n\t\tvar bound = function(){\n\t\t\tvar context = that, length = arguments.length;\n\t\t\tif (this instanceof bound){\n\t\t\t\tF.prototype = self.prototype;\n\t\t\t\tcontext = new F;\n\t\t\t}\n\t\t\tvar result = (!args && !length)\n\t\t\t\t? self.call(context)\n\t\t\t\t: self.apply(context, args && length ? args.concat(Array.slice(arguments)) : args || arguments);\n\t\t\treturn context == that ? result : context;\n\t\t};\n\t\treturn bound;\n\t},\n\t/**/\n\n\tpass: function(args, bind){\n\t\tvar self = this;\n\t\tif (args != null) args = Array.from(args);\n\t\treturn function(){\n\t\t\treturn self.apply(bind, args || arguments);\n\t\t};\n\t},\n\n\tdelay: function(delay, bind, args){\n\t\treturn setTimeout(this.pass((args == null ? [] : args), bind), delay);\n\t},\n\n\tperiodical: function(periodical, bind, args){\n\t\treturn setInterval(this.pass((args == null ? [] : args), bind), periodical);\n\t}\n\n});\n\n\n\n\n/*\n---\n\nname: Object\n\ndescription: Object generic methods\n\nlicense: MIT-style license.\n\nrequires: Type\n\nprovides: [Object, Hash]\n\n...\n*/\n\n(function(){\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nObject.extend({\n\n\tsubset: function(object, keys){\n\t\tvar results = {};\n\t\tfor (var i = 0, l = keys.length; i < l; i++){\n\t\t\tvar k = keys[i];\n\t\t\tif (k in object) results[k] = object[k];\n\t\t}\n\t\treturn results;\n\t},\n\n\tmap: function(object, fn, bind){\n\t\tvar results = {};\n\t\tfor (var key in object){\n\t\t\tif (hasOwnProperty.call(object, key)) results[key] = fn.call(bind, object[key], key, object);\n\t\t}\n\t\treturn results;\n\t},\n\n\tfilter: function(object, fn, bind){\n\t\tvar results = {};\n\t\tfor (var key in object){\n\t\t\tvar value = object[key];\n\t\t\tif (hasOwnProperty.call(object, key) && fn.call(bind, value, key, object)) results[key] = value;\n\t\t}\n\t\treturn results;\n\t},\n\n\tevery: function(object, fn, bind){\n\t\tfor (var key in object){\n\t\t\tif (hasOwnProperty.call(object, key) && !fn.call(bind, object[key], key)) return false;\n\t\t}\n\t\treturn true;\n\t},\n\n\tsome: function(object, fn, bind){\n\t\tfor (var key in object){\n\t\t\tif (hasOwnProperty.call(object, key) && fn.call(bind, object[key], key)) return true;\n\t\t}\n\t\treturn false;\n\t},\n\n\tkeys: function(object){\n\t\tvar keys = [];\n\t\tfor (var key in object){\n\t\t\tif (hasOwnProperty.call(object, key)) keys.push(key);\n\t\t}\n\t\treturn keys;\n\t},\n\n\tvalues: function(object){\n\t\tvar values = [];\n\t\tfor (var key in object){\n\t\t\tif (hasOwnProperty.call(object, key)) values.push(object[key]);\n\t\t}\n\t\treturn values;\n\t},\n\n\tgetLength: function(object){\n\t\treturn Object.keys(object).length;\n\t},\n\n\tkeyOf: function(object, value){\n\t\tfor (var key in object){\n\t\t\tif (hasOwnProperty.call(object, key) && object[key] === value) return key;\n\t\t}\n\t\treturn null;\n\t},\n\n\tcontains: function(object, value){\n\t\treturn Object.keyOf(object, value) != null;\n\t},\n\n\ttoQueryString: function(object, base){\n\t\tvar queryString = [];\n\n\t\tObject.each(object, function(value, key){\n\t\t\tif (base) key = base + '[' + key + ']';\n\t\t\tvar result;\n\t\t\tswitch (typeOf(value)){\n\t\t\t\tcase 'object': result = Object.toQueryString(value, key); break;\n\t\t\t\tcase 'array':\n\t\t\t\t\tvar qs = {};\n\t\t\t\t\tvalue.each(function(val, i){\n\t\t\t\t\t\tqs[i] = val;\n\t\t\t\t\t});\n\t\t\t\t\tresult = Object.toQueryString(qs, key);\n\t\t\t\tbreak;\n\t\t\t\tdefault: result = key + '=' + encodeURIComponent(value);\n\t\t\t}\n\t\t\tif (value != null) queryString.push(result);\n\t\t});\n\n\t\treturn queryString.join('&');\n\t}\n\n});\n\n})();\n\n\n\n\n/*\n---\n\nname: Browser\n\ndescription: The Browser Object. Contains Browser initialization, Window and Document, and the Browser Hash.\n\nlicense: MIT-style license.\n\nrequires: [Array, Function, Number, String]\n\nprovides: [Browser, Window, Document]\n\n...\n*/\n\n(function(){\n\nvar document = this.document;\nvar window = document.window = this;\n\nvar ua = navigator.userAgent.toLowerCase(),\n\tplatform = navigator.platform.toLowerCase(),\n\tUA = ua.match(/(opera|ie|firefox|chrome|version)[\\s\\/:]([\\w\\d\\.]+)?.*?(safari|version[\\s\\/:]([\\w\\d\\.]+)|$)/) || [null, 'unknown', 0],\n\tmode = UA[1] == 'ie' && document.documentMode;\n\nvar Browser = this.Browser = {\n\n\textend: Function.prototype.extend,\n\n\tname: (UA[1] == 'version') ? UA[3] : UA[1],\n\n\tversion: mode || parseFloat((UA[1] == 'opera' && UA[4]) ? UA[4] : UA[2]),\n\n\tPlatform: {\n\t\tname: ua.match(/ip(?:ad|od|hone)/) ? 'ios' : (ua.match(/(?:webos|android)/) || platform.match(/mac|win|linux/) || ['other'])[0]\n\t},\n\n\tFeatures: {\n\t\txpath: !!(document.evaluate),\n\t\tair: !!(window.runtime),\n\t\tquery: !!(document.querySelector),\n\t\tjson: !!(window.JSON)\n\t},\n\n\tPlugins: {}\n\n};\n\nBrowser[Browser.name] = true;\nBrowser[Browser.name + parseInt(Browser.version, 10)] = true;\nBrowser.Platform[Browser.Platform.name] = true;\n\n// Request\n\nBrowser.Request = (function(){\n\n\tvar XMLHTTP = function(){\n\t\treturn new XMLHttpRequest();\n\t};\n\n\tvar MSXML2 = function(){\n\t\treturn new ActiveXObject('MSXML2.XMLHTTP');\n\t};\n\n\tvar MSXML = function(){\n\t\treturn new ActiveXObject('Microsoft.XMLHTTP');\n\t};\n\n\treturn Function.attempt(function(){\n\t\tXMLHTTP();\n\t\treturn XMLHTTP;\n\t}, function(){\n\t\tMSXML2();\n\t\treturn MSXML2;\n\t}, function(){\n\t\tMSXML();\n\t\treturn MSXML;\n\t});\n\n})();\n\nBrowser.Features.xhr = !!(Browser.Request);\n\n// Flash detection\n\nvar version = (Function.attempt(function(){\n\treturn navigator.plugins['Shockwave Flash'].description;\n}, function(){\n\treturn new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version');\n}) || '0 r0').match(/\\d+/g);\n\nBrowser.Plugins.Flash = {\n\tversion: Number(version[0] || '0.' + version[1]) || 0,\n\tbuild: Number(version[2]) || 0\n};\n\n// String scripts\n\nBrowser.exec = function(text){\n\tif (!text) return text;\n\tif (window.execScript){\n\t\twindow.execScript(text);\n\t} else {\n\t\tvar script = document.createElement('script');\n\t\tscript.setAttribute('type', 'text/javascript');\n\t\tscript.text = text;\n\t\tdocument.head.appendChild(script);\n\t\tdocument.head.removeChild(script);\n\t}\n\treturn text;\n};\n\nString.implement('stripScripts', function(exec){\n\tvar scripts = '';\n\tvar text = this.replace(/]*>([\\s\\S]*?)<\\/script>/gi, function(all, code){\n\t\tscripts += code + '\\n';\n\t\treturn '';\n\t});\n\tif (exec === true) Browser.exec(scripts);\n\telse if (typeOf(exec) == 'function') exec(scripts, text);\n\treturn text;\n});\n\n// Window, Document\n\nBrowser.extend({\n\tDocument: this.Document,\n\tWindow: this.Window,\n\tElement: this.Element,\n\tEvent: this.Event\n});\n\nthis.Window = this.$constructor = new Type('Window', function(){});\n\nthis.$family = Function.from('window').hide();\n\nWindow.mirror(function(name, method){\n\twindow[name] = method;\n});\n\nthis.Document = document.$constructor = new Type('Document', function(){});\n\ndocument.$family = Function.from('document').hide();\n\nDocument.mirror(function(name, method){\n\tdocument[name] = method;\n});\n\ndocument.html = document.documentElement;\nif (!document.head) document.head = document.getElementsByTagName('head')[0];\n\nif (document.execCommand) try {\n\tdocument.execCommand(\"BackgroundImageCache\", false, true);\n} catch (e){}\n\n/**/\nif (this.attachEvent && !this.addEventListener){\n\tvar unloadEvent = function(){\n\t\tthis.detachEvent('onunload', unloadEvent);\n\t\tdocument.head = document.html = document.window = null;\n\t};\n\tthis.attachEvent('onunload', unloadEvent);\n}\n\n// IE fails on collections and )\nvar arrayFrom = Array.from;\ntry {\n\tarrayFrom(document.html.childNodes);\n} catch(e){\n\tArray.from = function(item){\n\t\tif (typeof item != 'string' && Type.isEnumerable(item) && typeOf(item) != 'array'){\n\t\t\tvar i = item.length, array = new Array(i);\n\t\t\twhile (i--) array[i] = item[i];\n\t\t\treturn array;\n\t\t}\n\t\treturn arrayFrom(item);\n\t};\n\n\tvar prototype = Array.prototype,\n\t\tslice = prototype.slice;\n\t['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift', 'concat', 'join', 'slice'].each(function(name){\n\t\tvar method = prototype[name];\n\t\tArray[name] = function(item){\n\t\t\treturn method.apply(Array.from(item), slice.call(arguments, 1));\n\t\t};\n\t});\n}\n/**/\n\n\n\n})();\n\n\n/*\n---\n\nname: Event\n\ndescription: Contains the Event Type, to make the event object cross-browser.\n\nlicense: MIT-style license.\n\nrequires: [Window, Document, Array, Function, String, Object]\n\nprovides: Event\n\n...\n*/\n\n(function() {\n\nvar _keys = {};\n\nvar DOMEvent = this.DOMEvent = new Type('DOMEvent', function(event, win){\n\tif (!win) win = window;\n\tevent = event || win.event;\n\tif (event.$extended) return event;\n\tthis.event = event;\n\tthis.$extended = true;\n\tthis.shift = event.shiftKey;\n\tthis.control = event.ctrlKey;\n\tthis.alt = event.altKey;\n\tthis.meta = event.metaKey;\n\tvar type = this.type = event.type;\n\tvar target = event.target || event.srcElement;\n\twhile (target && target.nodeType == 3) target = target.parentNode;\n\tthis.target = document.id(target);\n\n\tif (type.indexOf('key') == 0){\n\t\tvar code = this.code = (event.which || event.keyCode);\n\t\tthis.key = _keys[code];\n\t\tif (type == 'keydown'){\n\t\t\tif (code > 111 && code < 124) this.key = 'f' + (code - 111);\n\t\t\telse if (code > 95 && code < 106) this.key = code - 96;\n\t\t}\n\t\tif (this.key == null) this.key = String.fromCharCode(code).toLowerCase();\n\t} else if (type == 'click' || type == 'dblclick' || type == 'contextmenu' || type == 'DOMMouseScroll' || type.indexOf('mouse') == 0){\n\t\tvar doc = win.document;\n\t\tdoc = (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body;\n\t\tthis.page = {\n\t\t\tx: (event.pageX != null) ? event.pageX : event.clientX + doc.scrollLeft,\n\t\t\ty: (event.pageY != null) ? event.pageY : event.clientY + doc.scrollTop\n\t\t};\n\t\tthis.client = {\n\t\t\tx: (event.pageX != null) ? event.pageX - win.pageXOffset : event.clientX,\n\t\t\ty: (event.pageY != null) ? event.pageY - win.pageYOffset : event.clientY\n\t\t};\n\t\tif (type == 'DOMMouseScroll' || type == 'mousewheel')\n\t\t\tthis.wheel = (event.wheelDelta) ? event.wheelDelta / 120 : -(event.detail || 0) / 3;\n\n\t\tthis.rightClick = (event.which == 3 || event.button == 2);\n\t\tif (type == 'mouseover' || type == 'mouseout'){\n\t\t\tvar related = event.relatedTarget || event[(type == 'mouseover' ? 'from' : 'to') + 'Element'];\n\t\t\twhile (related && related.nodeType == 3) related = related.parentNode;\n\t\t\tthis.relatedTarget = document.id(related);\n\t\t}\n\t} else if (type.indexOf('touch') == 0 || type.indexOf('gesture') == 0){\n\t\tthis.rotation = event.rotation;\n\t\tthis.scale = event.scale;\n\t\tthis.targetTouches = event.targetTouches;\n\t\tthis.changedTouches = event.changedTouches;\n\t\tvar touches = this.touches = event.touches;\n\t\tif (touches && touches[0]){\n\t\t\tvar touch = touches[0];\n\t\t\tthis.page = {x: touch.pageX, y: touch.pageY};\n\t\t\tthis.client = {x: touch.clientX, y: touch.clientY};\n\t\t}\n\t}\n\n\tif (!this.client) this.client = {};\n\tif (!this.page) this.page = {};\n});\n\nDOMEvent.implement({\n\n\tstop: function(){\n\t\treturn this.preventDefault().stopPropagation();\n\t},\n\n\tstopPropagation: function(){\n\t\tif (this.event.stopPropagation) this.event.stopPropagation();\n\t\telse this.event.cancelBubble = true;\n\t\treturn this;\n\t},\n\n\tpreventDefault: function(){\n\t\tif (this.event.preventDefault) this.event.preventDefault();\n\t\telse this.event.returnValue = false;\n\t\treturn this;\n\t}\n\n});\n\nDOMEvent.defineKey = function(code, key){\n\t_keys[code] = key;\n\treturn this;\n};\n\nDOMEvent.defineKeys = DOMEvent.defineKey.overloadSetter(true);\n\nDOMEvent.defineKeys({\n\t'38': 'up', '40': 'down', '37': 'left', '39': 'right',\n\t'27': 'esc', '32': 'space', '8': 'backspace', '9': 'tab',\n\t'46': 'delete', '13': 'enter'\n});\n\n})();\n\n\n\n\n\n\n/*\n---\n\nname: Class\n\ndescription: Contains the Class Function for easily creating, extending, and implementing reusable Classes.\n\nlicense: MIT-style license.\n\nrequires: [Array, String, Function, Number]\n\nprovides: Class\n\n...\n*/\n\n(function(){\n\nvar Class = this.Class = new Type('Class', function(params){\n\tif (instanceOf(params, Function)) params = {initialize: params};\n\n\tvar newClass = function(){\n\t\treset(this);\n\t\tif (newClass.$prototyping) return this;\n\t\tthis.$caller = null;\n\t\tvar value = (this.initialize) ? this.initialize.apply(this, arguments) : this;\n\t\tthis.$caller = this.caller = null;\n\t\treturn value;\n\t}.extend(this).implement(params);\n\n\tnewClass.$constructor = Class;\n\tnewClass.prototype.$constructor = newClass;\n\tnewClass.prototype.parent = parent;\n\n\treturn newClass;\n});\n\nvar parent = function(){\n\tif (!this.$caller) throw new Error('The method \"parent\" cannot be called.');\n\tvar name = this.$caller.$name,\n\t\tparent = this.$caller.$owner.parent,\n\t\tprevious = (parent) ? parent.prototype[name] : null;\n\tif (!previous) throw new Error('The method \"' + name + '\" has no parent.');\n\treturn previous.apply(this, arguments);\n};\n\nvar reset = function(object){\n\tfor (var key in object){\n\t\tvar value = object[key];\n\t\tswitch (typeOf(value)){\n\t\t\tcase 'object':\n\t\t\t\tvar F = function(){};\n\t\t\t\tF.prototype = value;\n\t\t\t\tobject[key] = reset(new F);\n\t\t\tbreak;\n\t\t\tcase 'array': object[key] = value.clone(); break;\n\t\t}\n\t}\n\treturn object;\n};\n\nvar wrap = function(self, key, method){\n\tif (method.$origin) method = method.$origin;\n\tvar wrapper = function(){\n\t\tif (method.$protected && this.$caller == null) throw new Error('The method \"' + key + '\" cannot be called.');\n\t\tvar caller = this.caller, current = this.$caller;\n\t\tthis.caller = current; this.$caller = wrapper;\n\t\tvar result = method.apply(this, arguments);\n\t\tthis.$caller = current; this.caller = caller;\n\t\treturn result;\n\t}.extend({$owner: self, $origin: method, $name: key});\n\treturn wrapper;\n};\n\nvar implement = function(key, value, retain){\n\tif (Class.Mutators.hasOwnProperty(key)){\n\t\tvalue = Class.Mutators[key].call(this, value);\n\t\tif (value == null) return this;\n\t}\n\n\tif (typeOf(value) == 'function'){\n\t\tif (value.$hidden) return this;\n\t\tthis.prototype[key] = (retain) ? value : wrap(this, key, value);\n\t} else {\n\t\tObject.merge(this.prototype, key, value);\n\t}\n\n\treturn this;\n};\n\nvar getInstance = function(klass){\n\tklass.$prototyping = true;\n\tvar proto = new klass;\n\tdelete klass.$prototyping;\n\treturn proto;\n};\n\nClass.implement('implement', implement.overloadSetter());\n\nClass.Mutators = {\n\n\tExtends: function(parent){\n\t\tthis.parent = parent;\n\t\tthis.prototype = getInstance(parent);\n\t},\n\n\tImplements: function(items){\n\t\tArray.from(items).each(function(item){\n\t\t\tvar instance = new item;\n\t\t\tfor (var key in instance) implement.call(this, key, instance[key], true);\n\t\t}, this);\n\t}\n};\n\n})();\n\n\n/*\n---\n\nname: Class.Extras\n\ndescription: Contains Utility Classes that can be implemented into your own Classes to ease the execution of many common tasks.\n\nlicense: MIT-style license.\n\nrequires: Class\n\nprovides: [Class.Extras, Chain, Events, Options]\n\n...\n*/\n\n(function(){\n\nthis.Chain = new Class({\n\n\t$chain: [],\n\n\tchain: function(){\n\t\tthis.$chain.append(Array.flatten(arguments));\n\t\treturn this;\n\t},\n\n\tcallChain: function(){\n\t\treturn (this.$chain.length) ? this.$chain.shift().apply(this, arguments) : false;\n\t},\n\n\tclearChain: function(){\n\t\tthis.$chain.empty();\n\t\treturn this;\n\t}\n\n});\n\nvar removeOn = function(string){\n\treturn string.replace(/^on([A-Z])/, function(full, first){\n\t\treturn first.toLowerCase();\n\t});\n};\n\nthis.Events = new Class({\n\n\t$events: {},\n\n\taddEvent: function(type, fn, internal){\n\t\ttype = removeOn(type);\n\n\t\t\n\n\t\tthis.$events[type] = (this.$events[type] || []).include(fn);\n\t\tif (internal) fn.internal = true;\n\t\treturn this;\n\t},\n\n\taddEvents: function(events){\n\t\tfor (var type in events) this.addEvent(type, events[type]);\n\t\treturn this;\n\t},\n\n\tfireEvent: function(type, args, delay){\n\t\ttype = removeOn(type);\n\t\tvar events = this.$events[type];\n\t\tif (!events) return this;\n\t\targs = Array.from(args);\n\t\tevents.each(function(fn){\n\t\t\tif (delay) fn.delay(delay, this, args);\n\t\t\telse fn.apply(this, args);\n\t\t}, this);\n\t\treturn this;\n\t},\n\n\tremoveEvent: function(type, fn){\n\t\ttype = removeOn(type);\n\t\tvar events = this.$events[type];\n\t\tif (events && !fn.internal){\n\t\t\tvar index = events.indexOf(fn);\n\t\t\tif (index != -1) delete events[index];\n\t\t}\n\t\treturn this;\n\t},\n\n\tremoveEvents: function(events){\n\t\tvar type;\n\t\tif (typeOf(events) == 'object'){\n\t\t\tfor (type in events) this.removeEvent(type, events[type]);\n\t\t\treturn this;\n\t\t}\n\t\tif (events) events = removeOn(events);\n\t\tfor (type in this.$events){\n\t\t\tif (events && events != type) continue;\n\t\t\tvar fns = this.$events[type];\n\t\t\tfor (var i = fns.length; i--;) if (i in fns){\n\t\t\t\tthis.removeEvent(type, fns[i]);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n});\n\nthis.Options = new Class({\n\n\tsetOptions: function(){\n\t\tvar options = this.options = Object.merge.apply(null, [{}, this.options].append(arguments));\n\t\tif (this.addEvent) for (var option in options){\n\t\t\tif (typeOf(options[option]) != 'function' || !(/^on[A-Z]/).test(option)) continue;\n\t\t\tthis.addEvent(option, options[option]);\n\t\t\tdelete options[option];\n\t\t}\n\t\treturn this;\n\t}\n\n});\n\n})();\n\n\n/*\n---\nname: Slick.Parser\ndescription: Standalone CSS3 Selector parser\nprovides: Slick.Parser\n...\n*/\n\n;(function(){\n\nvar parsed,\n\tseparatorIndex,\n\tcombinatorIndex,\n\treversed,\n\tcache = {},\n\treverseCache = {},\n\treUnescape = /\\\\/g;\n\nvar parse = function(expression, isReversed){\n\tif (expression == null) return null;\n\tif (expression.Slick === true) return expression;\n\texpression = ('' + expression).replace(/^\\s+|\\s+$/g, '');\n\treversed = !!isReversed;\n\tvar currentCache = (reversed) ? reverseCache : cache;\n\tif (currentCache[expression]) return currentCache[expression];\n\tparsed = {\n\t\tSlick: true,\n\t\texpressions: [],\n\t\traw: expression,\n\t\treverse: function(){\n\t\t\treturn parse(this.raw, true);\n\t\t}\n\t};\n\tseparatorIndex = -1;\n\twhile (expression != (expression = expression.replace(regexp, parser)));\n\tparsed.length = parsed.expressions.length;\n\treturn currentCache[parsed.raw] = (reversed) ? reverse(parsed) : parsed;\n};\n\nvar reverseCombinator = function(combinator){\n\tif (combinator === '!') return ' ';\n\telse if (combinator === ' ') return '!';\n\telse if ((/^!/).test(combinator)) return combinator.replace(/^!/, '');\n\telse return '!' + combinator;\n};\n\nvar reverse = function(expression){\n\tvar expressions = expression.expressions;\n\tfor (var i = 0; i < expressions.length; i++){\n\t\tvar exp = expressions[i];\n\t\tvar last = {parts: [], tag: '*', combinator: reverseCombinator(exp[0].combinator)};\n\n\t\tfor (var j = 0; j < exp.length; j++){\n\t\t\tvar cexp = exp[j];\n\t\t\tif (!cexp.reverseCombinator) cexp.reverseCombinator = ' ';\n\t\t\tcexp.combinator = cexp.reverseCombinator;\n\t\t\tdelete cexp.reverseCombinator;\n\t\t}\n\n\t\texp.reverse().push(last);\n\t}\n\treturn expression;\n};\n\nvar escapeRegExp = function(string){// Credit: XRegExp 0.6.1 (c) 2007-2008 Steven Levithan MIT License\n\treturn string.replace(/[-[\\]{}()*+?.\\\\^$|,#\\s]/g, function(match){\n\t\treturn '\\\\' + match;\n\t});\n};\n\nvar regexp = new RegExp(\n/*\n#!/usr/bin/env ruby\nputs \"\\t\\t\" + DATA.read.gsub(/\\(\\?x\\)|\\s+#.*$|\\s+|\\\\$|\\\\n/,'')\n__END__\n\t\"(?x)^(?:\\\n\t \\\\s* ( , ) \\\\s* # Separator \\n\\\n\t| \\\\s* ( + ) \\\\s* # Combinator \\n\\\n\t| ( \\\\s+ ) # CombinatorChildren \\n\\\n\t| ( + | \\\\* ) # Tag \\n\\\n\t| \\\\# ( + ) # ID \\n\\\n\t| \\\\. ( + ) # ClassName \\n\\\n\t| # Attribute \\n\\\n\t\\\\[ \\\n\t\t\\\\s* (+) (?: \\\n\t\t\t\\\\s* ([*^$!~|]?=) (?: \\\n\t\t\t\t\\\\s* (?:\\\n\t\t\t\t\t([\\\"']?)(.*?)\\\\9 \\\n\t\t\t\t)\\\n\t\t\t) \\\n\t\t)? \\\\s* \\\n\t\\\\](?!\\\\]) \\n\\\n\t| :+ ( + )(?:\\\n\t\\\\( (?:\\\n\t\t(?:([\\\"'])([^\\\\12]*)\\\\12)|((?:\\\\([^)]+\\\\)|[^()]*)+)\\\n\t) \\\\)\\\n\t)?\\\n\t)\"\n*/\n\t\"^(?:\\\\s*(,)\\\\s*|\\\\s*(+)\\\\s*|(\\\\s+)|(+|\\\\*)|\\\\#(+)|\\\\.(+)|\\\\[\\\\s*(+)(?:\\\\s*([*^$!~|]?=)(?:\\\\s*(?:([\\\"']?)(.*?)\\\\9)))?\\\\s*\\\\](?!\\\\])|(:+)(+)(?:\\\\((?:(?:([\\\"'])([^\\\\13]*)\\\\13)|((?:\\\\([^)]+\\\\)|[^()]*)+))\\\\))?)\"\n\t.replace(//, '[' + escapeRegExp(\">+~`!@$%^&={}\\\\;/g, '(?:[\\\\w\\\\u00a1-\\\\uFFFF-]|\\\\\\\\[^\\\\s0-9a-f])')\n\t.replace(//g, '(?:[:\\\\w\\\\u00a1-\\\\uFFFF-]|\\\\\\\\[^\\\\s0-9a-f])')\n);\n\nfunction parser(\n\trawMatch,\n\n\tseparator,\n\tcombinator,\n\tcombinatorChildren,\n\n\ttagName,\n\tid,\n\tclassName,\n\n\tattributeKey,\n\tattributeOperator,\n\tattributeQuote,\n\tattributeValue,\n\n\tpseudoMarker,\n\tpseudoClass,\n\tpseudoQuote,\n\tpseudoClassQuotedValue,\n\tpseudoClassValue\n){\n\tif (separator || separatorIndex === -1){\n\t\tparsed.expressions[++separatorIndex] = [];\n\t\tcombinatorIndex = -1;\n\t\tif (separator) return '';\n\t}\n\n\tif (combinator || combinatorChildren || combinatorIndex === -1){\n\t\tcombinator = combinator || ' ';\n\t\tvar currentSeparator = parsed.expressions[separatorIndex];\n\t\tif (reversed && currentSeparator[combinatorIndex])\n\t\t\tcurrentSeparator[combinatorIndex].reverseCombinator = reverseCombinator(combinator);\n\t\tcurrentSeparator[++combinatorIndex] = {combinator: combinator, tag: '*'};\n\t}\n\n\tvar currentParsed = parsed.expressions[separatorIndex][combinatorIndex];\n\n\tif (tagName){\n\t\tcurrentParsed.tag = tagName.replace(reUnescape, '');\n\n\t} else if (id){\n\t\tcurrentParsed.id = id.replace(reUnescape, '');\n\n\t} else if (className){\n\t\tclassName = className.replace(reUnescape, '');\n\n\t\tif (!currentParsed.classList) currentParsed.classList = [];\n\t\tif (!currentParsed.classes) currentParsed.classes = [];\n\t\tcurrentParsed.classList.push(className);\n\t\tcurrentParsed.classes.push({\n\t\t\tvalue: className,\n\t\t\tregexp: new RegExp('(^|\\\\s)' + escapeRegExp(className) + '(\\\\s|$)')\n\t\t});\n\n\t} else if (pseudoClass){\n\t\tpseudoClassValue = pseudoClassValue || pseudoClassQuotedValue;\n\t\tpseudoClassValue = pseudoClassValue ? pseudoClassValue.replace(reUnescape, '') : null;\n\n\t\tif (!currentParsed.pseudos) currentParsed.pseudos = [];\n\t\tcurrentParsed.pseudos.push({\n\t\t\tkey: pseudoClass.replace(reUnescape, ''),\n\t\t\tvalue: pseudoClassValue,\n\t\t\ttype: pseudoMarker.length == 1 ? 'class' : 'element'\n\t\t});\n\n\t} else if (attributeKey){\n\t\tattributeKey = attributeKey.replace(reUnescape, '');\n\t\tattributeValue = (attributeValue || '').replace(reUnescape, '');\n\n\t\tvar test, regexp;\n\n\t\tswitch (attributeOperator){\n\t\t\tcase '^=' : regexp = new RegExp( '^'+ escapeRegExp(attributeValue) ); break;\n\t\t\tcase '$=' : regexp = new RegExp( escapeRegExp(attributeValue) +'$' ); break;\n\t\t\tcase '~=' : regexp = new RegExp( '(^|\\\\s)'+ escapeRegExp(attributeValue) +'(\\\\s|$)' ); break;\n\t\t\tcase '|=' : regexp = new RegExp( '^'+ escapeRegExp(attributeValue) +'(-|$)' ); break;\n\t\t\tcase '=' : test = function(value){\n\t\t\t\treturn attributeValue == value;\n\t\t\t}; break;\n\t\t\tcase '*=' : test = function(value){\n\t\t\t\treturn value && value.indexOf(attributeValue) > -1;\n\t\t\t}; break;\n\t\t\tcase '!=' : test = function(value){\n\t\t\t\treturn attributeValue != value;\n\t\t\t}; break;\n\t\t\tdefault : test = function(value){\n\t\t\t\treturn !!value;\n\t\t\t};\n\t\t}\n\n\t\tif (attributeValue == '' && (/^[*$^]=$/).test(attributeOperator)) test = function(){\n\t\t\treturn false;\n\t\t};\n\n\t\tif (!test) test = function(value){\n\t\t\treturn value && regexp.test(value);\n\t\t};\n\n\t\tif (!currentParsed.attributes) currentParsed.attributes = [];\n\t\tcurrentParsed.attributes.push({\n\t\t\tkey: attributeKey,\n\t\t\toperator: attributeOperator,\n\t\t\tvalue: attributeValue,\n\t\t\ttest: test\n\t\t});\n\n\t}\n\n\treturn '';\n};\n\n// Slick NS\n\nvar Slick = (this.Slick || {});\n\nSlick.parse = function(expression){\n\treturn parse(expression);\n};\n\nSlick.escapeRegExp = escapeRegExp;\n\nif (!this.Slick) this.Slick = Slick;\n\n}).apply(/**/(typeof exports != 'undefined') ? exports : /**/this);\n\n\n/*\n---\nname: Slick.Finder\ndescription: The new, superfast css selector engine.\nprovides: Slick.Finder\nrequires: Slick.Parser\n...\n*/\n\n;(function(){\n\nvar local = {},\n\tfeaturesCache = {},\n\ttoString = Object.prototype.toString;\n\n// Feature / Bug detection\n\nlocal.isNativeCode = function(fn){\n\treturn (/\\{\\s*\\[native code\\]\\s*\\}/).test('' + fn);\n};\n\nlocal.isXML = function(document){\n\treturn (!!document.xmlVersion) || (!!document.xml) || (toString.call(document) == '[object XMLDocument]') ||\n\t(document.nodeType == 9 && document.documentElement.nodeName != 'HTML');\n};\n\nlocal.setDocument = function(document){\n\n\t// convert elements / window arguments to document. if document cannot be extrapolated, the function returns.\n\tvar nodeType = document.nodeType;\n\tif (nodeType == 9); // document\n\telse if (nodeType) document = document.ownerDocument; // node\n\telse if (document.navigator) document = document.document; // window\n\telse return;\n\n\t// check if it's the old document\n\n\tif (this.document === document) return;\n\tthis.document = document;\n\n\t// check if we have done feature detection on this document before\n\n\tvar root = document.documentElement,\n\t\trootUid = this.getUIDXML(root),\n\t\tfeatures = featuresCache[rootUid],\n\t\tfeature;\n\n\tif (features){\n\t\tfor (feature in features){\n\t\t\tthis[feature] = features[feature];\n\t\t}\n\t\treturn;\n\t}\n\n\tfeatures = featuresCache[rootUid] = {};\n\n\tfeatures.root = root;\n\tfeatures.isXMLDocument = this.isXML(document);\n\n\tfeatures.brokenStarGEBTN\n\t= features.starSelectsClosedQSA\n\t= features.idGetsName\n\t= features.brokenMixedCaseQSA\n\t= features.brokenGEBCN\n\t= features.brokenCheckedQSA\n\t= features.brokenEmptyAttributeQSA\n\t= features.isHTMLDocument\n\t= features.nativeMatchesSelector\n\t= false;\n\n\tvar starSelectsClosed, starSelectsComments,\n\t\tbrokenSecondClassNameGEBCN, cachedGetElementsByClassName,\n\t\tbrokenFormAttributeGetter;\n\n\tvar selected, id = 'slick_uniqueid';\n\tvar testNode = document.createElement('div');\n\n\tvar testRoot = document.body || document.getElementsByTagName('body')[0] || root;\n\ttestRoot.appendChild(testNode);\n\n\t// on non-HTML documents innerHTML and getElementsById doesnt work properly\n\ttry {\n\t\ttestNode.innerHTML = '';\n\t\tfeatures.isHTMLDocument = !!document.getElementById(id);\n\t} catch(e){};\n\n\tif (features.isHTMLDocument){\n\n\t\ttestNode.style.display = 'none';\n\n\t\t// IE returns comment nodes for getElementsByTagName('*') for some documents\n\t\ttestNode.appendChild(document.createComment(''));\n\t\tstarSelectsComments = (testNode.getElementsByTagName('*').length > 1);\n\n\t\t// IE returns closed nodes (EG:\"\") for getElementsByTagName('*') for some documents\n\t\ttry {\n\t\t\ttestNode.innerHTML = 'foo';\n\t\t\tselected = testNode.getElementsByTagName('*');\n\t\t\tstarSelectsClosed = (selected && !!selected.length && selected[0].nodeName.charAt(0) == '/');\n\t\t} catch(e){};\n\n\t\tfeatures.brokenStarGEBTN = starSelectsComments || starSelectsClosed;\n\n\t\t// IE returns elements with the name instead of just id for getElementsById for some documents\n\t\ttry {\n\t\t\ttestNode.innerHTML = '';\n\t\t\tfeatures.idGetsName = document.getElementById(id) === testNode.firstChild;\n\t\t} catch(e){};\n\n\t\tif (testNode.getElementsByClassName){\n\n\t\t\t// Safari 3.2 getElementsByClassName caches results\n\t\t\ttry {\n\t\t\t\ttestNode.innerHTML = '';\n\t\t\t\ttestNode.getElementsByClassName('b').length;\n\t\t\t\ttestNode.firstChild.className = 'b';\n\t\t\t\tcachedGetElementsByClassName = (testNode.getElementsByClassName('b').length != 2);\n\t\t\t} catch(e){};\n\n\t\t\t// Opera 9.6 getElementsByClassName doesnt detects the class if its not the first one\n\t\t\ttry {\n\t\t\t\ttestNode.innerHTML = '';\n\t\t\t\tbrokenSecondClassNameGEBCN = (testNode.getElementsByClassName('a').length != 2);\n\t\t\t} catch(e){};\n\n\t\t\tfeatures.brokenGEBCN = cachedGetElementsByClassName || brokenSecondClassNameGEBCN;\n\t\t}\n\n\t\tif (testNode.querySelectorAll){\n\t\t\t// IE 8 returns closed nodes (EG:\"\") for querySelectorAll('*') for some documents\n\t\t\ttry {\n\t\t\t\ttestNode.innerHTML = 'foo';\n\t\t\t\tselected = testNode.querySelectorAll('*');\n\t\t\t\tfeatures.starSelectsClosedQSA = (selected && !!selected.length && selected[0].nodeName.charAt(0) == '/');\n\t\t\t} catch(e){};\n\n\t\t\t// Safari 3.2 querySelectorAll doesnt work with mixedcase on quirksmode\n\t\t\ttry {\n\t\t\t\ttestNode.innerHTML = '';\n\t\t\t\tfeatures.brokenMixedCaseQSA = !testNode.querySelectorAll('.MiX').length;\n\t\t\t} catch(e){};\n\n\t\t\t// Webkit and Opera dont return selected options on querySelectorAll\n\t\t\ttry {\n\t\t\t\ttestNode.innerHTML = '';\n\t\t\t\tfeatures.brokenCheckedQSA = (testNode.querySelectorAll(':checked').length == 0);\n\t\t\t} catch(e){};\n\n\t\t\t// IE returns incorrect results for attr[*^$]=\"\" selectors on querySelectorAll\n\t\t\ttry {\n\t\t\t\ttestNode.innerHTML = '';\n\t\t\t\tfeatures.brokenEmptyAttributeQSA = (testNode.querySelectorAll('[class*=\"\"]').length != 0);\n\t\t\t} catch(e){};\n\n\t\t}\n\n\t\t// IE6-7, if a form has an input of id x, form.getAttribute(x) returns a reference to the input\n\t\ttry {\n\t\t\ttestNode.innerHTML = '
';\n\t\t\tbrokenFormAttributeGetter = (testNode.firstChild.getAttribute('action') != 's');\n\t\t} catch(e){};\n\n\t\t// native matchesSelector function\n\n\t\tfeatures.nativeMatchesSelector = root.matchesSelector || /*root.msMatchesSelector ||*/ root.mozMatchesSelector || root.webkitMatchesSelector;\n\t\tif (features.nativeMatchesSelector) try {\n\t\t\t// if matchesSelector trows errors on incorrect sintaxes we can use it\n\t\t\tfeatures.nativeMatchesSelector.call(root, ':slick');\n\t\t\tfeatures.nativeMatchesSelector = null;\n\t\t} catch(e){};\n\n\t}\n\n\ttry {\n\t\troot.slick_expando = 1;\n\t\tdelete root.slick_expando;\n\t\tfeatures.getUID = this.getUIDHTML;\n\t} catch(e) {\n\t\tfeatures.getUID = this.getUIDXML;\n\t}\n\n\ttestRoot.removeChild(testNode);\n\ttestNode = selected = testRoot = null;\n\n\t// getAttribute\n\n\tfeatures.getAttribute = (features.isHTMLDocument && brokenFormAttributeGetter) ? function(node, name){\n\t\tvar method = this.attributeGetters[name];\n\t\tif (method) return method.call(node);\n\t\tvar attributeNode = node.getAttributeNode(name);\n\t\treturn (attributeNode) ? attributeNode.nodeValue : null;\n\t} : function(node, name){\n\t\tvar method = this.attributeGetters[name];\n\t\treturn (method) ? method.call(node) : node.getAttribute(name);\n\t};\n\n\t// hasAttribute\n\n\tfeatures.hasAttribute = (root && this.isNativeCode(root.hasAttribute)) ? function(node, attribute) {\n\t\treturn node.hasAttribute(attribute);\n\t} : function(node, attribute) {\n\t\tnode = node.getAttributeNode(attribute);\n\t\treturn !!(node && (node.specified || node.nodeValue));\n\t};\n\n\t// contains\n\t// FIXME: Add specs: local.contains should be different for xml and html documents?\n\tvar nativeRootContains = root && this.isNativeCode(root.contains),\n\t\tnativeDocumentContains = document && this.isNativeCode(document.contains);\n\n\tfeatures.contains = (nativeRootContains && nativeDocumentContains) ? function(context, node){\n\t\treturn context.contains(node);\n\t} : (nativeRootContains && !nativeDocumentContains) ? function(context, node){\n\t\t// IE8 does not have .contains on document.\n\t\treturn context === node || ((context === document) ? document.documentElement : context).contains(node);\n\t} : (root && root.compareDocumentPosition) ? function(context, node){\n\t\treturn context === node || !!(context.compareDocumentPosition(node) & 16);\n\t} : function(context, node){\n\t\tif (node) do {\n\t\t\tif (node === context) return true;\n\t\t} while ((node = node.parentNode));\n\t\treturn false;\n\t};\n\n\t// document order sorting\n\t// credits to Sizzle (http://sizzlejs.com/)\n\n\tfeatures.documentSorter = (root.compareDocumentPosition) ? function(a, b){\n\t\tif (!a.compareDocumentPosition || !b.compareDocumentPosition) return 0;\n\t\treturn a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;\n\t} : ('sourceIndex' in root) ? function(a, b){\n\t\tif (!a.sourceIndex || !b.sourceIndex) return 0;\n\t\treturn a.sourceIndex - b.sourceIndex;\n\t} : (document.createRange) ? function(a, b){\n\t\tif (!a.ownerDocument || !b.ownerDocument) return 0;\n\t\tvar aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();\n\t\taRange.setStart(a, 0);\n\t\taRange.setEnd(a, 0);\n\t\tbRange.setStart(b, 0);\n\t\tbRange.setEnd(b, 0);\n\t\treturn aRange.compareBoundaryPoints(Range.START_TO_END, bRange);\n\t} : null ;\n\n\troot = null;\n\n\tfor (feature in features){\n\t\tthis[feature] = features[feature];\n\t}\n};\n\n// Main Method\n\nvar reSimpleSelector = /^([#.]?)((?:[\\w-]+|\\*))$/,\n\treEmptyAttribute = /\\[.+[*$^]=(?:\"\"|'')?\\]/,\n\tqsaFailExpCache = {};\n\nlocal.search = function(context, expression, append, first){\n\n\tvar found = this.found = (first) ? null : (append || []);\n\n\tif (!context) return found;\n\telse if (context.navigator) context = context.document; // Convert the node from a window to a document\n\telse if (!context.nodeType) return found;\n\n\t// setup\n\n\tvar parsed, i,\n\t\tuniques = this.uniques = {},\n\t\thasOthers = !!(append && append.length),\n\t\tcontextIsDocument = (context.nodeType == 9);\n\n\tif (this.document !== (contextIsDocument ? context : context.ownerDocument)) this.setDocument(context);\n\n\t// avoid duplicating items already in the append array\n\tif (hasOthers) for (i = found.length; i--;) uniques[this.getUID(found[i])] = true;\n\n\t// expression checks\n\n\tif (typeof expression == 'string'){ // expression is a string\n\n\t\t/**/\n\t\tvar simpleSelector = expression.match(reSimpleSelector);\n\t\tsimpleSelectors: if (simpleSelector) {\n\n\t\t\tvar symbol = simpleSelector[1],\n\t\t\t\tname = simpleSelector[2],\n\t\t\t\tnode, nodes;\n\n\t\t\tif (!symbol){\n\n\t\t\t\tif (name == '*' && this.brokenStarGEBTN) break simpleSelectors;\n\t\t\t\tnodes = context.getElementsByTagName(name);\n\t\t\t\tif (first) return nodes[0] || null;\n\t\t\t\tfor (i = 0; node = nodes[i++];){\n\t\t\t\t\tif (!(hasOthers && uniques[this.getUID(node)])) found.push(node);\n\t\t\t\t}\n\n\t\t\t} else if (symbol == '#'){\n\n\t\t\t\tif (!this.isHTMLDocument || !contextIsDocument) break simpleSelectors;\n\t\t\t\tnode = context.getElementById(name);\n\t\t\t\tif (!node) return found;\n\t\t\t\tif (this.idGetsName && node.getAttributeNode('id').nodeValue != name) break simpleSelectors;\n\t\t\t\tif (first) return node || null;\n\t\t\t\tif (!(hasOthers && uniques[this.getUID(node)])) found.push(node);\n\n\t\t\t} else if (symbol == '.'){\n\n\t\t\t\tif (!this.isHTMLDocument || ((!context.getElementsByClassName || this.brokenGEBCN) && context.querySelectorAll)) break simpleSelectors;\n\t\t\t\tif (context.getElementsByClassName && !this.brokenGEBCN){\n\t\t\t\t\tnodes = context.getElementsByClassName(name);\n\t\t\t\t\tif (first) return nodes[0] || null;\n\t\t\t\t\tfor (i = 0; node = nodes[i++];){\n\t\t\t\t\t\tif (!(hasOthers && uniques[this.getUID(node)])) found.push(node);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvar matchClass = new RegExp('(^|\\\\s)'+ Slick.escapeRegExp(name) +'(\\\\s|$)');\n\t\t\t\t\tnodes = context.getElementsByTagName('*');\n\t\t\t\t\tfor (i = 0; node = nodes[i++];){\n\t\t\t\t\t\tclassName = node.className;\n\t\t\t\t\t\tif (!(className && matchClass.test(className))) continue;\n\t\t\t\t\t\tif (first) return node;\n\t\t\t\t\t\tif (!(hasOthers && uniques[this.getUID(node)])) found.push(node);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif (hasOthers) this.sort(found);\n\t\t\treturn (first) ? null : found;\n\n\t\t}\n\t\t/**/\n\n\t\t/**/\n\t\tquerySelector: if (context.querySelectorAll) {\n\n\t\t\tif (!this.isHTMLDocument\n\t\t\t\t|| qsaFailExpCache[expression]\n\t\t\t\t//TODO: only skip when expression is actually mixed case\n\t\t\t\t|| this.brokenMixedCaseQSA\n\t\t\t\t|| (this.brokenCheckedQSA && expression.indexOf(':checked') > -1)\n\t\t\t\t|| (this.brokenEmptyAttributeQSA && reEmptyAttribute.test(expression))\n\t\t\t\t|| (!contextIsDocument //Abort when !contextIsDocument and...\n\t\t\t\t\t// there are multiple expressions in the selector\n\t\t\t\t\t// since we currently only fix non-document rooted QSA for single expression selectors\n\t\t\t\t\t&& expression.indexOf(',') > -1\n\t\t\t\t)\n\t\t\t\t|| Slick.disableQSA\n\t\t\t) break querySelector;\n\n\t\t\tvar _expression = expression, _context = context;\n\t\t\tif (!contextIsDocument){\n\t\t\t\t// non-document rooted QSA\n\t\t\t\t// credits to Andrew Dupont\n\t\t\t\tvar currentId = _context.getAttribute('id'), slickid = 'slickid__';\n\t\t\t\t_context.setAttribute('id', slickid);\n\t\t\t\t_expression = '#' + slickid + ' ' + _expression;\n\t\t\t\tcontext = _context.parentNode;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tif (first) return context.querySelector(_expression) || null;\n\t\t\t\telse nodes = context.querySelectorAll(_expression);\n\t\t\t} catch(e) {\n\t\t\t\tqsaFailExpCache[expression] = 1;\n\t\t\t\tbreak querySelector;\n\t\t\t} finally {\n\t\t\t\tif (!contextIsDocument){\n\t\t\t\t\tif (currentId) _context.setAttribute('id', currentId);\n\t\t\t\t\telse _context.removeAttribute('id');\n\t\t\t\t\tcontext = _context;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.starSelectsClosedQSA) for (i = 0; node = nodes[i++];){\n\t\t\t\tif (node.nodeName > '@' && !(hasOthers && uniques[this.getUID(node)])) found.push(node);\n\t\t\t} else for (i = 0; node = nodes[i++];){\n\t\t\t\tif (!(hasOthers && uniques[this.getUID(node)])) found.push(node);\n\t\t\t}\n\n\t\t\tif (hasOthers) this.sort(found);\n\t\t\treturn found;\n\n\t\t}\n\t\t/**/\n\n\t\tparsed = this.Slick.parse(expression);\n\t\tif (!parsed.length) return found;\n\t} else if (expression == null){ // there is no expression\n\t\treturn found;\n\t} else if (expression.Slick){ // expression is a parsed Slick object\n\t\tparsed = expression;\n\t} else if (this.contains(context.documentElement || context, expression)){ // expression is a node\n\t\t(found) ? found.push(expression) : found = expression;\n\t\treturn found;\n\t} else { // other junk\n\t\treturn found;\n\t}\n\n\t/**//**/\n\n\t// cache elements for the nth selectors\n\n\tthis.posNTH = {};\n\tthis.posNTHLast = {};\n\tthis.posNTHType = {};\n\tthis.posNTHTypeLast = {};\n\n\t/**//**/\n\n\t// if append is null and there is only a single selector with one expression use pushArray, else use pushUID\n\tthis.push = (!hasOthers && (first || (parsed.length == 1 && parsed.expressions[0].length == 1))) ? this.pushArray : this.pushUID;\n\n\tif (found == null) found = [];\n\n\t// default engine\n\n\tvar j, m, n;\n\tvar combinator, tag, id, classList, classes, attributes, pseudos;\n\tvar currentItems, currentExpression, currentBit, lastBit, expressions = parsed.expressions;\n\n\tsearch: for (i = 0; (currentExpression = expressions[i]); i++) for (j = 0; (currentBit = currentExpression[j]); j++){\n\n\t\tcombinator = 'combinator:' + currentBit.combinator;\n\t\tif (!this[combinator]) continue search;\n\n\t\ttag = (this.isXMLDocument) ? currentBit.tag : currentBit.tag.toUpperCase();\n\t\tid = currentBit.id;\n\t\tclassList = currentBit.classList;\n\t\tclasses = currentBit.classes;\n\t\tattributes = currentBit.attributes;\n\t\tpseudos = currentBit.pseudos;\n\t\tlastBit = (j === (currentExpression.length - 1));\n\n\t\tthis.bitUniques = {};\n\n\t\tif (lastBit){\n\t\t\tthis.uniques = uniques;\n\t\t\tthis.found = found;\n\t\t} else {\n\t\t\tthis.uniques = {};\n\t\t\tthis.found = [];\n\t\t}\n\n\t\tif (j === 0){\n\t\t\tthis[combinator](context, tag, id, classes, attributes, pseudos, classList);\n\t\t\tif (first && lastBit && found.length) break search;\n\t\t} else {\n\t\t\tif (first && lastBit) for (m = 0, n = currentItems.length; m < n; m++){\n\t\t\t\tthis[combinator](currentItems[m], tag, id, classes, attributes, pseudos, classList);\n\t\t\t\tif (found.length) break search;\n\t\t\t} else for (m = 0, n = currentItems.length; m < n; m++) this[combinator](currentItems[m], tag, id, classes, attributes, pseudos, classList);\n\t\t}\n\n\t\tcurrentItems = this.found;\n\t}\n\n\t// should sort if there are nodes in append and if you pass multiple expressions.\n\tif (hasOthers || (parsed.expressions.length > 1)) this.sort(found);\n\n\treturn (first) ? (found[0] || null) : found;\n};\n\n// Utils\n\nlocal.uidx = 1;\nlocal.uidk = 'slick-uniqueid';\n\nlocal.getUIDXML = function(node){\n\tvar uid = node.getAttribute(this.uidk);\n\tif (!uid){\n\t\tuid = this.uidx++;\n\t\tnode.setAttribute(this.uidk, uid);\n\t}\n\treturn uid;\n};\n\nlocal.getUIDHTML = function(node){\n\treturn node.uniqueNumber || (node.uniqueNumber = this.uidx++);\n};\n\n// sort based on the setDocument documentSorter method.\n\nlocal.sort = function(results){\n\tif (!this.documentSorter) return results;\n\tresults.sort(this.documentSorter);\n\treturn results;\n};\n\n/**//**/\n\nlocal.cacheNTH = {};\n\nlocal.matchNTH = /^([+-]?\\d*)?([a-z]+)?([+-]\\d+)?$/;\n\nlocal.parseNTHArgument = function(argument){\n\tvar parsed = argument.match(this.matchNTH);\n\tif (!parsed) return false;\n\tvar special = parsed[2] || false;\n\tvar a = parsed[1] || 1;\n\tif (a == '-') a = -1;\n\tvar b = +parsed[3] || 0;\n\tparsed =\n\t\t(special == 'n')\t? {a: a, b: b} :\n\t\t(special == 'odd')\t? {a: 2, b: 1} :\n\t\t(special == 'even')\t? {a: 2, b: 0} : {a: 0, b: a};\n\n\treturn (this.cacheNTH[argument] = parsed);\n};\n\nlocal.createNTHPseudo = function(child, sibling, positions, ofType){\n\treturn function(node, argument){\n\t\tvar uid = this.getUID(node);\n\t\tif (!this[positions][uid]){\n\t\t\tvar parent = node.parentNode;\n\t\t\tif (!parent) return false;\n\t\t\tvar el = parent[child], count = 1;\n\t\t\tif (ofType){\n\t\t\t\tvar nodeName = node.nodeName;\n\t\t\t\tdo {\n\t\t\t\t\tif (el.nodeName != nodeName) continue;\n\t\t\t\t\tthis[positions][this.getUID(el)] = count++;\n\t\t\t\t} while ((el = el[sibling]));\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tif (el.nodeType != 1) continue;\n\t\t\t\t\tthis[positions][this.getUID(el)] = count++;\n\t\t\t\t} while ((el = el[sibling]));\n\t\t\t}\n\t\t}\n\t\targument = argument || 'n';\n\t\tvar parsed = this.cacheNTH[argument] || this.parseNTHArgument(argument);\n\t\tif (!parsed) return false;\n\t\tvar a = parsed.a, b = parsed.b, pos = this[positions][uid];\n\t\tif (a == 0) return b == pos;\n\t\tif (a > 0){\n\t\t\tif (pos < b) return false;\n\t\t} else {\n\t\t\tif (b < pos) return false;\n\t\t}\n\t\treturn ((pos - b) % a) == 0;\n\t};\n};\n\n/**//**/\n\nlocal.pushArray = function(node, tag, id, classes, attributes, pseudos){\n\tif (this.matchSelector(node, tag, id, classes, attributes, pseudos)) this.found.push(node);\n};\n\nlocal.pushUID = function(node, tag, id, classes, attributes, pseudos){\n\tvar uid = this.getUID(node);\n\tif (!this.uniques[uid] && this.matchSelector(node, tag, id, classes, attributes, pseudos)){\n\t\tthis.uniques[uid] = true;\n\t\tthis.found.push(node);\n\t}\n};\n\nlocal.matchNode = function(node, selector){\n\tif (this.isHTMLDocument && this.nativeMatchesSelector){\n\t\ttry {\n\t\t\treturn this.nativeMatchesSelector.call(node, selector.replace(/\\[([^=]+)=\\s*([^'\"\\]]+?)\\s*\\]/g, '[$1=\"$2\"]'));\n\t\t} catch(matchError) {}\n\t}\n\n\tvar parsed = this.Slick.parse(selector);\n\tif (!parsed) return true;\n\n\t// simple (single) selectors\n\tvar expressions = parsed.expressions, simpleExpCounter = 0, i;\n\tfor (i = 0; (currentExpression = expressions[i]); i++){\n\t\tif (currentExpression.length == 1){\n\t\t\tvar exp = currentExpression[0];\n\t\t\tif (this.matchSelector(node, (this.isXMLDocument) ? exp.tag : exp.tag.toUpperCase(), exp.id, exp.classes, exp.attributes, exp.pseudos)) return true;\n\t\t\tsimpleExpCounter++;\n\t\t}\n\t}\n\n\tif (simpleExpCounter == parsed.length) return false;\n\n\tvar nodes = this.search(this.document, parsed), item;\n\tfor (i = 0; item = nodes[i++];){\n\t\tif (item === node) return true;\n\t}\n\treturn false;\n};\n\nlocal.matchPseudo = function(node, name, argument){\n\tvar pseudoName = 'pseudo:' + name;\n\tif (this[pseudoName]) return this[pseudoName](node, argument);\n\tvar attribute = this.getAttribute(node, name);\n\treturn (argument) ? argument == attribute : !!attribute;\n};\n\nlocal.matchSelector = function(node, tag, id, classes, attributes, pseudos){\n\tif (tag){\n\t\tvar nodeName = (this.isXMLDocument) ? node.nodeName : node.nodeName.toUpperCase();\n\t\tif (tag == '*'){\n\t\t\tif (nodeName < '@') return false; // Fix for comment nodes and closed nodes\n\t\t} else {\n\t\t\tif (nodeName != tag) return false;\n\t\t}\n\t}\n\n\tif (id && node.getAttribute('id') != id) return false;\n\n\tvar i, part, cls;\n\tif (classes) for (i = classes.length; i--;){\n\t\tcls = this.getAttribute(node, 'class');\n\t\tif (!(cls && classes[i].regexp.test(cls))) return false;\n\t}\n\tif (attributes) for (i = attributes.length; i--;){\n\t\tpart = attributes[i];\n\t\tif (part.operator ? !part.test(this.getAttribute(node, part.key)) : !this.hasAttribute(node, part.key)) return false;\n\t}\n\tif (pseudos) for (i = pseudos.length; i--;){\n\t\tpart = pseudos[i];\n\t\tif (!this.matchPseudo(node, part.key, part.value)) return false;\n\t}\n\treturn true;\n};\n\nvar combinators = {\n\n\t' ': function(node, tag, id, classes, attributes, pseudos, classList){ // all child nodes, any level\n\n\t\tvar i, item, children;\n\n\t\tif (this.isHTMLDocument){\n\t\t\tgetById: if (id){\n\t\t\t\titem = this.document.getElementById(id);\n\t\t\t\tif ((!item && node.all) || (this.idGetsName && item && item.getAttributeNode('id').nodeValue != id)){\n\t\t\t\t\t// all[id] returns all the elements with that name or id inside node\n\t\t\t\t\t// if theres just one it will return the element, else it will be a collection\n\t\t\t\t\tchildren = node.all[id];\n\t\t\t\t\tif (!children) return;\n\t\t\t\t\tif (!children[0]) children = [children];\n\t\t\t\t\tfor (i = 0; item = children[i++];){\n\t\t\t\t\t\tvar idNode = item.getAttributeNode('id');\n\t\t\t\t\t\tif (idNode && idNode.nodeValue == id){\n\t\t\t\t\t\t\tthis.push(item, tag, null, classes, attributes, pseudos);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!item){\n\t\t\t\t\t// if the context is in the dom we return, else we will try GEBTN, breaking the getById label\n\t\t\t\t\tif (this.contains(this.root, node)) return;\n\t\t\t\t\telse break getById;\n\t\t\t\t} else if (this.document !== node && !this.contains(node, item)) return;\n\t\t\t\tthis.push(item, tag, null, classes, attributes, pseudos);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tgetByClass: if (classes && node.getElementsByClassName && !this.brokenGEBCN){\n\t\t\t\tchildren = node.getElementsByClassName(classList.join(' '));\n\t\t\t\tif (!(children && children.length)) break getByClass;\n\t\t\t\tfor (i = 0; item = children[i++];) this.push(item, tag, id, null, attributes, pseudos);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tgetByTag: {\n\t\t\tchildren = node.getElementsByTagName(tag);\n\t\t\tif (!(children && children.length)) break getByTag;\n\t\t\tif (!this.brokenStarGEBTN) tag = null;\n\t\t\tfor (i = 0; item = children[i++];) this.push(item, tag, id, classes, attributes, pseudos);\n\t\t}\n\t},\n\n\t'>': function(node, tag, id, classes, attributes, pseudos){ // direct children\n\t\tif ((node = node.firstChild)) do {\n\t\t\tif (node.nodeType == 1) this.push(node, tag, id, classes, attributes, pseudos);\n\t\t} while ((node = node.nextSibling));\n\t},\n\n\t'+': function(node, tag, id, classes, attributes, pseudos){ // next sibling\n\t\twhile ((node = node.nextSibling)) if (node.nodeType == 1){\n\t\t\tthis.push(node, tag, id, classes, attributes, pseudos);\n\t\t\tbreak;\n\t\t}\n\t},\n\n\t'^': function(node, tag, id, classes, attributes, pseudos){ // first child\n\t\tnode = node.firstChild;\n\t\tif (node){\n\t\t\tif (node.nodeType == 1) this.push(node, tag, id, classes, attributes, pseudos);\n\t\t\telse this['combinator:+'](node, tag, id, classes, attributes, pseudos);\n\t\t}\n\t},\n\n\t'~': function(node, tag, id, classes, attributes, pseudos){ // next siblings\n\t\twhile ((node = node.nextSibling)){\n\t\t\tif (node.nodeType != 1) continue;\n\t\t\tvar uid = this.getUID(node);\n\t\t\tif (this.bitUniques[uid]) break;\n\t\t\tthis.bitUniques[uid] = true;\n\t\t\tthis.push(node, tag, id, classes, attributes, pseudos);\n\t\t}\n\t},\n\n\t'++': function(node, tag, id, classes, attributes, pseudos){ // next sibling and previous sibling\n\t\tthis['combinator:+'](node, tag, id, classes, attributes, pseudos);\n\t\tthis['combinator:!+'](node, tag, id, classes, attributes, pseudos);\n\t},\n\n\t'~~': function(node, tag, id, classes, attributes, pseudos){ // next siblings and previous siblings\n\t\tthis['combinator:~'](node, tag, id, classes, attributes, pseudos);\n\t\tthis['combinator:!~'](node, tag, id, classes, attributes, pseudos);\n\t},\n\n\t'!': function(node, tag, id, classes, attributes, pseudos){ // all parent nodes up to document\n\t\twhile ((node = node.parentNode)) if (node !== this.document) this.push(node, tag, id, classes, attributes, pseudos);\n\t},\n\n\t'!>': function(node, tag, id, classes, attributes, pseudos){ // direct parent (one level)\n\t\tnode = node.parentNode;\n\t\tif (node !== this.document) this.push(node, tag, id, classes, attributes, pseudos);\n\t},\n\n\t'!+': function(node, tag, id, classes, attributes, pseudos){ // previous sibling\n\t\twhile ((node = node.previousSibling)) if (node.nodeType == 1){\n\t\t\tthis.push(node, tag, id, classes, attributes, pseudos);\n\t\t\tbreak;\n\t\t}\n\t},\n\n\t'!^': function(node, tag, id, classes, attributes, pseudos){ // last child\n\t\tnode = node.lastChild;\n\t\tif (node){\n\t\t\tif (node.nodeType == 1) this.push(node, tag, id, classes, attributes, pseudos);\n\t\t\telse this['combinator:!+'](node, tag, id, classes, attributes, pseudos);\n\t\t}\n\t},\n\n\t'!~': function(node, tag, id, classes, attributes, pseudos){ // previous siblings\n\t\twhile ((node = node.previousSibling)){\n\t\t\tif (node.nodeType != 1) continue;\n\t\t\tvar uid = this.getUID(node);\n\t\t\tif (this.bitUniques[uid]) break;\n\t\t\tthis.bitUniques[uid] = true;\n\t\t\tthis.push(node, tag, id, classes, attributes, pseudos);\n\t\t}\n\t}\n\n};\n\nfor (var c in combinators) local['combinator:' + c] = combinators[c];\n\nvar pseudos = {\n\n\t/**/\n\n\t'empty': function(node){\n\t\tvar child = node.firstChild;\n\t\treturn !(child && child.nodeType == 1) && !(node.innerText || node.textContent || '').length;\n\t},\n\n\t'not': function(node, expression){\n\t\treturn !this.matchNode(node, expression);\n\t},\n\n\t'contains': function(node, text){\n\t\treturn (node.innerText || node.textContent || '').indexOf(text) > -1;\n\t},\n\n\t'first-child': function(node){\n\t\twhile ((node = node.previousSibling)) if (node.nodeType == 1) return false;\n\t\treturn true;\n\t},\n\n\t'last-child': function(node){\n\t\twhile ((node = node.nextSibling)) if (node.nodeType == 1) return false;\n\t\treturn true;\n\t},\n\n\t'only-child': function(node){\n\t\tvar prev = node;\n\t\twhile ((prev = prev.previousSibling)) if (prev.nodeType == 1) return false;\n\t\tvar next = node;\n\t\twhile ((next = next.nextSibling)) if (next.nodeType == 1) return false;\n\t\treturn true;\n\t},\n\n\t/**/\n\n\t'nth-child': local.createNTHPseudo('firstChild', 'nextSibling', 'posNTH'),\n\n\t'nth-last-child': local.createNTHPseudo('lastChild', 'previousSibling', 'posNTHLast'),\n\n\t'nth-of-type': local.createNTHPseudo('firstChild', 'nextSibling', 'posNTHType', true),\n\n\t'nth-last-of-type': local.createNTHPseudo('lastChild', 'previousSibling', 'posNTHTypeLast', true),\n\n\t'index': function(node, index){\n\t\treturn this['pseudo:nth-child'](node, '' + (index + 1));\n\t},\n\n\t'even': function(node){\n\t\treturn this['pseudo:nth-child'](node, '2n');\n\t},\n\n\t'odd': function(node){\n\t\treturn this['pseudo:nth-child'](node, '2n+1');\n\t},\n\n\t/**/\n\n\t/**/\n\n\t'first-of-type': function(node){\n\t\tvar nodeName = node.nodeName;\n\t\twhile ((node = node.previousSibling)) if (node.nodeName == nodeName) return false;\n\t\treturn true;\n\t},\n\n\t'last-of-type': function(node){\n\t\tvar nodeName = node.nodeName;\n\t\twhile ((node = node.nextSibling)) if (node.nodeName == nodeName) return false;\n\t\treturn true;\n\t},\n\n\t'only-of-type': function(node){\n\t\tvar prev = node, nodeName = node.nodeName;\n\t\twhile ((prev = prev.previousSibling)) if (prev.nodeName == nodeName) return false;\n\t\tvar next = node;\n\t\twhile ((next = next.nextSibling)) if (next.nodeName == nodeName) return false;\n\t\treturn true;\n\t},\n\n\t/**/\n\n\t// custom pseudos\n\n\t'enabled': function(node){\n\t\treturn !node.disabled;\n\t},\n\n\t'disabled': function(node){\n\t\treturn node.disabled;\n\t},\n\n\t'checked': function(node){\n\t\treturn node.checked || node.selected;\n\t},\n\n\t'focus': function(node){\n\t\treturn this.isHTMLDocument && this.document.activeElement === node && (node.href || node.type || this.hasAttribute(node, 'tabindex'));\n\t},\n\n\t'root': function(node){\n\t\treturn (node === this.root);\n\t},\n\n\t'selected': function(node){\n\t\treturn node.selected;\n\t}\n\n\t/**/\n};\n\nfor (var p in pseudos) local['pseudo:' + p] = pseudos[p];\n\n// attributes methods\n\nvar attributeGetters = local.attributeGetters = {\n\n\t'for': function(){\n\t\treturn ('htmlFor' in this) ? this.htmlFor : this.getAttribute('for');\n\t},\n\n\t'href': function(){\n\t\treturn ('href' in this) ? this.getAttribute('href', 2) : this.getAttribute('href');\n\t},\n\n\t'style': function(){\n\t\treturn (this.style) ? this.style.cssText : this.getAttribute('style');\n\t},\n\n\t'tabindex': function(){\n\t\tvar attributeNode = this.getAttributeNode('tabindex');\n\t\treturn (attributeNode && attributeNode.specified) ? attributeNode.nodeValue : null;\n\t},\n\n\t'type': function(){\n\t\treturn this.getAttribute('type');\n\t},\n\n\t'maxlength': function(){\n\t\tvar attributeNode = this.getAttributeNode('maxLength');\n\t\treturn (attributeNode && attributeNode.specified) ? attributeNode.nodeValue : null;\n\t}\n\n};\n\nattributeGetters.MAXLENGTH = attributeGetters.maxLength = attributeGetters.maxlength;\n\n// Slick\n\nvar Slick = local.Slick = (this.Slick || {});\n\nSlick.version = '1.1.7';\n\n// Slick finder\n\nSlick.search = function(context, expression, append){\n\treturn local.search(context, expression, append);\n};\n\nSlick.find = function(context, expression){\n\treturn local.search(context, expression, null, true);\n};\n\n// Slick containment checker\n\nSlick.contains = function(container, node){\n\tlocal.setDocument(container);\n\treturn local.contains(container, node);\n};\n\n// Slick attribute getter\n\nSlick.getAttribute = function(node, name){\n\tlocal.setDocument(node);\n\treturn local.getAttribute(node, name);\n};\n\nSlick.hasAttribute = function(node, name){\n\tlocal.setDocument(node);\n\treturn local.hasAttribute(node, name);\n};\n\n// Slick matcher\n\nSlick.match = function(node, selector){\n\tif (!(node && selector)) return false;\n\tif (!selector || selector === node) return true;\n\tlocal.setDocument(node);\n\treturn local.matchNode(node, selector);\n};\n\n// Slick attribute accessor\n\nSlick.defineAttributeGetter = function(name, fn){\n\tlocal.attributeGetters[name] = fn;\n\treturn this;\n};\n\nSlick.lookupAttributeGetter = function(name){\n\treturn local.attributeGetters[name];\n};\n\n// Slick pseudo accessor\n\nSlick.definePseudo = function(name, fn){\n\tlocal['pseudo:' + name] = function(node, argument){\n\t\treturn fn.call(node, argument);\n\t};\n\treturn this;\n};\n\nSlick.lookupPseudo = function(name){\n\tvar pseudo = local['pseudo:' + name];\n\tif (pseudo) return function(argument){\n\t\treturn pseudo.call(this, argument);\n\t};\n\treturn null;\n};\n\n// Slick overrides accessor\n\nSlick.override = function(regexp, fn){\n\tlocal.override(regexp, fn);\n\treturn this;\n};\n\nSlick.isXML = local.isXML;\n\nSlick.uidOf = function(node){\n\treturn local.getUIDHTML(node);\n};\n\nif (!this.Slick) this.Slick = Slick;\n\n}).apply(/**/(typeof exports != 'undefined') ? exports : /**/this);\n\n\n/*\n---\n\nname: Element\n\ndescription: One of the most important items in MooTools. Contains the dollar function, the dollars function, and an handful of cross-browser, time-saver methods to let you easily work with HTML Elements.\n\nlicense: MIT-style license.\n\nrequires: [Window, Document, Array, String, Function, Object, Number, Slick.Parser, Slick.Finder]\n\nprovides: [Element, Elements, $, $$, Iframe, Selectors]\n\n...\n*/\n\nvar Element = function(tag, props){\n\tvar konstructor = Element.Constructors[tag];\n\tif (konstructor) return konstructor(props);\n\tif (typeof tag != 'string') return document.id(tag).set(props);\n\n\tif (!props) props = {};\n\n\tif (!(/^[\\w-]+$/).test(tag)){\n\t\tvar parsed = Slick.parse(tag).expressions[0][0];\n\t\ttag = (parsed.tag == '*') ? 'div' : parsed.tag;\n\t\tif (parsed.id && props.id == null) props.id = parsed.id;\n\n\t\tvar attributes = parsed.attributes;\n\t\tif (attributes) for (var attr, i = 0, l = attributes.length; i < l; i++){\n\t\t\tattr = attributes[i];\n\t\t\tif (props[attr.key] != null) continue;\n\n\t\t\tif (attr.value != null && attr.operator == '=') props[attr.key] = attr.value;\n\t\t\telse if (!attr.value && !attr.operator) props[attr.key] = true;\n\t\t}\n\n\t\tif (parsed.classList && props['class'] == null) props['class'] = parsed.classList.join(' ');\n\t}\n\n\treturn document.newElement(tag, props);\n};\n\n\nif (Browser.Element){\n\tElement.prototype = Browser.Element.prototype;\n\t// IE8 and IE9 require the wrapping.\n\tElement.prototype._fireEvent = (function(fireEvent){\n\t\treturn function(type, event){\n\t\t\treturn fireEvent.call(this, type, event);\n\t\t};\n\t})(Element.prototype.fireEvent);\n}\n\nnew Type('Element', Element).mirror(function(name){\n\tif (Array.prototype[name]) return;\n\n\tvar obj = {};\n\tobj[name] = function(){\n\t\tvar results = [], args = arguments, elements = true;\n\t\tfor (var i = 0, l = this.length; i < l; i++){\n\t\t\tvar element = this[i], result = results[i] = element[name].apply(element, args);\n\t\t\telements = (elements && typeOf(result) == 'element');\n\t\t}\n\t\treturn (elements) ? new Elements(results) : results;\n\t};\n\n\tElements.implement(obj);\n});\n\nif (!Browser.Element){\n\tElement.parent = Object;\n\n\tElement.Prototype = {\n\t\t'$constructor': Element,\n\t\t'$family': Function.from('element').hide()\n\t};\n\n\tElement.mirror(function(name, method){\n\t\tElement.Prototype[name] = method;\n\t});\n}\n\nElement.Constructors = {};\n\n\n\nvar IFrame = new Type('IFrame', function(){\n\tvar params = Array.link(arguments, {\n\t\tproperties: Type.isObject,\n\t\tiframe: function(obj){\n\t\t\treturn (obj != null);\n\t\t}\n\t});\n\n\tvar props = params.properties || {}, iframe;\n\tif (params.iframe) iframe = document.id(params.iframe);\n\tvar onload = props.onload || function(){};\n\tdelete props.onload;\n\tprops.id = props.name = [props.id, props.name, iframe ? (iframe.id || iframe.name) : 'IFrame_' + String.uniqueID()].pick();\n\tiframe = new Element(iframe || 'iframe', props);\n\n\tvar onLoad = function(){\n\t\tonload.call(iframe.contentWindow);\n\t};\n\n\tif (window.frames[props.id]) onLoad();\n\telse iframe.addListener('load', onLoad);\n\treturn iframe;\n});\n\nvar Elements = this.Elements = function(nodes){\n\tif (nodes && nodes.length){\n\t\tvar uniques = {}, node;\n\t\tfor (var i = 0; node = nodes[i++];){\n\t\t\tvar uid = Slick.uidOf(node);\n\t\t\tif (!uniques[uid]){\n\t\t\t\tuniques[uid] = true;\n\t\t\t\tthis.push(node);\n\t\t\t}\n\t\t}\n\t}\n};\n\nElements.prototype = {length: 0};\nElements.parent = Array;\n\nnew Type('Elements', Elements).implement({\n\n\tfilter: function(filter, bind){\n\t\tif (!filter) return this;\n\t\treturn new Elements(Array.filter(this, (typeOf(filter) == 'string') ? function(item){\n\t\t\treturn item.match(filter);\n\t\t} : filter, bind));\n\t}.protect(),\n\n\tpush: function(){\n\t\tvar length = this.length;\n\t\tfor (var i = 0, l = arguments.length; i < l; i++){\n\t\t\tvar item = document.id(arguments[i]);\n\t\t\tif (item) this[length++] = item;\n\t\t}\n\t\treturn (this.length = length);\n\t}.protect(),\n\n\tunshift: function(){\n\t\tvar items = [];\n\t\tfor (var i = 0, l = arguments.length; i < l; i++){\n\t\t\tvar item = document.id(arguments[i]);\n\t\t\tif (item) items.push(item);\n\t\t}\n\t\treturn Array.prototype.unshift.apply(this, items);\n\t}.protect(),\n\n\tconcat: function(){\n\t\tvar newElements = new Elements(this);\n\t\tfor (var i = 0, l = arguments.length; i < l; i++){\n\t\t\tvar item = arguments[i];\n\t\t\tif (Type.isEnumerable(item)) newElements.append(item);\n\t\t\telse newElements.push(item);\n\t\t}\n\t\treturn newElements;\n\t}.protect(),\n\n\tappend: function(collection){\n\t\tfor (var i = 0, l = collection.length; i < l; i++) this.push(collection[i]);\n\t\treturn this;\n\t}.protect(),\n\n\tempty: function(){\n\t\twhile (this.length) delete this[--this.length];\n\t\treturn this;\n\t}.protect()\n\n});\n\n\n\n(function(){\n\n// FF, IE\nvar splice = Array.prototype.splice, object = {'0': 0, '1': 1, length: 2};\n\nsplice.call(object, 1, 1);\nif (object[1] == 1) Elements.implement('splice', function(){\n\tvar length = this.length;\n\tvar result = splice.apply(this, arguments);\n\twhile (length >= this.length) delete this[length--];\n\treturn result;\n}.protect());\n\nArray.forEachMethod(function(method, name){\n\tElements.implement(name, method);\n});\n\nArray.mirror(Elements);\n\n/**/\nvar createElementAcceptsHTML;\ntry {\n createElementAcceptsHTML = (document.createElement('').name == 'x');\n} catch (e){}\n\nvar escapeQuotes = function(html){\n\treturn ('' + html).replace(/&/g, '&').replace(/\"/g, '"');\n};\n/**/\n\nDocument.implement({\n\n\tnewElement: function(tag, props){\n\t\tif (props && props.checked != null) props.defaultChecked = props.checked;\n\t\t/**/// Fix for readonly name and type properties in IE < 8\n\t\tif (createElementAcceptsHTML && props){\n\t\t\ttag = '<' + tag;\n\t\t\tif (props.name) tag += ' name=\"' + escapeQuotes(props.name) + '\"';\n\t\t\tif (props.type) tag += ' type=\"' + escapeQuotes(props.type) + '\"';\n\t\t\ttag += '>';\n\t\t\tdelete props.name;\n\t\t\tdelete props.type;\n\t\t}\n\t\t/**/\n\t\treturn this.id(this.createElement(tag)).set(props);\n\t}\n\n});\n\n})();\n\n(function(){\n\nSlick.uidOf(window);\nSlick.uidOf(document);\n\nDocument.implement({\n\n\tnewTextNode: function(text){\n\t\treturn this.createTextNode(text);\n\t},\n\n\tgetDocument: function(){\n\t\treturn this;\n\t},\n\n\tgetWindow: function(){\n\t\treturn this.window;\n\t},\n\n\tid: (function(){\n\n\t\tvar types = {\n\n\t\t\tstring: function(id, nocash, doc){\n\t\t\t\tid = Slick.find(doc, '#' + id.replace(/(\\W)/g, '\\\\$1'));\n\t\t\t\treturn (id) ? types.element(id, nocash) : null;\n\t\t\t},\n\n\t\t\telement: function(el, nocash){\n\t\t\t\tSlick.uidOf(el);\n\t\t\t\tif (!nocash && !el.$family && !(/^(?:object|embed)$/i).test(el.tagName)){\n\t\t\t\t\tvar fireEvent = el.fireEvent;\n\t\t\t\t\t// wrapping needed in IE7, or else crash\n\t\t\t\t\tel._fireEvent = function(type, event){\n\t\t\t\t\t\treturn fireEvent(type, event);\n\t\t\t\t\t};\n\t\t\t\t\tObject.append(el, Element.Prototype);\n\t\t\t\t}\n\t\t\t\treturn el;\n\t\t\t},\n\n\t\t\tobject: function(obj, nocash, doc){\n\t\t\t\tif (obj.toElement) return types.element(obj.toElement(doc), nocash);\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t};\n\n\t\ttypes.textnode = types.whitespace = types.window = types.document = function(zero){\n\t\t\treturn zero;\n\t\t};\n\n\t\treturn function(el, nocash, doc){\n\t\t\tif (el && el.$family && el.uniqueNumber) return el;\n\t\t\tvar type = typeOf(el);\n\t\t\treturn (types[type]) ? types[type](el, nocash, doc || document) : null;\n\t\t};\n\n\t})()\n\n});\n\nif (window.$ == null) Window.implement('$', function(el, nc){\n\treturn document.id(el, nc, this.document);\n});\n\nWindow.implement({\n\n\tgetDocument: function(){\n\t\treturn this.document;\n\t},\n\n\tgetWindow: function(){\n\t\treturn this;\n\t}\n\n});\n\n[Document, Element].invoke('implement', {\n\n\tgetElements: function(expression){\n\t\treturn Slick.search(this, expression, new Elements);\n\t},\n\n\tgetElement: function(expression){\n\t\treturn document.id(Slick.find(this, expression));\n\t}\n\n});\n\nvar contains = {contains: function(element){\n\treturn Slick.contains(this, element);\n}};\n\nif (!document.contains) Document.implement(contains);\nif (!document.createElement('div').contains) Element.implement(contains);\n\n\n\n// tree walking\n\nvar injectCombinator = function(expression, combinator){\n\tif (!expression) return combinator;\n\n\texpression = Object.clone(Slick.parse(expression));\n\n\tvar expressions = expression.expressions;\n\tfor (var i = expressions.length; i--;)\n\t\texpressions[i][0].combinator = combinator;\n\n\treturn expression;\n};\n\nObject.forEach({\n\tgetNext: '~',\n\tgetPrevious: '!~',\n\tgetParent: '!'\n}, function(combinator, method){\n\tElement.implement(method, function(expression){\n\t\treturn this.getElement(injectCombinator(expression, combinator));\n\t});\n});\n\nObject.forEach({\n\tgetAllNext: '~',\n\tgetAllPrevious: '!~',\n\tgetSiblings: '~~',\n\tgetChildren: '>',\n\tgetParents: '!'\n}, function(combinator, method){\n\tElement.implement(method, function(expression){\n\t\treturn this.getElements(injectCombinator(expression, combinator));\n\t});\n});\n\nElement.implement({\n\n\tgetFirst: function(expression){\n\t\treturn document.id(Slick.search(this, injectCombinator(expression, '>'))[0]);\n\t},\n\n\tgetLast: function(expression){\n\t\treturn document.id(Slick.search(this, injectCombinator(expression, '>')).getLast());\n\t},\n\n\tgetWindow: function(){\n\t\treturn this.ownerDocument.window;\n\t},\n\n\tgetDocument: function(){\n\t\treturn this.ownerDocument;\n\t},\n\n\tgetElementById: function(id){\n\t\treturn document.id(Slick.find(this, '#' + ('' + id).replace(/(\\W)/g, '\\\\$1')));\n\t},\n\n\tmatch: function(expression){\n\t\treturn !expression || Slick.match(this, expression);\n\t}\n\n});\n\n\n\nif (window.$$ == null) Window.implement('$$', function(selector){\n\tif (arguments.length == 1){\n\t\tif (typeof selector == 'string') return Slick.search(this.document, selector, new Elements);\n\t\telse if (Type.isEnumerable(selector)) return new Elements(selector);\n\t}\n\treturn new Elements(arguments);\n});\n\n// Inserters\n\nvar inserters = {\n\n\tbefore: function(context, element){\n\t\tvar parent = element.parentNode;\n\t\tif (parent) parent.insertBefore(context, element);\n\t},\n\n\tafter: function(context, element){\n\t\tvar parent = element.parentNode;\n\t\tif (parent) parent.insertBefore(context, element.nextSibling);\n\t},\n\n\tbottom: function(context, element){\n\t\telement.appendChild(context);\n\t},\n\n\ttop: function(context, element){\n\t\telement.insertBefore(context, element.firstChild);\n\t}\n\n};\n\ninserters.inside = inserters.bottom;\n\n\n\n// getProperty / setProperty\n\nvar propertyGetters = {}, propertySetters = {};\n\n// properties\n\nvar properties = {};\nArray.forEach([\n\t'type', 'value', 'defaultValue', 'accessKey', 'cellPadding', 'cellSpacing', 'colSpan',\n\t'frameBorder', 'rowSpan', 'tabIndex', 'useMap'\n], function(property){\n\tproperties[property.toLowerCase()] = property;\n});\n\nproperties.html = 'innerHTML';\nproperties.text = (document.createElement('div').textContent == null) ? 'innerText': 'textContent';\n\nObject.forEach(properties, function(real, key){\n\tpropertySetters[key] = function(node, value){\n\t\tnode[real] = value;\n\t};\n\tpropertyGetters[key] = function(node){\n\t\treturn node[real];\n\t};\n});\n\n// Booleans\n\nvar bools = [\n\t'compact', 'nowrap', 'ismap', 'declare', 'noshade', 'checked',\n\t'disabled', 'readOnly', 'multiple', 'selected', 'noresize',\n\t'defer', 'defaultChecked', 'autofocus', 'controls', 'autoplay',\n\t'loop'\n];\n\nvar booleans = {};\nArray.forEach(bools, function(bool){\n\tvar lower = bool.toLowerCase();\n\tbooleans[lower] = bool;\n\tpropertySetters[lower] = function(node, value){\n\t\tnode[bool] = !!value;\n\t};\n\tpropertyGetters[lower] = function(node){\n\t\treturn !!node[bool];\n\t};\n});\n\n// Special cases\n\nObject.append(propertySetters, {\n\n\t'class': function(node, value){\n\t\t('className' in node) ? node.className = (value || '') : node.setAttribute('class', value);\n\t},\n\n\t'for': function(node, value){\n\t\t('htmlFor' in node) ? node.htmlFor = value : node.setAttribute('for', value);\n\t},\n\n\t'style': function(node, value){\n\t\t(node.style) ? node.style.cssText = value : node.setAttribute('style', value);\n\t},\n\n\t'value': function(node, value){\n\t\tnode.value = (value != null) ? value : '';\n\t}\n\n});\n\npropertyGetters['class'] = function(node){\n\treturn ('className' in node) ? node.className || null : node.getAttribute('class');\n};\n\n/* */\nvar el = document.createElement('button');\n// IE sets type as readonly and throws\ntry { el.type = 'button'; } catch(e){}\nif (el.type != 'button') propertySetters.type = function(node, value){\n\tnode.setAttribute('type', value);\n};\nel = null;\n/* */\n\n/**/\nvar input = document.createElement('input');\ninput.value = 't';\ninput.type = 'submit';\nif (input.value != 't') propertySetters.type = function(node, type){\n\tvar value = node.value;\n\tnode.type = type;\n\tnode.value = value;\n};\ninput = null;\n/**/\n\n/* getProperty, setProperty */\n\n/* */\nvar pollutesGetAttribute = (function(div){\n\tdiv.random = 'attribute';\n\treturn (div.getAttribute('random') == 'attribute');\n})(document.createElement('div'));\n\n/* */\n\nElement.implement({\n\n\tsetProperty: function(name, value){\n\t\tvar setter = propertySetters[name.toLowerCase()];\n\t\tif (setter){\n\t\t\tsetter(this, value);\n\t\t} else {\n\t\t\t/* */\n\t\t\tif (pollutesGetAttribute) var attributeWhiteList = this.retrieve('$attributeWhiteList', {});\n\t\t\t/* */\n\n\t\t\tif (value == null){\n\t\t\t\tthis.removeAttribute(name);\n\t\t\t\t/* */\n\t\t\t\tif (pollutesGetAttribute) delete attributeWhiteList[name];\n\t\t\t\t/* */\n\t\t\t} else {\n\t\t\t\tthis.setAttribute(name, '' + value);\n\t\t\t\t/* */\n\t\t\t\tif (pollutesGetAttribute) attributeWhiteList[name] = true;\n\t\t\t\t/* */\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t},\n\n\tsetProperties: function(attributes){\n\t\tfor (var attribute in attributes) this.setProperty(attribute, attributes[attribute]);\n\t\treturn this;\n\t},\n\n\tgetProperty: function(name){\n\t\tvar getter = propertyGetters[name.toLowerCase()];\n\t\tif (getter) return getter(this);\n\t\t/* */\n\t\tif (pollutesGetAttribute){\n\t\t\tvar attr = this.getAttributeNode(name), attributeWhiteList = this.retrieve('$attributeWhiteList', {});\n\t\t\tif (!attr) return null;\n\t\t\tif (attr.expando && !attributeWhiteList[name]){\n\t\t\t\tvar outer = this.outerHTML;\n\t\t\t\t// segment by the opening tag and find mention of attribute name\n\t\t\t\tif (outer.substr(0, outer.search(/\\/?['\"]?>(?![^<]*<['\"])/)).indexOf(name) < 0) return null;\n\t\t\t\tattributeWhiteList[name] = true;\n\t\t\t}\n\t\t}\n\t\t/* */\n\t\tvar result = Slick.getAttribute(this, name);\n\t\treturn (!result && !Slick.hasAttribute(this, name)) ? null : result;\n\t},\n\n\tgetProperties: function(){\n\t\tvar args = Array.from(arguments);\n\t\treturn args.map(this.getProperty, this).associate(args);\n\t},\n\n\tremoveProperty: function(name){\n\t\treturn this.setProperty(name, null);\n\t},\n\n\tremoveProperties: function(){\n\t\tArray.each(arguments, this.removeProperty, this);\n\t\treturn this;\n\t},\n\n\tset: function(prop, value){\n\t\tvar property = Element.Properties[prop];\n\t\t(property && property.set) ? property.set.call(this, value) : this.setProperty(prop, value);\n\t}.overloadSetter(),\n\n\tget: function(prop){\n\t\tvar property = Element.Properties[prop];\n\t\treturn (property && property.get) ? property.get.apply(this) : this.getProperty(prop);\n\t}.overloadGetter(),\n\n\terase: function(prop){\n\t\tvar property = Element.Properties[prop];\n\t\t(property && property.erase) ? property.erase.apply(this) : this.removeProperty(prop);\n\t\treturn this;\n\t},\n\n\thasClass: function(className){\n\t\treturn this.className.clean().contains(className, ' ');\n\t},\n\n\taddClass: function(className){\n\t\tif (!this.hasClass(className)) this.className = (this.className + ' ' + className).clean();\n\t\treturn this;\n\t},\n\n\tremoveClass: function(className){\n\t\tthis.className = this.className.replace(new RegExp('(^|\\\\s)' + className + '(?:\\\\s|$)'), '$1');\n\t\treturn this;\n\t},\n\n\ttoggleClass: function(className, force){\n\t\tif (force == null) force = !this.hasClass(className);\n\t\treturn (force) ? this.addClass(className) : this.removeClass(className);\n\t},\n\n\tadopt: function(){\n\t\tvar parent = this, fragment, elements = Array.flatten(arguments), length = elements.length;\n\t\tif (length > 1) parent = fragment = document.createDocumentFragment();\n\n\t\tfor (var i = 0; i < length; i++){\n\t\t\tvar element = document.id(elements[i], true);\n\t\t\tif (element) parent.appendChild(element);\n\t\t}\n\n\t\tif (fragment) this.appendChild(fragment);\n\n\t\treturn this;\n\t},\n\n\tappendText: function(text, where){\n\t\treturn this.grab(this.getDocument().newTextNode(text), where);\n\t},\n\n\tgrab: function(el, where){\n\t\tinserters[where || 'bottom'](document.id(el, true), this);\n\t\treturn this;\n\t},\n\n\tinject: function(el, where){\n\t\tinserters[where || 'bottom'](this, document.id(el, true));\n\t\treturn this;\n\t},\n\n\treplaces: function(el){\n\t\tel = document.id(el, true);\n\t\tel.parentNode.replaceChild(this, el);\n\t\treturn this;\n\t},\n\n\twraps: function(el, where){\n\t\tel = document.id(el, true);\n\t\treturn this.replaces(el).grab(el, where);\n\t},\n\n\tgetSelected: function(){\n\t\tthis.selectedIndex; // Safari 3.2.1\n\t\treturn new Elements(Array.from(this.options).filter(function(option){\n\t\t\treturn option.selected;\n\t\t}));\n\t},\n\n\ttoQueryString: function(){\n\t\tvar queryString = [];\n\t\tthis.getElements('input, select, textarea').each(function(el){\n\t\t\tvar type = el.type;\n\t\t\tif (!el.name || el.disabled || type == 'submit' || type == 'reset' || type == 'file' || type == 'image') return;\n\n\t\t\tvar value = (el.get('tag') == 'select') ? el.getSelected().map(function(opt){\n\t\t\t\t// IE\n\t\t\t\treturn document.id(opt).get('value');\n\t\t\t}) : ((type == 'radio' || type == 'checkbox') && !el.checked) ? null : el.get('value');\n\n\t\t\tArray.from(value).each(function(val){\n\t\t\t\tif (typeof val != 'undefined') queryString.push(encodeURIComponent(el.name) + '=' + encodeURIComponent(val));\n\t\t\t});\n\t\t});\n\t\treturn queryString.join('&');\n\t}\n\n});\n\nvar collected = {}, storage = {};\n\nvar get = function(uid){\n\treturn (storage[uid] || (storage[uid] = {}));\n};\n\nvar clean = function(item){\n\tvar uid = item.uniqueNumber;\n\tif (item.removeEvents) item.removeEvents();\n\tif (item.clearAttributes) item.clearAttributes();\n\tif (uid != null){\n\t\tdelete collected[uid];\n\t\tdelete storage[uid];\n\t}\n\treturn item;\n};\n\nvar formProps = {input: 'checked', option: 'selected', textarea: 'value'};\n\nElement.implement({\n\n\tdestroy: function(){\n\t\tvar children = clean(this).getElementsByTagName('*');\n\t\tArray.each(children, clean);\n\t\tElement.dispose(this);\n\t\treturn null;\n\t},\n\n\tempty: function(){\n\t\tArray.from(this.childNodes).each(Element.dispose);\n\t\treturn this;\n\t},\n\n\tdispose: function(){\n\t\treturn (this.parentNode) ? this.parentNode.removeChild(this) : this;\n\t},\n\n\tclone: function(contents, keepid){\n\t\tcontents = contents !== false;\n\t\tvar clone = this.cloneNode(contents), ce = [clone], te = [this], i;\n\n\t\tif (contents){\n\t\t\tce.append(Array.from(clone.getElementsByTagName('*')));\n\t\t\tte.append(Array.from(this.getElementsByTagName('*')));\n\t\t}\n\n\t\tfor (i = ce.length; i--;){\n\t\t\tvar node = ce[i], element = te[i];\n\t\t\tif (!keepid) node.removeAttribute('id');\n\t\t\t/**/\n\t\t\tif (node.clearAttributes){\n\t\t\t\tnode.clearAttributes();\n\t\t\t\tnode.mergeAttributes(element);\n\t\t\t\tnode.removeAttribute('uniqueNumber');\n\t\t\t\tif (node.options){\n\t\t\t\t\tvar no = node.options, eo = element.options;\n\t\t\t\t\tfor (var j = no.length; j--;) no[j].selected = eo[j].selected;\n\t\t\t\t}\n\t\t\t}\n\t\t\t/**/\n\t\t\tvar prop = formProps[element.tagName.toLowerCase()];\n\t\t\tif (prop && element[prop]) node[prop] = element[prop];\n\t\t}\n\n\t\t/**/\n\t\tif (Browser.ie){\n\t\t\tvar co = clone.getElementsByTagName('object'), to = this.getElementsByTagName('object');\n\t\t\tfor (i = co.length; i--;) co[i].outerHTML = to[i].outerHTML;\n\t\t}\n\t\t/**/\n\t\treturn document.id(clone);\n\t}\n\n});\n\n[Element, Window, Document].invoke('implement', {\n\n\taddListener: function(type, fn){\n\t\tif (type == 'unload'){\n\t\t\tvar old = fn, self = this;\n\t\t\tfn = function(){\n\t\t\t\tself.removeListener('unload', fn);\n\t\t\t\told();\n\t\t\t};\n\t\t} else {\n\t\t\tcollected[Slick.uidOf(this)] = this;\n\t\t}\n\t\tif (this.addEventListener) this.addEventListener(type, fn, !!arguments[2]);\n\t\telse this.attachEvent('on' + type, fn);\n\t\treturn this;\n\t},\n\n\tremoveListener: function(type, fn){\n\t\tif (this.removeEventListener) this.removeEventListener(type, fn, !!arguments[2]);\n\t\telse this.detachEvent('on' + type, fn);\n\t\treturn this;\n\t},\n\n\tretrieve: function(property, dflt){\n\t\tvar storage = get(Slick.uidOf(this)), prop = storage[property];\n\t\tif (dflt != null && prop == null) prop = storage[property] = dflt;\n\t\treturn prop != null ? prop : null;\n\t},\n\n\tstore: function(property, value){\n\t\tvar storage = get(Slick.uidOf(this));\n\t\tstorage[property] = value;\n\t\treturn this;\n\t},\n\n\teliminate: function(property){\n\t\tvar storage = get(Slick.uidOf(this));\n\t\tdelete storage[property];\n\t\treturn this;\n\t}\n\n});\n\n/**/\nif (window.attachEvent && !window.addEventListener) window.addListener('unload', function(){\n\tObject.each(collected, clean);\n\tif (window.CollectGarbage) CollectGarbage();\n});\n/**/\n\nElement.Properties = {};\n\n\n\nElement.Properties.style = {\n\n\tset: function(style){\n\t\tthis.style.cssText = style;\n\t},\n\n\tget: function(){\n\t\treturn this.style.cssText;\n\t},\n\n\terase: function(){\n\t\tthis.style.cssText = '';\n\t}\n\n};\n\nElement.Properties.tag = {\n\n\tget: function(){\n\t\treturn this.tagName.toLowerCase();\n\t}\n\n};\n\nElement.Properties.html = {\n\n\tset: function(html){\n\t\tif (html == null) html = '';\n\t\telse if (typeOf(html) == 'array') html = html.join('');\n\t\tthis.innerHTML = html;\n\t},\n\n\terase: function(){\n\t\tthis.innerHTML = '';\n\t}\n\n};\n\n/**/\n// technique by jdbarlett - http://jdbartlett.com/innershiv/\nvar div = document.createElement('div');\ndiv.innerHTML = '';\nvar supportsHTML5Elements = (div.childNodes.length == 1);\nif (!supportsHTML5Elements){\n\tvar tags = 'abbr article aside audio canvas datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video'.split(' '),\n\t\tfragment = document.createDocumentFragment(), l = tags.length;\n\twhile (l--) fragment.createElement(tags[l]);\n}\ndiv = null;\n/**/\n\n/**/\nvar supportsTableInnerHTML = Function.attempt(function(){\n\tvar table = document.createElement('table');\n\ttable.innerHTML = '';\n\treturn true;\n});\n\n/**/\nvar tr = document.createElement('tr'), html = '';\ntr.innerHTML = html;\nvar supportsTRInnerHTML = (tr.innerHTML == html);\ntr = null;\n/**/\n\nif (!supportsTableInnerHTML || !supportsTRInnerHTML || !supportsHTML5Elements){\n\n\tElement.Properties.html.set = (function(set){\n\n\t\tvar translations = {\n\t\t\ttable: [1, '', '
'],\n\t\t\tselect: [1, ''],\n\t\t\ttbody: [2, '', '
'],\n\t\t\ttr: [3, '', '
']\n\t\t};\n\n\t\ttranslations.thead = translations.tfoot = translations.tbody;\n\n\t\treturn function(html){\n\t\t\tvar wrap = translations[this.get('tag')];\n\t\t\tif (!wrap && !supportsHTML5Elements) wrap = [0, '', ''];\n\t\t\tif (!wrap) return set.call(this, html);\n\n\t\t\tvar level = wrap[0], wrapper = document.createElement('div'), target = wrapper;\n\t\t\tif (!supportsHTML5Elements) fragment.appendChild(wrapper);\n\t\t\twrapper.innerHTML = [wrap[1], html, wrap[2]].flatten().join('');\n\t\t\twhile (level--) target = target.firstChild;\n\t\t\tthis.empty().adopt(target.childNodes);\n\t\t\tif (!supportsHTML5Elements) fragment.removeChild(wrapper);\n\t\t\twrapper = null;\n\t\t};\n\n\t})(Element.Properties.html.set);\n}\n/*
*/\n\n/**/\nvar testForm = document.createElement('form');\ntestForm.innerHTML = '';\n\nif (testForm.firstChild.value != 's') Element.Properties.value = {\n\n\tset: function(value){\n\t\tvar tag = this.get('tag');\n\t\tif (tag != 'select') return this.setProperty('value', value);\n\t\tvar options = this.getElements('option');\n\t\tfor (var i = 0; i < options.length; i++){\n\t\t\tvar option = options[i],\n\t\t\t\tattr = option.getAttributeNode('value'),\n\t\t\t\toptionValue = (attr && attr.specified) ? option.value : option.get('text');\n\t\t\tif (optionValue == value) return option.selected = true;\n\t\t}\n\t},\n\n\tget: function(){\n\t\tvar option = this, tag = option.get('tag');\n\n\t\tif (tag != 'select' && tag != 'option') return this.getProperty('value');\n\n\t\tif (tag == 'select' && !(option = option.getSelected()[0])) return '';\n\n\t\tvar attr = option.getAttributeNode('value');\n\t\treturn (attr && attr.specified) ? option.value : option.get('text');\n\t}\n\n};\ntestForm = null;\n/**/\n\n/**/\nif (document.createElement('div').getAttributeNode('id')) Element.Properties.id = {\n\tset: function(id){\n\t\tthis.id = this.getAttributeNode('id').value = id;\n\t},\n\tget: function(){\n\t\treturn this.id || null;\n\t},\n\terase: function(){\n\t\tthis.id = this.getAttributeNode('id').value = '';\n\t}\n};\n/**/\n\n})();\n\n\n/*\n---\n\nname: Element.Style\n\ndescription: Contains methods for interacting with the styles of Elements in a fashionable way.\n\nlicense: MIT-style license.\n\nrequires: Element\n\nprovides: Element.Style\n\n...\n*/\n\n(function(){\n\nvar html = document.html;\n\n//\n// Check for oldIE, which does not remove styles when they're set to null\nvar el = document.createElement('div');\nel.style.color = 'red';\nel.style.color = null;\nvar doesNotRemoveStyles = el.style.color == 'red';\nel = null;\n//\n\nElement.Properties.styles = {set: function(styles){\n\tthis.setStyles(styles);\n}};\n\nvar hasOpacity = (html.style.opacity != null),\n\thasFilter = (html.style.filter != null),\n\treAlpha = /alpha\\(opacity=([\\d.]+)\\)/i;\n\nvar setVisibility = function(element, opacity){\n\telement.store('$opacity', opacity);\n\telement.style.visibility = opacity > 0 || opacity == null ? 'visible' : 'hidden';\n};\n\nvar setOpacity = (hasOpacity ? function(element, opacity){\n\telement.style.opacity = opacity;\n} : (hasFilter ? function(element, opacity){\n\tvar style = element.style;\n\tif (!element.currentStyle || !element.currentStyle.hasLayout) style.zoom = 1;\n\tif (opacity == null || opacity == 1) opacity = '';\n\telse opacity = 'alpha(opacity=' + (opacity * 100).limit(0, 100).round() + ')';\n\tvar filter = style.filter || element.getComputedStyle('filter') || '';\n\tstyle.filter = reAlpha.test(filter) ? filter.replace(reAlpha, opacity) : filter + opacity;\n\tif (!style.filter) style.removeAttribute('filter');\n} : setVisibility));\n\nvar getOpacity = (hasOpacity ? function(element){\n\tvar opacity = element.style.opacity || element.getComputedStyle('opacity');\n\treturn (opacity == '') ? 1 : opacity.toFloat();\n} : (hasFilter ? function(element){\n\tvar filter = (element.style.filter || element.getComputedStyle('filter')),\n\t\topacity;\n\tif (filter) opacity = filter.match(reAlpha);\n\treturn (opacity == null || filter == null) ? 1 : (opacity[1] / 100);\n} : function(element){\n\tvar opacity = element.retrieve('$opacity');\n\tif (opacity == null) opacity = (element.style.visibility == 'hidden' ? 0 : 1);\n\treturn opacity;\n}));\n\nvar floatName = (html.style.cssFloat == null) ? 'styleFloat' : 'cssFloat';\n\nElement.implement({\n\n\tgetComputedStyle: function(property){\n\t\tif (this.currentStyle) return this.currentStyle[property.camelCase()];\n\t\tvar defaultView = Element.getDocument(this).defaultView,\n\t\t\tcomputed = defaultView ? defaultView.getComputedStyle(this, null) : null;\n\t\treturn (computed) ? computed.getPropertyValue((property == floatName) ? 'float' : property.hyphenate()) : null;\n\t},\n\n\tsetStyle: function(property, value){\n\t\tif (property == 'opacity'){\n\t\t\tif (value != null) value = parseFloat(value);\n\t\t\tsetOpacity(this, value);\n\t\t\treturn this;\n\t\t}\n\t\tproperty = (property == 'float' ? floatName : property).camelCase();\n\t\tif (typeOf(value) != 'string'){\n\t\t\tvar map = (Element.Styles[property] || '@').split(' ');\n\t\t\tvalue = Array.from(value).map(function(val, i){\n\t\t\t\tif (!map[i]) return '';\n\t\t\t\treturn (typeOf(val) == 'number') ? map[i].replace('@', Math.round(val)) : val;\n\t\t\t}).join(' ');\n\t\t} else if (value == String(Number(value))){\n\t\t\tvalue = Math.round(value);\n\t\t}\n\t\tthis.style[property] = value;\n\t\t//\n\t\tif ((value == '' || value == null) && doesNotRemoveStyles && this.style.removeAttribute){\n\t\t\tthis.style.removeAttribute(property);\n\t\t}\n\t\t//\n\t\treturn this;\n\t},\n\n\tgetStyle: function(property){\n\t\tif (property == 'opacity') return getOpacity(this);\n\t\tproperty = (property == 'float' ? floatName : property).camelCase();\n\t\tvar result = this.style[property];\n\t\tif (!result || property == 'zIndex'){\n\t\t\tresult = [];\n\t\t\tfor (var style in Element.ShortStyles){\n\t\t\t\tif (property != style) continue;\n\t\t\t\tfor (var s in Element.ShortStyles[style]) result.push(this.getStyle(s));\n\t\t\t\treturn result.join(' ');\n\t\t\t}\n\t\t\tresult = this.getComputedStyle(property);\n\t\t}\n\t\tif (result){\n\t\t\tresult = String(result);\n\t\t\tvar color = result.match(/rgba?\\([\\d\\s,]+\\)/);\n\t\t\tif (color) result = result.replace(color[0], color[0].rgbToHex());\n\t\t}\n\t\tif (Browser.ie && isNaN(parseFloat(result))){\n\t\t\tif ((/^(height|width)$/).test(property)){\n\t\t\t\tvar values = (property == 'width') ? ['left', 'right'] : ['top', 'bottom'], size = 0;\n\t\t\t\tvalues.each(function(value){\n\t\t\t\t\tsize += this.getStyle('border-' + value + '-width').toInt() + this.getStyle('padding-' + value).toInt();\n\t\t\t\t}, this);\n\t\t\t\treturn this['offset' + property.capitalize()] - size + 'px';\n\t\t\t}\n\t\t\tif (Browser.opera && String(result).indexOf('px') != -1) return result;\n\t\t\tif ((/^border(.+)Width|margin|padding/).test(property)) return '0px';\n\t\t}\n\t\treturn result;\n\t},\n\n\tsetStyles: function(styles){\n\t\tfor (var style in styles) this.setStyle(style, styles[style]);\n\t\treturn this;\n\t},\n\n\tgetStyles: function(){\n\t\tvar result = {};\n\t\tArray.flatten(arguments).each(function(key){\n\t\t\tresult[key] = this.getStyle(key);\n\t\t}, this);\n\t\treturn result;\n\t}\n\n});\n\nElement.Styles = {\n\tleft: '@px', top: '@px', bottom: '@px', right: '@px',\n\twidth: '@px', height: '@px', maxWidth: '@px', maxHeight: '@px', minWidth: '@px', minHeight: '@px',\n\tbackgroundColor: 'rgb(@, @, @)', backgroundPosition: '@px @px', color: 'rgb(@, @, @)',\n\tfontSize: '@px', letterSpacing: '@px', lineHeight: '@px', clip: 'rect(@px @px @px @px)',\n\tmargin: '@px @px @px @px', padding: '@px @px @px @px', border: '@px @ rgb(@, @, @) @px @ rgb(@, @, @) @px @ rgb(@, @, @)',\n\tborderWidth: '@px @px @px @px', borderStyle: '@ @ @ @', borderColor: 'rgb(@, @, @) rgb(@, @, @) rgb(@, @, @) rgb(@, @, @)',\n\tzIndex: '@', 'zoom': '@', fontWeight: '@', textIndent: '@px', opacity: '@'\n};\n\n\n\n\n\nElement.ShortStyles = {margin: {}, padding: {}, border: {}, borderWidth: {}, borderStyle: {}, borderColor: {}};\n\n['Top', 'Right', 'Bottom', 'Left'].each(function(direction){\n\tvar Short = Element.ShortStyles;\n\tvar All = Element.Styles;\n\t['margin', 'padding'].each(function(style){\n\t\tvar sd = style + direction;\n\t\tShort[style][sd] = All[sd] = '@px';\n\t});\n\tvar bd = 'border' + direction;\n\tShort.border[bd] = All[bd] = '@px @ rgb(@, @, @)';\n\tvar bdw = bd + 'Width', bds = bd + 'Style', bdc = bd + 'Color';\n\tShort[bd] = {};\n\tShort.borderWidth[bdw] = Short[bd][bdw] = All[bdw] = '@px';\n\tShort.borderStyle[bds] = Short[bd][bds] = All[bds] = '@';\n\tShort.borderColor[bdc] = Short[bd][bdc] = All[bdc] = 'rgb(@, @, @)';\n});\n\n})();\n\n\n/*\n---\n\nname: Element.Event\n\ndescription: Contains Element methods for dealing with events. This file also includes mouseenter and mouseleave custom Element Events, if necessary.\n\nlicense: MIT-style license.\n\nrequires: [Element, Event]\n\nprovides: Element.Event\n\n...\n*/\n\n(function(){\n\nElement.Properties.events = {set: function(events){\n\tthis.addEvents(events);\n}};\n\n[Element, Window, Document].invoke('implement', {\n\n\taddEvent: function(type, fn){\n\t\tvar events = this.retrieve('events', {});\n\t\tif (!events[type]) events[type] = {keys: [], values: []};\n\t\tif (events[type].keys.contains(fn)) return this;\n\t\tevents[type].keys.push(fn);\n\t\tvar realType = type,\n\t\t\tcustom = Element.Events[type],\n\t\t\tcondition = fn,\n\t\t\tself = this;\n\t\tif (custom){\n\t\t\tif (custom.onAdd) custom.onAdd.call(this, fn, type);\n\t\t\tif (custom.condition){\n\t\t\t\tcondition = function(event){\n\t\t\t\t\tif (custom.condition.call(this, event, type)) return fn.call(this, event);\n\t\t\t\t\treturn true;\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (custom.base) realType = Function.from(custom.base).call(this, type);\n\t\t}\n\t\tvar defn = function(){\n\t\t\treturn fn.call(self);\n\t\t};\n\t\tvar nativeEvent = Element.NativeEvents[realType];\n\t\tif (nativeEvent){\n\t\t\tif (nativeEvent == 2){\n\t\t\t\tdefn = function(event){\n\t\t\t\t\tevent = new DOMEvent(event, self.getWindow());\n\t\t\t\t\tif (condition.call(self, event) === false) event.stop();\n\t\t\t\t};\n\t\t\t}\n\t\t\tthis.addListener(realType, defn, arguments[2]);\n\t\t}\n\t\tevents[type].values.push(defn);\n\t\treturn this;\n\t},\n\n\tremoveEvent: function(type, fn){\n\t\tvar events = this.retrieve('events');\n\t\tif (!events || !events[type]) return this;\n\t\tvar list = events[type];\n\t\tvar index = list.keys.indexOf(fn);\n\t\tif (index == -1) return this;\n\t\tvar value = list.values[index];\n\t\tdelete list.keys[index];\n\t\tdelete list.values[index];\n\t\tvar custom = Element.Events[type];\n\t\tif (custom){\n\t\t\tif (custom.onRemove) custom.onRemove.call(this, fn, type);\n\t\t\tif (custom.base) type = Function.from(custom.base).call(this, type);\n\t\t}\n\t\treturn (Element.NativeEvents[type]) ? this.removeListener(type, value, arguments[2]) : this;\n\t},\n\n\taddEvents: function(events){\n\t\tfor (var event in events) this.addEvent(event, events[event]);\n\t\treturn this;\n\t},\n\n\tremoveEvents: function(events){\n\t\tvar type;\n\t\tif (typeOf(events) == 'object'){\n\t\t\tfor (type in events) this.removeEvent(type, events[type]);\n\t\t\treturn this;\n\t\t}\n\t\tvar attached = this.retrieve('events');\n\t\tif (!attached) return this;\n\t\tif (!events){\n\t\t\tfor (type in attached) this.removeEvents(type);\n\t\t\tthis.eliminate('events');\n\t\t} else if (attached[events]){\n\t\t\tattached[events].keys.each(function(fn){\n\t\t\t\tthis.removeEvent(events, fn);\n\t\t\t}, this);\n\t\t\tdelete attached[events];\n\t\t}\n\t\treturn this;\n\t},\n\n\tfireEvent: function(type, args, delay){\n\t\tvar events = this.retrieve('events');\n\t\tif (!events || !events[type]) return this;\n\t\targs = Array.from(args);\n\n\t\tevents[type].keys.each(function(fn){\n\t\t\tif (delay) fn.delay(delay, this, args);\n\t\t\telse fn.apply(this, args);\n\t\t}, this);\n\t\treturn this;\n\t},\n\n\tcloneEvents: function(from, type){\n\t\tfrom = document.id(from);\n\t\tvar events = from.retrieve('events');\n\t\tif (!events) return this;\n\t\tif (!type){\n\t\t\tfor (var eventType in events) this.cloneEvents(from, eventType);\n\t\t} else if (events[type]){\n\t\t\tevents[type].keys.each(function(fn){\n\t\t\t\tthis.addEvent(type, fn);\n\t\t\t}, this);\n\t\t}\n\t\treturn this;\n\t}\n\n});\n\nElement.NativeEvents = {\n\tclick: 2, dblclick: 2, mouseup: 2, mousedown: 2, contextmenu: 2, //mouse buttons\n\tmousewheel: 2, DOMMouseScroll: 2, //mouse wheel\n\tmouseover: 2, mouseout: 2, mousemove: 2, selectstart: 2, selectend: 2, //mouse movement\n\tkeydown: 2, keypress: 2, keyup: 2, //keyboard\n\torientationchange: 2, // mobile\n\ttouchstart: 2, touchmove: 2, touchend: 2, touchcancel: 2, // touch\n\tgesturestart: 2, gesturechange: 2, gestureend: 2, // gesture\n\tfocus: 2, blur: 2, change: 2, reset: 2, select: 2, submit: 2, paste: 2, input: 2, //form elements\n\tload: 2, unload: 1, beforeunload: 2, resize: 1, move: 1, DOMContentLoaded: 1, readystatechange: 1, //window\n\terror: 1, abort: 1, scroll: 1 //misc\n};\n\nElement.Events = {mousewheel: {\n\tbase: (Browser.firefox) ? 'DOMMouseScroll' : 'mousewheel'\n}};\n\nif ('onmouseenter' in document.documentElement){\n\tElement.NativeEvents.mouseenter = Element.NativeEvents.mouseleave = 2;\n} else {\n\tvar check = function(event){\n\t\tvar related = event.relatedTarget;\n\t\tif (related == null) return true;\n\t\tif (!related) return false;\n\t\treturn (related != this && related.prefix != 'xul' && typeOf(this) != 'document' && !this.contains(related));\n\t};\n\n\tElement.Events.mouseenter = {\n\t\tbase: 'mouseover',\n\t\tcondition: check\n\t};\n\n\tElement.Events.mouseleave = {\n\t\tbase: 'mouseout',\n\t\tcondition: check\n\t};\n}\n\n/**/\nif (!window.addEventListener){\n\tElement.NativeEvents.propertychange = 2;\n\tElement.Events.change = {\n\t\tbase: function(){\n\t\t\tvar type = this.type;\n\t\t\treturn (this.get('tag') == 'input' && (type == 'radio' || type == 'checkbox')) ? 'propertychange' : 'change'\n\t\t},\n\t\tcondition: function(event){\n\t\t\treturn this.type != 'radio' || (event.event.propertyName == 'checked' && this.checked);\n\t\t}\n\t}\n}\n/**/\n\n\n\n})();\n\n\n/*\n---\n\nname: Element.Delegation\n\ndescription: Extends the Element native object to include the delegate method for more efficient event management.\n\nlicense: MIT-style license.\n\nrequires: [Element.Event]\n\nprovides: [Element.Delegation]\n\n...\n*/\n\n(function(){\n\nvar eventListenerSupport = !!window.addEventListener;\n\nElement.NativeEvents.focusin = Element.NativeEvents.focusout = 2;\n\nvar bubbleUp = function(self, match, fn, event, target){\n\twhile (target && target != self){\n\t\tif (match(target, event)) return fn.call(target, event, target);\n\t\ttarget = document.id(target.parentNode);\n\t}\n};\n\nvar map = {\n\tmouseenter: {\n\t\tbase: 'mouseover'\n\t},\n\tmouseleave: {\n\t\tbase: 'mouseout'\n\t},\n\tfocus: {\n\t\tbase: 'focus' + (eventListenerSupport ? '' : 'in'),\n\t\tcapture: true\n\t},\n\tblur: {\n\t\tbase: eventListenerSupport ? 'blur' : 'focusout',\n\t\tcapture: true\n\t}\n};\n\n/**/\nvar _key = '$delegation:';\nvar formObserver = function(type){\n\n\treturn {\n\n\t\tbase: 'focusin',\n\n\t\tremove: function(self, uid){\n\t\t\tvar list = self.retrieve(_key + type + 'listeners', {})[uid];\n\t\t\tif (list && list.forms) for (var i = list.forms.length; i--;){\n\t\t\t\tlist.forms[i].removeEvent(type, list.fns[i]);\n\t\t\t}\n\t\t},\n\n\t\tlisten: function(self, match, fn, event, target, uid){\n\t\t\tvar form = (target.get('tag') == 'form') ? target : event.target.getParent('form');\n\t\t\tif (!form) return;\n\n\t\t\tvar listeners = self.retrieve(_key + type + 'listeners', {}),\n\t\t\t\tlistener = listeners[uid] || {forms: [], fns: []},\n\t\t\t\tforms = listener.forms, fns = listener.fns;\n\n\t\t\tif (forms.indexOf(form) != -1) return;\n\t\t\tforms.push(form);\n\n\t\t\tvar _fn = function(event){\n\t\t\t\tbubbleUp(self, match, fn, event, target);\n\t\t\t};\n\t\t\tform.addEvent(type, _fn);\n\t\t\tfns.push(_fn);\n\n\t\t\tlisteners[uid] = listener;\n\t\t\tself.store(_key + type + 'listeners', listeners);\n\t\t}\n\t};\n};\n\nvar inputObserver = function(type){\n\treturn {\n\t\tbase: 'focusin',\n\t\tlisten: function(self, match, fn, event, target){\n\t\t\tvar events = {blur: function(){\n\t\t\t\tthis.removeEvents(events);\n\t\t\t}};\n\t\t\tevents[type] = function(event){\n\t\t\t\tbubbleUp(self, match, fn, event, target);\n\t\t\t};\n\t\t\tevent.target.addEvents(events);\n\t\t}\n\t};\n};\n\nif (!eventListenerSupport) Object.append(map, {\n\tsubmit: formObserver('submit'),\n\treset: formObserver('reset'),\n\tchange: inputObserver('change'),\n\tselect: inputObserver('select')\n});\n/**/\n\nvar proto = Element.prototype,\n\taddEvent = proto.addEvent,\n\tremoveEvent = proto.removeEvent;\n\nvar relay = function(old, method){\n\treturn function(type, fn, useCapture){\n\t\tif (type.indexOf(':relay') == -1) return old.call(this, type, fn, useCapture);\n\t\tvar parsed = Slick.parse(type).expressions[0][0];\n\t\tif (parsed.pseudos[0].key != 'relay') return old.call(this, type, fn, useCapture);\n\t\tvar newType = parsed.tag;\n\t\tparsed.pseudos.slice(1).each(function(pseudo){\n\t\t\tnewType += ':' + pseudo.key + (pseudo.value ? '(' + pseudo.value + ')' : '');\n\t\t});\n\t\told.call(this, type, fn);\n\t\treturn method.call(this, newType, parsed.pseudos[0].value, fn);\n\t};\n};\n\nvar delegation = {\n\n\taddEvent: function(type, match, fn){\n\t\tvar storage = this.retrieve('$delegates', {}), stored = storage[type];\n\t\tif (stored) for (var _uid in stored){\n\t\t\tif (stored[_uid].fn == fn && stored[_uid].match == match) return this;\n\t\t}\n\n\t\tvar _type = type, _match = match, _fn = fn, _map = map[type] || {};\n\t\ttype = _map.base || _type;\n\n\t\tmatch = function(target){\n\t\t\treturn Slick.match(target, _match);\n\t\t};\n\n\t\tvar elementEvent = Element.Events[_type];\n\t\tif (elementEvent && elementEvent.condition){\n\t\t\tvar __match = match, condition = elementEvent.condition;\n\t\t\tmatch = function(target, event){\n\t\t\t\treturn __match(target, event) && condition.call(target, event, type);\n\t\t\t};\n\t\t}\n\n\t\tvar self = this, uid = String.uniqueID();\n\t\tvar delegator = _map.listen ? function(event, target){\n\t\t\tif (!target && event && event.target) target = event.target;\n\t\t\tif (target) _map.listen(self, match, fn, event, target, uid);\n\t\t} : function(event, target){\n\t\t\tif (!target && event && event.target) target = event.target;\n\t\t\tif (target) bubbleUp(self, match, fn, event, target);\n\t\t};\n\n\t\tif (!stored) stored = {};\n\t\tstored[uid] = {\n\t\t\tmatch: _match,\n\t\t\tfn: _fn,\n\t\t\tdelegator: delegator\n\t\t};\n\t\tstorage[_type] = stored;\n\t\treturn addEvent.call(this, type, delegator, _map.capture);\n\t},\n\n\tremoveEvent: function(type, match, fn, _uid){\n\t\tvar storage = this.retrieve('$delegates', {}), stored = storage[type];\n\t\tif (!stored) return this;\n\n\t\tif (_uid){\n\t\t\tvar _type = type, delegator = stored[_uid].delegator, _map = map[type] || {};\n\t\t\ttype = _map.base || _type;\n\t\t\tif (_map.remove) _map.remove(this, _uid);\n\t\t\tdelete stored[_uid];\n\t\t\tstorage[_type] = stored;\n\t\t\treturn removeEvent.call(this, type, delegator);\n\t\t}\n\n\t\tvar __uid, s;\n\t\tif (fn) for (__uid in stored){\n\t\t\ts = stored[__uid];\n\t\t\tif (s.match == match && s.fn == fn) return delegation.removeEvent.call(this, type, match, fn, __uid);\n\t\t} else for (__uid in stored){\n\t\t\ts = stored[__uid];\n\t\t\tif (s.match == match) delegation.removeEvent.call(this, type, match, s.fn, __uid);\n\t\t}\n\t\treturn this;\n\t}\n\n};\n\n[Element, Window, Document].invoke('implement', {\n\taddEvent: relay(addEvent, delegation.addEvent),\n\tremoveEvent: relay(removeEvent, delegation.removeEvent)\n});\n\n})();\n\n\n/*\n---\n\nname: Element.Dimensions\n\ndescription: Contains methods to work with size, scroll, or positioning of Elements and the window object.\n\nlicense: MIT-style license.\n\ncredits:\n - Element positioning based on the [qooxdoo](http://qooxdoo.org/) code and smart browser fixes, [LGPL License](http://www.gnu.org/licenses/lgpl.html).\n - Viewport dimensions based on [YUI](http://developer.yahoo.com/yui/) code, [BSD License](http://developer.yahoo.com/yui/license.html).\n\nrequires: [Element, Element.Style]\n\nprovides: [Element.Dimensions]\n\n...\n*/\n\n(function(){\n\nvar element = document.createElement('div'),\n\tchild = document.createElement('div');\nelement.style.height = '0';\nelement.appendChild(child);\nvar brokenOffsetParent = (child.offsetParent === element);\nelement = child = null;\n\nvar isOffset = function(el){\n\treturn styleString(el, 'position') != 'static' || isBody(el);\n};\n\nvar isOffsetStatic = function(el){\n\treturn isOffset(el) || (/^(?:table|td|th)$/i).test(el.tagName);\n};\n\nElement.implement({\n\n\tscrollTo: function(x, y){\n\t\tif (isBody(this)){\n\t\t\tthis.getWindow().scrollTo(x, y);\n\t\t} else {\n\t\t\tthis.scrollLeft = x;\n\t\t\tthis.scrollTop = y;\n\t\t}\n\t\treturn this;\n\t},\n\n\tgetSize: function(){\n\t\tif (isBody(this)) return this.getWindow().getSize();\n\t\treturn {x: this.offsetWidth, y: this.offsetHeight};\n\t},\n\n\tgetScrollSize: function(){\n\t\tif (isBody(this)) return this.getWindow().getScrollSize();\n\t\treturn {x: this.scrollWidth, y: this.scrollHeight};\n\t},\n\n\tgetScroll: function(){\n\t\tif (isBody(this)) return this.getWindow().getScroll();\n\t\treturn {x: this.scrollLeft, y: this.scrollTop};\n\t},\n\n\tgetScrolls: function(){\n\t\tvar element = this.parentNode, position = {x: 0, y: 0};\n\t\twhile (element && !isBody(element)){\n\t\t\tposition.x += element.scrollLeft;\n\t\t\tposition.y += element.scrollTop;\n\t\t\telement = element.parentNode;\n\t\t}\n\t\treturn position;\n\t},\n\n\tgetOffsetParent: brokenOffsetParent ? function(){\n\t\tvar element = this;\n\t\tif (isBody(element) || styleString(element, 'position') == 'fixed') return null;\n\n\t\tvar isOffsetCheck = (styleString(element, 'position') == 'static') ? isOffsetStatic : isOffset;\n\t\twhile ((element = element.parentNode)){\n\t\t\tif (isOffsetCheck(element)) return element;\n\t\t}\n\t\treturn null;\n\t} : function(){\n\t\tvar element = this;\n\t\tif (isBody(element) || styleString(element, 'position') == 'fixed') return null;\n\n\t\ttry {\n\t\t\treturn element.offsetParent;\n\t\t} catch(e) {}\n\t\treturn null;\n\t},\n\n\tgetOffsets: function(){\n\t\tif (this.getBoundingClientRect && !Browser.Platform.ios){\n\t\t\tvar bound = this.getBoundingClientRect(),\n\t\t\t\thtml = document.id(this.getDocument().documentElement),\n\t\t\t\thtmlScroll = html.getScroll(),\n\t\t\t\telemScrolls = this.getScrolls(),\n\t\t\t\tisFixed = (styleString(this, 'position') == 'fixed');\n\n\t\t\treturn {\n\t\t\t\tx: bound.left.toInt() + elemScrolls.x + ((isFixed) ? 0 : htmlScroll.x) - html.clientLeft,\n\t\t\t\ty: bound.top.toInt() + elemScrolls.y + ((isFixed) ? 0 : htmlScroll.y) - html.clientTop\n\t\t\t};\n\t\t}\n\n\t\tvar element = this, position = {x: 0, y: 0};\n\t\tif (isBody(this)) return position;\n\n\t\twhile (element && !isBody(element)){\n\t\t\tposition.x += element.offsetLeft;\n\t\t\tposition.y += element.offsetTop;\n\n\t\t\tif (Browser.firefox){\n\t\t\t\tif (!borderBox(element)){\n\t\t\t\t\tposition.x += leftBorder(element);\n\t\t\t\t\tposition.y += topBorder(element);\n\t\t\t\t}\n\t\t\t\tvar parent = element.parentNode;\n\t\t\t\tif (parent && styleString(parent, 'overflow') != 'visible'){\n\t\t\t\t\tposition.x += leftBorder(parent);\n\t\t\t\t\tposition.y += topBorder(parent);\n\t\t\t\t}\n\t\t\t} else if (element != this && Browser.safari){\n\t\t\t\tposition.x += leftBorder(element);\n\t\t\t\tposition.y += topBorder(element);\n\t\t\t}\n\n\t\t\telement = element.offsetParent;\n\t\t}\n\t\tif (Browser.firefox && !borderBox(this)){\n\t\t\tposition.x -= leftBorder(this);\n\t\t\tposition.y -= topBorder(this);\n\t\t}\n\t\treturn position;\n\t},\n\n\tgetPosition: function(relative){\n\t\tvar offset = this.getOffsets(),\n\t\t\tscroll = this.getScrolls();\n\t\tvar position = {\n\t\t\tx: offset.x - scroll.x,\n\t\t\ty: offset.y - scroll.y\n\t\t};\n\n\t\tif (relative && (relative = document.id(relative))){\n\t\t\tvar relativePosition = relative.getPosition();\n\t\t\treturn {x: position.x - relativePosition.x - leftBorder(relative), y: position.y - relativePosition.y - topBorder(relative)};\n\t\t}\n\t\treturn position;\n\t},\n\n\tgetCoordinates: function(element){\n\t\tif (isBody(this)) return this.getWindow().getCoordinates();\n\t\tvar position = this.getPosition(element),\n\t\t\tsize = this.getSize();\n\t\tvar obj = {\n\t\t\tleft: position.x,\n\t\t\ttop: position.y,\n\t\t\twidth: size.x,\n\t\t\theight: size.y\n\t\t};\n\t\tobj.right = obj.left + obj.width;\n\t\tobj.bottom = obj.top + obj.height;\n\t\treturn obj;\n\t},\n\n\tcomputePosition: function(obj){\n\t\treturn {\n\t\t\tleft: obj.x - styleNumber(this, 'margin-left'),\n\t\t\ttop: obj.y - styleNumber(this, 'margin-top')\n\t\t};\n\t},\n\n\tsetPosition: function(obj){\n\t\treturn this.setStyles(this.computePosition(obj));\n\t}\n\n});\n\n\n[Document, Window].invoke('implement', {\n\n\tgetSize: function(){\n\t\tvar doc = getCompatElement(this);\n\t\treturn {x: doc.clientWidth, y: doc.clientHeight};\n\t},\n\n\tgetScroll: function(){\n\t\tvar win = this.getWindow(), doc = getCompatElement(this);\n\t\treturn {x: win.pageXOffset || doc.scrollLeft, y: win.pageYOffset || doc.scrollTop};\n\t},\n\n\tgetScrollSize: function(){\n\t\tvar doc = getCompatElement(this),\n\t\t\tmin = this.getSize(),\n\t\t\tbody = this.getDocument().body;\n\n\t\treturn {x: Math.max(doc.scrollWidth, body.scrollWidth, min.x), y: Math.max(doc.scrollHeight, body.scrollHeight, min.y)};\n\t},\n\n\tgetPosition: function(){\n\t\treturn {x: 0, y: 0};\n\t},\n\n\tgetCoordinates: function(){\n\t\tvar size = this.getSize();\n\t\treturn {top: 0, left: 0, bottom: size.y, right: size.x, height: size.y, width: size.x};\n\t}\n\n});\n\n// private methods\n\nvar styleString = Element.getComputedStyle;\n\nfunction styleNumber(element, style){\n\treturn styleString(element, style).toInt() || 0;\n}\n\nfunction borderBox(element){\n\treturn styleString(element, '-moz-box-sizing') == 'border-box';\n}\n\nfunction topBorder(element){\n\treturn styleNumber(element, 'border-top-width');\n}\n\nfunction leftBorder(element){\n\treturn styleNumber(element, 'border-left-width');\n}\n\nfunction isBody(element){\n\treturn (/^(?:body|html)$/i).test(element.tagName);\n}\n\nfunction getCompatElement(element){\n\tvar doc = element.getDocument();\n\treturn (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body;\n}\n\n})();\n\n//aliases\nElement.alias({position: 'setPosition'}); //compatability\n\n[Window, Document, Element].invoke('implement', {\n\n\tgetHeight: function(){\n\t\treturn this.getSize().y;\n\t},\n\n\tgetWidth: function(){\n\t\treturn this.getSize().x;\n\t},\n\n\tgetScrollTop: function(){\n\t\treturn this.getScroll().y;\n\t},\n\n\tgetScrollLeft: function(){\n\t\treturn this.getScroll().x;\n\t},\n\n\tgetScrollHeight: function(){\n\t\treturn this.getScrollSize().y;\n\t},\n\n\tgetScrollWidth: function(){\n\t\treturn this.getScrollSize().x;\n\t},\n\n\tgetTop: function(){\n\t\treturn this.getPosition().y;\n\t},\n\n\tgetLeft: function(){\n\t\treturn this.getPosition().x;\n\t}\n\n});\n\n\n/*\n---\n\nname: Fx\n\ndescription: Contains the basic animation logic to be extended by all other Fx Classes.\n\nlicense: MIT-style license.\n\nrequires: [Chain, Events, Options]\n\nprovides: Fx\n\n...\n*/\n\n(function(){\n\nvar Fx = this.Fx = new Class({\n\n\tImplements: [Chain, Events, Options],\n\n\toptions: {\n\t\t/*\n\t\tonStart: nil,\n\t\tonCancel: nil,\n\t\tonComplete: nil,\n\t\t*/\n\t\tfps: 60,\n\t\tunit: false,\n\t\tduration: 500,\n\t\tframes: null,\n\t\tframeSkip: true,\n\t\tlink: 'ignore'\n\t},\n\n\tinitialize: function(options){\n\t\tthis.subject = this.subject || this;\n\t\tthis.setOptions(options);\n\t},\n\n\tgetTransition: function(){\n\t\treturn function(p){\n\t\t\treturn -(Math.cos(Math.PI * p) - 1) / 2;\n\t\t};\n\t},\n\n\tstep: function(now){\n\t\tif (this.options.frameSkip){\n\t\t\tvar diff = (this.time != null) ? (now - this.time) : 0, frames = diff / this.frameInterval;\n\t\t\tthis.time = now;\n\t\t\tthis.frame += frames;\n\t\t} else {\n\t\t\tthis.frame++;\n\t\t}\n\n\t\tif (this.frame < this.frames){\n\t\t\tvar delta = this.transition(this.frame / this.frames);\n\t\t\tthis.set(this.compute(this.from, this.to, delta));\n\t\t} else {\n\t\t\tthis.frame = this.frames;\n\t\t\tthis.set(this.compute(this.from, this.to, 1));\n\t\t\tthis.stop();\n\t\t}\n\t},\n\n\tset: function(now){\n\t\treturn now;\n\t},\n\n\tcompute: function(from, to, delta){\n\t\treturn Fx.compute(from, to, delta);\n\t},\n\n\tcheck: function(){\n\t\tif (!this.isRunning()) return true;\n\t\tswitch (this.options.link){\n\t\t\tcase 'cancel': this.cancel(); return true;\n\t\t\tcase 'chain': this.chain(this.caller.pass(arguments, this)); return false;\n\t\t}\n\t\treturn false;\n\t},\n\n\tstart: function(from, to){\n\t\tif (!this.check(from, to)) return this;\n\t\tthis.from = from;\n\t\tthis.to = to;\n\t\tthis.frame = (this.options.frameSkip) ? 0 : -1;\n\t\tthis.time = null;\n\t\tthis.transition = this.getTransition();\n\t\tvar frames = this.options.frames, fps = this.options.fps, duration = this.options.duration;\n\t\tthis.duration = Fx.Durations[duration] || duration.toInt();\n\t\tthis.frameInterval = 1000 / fps;\n\t\tthis.frames = frames || Math.round(this.duration / this.frameInterval);\n\t\tthis.fireEvent('start', this.subject);\n\t\tpushInstance.call(this, fps);\n\t\treturn this;\n\t},\n\n\tstop: function(){\n\t\tif (this.isRunning()){\n\t\t\tthis.time = null;\n\t\t\tpullInstance.call(this, this.options.fps);\n\t\t\tif (this.frames == this.frame){\n\t\t\t\tthis.fireEvent('complete', this.subject);\n\t\t\t\tif (!this.callChain()) this.fireEvent('chainComplete', this.subject);\n\t\t\t} else {\n\t\t\t\tthis.fireEvent('stop', this.subject);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t},\n\n\tcancel: function(){\n\t\tif (this.isRunning()){\n\t\t\tthis.time = null;\n\t\t\tpullInstance.call(this, this.options.fps);\n\t\t\tthis.frame = this.frames;\n\t\t\tthis.fireEvent('cancel', this.subject).clearChain();\n\t\t}\n\t\treturn this;\n\t},\n\n\tpause: function(){\n\t\tif (this.isRunning()){\n\t\t\tthis.time = null;\n\t\t\tpullInstance.call(this, this.options.fps);\n\t\t}\n\t\treturn this;\n\t},\n\n\tresume: function(){\n\t\tif ((this.frame < this.frames) && !this.isRunning()) pushInstance.call(this, this.options.fps);\n\t\treturn this;\n\t},\n\n\tisRunning: function(){\n\t\tvar list = instances[this.options.fps];\n\t\treturn list && list.contains(this);\n\t}\n\n});\n\nFx.compute = function(from, to, delta){\n\treturn (to - from) * delta + from;\n};\n\nFx.Durations = {'short': 250, 'normal': 500, 'long': 1000};\n\n// global timers\n\nvar instances = {}, timers = {};\n\nvar loop = function(){\n\tvar now = Date.now();\n\tfor (var i = this.length; i--;){\n\t\tvar instance = this[i];\n\t\tif (instance) instance.step(now);\n\t}\n};\n\nvar pushInstance = function(fps){\n\tvar list = instances[fps] || (instances[fps] = []);\n\tlist.push(this);\n\tif (!timers[fps]) timers[fps] = loop.periodical(Math.round(1000 / fps), list);\n};\n\nvar pullInstance = function(fps){\n\tvar list = instances[fps];\n\tif (list){\n\t\tlist.erase(this);\n\t\tif (!list.length && timers[fps]){\n\t\t\tdelete instances[fps];\n\t\t\ttimers[fps] = clearInterval(timers[fps]);\n\t\t}\n\t}\n};\n\n})();\n\n\n/*\n---\n\nname: Fx.CSS\n\ndescription: Contains the CSS animation logic. Used by Fx.Tween, Fx.Morph, Fx.Elements.\n\nlicense: MIT-style license.\n\nrequires: [Fx, Element.Style]\n\nprovides: Fx.CSS\n\n...\n*/\n\nFx.CSS = new Class({\n\n\tExtends: Fx,\n\n\t//prepares the base from/to object\n\n\tprepare: function(element, property, values){\n\t\tvalues = Array.from(values);\n\t\tvar from = values[0], to = values[1];\n\t\tif (to == null){\n\t\t\tto = from;\n\t\t\tfrom = element.getStyle(property);\n\t\t\tvar unit = this.options.unit;\n\t\t\t// adapted from: https://github.com/ryanmorr/fx/blob/master/fx.js#L299\n\t\t\tif (unit && from.slice(-unit.length) != unit && parseFloat(from) != 0){\n\t\t\t\telement.setStyle(property, to + unit);\n\t\t\t\tvar value = element.getComputedStyle(property);\n\t\t\t\t// IE and Opera support pixelLeft or pixelWidth\n\t\t\t\tif (!(/px$/.test(value))){\n\t\t\t\t\tvalue = element.style[('pixel-' + property).camelCase()];\n\t\t\t\t\tif (value == null){\n\t\t\t\t\t\t// adapted from Dean Edwards' http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\t\t\t\t\t\tvar left = element.style.left;\n\t\t\t\t\t\telement.style.left = to + unit;\n\t\t\t\t\t\tvalue = element.style.pixelLeft;\n\t\t\t\t\t\telement.style.left = left;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfrom = (to || 1) / (parseFloat(value) || 1) * (parseFloat(from) || 0);\n\t\t\t\telement.setStyle(property, from + unit);\n\t\t\t}\n\t\t}\n\t\treturn {from: this.parse(from), to: this.parse(to)};\n\t},\n\n\t//parses a value into an array\n\n\tparse: function(value){\n\t\tvalue = Function.from(value)();\n\t\tvalue = (typeof value == 'string') ? value.split(' ') : Array.from(value);\n\t\treturn value.map(function(val){\n\t\t\tval = String(val);\n\t\t\tvar found = false;\n\t\t\tObject.each(Fx.CSS.Parsers, function(parser, key){\n\t\t\t\tif (found) return;\n\t\t\t\tvar parsed = parser.parse(val);\n\t\t\t\tif (parsed || parsed === 0) found = {value: parsed, parser: parser};\n\t\t\t});\n\t\t\tfound = found || {value: val, parser: Fx.CSS.Parsers.String};\n\t\t\treturn found;\n\t\t});\n\t},\n\n\t//computes by a from and to prepared objects, using their parsers.\n\n\tcompute: function(from, to, delta){\n\t\tvar computed = [];\n\t\t(Math.min(from.length, to.length)).times(function(i){\n\t\t\tcomputed.push({value: from[i].parser.compute(from[i].value, to[i].value, delta), parser: from[i].parser});\n\t\t});\n\t\tcomputed.$family = Function.from('fx:css:value');\n\t\treturn computed;\n\t},\n\n\t//serves the value as settable\n\n\tserve: function(value, unit){\n\t\tif (typeOf(value) != 'fx:css:value') value = this.parse(value);\n\t\tvar returned = [];\n\t\tvalue.each(function(bit){\n\t\t\treturned = returned.concat(bit.parser.serve(bit.value, unit));\n\t\t});\n\t\treturn returned;\n\t},\n\n\t//renders the change to an element\n\n\trender: function(element, property, value, unit){\n\t\telement.setStyle(property, this.serve(value, unit));\n\t},\n\n\t//searches inside the page css to find the values for a selector\n\n\tsearch: function(selector){\n\t\tif (Fx.CSS.Cache[selector]) return Fx.CSS.Cache[selector];\n\t\tvar to = {}, selectorTest = new RegExp('^' + selector.escapeRegExp() + '$');\n\t\tArray.each(document.styleSheets, function(sheet, j){\n\t\t\tvar href = sheet.href;\n\t\t\tif (href && href.contains('://') && !href.contains(document.domain)) return;\n\t\t\tvar rules = sheet.rules || sheet.cssRules;\n\t\t\tArray.each(rules, function(rule, i){\n\t\t\t\tif (!rule.style) return;\n\t\t\t\tvar selectorText = (rule.selectorText) ? rule.selectorText.replace(/^\\w+/, function(m){\n\t\t\t\t\treturn m.toLowerCase();\n\t\t\t\t}) : null;\n\t\t\t\tif (!selectorText || !selectorTest.test(selectorText)) return;\n\t\t\t\tObject.each(Element.Styles, function(value, style){\n\t\t\t\t\tif (!rule.style[style] || Element.ShortStyles[style]) return;\n\t\t\t\t\tvalue = String(rule.style[style]);\n\t\t\t\t\tto[style] = ((/^rgb/).test(value)) ? value.rgbToHex() : value;\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t\treturn Fx.CSS.Cache[selector] = to;\n\t}\n\n});\n\nFx.CSS.Cache = {};\n\nFx.CSS.Parsers = {\n\n\tColor: {\n\t\tparse: function(value){\n\t\t\tif (value.match(/^#[0-9a-f]{3,6}$/i)) return value.hexToRgb(true);\n\t\t\treturn ((value = value.match(/(\\d+),\\s*(\\d+),\\s*(\\d+)/))) ? [value[1], value[2], value[3]] : false;\n\t\t},\n\t\tcompute: function(from, to, delta){\n\t\t\treturn from.map(function(value, i){\n\t\t\t\treturn Math.round(Fx.compute(from[i], to[i], delta));\n\t\t\t});\n\t\t},\n\t\tserve: function(value){\n\t\t\treturn value.map(Number);\n\t\t}\n\t},\n\n\tNumber: {\n\t\tparse: parseFloat,\n\t\tcompute: Fx.compute,\n\t\tserve: function(value, unit){\n\t\t\treturn (unit) ? value + unit : value;\n\t\t}\n\t},\n\n\tString: {\n\t\tparse: Function.from(false),\n\t\tcompute: function(zero, one){\n\t\t\treturn one;\n\t\t},\n\t\tserve: function(zero){\n\t\t\treturn zero;\n\t\t}\n\t}\n\n};\n\n\n\n\n/*\n---\n\nname: Fx.Tween\n\ndescription: Formerly Fx.Style, effect to transition any CSS property for an element.\n\nlicense: MIT-style license.\n\nrequires: Fx.CSS\n\nprovides: [Fx.Tween, Element.fade, Element.highlight]\n\n...\n*/\n\nFx.Tween = new Class({\n\n\tExtends: Fx.CSS,\n\n\tinitialize: function(element, options){\n\t\tthis.element = this.subject = document.id(element);\n\t\tthis.parent(options);\n\t},\n\n\tset: function(property, now){\n\t\tif (arguments.length == 1){\n\t\t\tnow = property;\n\t\t\tproperty = this.property || this.options.property;\n\t\t}\n\t\tthis.render(this.element, property, now, this.options.unit);\n\t\treturn this;\n\t},\n\n\tstart: function(property, from, to){\n\t\tif (!this.check(property, from, to)) return this;\n\t\tvar args = Array.flatten(arguments);\n\t\tthis.property = this.options.property || args.shift();\n\t\tvar parsed = this.prepare(this.element, this.property, args);\n\t\treturn this.parent(parsed.from, parsed.to);\n\t}\n\n});\n\nElement.Properties.tween = {\n\n\tset: function(options){\n\t\tthis.get('tween').cancel().setOptions(options);\n\t\treturn this;\n\t},\n\n\tget: function(){\n\t\tvar tween = this.retrieve('tween');\n\t\tif (!tween){\n\t\t\ttween = new Fx.Tween(this, {link: 'cancel'});\n\t\t\tthis.store('tween', tween);\n\t\t}\n\t\treturn tween;\n\t}\n\n};\n\nElement.implement({\n\n\ttween: function(property, from, to){\n\t\tthis.get('tween').start(property, from, to);\n\t\treturn this;\n\t},\n\n\tfade: function(how){\n\t\tvar fade = this.get('tween'), method, args = ['opacity'].append(arguments), toggle;\n\t\tif (args[1] == null) args[1] = 'toggle';\n\t\tswitch (args[1]){\n\t\t\tcase 'in': method = 'start'; args[1] = 1; break;\n\t\t\tcase 'out': method = 'start'; args[1] = 0; break;\n\t\t\tcase 'show': method = 'set'; args[1] = 1; break;\n\t\t\tcase 'hide': method = 'set'; args[1] = 0; break;\n\t\t\tcase 'toggle':\n\t\t\t\tvar flag = this.retrieve('fade:flag', this.getStyle('opacity') == 1);\n\t\t\t\tmethod = 'start';\n\t\t\t\targs[1] = flag ? 0 : 1;\n\t\t\t\tthis.store('fade:flag', !flag);\n\t\t\t\ttoggle = true;\n\t\t\tbreak;\n\t\t\tdefault: method = 'start';\n\t\t}\n\t\tif (!toggle) this.eliminate('fade:flag');\n\t\tfade[method].apply(fade, args);\n\t\tvar to = args[args.length - 1];\n\t\tif (method == 'set' || to != 0) this.setStyle('visibility', to == 0 ? 'hidden' : 'visible');\n\t\telse fade.chain(function(){\n\t\t\tthis.element.setStyle('visibility', 'hidden');\n\t\t\tthis.callChain();\n\t\t});\n\t\treturn this;\n\t},\n\n\thighlight: function(start, end){\n\t\tif (!end){\n\t\t\tend = this.retrieve('highlight:original', this.getStyle('background-color'));\n\t\t\tend = (end == 'transparent') ? '#fff' : end;\n\t\t}\n\t\tvar tween = this.get('tween');\n\t\ttween.start('background-color', start || '#ffff88', end).chain(function(){\n\t\t\tthis.setStyle('background-color', this.retrieve('highlight:original'));\n\t\t\ttween.callChain();\n\t\t}.bind(this));\n\t\treturn this;\n\t}\n\n});\n\n\n/*\n---\n\nname: Fx.Morph\n\ndescription: Formerly Fx.Styles, effect to transition any number of CSS properties for an element using an object of rules, or CSS based selector rules.\n\nlicense: MIT-style license.\n\nrequires: Fx.CSS\n\nprovides: Fx.Morph\n\n...\n*/\n\nFx.Morph = new Class({\n\n\tExtends: Fx.CSS,\n\n\tinitialize: function(element, options){\n\t\tthis.element = this.subject = document.id(element);\n\t\tthis.parent(options);\n\t},\n\n\tset: function(now){\n\t\tif (typeof now == 'string') now = this.search(now);\n\t\tfor (var p in now) this.render(this.element, p, now[p], this.options.unit);\n\t\treturn this;\n\t},\n\n\tcompute: function(from, to, delta){\n\t\tvar now = {};\n\t\tfor (var p in from) now[p] = this.parent(from[p], to[p], delta);\n\t\treturn now;\n\t},\n\n\tstart: function(properties){\n\t\tif (!this.check(properties)) return this;\n\t\tif (typeof properties == 'string') properties = this.search(properties);\n\t\tvar from = {}, to = {};\n\t\tfor (var p in properties){\n\t\t\tvar parsed = this.prepare(this.element, p, properties[p]);\n\t\t\tfrom[p] = parsed.from;\n\t\t\tto[p] = parsed.to;\n\t\t}\n\t\treturn this.parent(from, to);\n\t}\n\n});\n\nElement.Properties.morph = {\n\n\tset: function(options){\n\t\tthis.get('morph').cancel().setOptions(options);\n\t\treturn this;\n\t},\n\n\tget: function(){\n\t\tvar morph = this.retrieve('morph');\n\t\tif (!morph){\n\t\t\tmorph = new Fx.Morph(this, {link: 'cancel'});\n\t\t\tthis.store('morph', morph);\n\t\t}\n\t\treturn morph;\n\t}\n\n};\n\nElement.implement({\n\n\tmorph: function(props){\n\t\tthis.get('morph').start(props);\n\t\treturn this;\n\t}\n\n});\n\n\n/*\n---\n\nname: Fx.Transitions\n\ndescription: Contains a set of advanced transitions to be used with any of the Fx Classes.\n\nlicense: MIT-style license.\n\ncredits:\n - Easing Equations by Robert Penner, , modified and optimized to be used with MooTools.\n\nrequires: Fx\n\nprovides: Fx.Transitions\n\n...\n*/\n\nFx.implement({\n\n\tgetTransition: function(){\n\t\tvar trans = this.options.transition || Fx.Transitions.Sine.easeInOut;\n\t\tif (typeof trans == 'string'){\n\t\t\tvar data = trans.split(':');\n\t\t\ttrans = Fx.Transitions;\n\t\t\ttrans = trans[data[0]] || trans[data[0].capitalize()];\n\t\t\tif (data[1]) trans = trans['ease' + data[1].capitalize() + (data[2] ? data[2].capitalize() : '')];\n\t\t}\n\t\treturn trans;\n\t}\n\n});\n\nFx.Transition = function(transition, params){\n\tparams = Array.from(params);\n\tvar easeIn = function(pos){\n\t\treturn transition(pos, params);\n\t};\n\treturn Object.append(easeIn, {\n\t\teaseIn: easeIn,\n\t\teaseOut: function(pos){\n\t\t\treturn 1 - transition(1 - pos, params);\n\t\t},\n\t\teaseInOut: function(pos){\n\t\t\treturn (pos <= 0.5 ? transition(2 * pos, params) : (2 - transition(2 * (1 - pos), params))) / 2;\n\t\t}\n\t});\n};\n\nFx.Transitions = {\n\n\tlinear: function(zero){\n\t\treturn zero;\n\t}\n\n};\n\n\n\nFx.Transitions.extend = function(transitions){\n\tfor (var transition in transitions) Fx.Transitions[transition] = new Fx.Transition(transitions[transition]);\n};\n\nFx.Transitions.extend({\n\n\tPow: function(p, x){\n\t\treturn Math.pow(p, x && x[0] || 6);\n\t},\n\n\tExpo: function(p){\n\t\treturn Math.pow(2, 8 * (p - 1));\n\t},\n\n\tCirc: function(p){\n\t\treturn 1 - Math.sin(Math.acos(p));\n\t},\n\n\tSine: function(p){\n\t\treturn 1 - Math.cos(p * Math.PI / 2);\n\t},\n\n\tBack: function(p, x){\n\t\tx = x && x[0] || 1.618;\n\t\treturn Math.pow(p, 2) * ((x + 1) * p - x);\n\t},\n\n\tBounce: function(p){\n\t\tvar value;\n\t\tfor (var a = 0, b = 1; 1; a += b, b /= 2){\n\t\t\tif (p >= (7 - 4 * a) / 11){\n\t\t\t\tvalue = b * b - Math.pow((11 - 6 * a - 11 * p) / 4, 2);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn value;\n\t},\n\n\tElastic: function(p, x){\n\t\treturn Math.pow(2, 10 * --p) * Math.cos(20 * p * Math.PI * (x && x[0] || 1) / 3);\n\t}\n\n});\n\n['Quad', 'Cubic', 'Quart', 'Quint'].each(function(transition, i){\n\tFx.Transitions[transition] = new Fx.Transition(function(p){\n\t\treturn Math.pow(p, i + 2);\n\t});\n});\n\n\n/*\n---\n\nname: Request\n\ndescription: Powerful all purpose Request Class. Uses XMLHTTPRequest.\n\nlicense: MIT-style license.\n\nrequires: [Object, Element, Chain, Events, Options, Browser]\n\nprovides: Request\n\n...\n*/\n\n(function(){\n\nvar empty = function(){},\n\tprogressSupport = ('onprogress' in new Browser.Request);\n\nvar Request = this.Request = new Class({\n\n\tImplements: [Chain, Events, Options],\n\n\toptions: {/*\n\t\tonRequest: function(){},\n\t\tonLoadstart: function(event, xhr){},\n\t\tonProgress: function(event, xhr){},\n\t\tonComplete: function(){},\n\t\tonCancel: function(){},\n\t\tonSuccess: function(responseText, responseXML){},\n\t\tonFailure: function(xhr){},\n\t\tonException: function(headerName, value){},\n\t\tonTimeout: function(){},\n\t\tuser: '',\n\t\tpassword: '',*/\n\t\turl: '',\n\t\tdata: '',\n\t\theaders: {\n\t\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t\t'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'\n\t\t},\n\t\tasync: true,\n\t\tformat: false,\n\t\tmethod: 'post',\n\t\tlink: 'ignore',\n\t\tisSuccess: null,\n\t\temulation: true,\n\t\turlEncoded: true,\n\t\tencoding: 'utf-8',\n\t\tevalScripts: false,\n\t\tevalResponse: false,\n\t\ttimeout: 0,\n\t\tnoCache: false,\n withCredentials: false\n\t},\n\n\tinitialize: function(options){\n\t\tthis.xhr = new Browser.Request();\n\t\tthis.setOptions(options);\n\t\tthis.headers = this.options.headers;\n\t},\n\n\tonStateChange: function(){\n\t\tvar xhr = this.xhr;\n\t\tif (xhr.readyState != 4 || !this.running) return;\n\t\tthis.running = false;\n\t\tthis.status = 0;\n\t\tFunction.attempt(function(){\n\t\t\tvar status = xhr.status;\n\t\t\tthis.status = (status == 1223) ? 204 : status;\n\t\t}.bind(this));\n\t\txhr.onreadystatechange = empty;\n\t\tif (progressSupport) xhr.onprogress = xhr.onloadstart = empty;\n\t\tclearTimeout(this.timer);\n\n\t\tthis.response = {text: this.xhr.responseText || '', xml: this.xhr.responseXML};\n\t\tif (this.options.isSuccess.call(this, this.status))\n\t\t\tthis.success(this.response.text, this.response.xml);\n\t\telse\n\t\t\tthis.failure();\n\t},\n\n\tisSuccess: function(){\n\t\tvar status = this.status;\n\t\treturn (status >= 200 && status < 300);\n\t},\n\n\tisRunning: function(){\n\t\treturn !!this.running;\n\t},\n\n\tprocessScripts: function(text){\n\t\tif (this.options.evalResponse || (/(ecma|java)script/).test(this.getHeader('Content-type'))) return Browser.exec(text);\n\t\treturn text.stripScripts(this.options.evalScripts);\n\t},\n\n\tsuccess: function(text, xml){\n\t\tthis.onSuccess(this.processScripts(text), xml);\n\t},\n\n\tonSuccess: function(){\n\t\tthis.fireEvent('complete', arguments).fireEvent('success', arguments).callChain();\n\t},\n\n\tfailure: function(){\n\t\tthis.onFailure();\n\t},\n\n\tonFailure: function(){\n\t\tthis.fireEvent('complete').fireEvent('failure', this.xhr);\n\t},\n\n\tloadstart: function(event){\n\t\tthis.fireEvent('loadstart', [event, this.xhr]);\n\t},\n\n\tprogress: function(event){\n\t\tthis.fireEvent('progress', [event, this.xhr]);\n\t},\n\n\ttimeout: function(){\n\t\tthis.fireEvent('timeout', this.xhr);\n\t},\n\n\tsetHeader: function(name, value){\n\t\tthis.headers[name] = value;\n\t\treturn this;\n\t},\n\n\tgetHeader: function(name){\n\t\treturn Function.attempt(function(){\n\t\t\treturn this.xhr.getResponseHeader(name);\n\t\t}.bind(this));\n\t},\n\n\tcheck: function(){\n\t\tif (!this.running) return true;\n\t\tswitch (this.options.link){\n\t\t\tcase 'cancel': this.cancel(); return true;\n\t\t\tcase 'chain': this.chain(this.caller.pass(arguments, this)); return false;\n\t\t}\n\t\treturn false;\n\t},\n\n\tsend: function(options){\n\t\tif (!this.check(options)) return this;\n\n\t\tthis.options.isSuccess = this.options.isSuccess || this.isSuccess;\n\t\tthis.running = true;\n\n\t\tvar type = typeOf(options);\n\t\tif (type == 'string' || type == 'element') options = {data: options};\n\n\t\tvar old = this.options;\n\t\toptions = Object.append({data: old.data, url: old.url, method: old.method}, options);\n\t\tvar data = options.data, url = String(options.url), method = options.method.toLowerCase();\n\n\t\tswitch (typeOf(data)){\n\t\t\tcase 'element': data = document.id(data).toQueryString(); break;\n\t\t\tcase 'object': case 'hash': data = Object.toQueryString(data);\n\t\t}\n\n\t\tif (this.options.format){\n\t\t\tvar format = 'format=' + this.options.format;\n\t\t\tdata = (data) ? format + '&' + data : format;\n\t\t}\n\n\t\tif (this.options.emulation && !['get', 'post'].contains(method)){\n\t\t\tvar _method = '_method=' + method;\n\t\t\tdata = (data) ? _method + '&' + data : _method;\n\t\t\tmethod = 'post';\n\t\t}\n\n\t\tif (this.options.urlEncoded && ['post', 'put'].contains(method)){\n\t\t\tvar encoding = (this.options.encoding) ? '; charset=' + this.options.encoding : '';\n\t\t\tthis.headers['Content-type'] = 'application/x-www-form-urlencoded' + encoding;\n\t\t}\n\n\t\tif (!url) url = document.location.pathname;\n\n\t\tvar trimPosition = url.lastIndexOf('/');\n\t\tif (trimPosition > -1 && (trimPosition = url.indexOf('#')) > -1) url = url.substr(0, trimPosition);\n\n\t\tif (this.options.noCache)\n\t\t\turl += (url.contains('?') ? '&' : '?') + String.uniqueID();\n\n\t\tif (data && method == 'get'){\n\t\t\turl += (url.contains('?') ? '&' : '?') + data;\n\t\t\tdata = null;\n\t\t}\n\n\t\tvar xhr = this.xhr;\n\t\tif (progressSupport){\n\t\t\txhr.onloadstart = this.loadstart.bind(this);\n\t\t\txhr.onprogress = this.progress.bind(this);\n\t\t}\n\n\t\txhr.open(method.toUpperCase(), url, this.options.async, this.options.user, this.options.password);\n\t\tif (this.options.user && 'withCredentials' in xhr) xhr.withCredentials = true;\n\n\t\txhr.onreadystatechange = this.onStateChange.bind(this);\n\n xhr.withCredentials = this.options.withCredentials;\n\t\tObject.each(this.headers, function(value, key){\n\t\t\ttry {\n\t\t\t\txhr.setRequestHeader(key, value);\n\t\t\t} catch (e){\n\t\t\t\tthis.fireEvent('exception', [key, value]);\n\t\t\t}\n\t\t}, this);\n\n\t\tthis.fireEvent('request');\n\t\txhr.send(data);\n\t\tif (!this.options.async) this.onStateChange();\n\t\telse if (this.options.timeout) this.timer = this.timeout.delay(this.options.timeout, this);\n\t\treturn this;\n\t},\n\n\tcancel: function(){\n\t\tif (!this.running) return this;\n\t\tthis.running = false;\n\t\tvar xhr = this.xhr;\n\t\txhr.abort();\n\t\tclearTimeout(this.timer);\n\t\txhr.onreadystatechange = empty;\n\t\tif (progressSupport) xhr.onprogress = xhr.onloadstart = empty;\n\t\tthis.xhr = new Browser.Request();\n\t\tthis.fireEvent('cancel');\n\t\treturn this;\n\t}\n\n});\n\nvar methods = {};\n['get', 'post', 'put', 'delete', 'GET', 'POST', 'PUT', 'DELETE'].each(function(method){\n\tmethods[method] = function(data){\n\t\tvar object = {\n\t\t\tmethod: method\n\t\t};\n\t\tif (data != null) object.data = data;\n\t\treturn this.send(object);\n\t};\n});\n\nRequest.implement(methods);\n\nElement.Properties.send = {\n\n\tset: function(options){\n\t\tvar send = this.get('send').cancel();\n\t\tsend.setOptions(options);\n\t\treturn this;\n\t},\n\n\tget: function(){\n\t\tvar send = this.retrieve('send');\n\t\tif (!send){\n\t\t\tsend = new Request({\n\t\t\t\tdata: this, link: 'cancel', method: this.get('method') || 'post', url: this.get('action')\n\t\t\t});\n\t\t\tthis.store('send', send);\n\t\t}\n\t\treturn send;\n\t}\n\n};\n\nElement.implement({\n\n\tsend: function(url){\n\t\tvar sender = this.get('send');\n\t\tsender.send({data: this, url: url || sender.options.url});\n\t\treturn this;\n\t}\n\n});\n\n})();\n\n\n/*\n---\n\nname: Request.HTML\n\ndescription: Extends the basic Request Class with additional methods for interacting with HTML responses.\n\nlicense: MIT-style license.\n\nrequires: [Element, Request]\n\nprovides: Request.HTML\n\n...\n*/\n\nRequest.HTML = new Class({\n\n\tExtends: Request,\n\n\toptions: {\n\t\tupdate: false,\n\t\tappend: false,\n\t\tevalScripts: true,\n\t\tfilter: false,\n\t\theaders: {\n\t\t\tAccept: 'text/html, application/xml, text/xml, */*'\n\t\t}\n\t},\n\n\tsuccess: function(text){\n\t\tvar options = this.options, response = this.response;\n\n\t\tresponse.html = text.stripScripts(function(script){\n\t\t\tresponse.javascript = script;\n\t\t});\n\n\t\tvar match = response.html.match(/]*>([\\s\\S]*?)<\\/body>/i);\n\t\tif (match) response.html = match[1];\n\t\tvar temp = new Element('div').set('html', response.html);\n\n\t\tresponse.tree = temp.childNodes;\n\t\tresponse.elements = temp.getElements(options.filter || '*');\n\n\t\tif (options.filter) response.tree = response.elements;\n\t\tif (options.update){\n\t\t\tvar update = document.id(options.update).empty();\n\t\t\tif (options.filter) update.adopt(response.elements);\n\t\t\telse update.set('html', response.html);\n\t\t} else if (options.append){\n\t\t\tvar append = document.id(options.append);\n\t\t\tif (options.filter) response.elements.reverse().inject(append);\n\t\t\telse append.adopt(temp.getChildren());\n\t\t}\n\t\tif (options.evalScripts) Browser.exec(response.javascript);\n\n\t\tthis.onSuccess(response.tree, response.elements, response.html, response.javascript);\n\t}\n\n});\n\nElement.Properties.load = {\n\n\tset: function(options){\n\t\tvar load = this.get('load').cancel();\n\t\tload.setOptions(options);\n\t\treturn this;\n\t},\n\n\tget: function(){\n\t\tvar load = this.retrieve('load');\n\t\tif (!load){\n\t\t\tload = new Request.HTML({data: this, link: 'cancel', update: this, method: 'get'});\n\t\t\tthis.store('load', load);\n\t\t}\n\t\treturn load;\n\t}\n\n};\n\nElement.implement({\n\n\tload: function(){\n\t\tthis.get('load').send(Array.link(arguments, {data: Type.isObject, url: Type.isString}));\n\t\treturn this;\n\t}\n\n});\n\n\n/*\n---\n\nname: JSON\n\ndescription: JSON encoder and decoder.\n\nlicense: MIT-style license.\n\nSeeAlso: \n\nrequires: [Array, String, Number, Function]\n\nprovides: JSON\n\n...\n*/\n\nif (typeof JSON == 'undefined') this.JSON = {};\n\n\n\n(function(){\n\nvar special = {'\\b': '\\\\b', '\\t': '\\\\t', '\\n': '\\\\n', '\\f': '\\\\f', '\\r': '\\\\r', '\"' : '\\\\\"', '\\\\': '\\\\\\\\'};\n\nvar escape = function(chr){\n\treturn special[chr] || '\\\\u' + ('0000' + chr.charCodeAt(0).toString(16)).slice(-4);\n};\n\nJSON.validate = function(string){\n\tstring = string.replace(/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').\n\t\t\t\t\treplace(/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g, ']').\n\t\t\t\t\treplace(/(?:^|:|,)(?:\\s*\\[)+/g, '');\n\n\treturn (/^[\\],:{}\\s]*$/).test(string);\n};\n\nJSON.encode = JSON.stringify ? function(obj){\n\treturn JSON.stringify(obj);\n} : function(obj){\n\tif (obj && obj.toJSON) obj = obj.toJSON();\n\n\tswitch (typeOf(obj)){\n\t\tcase 'string':\n\t\t\treturn '\"' + obj.replace(/[\\x00-\\x1f\\\\\"]/g, escape) + '\"';\n\t\tcase 'array':\n\t\t\treturn '[' + obj.map(JSON.encode).clean() + ']';\n\t\tcase 'object': case 'hash':\n\t\t\tvar string = [];\n\t\t\tObject.each(obj, function(value, key){\n\t\t\t\tvar json = JSON.encode(value);\n\t\t\t\tif (json) string.push(JSON.encode(key) + ':' + json);\n\t\t\t});\n\t\t\treturn '{' + string + '}';\n\t\tcase 'number': case 'boolean': return '' + obj;\n\t\tcase 'null': return 'null';\n\t}\n\n\treturn null;\n};\n\nJSON.decode = function(string, secure){\n\tif (!string || typeOf(string) != 'string') return null;\n\n\tif (secure || JSON.secure){\n\t\tif (JSON.parse) return JSON.parse(string);\n\t\tif (!JSON.validate(string)) throw new Error('JSON could not decode the input; security is enabled and the value is not secure.');\n\t}\n\n\treturn eval('(' + string + ')');\n};\n\n})();\n\n\n/*\n---\n\nname: Request.JSON\n\ndescription: Extends the basic Request Class with additional methods for sending and receiving JSON data.\n\nlicense: MIT-style license.\n\nrequires: [Request, JSON]\n\nprovides: Request.JSON\n\n...\n*/\n\nRequest.JSON = new Class({\n\n\tExtends: Request,\n\n\toptions: {\n\t\t/*onError: function(text, error){},*/\n\t\tsecure: true\n\t},\n\n\tinitialize: function(options){\n\t\tthis.parent(options);\n\t\tObject.append(this.headers, {\n\t\t\t'Accept': 'application/json',\n\t\t\t'X-Request': 'JSON'\n\t\t});\n\t},\n\n\tsuccess: function(text){\n\t\tvar json;\n\t\ttry {\n\t\t\tjson = this.response.json = JSON.decode(text, this.options.secure);\n\t\t} catch (error){\n\t\t\tthis.fireEvent('error', [text, error]);\n\t\t\treturn;\n\t\t}\n\t\tif (json == null) this.onFailure();\n\t\telse this.onSuccess(json, text);\n\t}\n\n});\n\n\n/*\n---\n\nname: Cookie\n\ndescription: Class for creating, reading, and deleting browser Cookies.\n\nlicense: MIT-style license.\n\ncredits:\n - Based on the functions by Peter-Paul Koch (http://quirksmode.org).\n\nrequires: [Options, Browser]\n\nprovides: Cookie\n\n...\n*/\n\nvar Cookie = new Class({\n\n\tImplements: Options,\n\n\toptions: {\n\t\tpath: '/',\n\t\tdomain: false,\n\t\tduration: false,\n\t\tsecure: false,\n\t\tdocument: document,\n\t\tencode: true\n\t},\n\n\tinitialize: function(key, options){\n\t\tthis.key = key;\n\t\tthis.setOptions(options);\n\t},\n\n\twrite: function(value){\n\t\tif (this.options.encode) value = encodeURIComponent(value);\n\t\tif (this.options.domain) value += '; domain=' + this.options.domain;\n\t\tif (this.options.path) value += '; path=' + this.options.path;\n\t\tif (this.options.duration){\n\t\t\tvar date = new Date();\n\t\t\tdate.setTime(date.getTime() + this.options.duration * 24 * 60 * 60 * 1000);\n\t\t\tvalue += '; expires=' + date.toGMTString();\n\t\t}\n\t\tif (this.options.secure) value += '; secure';\n\t\tthis.options.document.cookie = this.key + '=' + value;\n\t\treturn this;\n\t},\n\n\tread: function(){\n\t\tvar value = this.options.document.cookie.match('(?:^|;)\\\\s*' + this.key.escapeRegExp() + '=([^;]*)');\n\t\treturn (value) ? decodeURIComponent(value[1]) : null;\n\t},\n\n\tdispose: function(){\n\t\tnew Cookie(this.key, Object.merge({}, this.options, {duration: -1})).write('');\n\t\treturn this;\n\t}\n\n});\n\nCookie.write = function(key, value, options){\n\treturn new Cookie(key, options).write(value);\n};\n\nCookie.read = function(key){\n\treturn new Cookie(key).read();\n};\n\nCookie.dispose = function(key, options){\n\treturn new Cookie(key, options).dispose();\n};\n\n\n/*\n---\n\nname: DOMReady\n\ndescription: Contains the custom event domready.\n\nlicense: MIT-style license.\n\nrequires: [Browser, Element, Element.Event]\n\nprovides: [DOMReady, DomReady]\n\n...\n*/\n\n(function(window, document){\n\nvar ready,\n\tloaded,\n\tchecks = [],\n\tshouldPoll,\n\ttimer,\n\ttestElement = document.createElement('div');\n\nvar domready = function(){\n\tclearTimeout(timer);\n\tif (ready) return;\n\tBrowser.loaded = ready = true;\n\tdocument.removeListener('DOMContentLoaded', domready).removeListener('readystatechange', check);\n\n\tdocument.fireEvent('domready');\n\twindow.fireEvent('domready');\n};\n\nvar check = function(){\n\tfor (var i = checks.length; i--;) if (checks[i]()){\n\t\tdomready();\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nvar poll = function(){\n\tclearTimeout(timer);\n\tif (!check()) timer = setTimeout(poll, 10);\n};\n\ndocument.addListener('DOMContentLoaded', domready);\n\n/**/\n// doScroll technique by Diego Perini http://javascript.nwbox.com/IEContentLoaded/\n// testElement.doScroll() throws when the DOM is not ready, only in the top window\nvar doScrollWorks = function(){\n\ttry {\n\t\ttestElement.doScroll();\n\t\treturn true;\n\t} catch (e){}\n\treturn false;\n};\n// If doScroll works already, it can't be used to determine domready\n// e.g. in an iframe\nif (testElement.doScroll && !doScrollWorks()){\n\tchecks.push(doScrollWorks);\n\tshouldPoll = true;\n}\n/**/\n\nif (document.readyState) checks.push(function(){\n\tvar state = document.readyState;\n\treturn (state == 'loaded' || state == 'complete');\n});\n\nif ('onreadystatechange' in document) document.addListener('readystatechange', check);\nelse shouldPoll = true;\n\nif (shouldPoll) poll();\n\nElement.Events.domready = {\n\tonAdd: function(fn){\n\t\tif (ready) fn.call(this);\n\t}\n};\n\n// Make sure that domready fires before load\nElement.Events.load = {\n\tbase: 'load',\n\tonAdd: function(fn){\n\t\tif (loaded && this == window) fn.call(this);\n\t},\n\tcondition: function(){\n\t\tif (this == window){\n\t\t\tdomready();\n\t\t\tdelete Element.Events.load;\n\t\t}\n\t\treturn true;\n\t}\n};\n\n// This is based on the custom load event\nwindow.addEvent('load', function(){\n\tloaded = true;\n});\n\n})(window, document);\n\n\n/*\n---\n\nname: Swiff\n\ndescription: Wrapper for embedding SWF movies. Supports External Interface Communication.\n\nlicense: MIT-style license.\n\ncredits:\n - Flash detection & Internet Explorer + Flash Player 9 fix inspired by SWFObject.\n\nrequires: [Options, Object, Element]\n\nprovides: Swiff\n\n...\n*/\n\n(function(){\n\nvar Swiff = this.Swiff = new Class({\n\n\tImplements: Options,\n\n\toptions: {\n\t\tid: null,\n\t\theight: 1,\n\t\twidth: 1,\n\t\tcontainer: null,\n\t\tproperties: {},\n\t\tparams: {\n\t\t\tquality: 'high',\n\t\t\tallowScriptAccess: 'always',\n\t\t\twMode: 'window',\n\t\t\tswLiveConnect: true\n\t\t},\n\t\tcallBacks: {},\n\t\tvars: {}\n\t},\n\n\ttoElement: function(){\n\t\treturn this.object;\n\t},\n\n\tinitialize: function(path, options){\n\t\tthis.instance = 'Swiff_' + String.uniqueID();\n\n\t\tthis.setOptions(options);\n\t\toptions = this.options;\n\t\tvar id = this.id = options.id || this.instance;\n\t\tvar container = document.id(options.container);\n\n\t\tSwiff.CallBacks[this.instance] = {};\n\n\t\tvar params = options.params, vars = options.vars, callBacks = options.callBacks;\n\t\tvar properties = Object.append({height: options.height, width: options.width}, options.properties);\n\n\t\tvar self = this;\n\n\t\tfor (var callBack in callBacks){\n\t\t\tSwiff.CallBacks[this.instance][callBack] = (function(option){\n\t\t\t\treturn function(){\n\t\t\t\t\treturn option.apply(self.object, arguments);\n\t\t\t\t};\n\t\t\t})(callBacks[callBack]);\n\t\t\tvars[callBack] = 'Swiff.CallBacks.' + this.instance + '.' + callBack;\n\t\t}\n\n\t\tparams.flashVars = Object.toQueryString(vars);\n\t\tif (Browser.ie){\n\t\t\tproperties.classid = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';\n\t\t\tparams.movie = path;\n\t\t} else {\n\t\t\tproperties.type = 'application/x-shockwave-flash';\n\t\t}\n\t\tproperties.data = path;\n\n\t\tvar build = '';\n\t\t}\n\t\tbuild += '';\n\t\tthis.object = ((container) ? container.empty() : new Element('div')).set('html', build).firstChild;\n\t},\n\n\treplaces: function(element){\n\t\telement = document.id(element, true);\n\t\telement.parentNode.replaceChild(this.toElement(), element);\n\t\treturn this;\n\t},\n\n\tinject: function(element){\n\t\tdocument.id(element, true).appendChild(this.toElement());\n\t\treturn this;\n\t},\n\n\tremote: function(){\n\t\treturn Swiff.remote.apply(Swiff, [this.toElement()].append(arguments));\n\t}\n\n});\n\nSwiff.CallBacks = {};\n\nSwiff.remote = function(obj, fn){\n\tvar rs = obj.CallFunction('' + __flash__argumentsToXML(arguments, 2) + '');\n\treturn eval(rs);\n};\n\n})();\n\n","// MooTools: the javascript framework.\n// Load this file's selection again by visiting: http://mootools.net/more/193490474eafe3d118569348e4f6215f \n// Or build this file again with packager using: packager build More/More More/Events.Pseudos More/Class.Refactor More/Class.Binds More/Class.Occlude More/Chain.Wait More/Array.Extras More/Date More/Date.Extras More/Number.Format More/Object.Extras More/String.Extras More/String.QueryString More/URI More/URI.Relative More/Hash More/Hash.Extras More/Element.Forms More/Elements.From More/Element.Event.Pseudos More/Element.Event.Pseudos.Keys More/Element.Measure More/Element.Pin More/Element.Position More/Element.Shortcuts More/Form.Request More/Form.Request.Append More/Form.Validator More/Form.Validator.Inline More/Form.Validator.Extras More/OverText More/Fx.Elements More/Fx.Accordion More/Fx.Move More/Fx.Reveal More/Fx.Scroll More/Fx.Slide More/Fx.SmoothScroll More/Fx.Sort More/Drag More/Drag.Move More/Slider More/Sortables More/Request.JSONP More/Request.Queue More/Request.Periodical More/Color More/Group More/Hash.Cookie More/IframeShim More/Table More/HtmlTable More/HtmlTable.Zebra More/HtmlTable.Sort More/HtmlTable.Select More/Keyboard More/Keyboard.Extras More/Mask More/Spinner More/Locale More/Locale.Set.From More/Locale.en-US.Date More/Locale.en-US.Form.Validator More/Locale.en-US.Number\n/*\n---\n\nscript: More.js\n\nname: More\n\ndescription: MooTools More\n\nlicense: MIT-style license\n\nauthors:\n - Guillermo Rauch\n - Thomas Aylott\n - Scott Kyle\n - Arian Stolwijk\n - Tim Wienk\n - Christoph Pojer\n - Aaron Newton\n - Jacob Thornton\n\nrequires:\n - Core/MooTools\n\nprovides: [MooTools.More]\n\n...\n*/\n\nMooTools.More = {\n\t'version': '1.4.0.1',\n\t'build': 'a4244edf2aa97ac8a196fc96082dd35af1abab87'\n};\n\n\n/*\n---\n\nname: Events.Pseudos\n\ndescription: Adds the functionality to add pseudo events\n\nlicense: MIT-style license\n\nauthors:\n - Arian Stolwijk\n\nrequires: [Core/Class.Extras, Core/Slick.Parser, More/MooTools.More]\n\nprovides: [Events.Pseudos]\n\n...\n*/\n\n(function(){\n\nEvents.Pseudos = function(pseudos, addEvent, removeEvent){\n\n\tvar storeKey = '_monitorEvents:';\n\n\tvar storageOf = function(object){\n\t\treturn {\n\t\t\tstore: object.store ? function(key, value){\n\t\t\t\tobject.store(storeKey + key, value);\n\t\t\t} : function(key, value){\n\t\t\t\t(object._monitorEvents || (object._monitorEvents = {}))[key] = value;\n\t\t\t},\n\t\t\tretrieve: object.retrieve ? function(key, dflt){\n\t\t\t\treturn object.retrieve(storeKey + key, dflt);\n\t\t\t} : function(key, dflt){\n\t\t\t\tif (!object._monitorEvents) return dflt;\n\t\t\t\treturn object._monitorEvents[key] || dflt;\n\t\t\t}\n\t\t};\n\t};\n\n\tvar splitType = function(type){\n\t\tif (type.indexOf(':') == -1 || !pseudos) return null;\n\n\t\tvar parsed = Slick.parse(type).expressions[0][0],\n\t\t\tparsedPseudos = parsed.pseudos,\n\t\t\tl = parsedPseudos.length,\n\t\t\tsplits = [];\n\n\t\twhile (l--){\n\t\t\tvar pseudo = parsedPseudos[l].key,\n\t\t\t\tlistener = pseudos[pseudo];\n\t\t\tif (listener != null) splits.push({\n\t\t\t\tevent: parsed.tag,\n\t\t\t\tvalue: parsedPseudos[l].value,\n\t\t\t\tpseudo: pseudo,\n\t\t\t\toriginal: type,\n\t\t\t\tlistener: listener\n\t\t\t});\n\t\t}\n\t\treturn splits.length ? splits : null;\n\t};\n\n\treturn {\n\n\t\taddEvent: function(type, fn, internal){\n\t\t\tvar split = splitType(type);\n\t\t\tif (!split) return addEvent.call(this, type, fn, internal);\n\n\t\t\tvar storage = storageOf(this),\n\t\t\t\tevents = storage.retrieve(type, []),\n\t\t\t\teventType = split[0].event,\n\t\t\t\targs = Array.slice(arguments, 2),\n\t\t\t\tstack = fn,\n\t\t\t\tself = this;\n\n\t\t\tsplit.each(function(item){\n\t\t\t\tvar listener = item.listener,\n\t\t\t\t\tstackFn = stack;\n\t\t\t\tif (listener == false) eventType += ':' + item.pseudo + '(' + item.value + ')';\n\t\t\t\telse stack = function(){\n\t\t\t\t\tlistener.call(self, item, stackFn, arguments, stack);\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tevents.include({type: eventType, event: fn, monitor: stack});\n\t\t\tstorage.store(type, events);\n\n\t\t\tif (type != eventType) addEvent.apply(this, [type, fn].concat(args));\n\t\t\treturn addEvent.apply(this, [eventType, stack].concat(args));\n\t\t},\n\n\t\tremoveEvent: function(type, fn){\n\t\t\tvar split = splitType(type);\n\t\t\tif (!split) return removeEvent.call(this, type, fn);\n\n\t\t\tvar storage = storageOf(this),\n\t\t\t\tevents = storage.retrieve(type);\n\t\t\tif (!events) return this;\n\n\t\t\tvar args = Array.slice(arguments, 2);\n\n\t\t\tremoveEvent.apply(this, [type, fn].concat(args));\n\t\t\tevents.each(function(monitor, i){\n\t\t\t\tif (!fn || monitor.event == fn) removeEvent.apply(this, [monitor.type, monitor.monitor].concat(args));\n\t\t\t\tdelete events[i];\n\t\t\t}, this);\n\n\t\t\tstorage.store(type, events);\n\t\t\treturn this;\n\t\t}\n\n\t};\n\n};\n\nvar pseudos = {\n\n\tonce: function(split, fn, args, monitor){\n\t\tfn.apply(this, args);\n\t\tthis.removeEvent(split.event, monitor)\n\t\t\t.removeEvent(split.original, fn);\n\t},\n\n\tthrottle: function(split, fn, args){\n\t\tif (!fn._throttled){\n\t\t\tfn.apply(this, args);\n\t\t\tfn._throttled = setTimeout(function(){\n\t\t\t\tfn._throttled = false;\n\t\t\t}, split.value || 250);\n\t\t}\n\t},\n\n\tpause: function(split, fn, args){\n\t\tclearTimeout(fn._pause);\n\t\tfn._pause = fn.delay(split.value || 250, this, args);\n\t}\n\n};\n\nEvents.definePseudo = function(key, listener){\n\tpseudos[key] = listener;\n\treturn this;\n};\n\nEvents.lookupPseudo = function(key){\n\treturn pseudos[key];\n};\n\nvar proto = Events.prototype;\nEvents.implement(Events.Pseudos(pseudos, proto.addEvent, proto.removeEvent));\n\n['Request', 'Fx'].each(function(klass){\n\tif (this[klass]) this[klass].implement(Events.prototype);\n});\n\n})();\n\n\n/*\n---\n\nscript: Class.Refactor.js\n\nname: Class.Refactor\n\ndescription: Extends a class onto itself with new property, preserving any items attached to the class's namespace.\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n\nrequires:\n - Core/Class\n - /MooTools.More\n\n# Some modules declare themselves dependent on Class.Refactor\nprovides: [Class.refactor, Class.Refactor]\n\n...\n*/\n\nClass.refactor = function(original, refactors){\n\n\tObject.each(refactors, function(item, name){\n\t\tvar origin = original.prototype[name];\n\t\torigin = (origin && origin.$origin) || origin || function(){};\n\t\toriginal.implement(name, (typeof item == 'function') ? function(){\n\t\t\tvar old = this.previous;\n\t\t\tthis.previous = origin;\n\t\t\tvar value = item.apply(this, arguments);\n\t\t\tthis.previous = old;\n\t\t\treturn value;\n\t\t} : item);\n\t});\n\n\treturn original;\n\n};\n\n\n/*\n---\n\nscript: Class.Binds.js\n\nname: Class.Binds\n\ndescription: Automagically binds specified methods in a class to the instance of the class.\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n\nrequires:\n - Core/Class\n - /MooTools.More\n\nprovides: [Class.Binds]\n\n...\n*/\n\nClass.Mutators.Binds = function(binds){\n\tif (!this.prototype.initialize) this.implement('initialize', function(){});\n\treturn Array.from(binds).concat(this.prototype.Binds || []);\n};\n\nClass.Mutators.initialize = function(initialize){\n\treturn function(){\n\t\tArray.from(this.Binds).each(function(name){\n\t\t\tvar original = this[name];\n\t\t\tif (original) this[name] = original.bind(this);\n\t\t}, this);\n\t\treturn initialize.apply(this, arguments);\n\t};\n};\n\n\n/*\n---\n\nscript: Class.Occlude.js\n\nname: Class.Occlude\n\ndescription: Prevents a class from being applied to a DOM element twice.\n\nlicense: MIT-style license.\n\nauthors:\n - Aaron Newton\n\nrequires:\n - Core/Class\n - Core/Element\n - /MooTools.More\n\nprovides: [Class.Occlude]\n\n...\n*/\n\nClass.Occlude = new Class({\n\n\tocclude: function(property, element){\n\t\telement = document.id(element || this.element);\n\t\tvar instance = element.retrieve(property || this.property);\n\t\tif (instance && !this.occluded)\n\t\t\treturn (this.occluded = instance);\n\n\t\tthis.occluded = false;\n\t\telement.store(property || this.property, this);\n\t\treturn this.occluded;\n\t}\n\n});\n\n\n/*\n---\n\nscript: Chain.Wait.js\n\nname: Chain.Wait\n\ndescription: value, Adds a method to inject pauses between chained events.\n\nlicense: MIT-style license.\n\nauthors:\n - Aaron Newton\n\nrequires:\n - Core/Chain\n - Core/Element\n - Core/Fx\n - /MooTools.More\n\nprovides: [Chain.Wait]\n\n...\n*/\n\n(function(){\n\n\tvar wait = {\n\t\twait: function(duration){\n\t\t\treturn this.chain(function(){\n\t\t\t\tthis.callChain.delay(duration == null ? 500 : duration, this);\n\t\t\t\treturn this;\n\t\t\t}.bind(this));\n\t\t}\n\t};\n\n\tChain.implement(wait);\n\n\tif (this.Fx) Fx.implement(wait);\n\n\tif (this.Element && Element.implement && this.Fx){\n\t\tElement.implement({\n\n\t\t\tchains: function(effects){\n\t\t\t\tArray.from(effects || ['tween', 'morph', 'reveal']).each(function(effect){\n\t\t\t\t\teffect = this.get(effect);\n\t\t\t\t\tif (!effect) return;\n\t\t\t\t\teffect.setOptions({\n\t\t\t\t\t\tlink:'chain'\n\t\t\t\t\t});\n\t\t\t\t}, this);\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\tpauseFx: function(duration, effect){\n\t\t\t\tthis.chains(effect).get(effect || 'tween').wait(duration);\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t});\n\t}\n\n})();\n\n\n/*\n---\n\nscript: Array.Extras.js\n\nname: Array.Extras\n\ndescription: Extends the Array native object to include useful methods to work with arrays.\n\nlicense: MIT-style license\n\nauthors:\n - Christoph Pojer\n - Sebastian Markbåge\n\nrequires:\n - Core/Array\n - MooTools.More\n\nprovides: [Array.Extras]\n\n...\n*/\n\n(function(nil){\n\nArray.implement({\n\n\tmin: function(){\n\t\treturn Math.min.apply(null, this);\n\t},\n\n\tmax: function(){\n\t\treturn Math.max.apply(null, this);\n\t},\n\n\taverage: function(){\n\t\treturn this.length ? this.sum() / this.length : 0;\n\t},\n\n\tsum: function(){\n\t\tvar result = 0, l = this.length;\n\t\tif (l){\n\t\t\twhile (l--) result += this[l];\n\t\t}\n\t\treturn result;\n\t},\n\n\tunique: function(){\n\t\treturn [].combine(this);\n\t},\n\n\tshuffle: function(){\n\t\tfor (var i = this.length; i && --i;){\n\t\t\tvar temp = this[i], r = Math.floor(Math.random() * ( i + 1 ));\n\t\t\tthis[i] = this[r];\n\t\t\tthis[r] = temp;\n\t\t}\n\t\treturn this;\n\t},\n\n\treduce: function(fn, value){\n\t\tfor (var i = 0, l = this.length; i < l; i++){\n\t\t\tif (i in this) value = value === nil ? this[i] : fn.call(null, value, this[i], i, this);\n\t\t}\n\t\treturn value;\n\t},\n\n\treduceRight: function(fn, value){\n\t\tvar i = this.length;\n\t\twhile (i--){\n\t\t\tif (i in this) value = value === nil ? this[i] : fn.call(null, value, this[i], i, this);\n\t\t}\n\t\treturn value;\n\t}\n\n});\n\n})();\n\n\n/*\n---\n\nscript: Object.Extras.js\n\nname: Object.Extras\n\ndescription: Extra Object generics, like getFromPath which allows a path notation to child elements.\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n\nrequires:\n - Core/Object\n - /MooTools.More\n\nprovides: [Object.Extras]\n\n...\n*/\n\n(function(){\n\nvar defined = function(value){\n\treturn value != null;\n};\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nObject.extend({\n\n\tgetFromPath: function(source, parts){\n\t\tif (typeof parts == 'string') parts = parts.split('.');\n\t\tfor (var i = 0, l = parts.length; i < l; i++){\n\t\t\tif (hasOwnProperty.call(source, parts[i])) source = source[parts[i]];\n\t\t\telse return null;\n\t\t}\n\t\treturn source;\n\t},\n\n\tcleanValues: function(object, method){\n\t\tmethod = method || defined;\n\t\tfor (var key in object) if (!method(object[key])){\n\t\t\tdelete object[key];\n\t\t}\n\t\treturn object;\n\t},\n\n\terase: function(object, key){\n\t\tif (hasOwnProperty.call(object, key)) delete object[key];\n\t\treturn object;\n\t},\n\n\trun: function(object){\n\t\tvar args = Array.slice(arguments, 1);\n\t\tfor (var key in object) if (object[key].apply){\n\t\t\tobject[key].apply(object, args);\n\t\t}\n\t\treturn object;\n\t}\n\n});\n\n})();\n\n\n/*\n---\n\nscript: Locale.js\n\nname: Locale\n\ndescription: Provides methods for localization.\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n - Arian Stolwijk\n\nrequires:\n - Core/Events\n - /Object.Extras\n - /MooTools.More\n\nprovides: [Locale, Lang]\n\n...\n*/\n\n(function(){\n\nvar current = null,\n\tlocales = {},\n\tinherits = {};\n\nvar getSet = function(set){\n\tif (instanceOf(set, Locale.Set)) return set;\n\telse return locales[set];\n};\n\nvar Locale = this.Locale = {\n\n\tdefine: function(locale, set, key, value){\n\t\tvar name;\n\t\tif (instanceOf(locale, Locale.Set)){\n\t\t\tname = locale.name;\n\t\t\tif (name) locales[name] = locale;\n\t\t} else {\n\t\t\tname = locale;\n\t\t\tif (!locales[name]) locales[name] = new Locale.Set(name);\n\t\t\tlocale = locales[name];\n\t\t}\n\n\t\tif (set) locale.define(set, key, value);\n\n\t\t\n\n\t\tif (!current) current = locale;\n\n\t\treturn locale;\n\t},\n\n\tuse: function(locale){\n\t\tlocale = getSet(locale);\n\n\t\tif (locale){\n\t\t\tcurrent = locale;\n\n\t\t\tthis.fireEvent('change', locale);\n\n\t\t\t\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tgetCurrent: function(){\n\t\treturn current;\n\t},\n\n\tget: function(key, args){\n\t\treturn (current) ? current.get(key, args) : '';\n\t},\n\n\tinherit: function(locale, inherits, set){\n\t\tlocale = getSet(locale);\n\n\t\tif (locale) locale.inherit(inherits, set);\n\t\treturn this;\n\t},\n\n\tlist: function(){\n\t\treturn Object.keys(locales);\n\t}\n\n};\n\nObject.append(Locale, new Events);\n\nLocale.Set = new Class({\n\n\tsets: {},\n\n\tinherits: {\n\t\tlocales: [],\n\t\tsets: {}\n\t},\n\n\tinitialize: function(name){\n\t\tthis.name = name || '';\n\t},\n\n\tdefine: function(set, key, value){\n\t\tvar defineData = this.sets[set];\n\t\tif (!defineData) defineData = {};\n\n\t\tif (key){\n\t\t\tif (typeOf(key) == 'object') defineData = Object.merge(defineData, key);\n\t\t\telse defineData[key] = value;\n\t\t}\n\t\tthis.sets[set] = defineData;\n\n\t\treturn this;\n\t},\n\n\tget: function(key, args, _base){\n\t\tvar value = Object.getFromPath(this.sets, key);\n\t\tif (value != null){\n\t\t\tvar type = typeOf(value);\n\t\t\tif (type == 'function') value = value.apply(null, Array.from(args));\n\t\t\telse if (type == 'object') value = Object.clone(value);\n\t\t\treturn value;\n\t\t}\n\n\t\t// get value of inherited locales\n\t\tvar index = key.indexOf('.'),\n\t\t\tset = index < 0 ? key : key.substr(0, index),\n\t\t\tnames = (this.inherits.sets[set] || []).combine(this.inherits.locales).include('en-US');\n\t\tif (!_base) _base = [];\n\n\t\tfor (var i = 0, l = names.length; i < l; i++){\n\t\t\tif (_base.contains(names[i])) continue;\n\t\t\t_base.include(names[i]);\n\n\t\t\tvar locale = locales[names[i]];\n\t\t\tif (!locale) continue;\n\n\t\t\tvalue = locale.get(key, args, _base);\n\t\t\tif (value != null) return value;\n\t\t}\n\n\t\treturn '';\n\t},\n\n\tinherit: function(names, set){\n\t\tnames = Array.from(names);\n\n\t\tif (set && !this.inherits.sets[set]) this.inherits.sets[set] = [];\n\n\t\tvar l = names.length;\n\t\twhile (l--) (set ? this.inherits.sets[set] : this.inherits.locales).unshift(names[l]);\n\n\t\treturn this;\n\t}\n\n});\n\n\n\n})();\n\n\n/*\n---\n\nname: Locale.en-US.Date\n\ndescription: Date messages for US English.\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n\nrequires:\n - /Locale\n\nprovides: [Locale.en-US.Date]\n\n...\n*/\n\nLocale.define('en-US', 'Date', {\n\n\tmonths: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n\tmonths_abbr: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n\tdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n\tdays_abbr: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n\n\t// Culture's date order: MM/DD/YYYY\n\tdateOrder: ['month', 'date', 'year'],\n\tshortDate: '%m/%d/%Y',\n\tshortTime: '%I:%M%p',\n\tAM: 'AM',\n\tPM: 'PM',\n\tfirstDayOfWeek: 0,\n\n\t// Date.Extras\n\tordinal: function(dayOfMonth){\n\t\t// 1st, 2nd, 3rd, etc.\n\t\treturn (dayOfMonth > 3 && dayOfMonth < 21) ? 'th' : ['th', 'st', 'nd', 'rd', 'th'][Math.min(dayOfMonth % 10, 4)];\n\t},\n\n\tlessThanMinuteAgo: 'less than a minute ago',\n\tminuteAgo: 'about a minute ago',\n\tminutesAgo: '{delta} minutes ago',\n\thourAgo: 'about an hour ago',\n\thoursAgo: 'about {delta} hours ago',\n\tdayAgo: '1 day ago',\n\tdaysAgo: '{delta} days ago',\n\tweekAgo: '1 week ago',\n\tweeksAgo: '{delta} weeks ago',\n\tmonthAgo: '1 month ago',\n\tmonthsAgo: '{delta} months ago',\n\tyearAgo: '1 year ago',\n\tyearsAgo: '{delta} years ago',\n\n\tlessThanMinuteUntil: 'less than a minute from now',\n\tminuteUntil: 'about a minute from now',\n\tminutesUntil: '{delta} minutes from now',\n\thourUntil: 'about an hour from now',\n\thoursUntil: 'about {delta} hours from now',\n\tdayUntil: '1 day from now',\n\tdaysUntil: '{delta} days from now',\n\tweekUntil: '1 week from now',\n\tweeksUntil: '{delta} weeks from now',\n\tmonthUntil: '1 month from now',\n\tmonthsUntil: '{delta} months from now',\n\tyearUntil: '1 year from now',\n\tyearsUntil: '{delta} years from now'\n\n});\n\n\n/*\n---\n\nscript: Date.js\n\nname: Date\n\ndescription: Extends the Date native object to include methods useful in managing dates.\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n - Nicholas Barthelemy - https://svn.nbarthelemy.com/date-js/\n - Harald Kirshner - mail [at] digitarald.de; http://digitarald.de\n - Scott Kyle - scott [at] appden.com; http://appden.com\n\nrequires:\n - Core/Array\n - Core/String\n - Core/Number\n - MooTools.More\n - Locale\n - Locale.en-US.Date\n\nprovides: [Date]\n\n...\n*/\n\n(function(){\n\nvar Date = this.Date;\n\nvar DateMethods = Date.Methods = {\n\tms: 'Milliseconds',\n\tyear: 'FullYear',\n\tmin: 'Minutes',\n\tmo: 'Month',\n\tsec: 'Seconds',\n\thr: 'Hours'\n};\n\n['Date', 'Day', 'FullYear', 'Hours', 'Milliseconds', 'Minutes', 'Month', 'Seconds', 'Time', 'TimezoneOffset',\n\t'Week', 'Timezone', 'GMTOffset', 'DayOfYear', 'LastMonth', 'LastDayOfMonth', 'UTCDate', 'UTCDay', 'UTCFullYear',\n\t'AMPM', 'Ordinal', 'UTCHours', 'UTCMilliseconds', 'UTCMinutes', 'UTCMonth', 'UTCSeconds', 'UTCMilliseconds'].each(function(method){\n\tDate.Methods[method.toLowerCase()] = method;\n});\n\nvar pad = function(n, digits, string){\n\tif (digits == 1) return n;\n\treturn n < Math.pow(10, digits - 1) ? (string || '0') + pad(n, digits - 1, string) : n;\n};\n\nDate.implement({\n\n\tset: function(prop, value){\n\t\tprop = prop.toLowerCase();\n\t\tvar method = DateMethods[prop] && 'set' + DateMethods[prop];\n\t\tif (method && this[method]) this[method](value);\n\t\treturn this;\n\t}.overloadSetter(),\n\n\tget: function(prop){\n\t\tprop = prop.toLowerCase();\n\t\tvar method = DateMethods[prop] && 'get' + DateMethods[prop];\n\t\tif (method && this[method]) return this[method]();\n\t\treturn null;\n\t}.overloadGetter(),\n\n\tclone: function(){\n\t\treturn new Date(this.get('time'));\n\t},\n\n\tincrement: function(interval, times){\n\t\tinterval = interval || 'day';\n\t\ttimes = times != null ? times : 1;\n\n\t\tswitch (interval){\n\t\t\tcase 'year':\n\t\t\t\treturn this.increment('month', times * 12);\n\t\t\tcase 'month':\n\t\t\t\tvar d = this.get('date');\n\t\t\t\tthis.set('date', 1).set('mo', this.get('mo') + times);\n\t\t\t\treturn this.set('date', d.min(this.get('lastdayofmonth')));\n\t\t\tcase 'week':\n\t\t\t\treturn this.increment('day', times * 7);\n\t\t\tcase 'day':\n\t\t\t\treturn this.set('date', this.get('date') + times);\n\t\t}\n\n\t\tif (!Date.units[interval]) throw new Error(interval + ' is not a supported interval');\n\n\t\treturn this.set('time', this.get('time') + times * Date.units[interval]());\n\t},\n\n\tdecrement: function(interval, times){\n\t\treturn this.increment(interval, -1 * (times != null ? times : 1));\n\t},\n\n\tisLeapYear: function(){\n\t\treturn Date.isLeapYear(this.get('year'));\n\t},\n\n\tclearTime: function(){\n\t\treturn this.set({hr: 0, min: 0, sec: 0, ms: 0});\n\t},\n\n\tdiff: function(date, resolution){\n\t\tif (typeOf(date) == 'string') date = Date.parse(date);\n\n\t\treturn ((date - this) / Date.units[resolution || 'day'](3, 3)).round(); // non-leap year, 30-day month\n\t},\n\n\tgetLastDayOfMonth: function(){\n\t\treturn Date.daysInMonth(this.get('mo'), this.get('year'));\n\t},\n\n\tgetDayOfYear: function(){\n\t\treturn (Date.UTC(this.get('year'), this.get('mo'), this.get('date') + 1)\n\t\t\t- Date.UTC(this.get('year'), 0, 1)) / Date.units.day();\n\t},\n\n\tsetDay: function(day, firstDayOfWeek){\n\t\tif (firstDayOfWeek == null){\n\t\t\tfirstDayOfWeek = Date.getMsg('firstDayOfWeek');\n\t\t\tif (firstDayOfWeek === '') firstDayOfWeek = 1;\n\t\t}\n\n\t\tday = (7 + Date.parseDay(day, true) - firstDayOfWeek) % 7;\n\t\tvar currentDay = (7 + this.get('day') - firstDayOfWeek) % 7;\n\n\t\treturn this.increment('day', day - currentDay);\n\t},\n\n\tgetWeek: function(firstDayOfWeek){\n\t\tif (firstDayOfWeek == null){\n\t\t\tfirstDayOfWeek = Date.getMsg('firstDayOfWeek');\n\t\t\tif (firstDayOfWeek === '') firstDayOfWeek = 1;\n\t\t}\n\n\t\tvar date = this,\n\t\t\tdayOfWeek = (7 + date.get('day') - firstDayOfWeek) % 7,\n\t\t\tdividend = 0,\n\t\t\tfirstDayOfYear;\n\n\t\tif (firstDayOfWeek == 1){\n\t\t\t// ISO-8601, week belongs to year that has the most days of the week (i.e. has the thursday of the week)\n\t\t\tvar month = date.get('month'),\n\t\t\t\tstartOfWeek = date.get('date') - dayOfWeek;\n\n\t\t\tif (month == 11 && startOfWeek > 28) return 1; // Week 1 of next year\n\n\t\t\tif (month == 0 && startOfWeek < -2){\n\t\t\t\t// Use a date from last year to determine the week\n\t\t\t\tdate = new Date(date).decrement('day', dayOfWeek);\n\t\t\t\tdayOfWeek = 0;\n\t\t\t}\n\n\t\t\tfirstDayOfYear = new Date(date.get('year'), 0, 1).get('day') || 7;\n\t\t\tif (firstDayOfYear > 4) dividend = -7; // First week of the year is not week 1\n\t\t} else {\n\t\t\t// In other cultures the first week of the year is always week 1 and the last week always 53 or 54.\n\t\t\t// Days in the same week can have a different weeknumber if the week spreads across two years.\n\t\t\tfirstDayOfYear = new Date(date.get('year'), 0, 1).get('day');\n\t\t}\n\n\t\tdividend += date.get('dayofyear');\n\t\tdividend += 6 - dayOfWeek; // Add days so we calculate the current date's week as a full week\n\t\tdividend += (7 + firstDayOfYear - firstDayOfWeek) % 7; // Make up for first week of the year not being a full week\n\n\t\treturn (dividend / 7);\n\t},\n\n\tgetOrdinal: function(day){\n\t\treturn Date.getMsg('ordinal', day || this.get('date'));\n\t},\n\n\tgetTimezone: function(){\n\t\treturn this.toString()\n\t\t\t.replace(/^.*? ([A-Z]{3}).[0-9]{4}.*$/, '$1')\n\t\t\t.replace(/^.*?\\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\\)$/, '$1$2$3');\n\t},\n\n\tgetGMTOffset: function(){\n\t\tvar off = this.get('timezoneOffset');\n\t\treturn ((off > 0) ? '-' : '+') + pad((off.abs() / 60).floor(), 2) + pad(off % 60, 2);\n\t},\n\n\tsetAMPM: function(ampm){\n\t\tampm = ampm.toUpperCase();\n\t\tvar hr = this.get('hr');\n\t\tif (hr > 11 && ampm == 'AM') return this.decrement('hour', 12);\n\t\telse if (hr < 12 && ampm == 'PM') return this.increment('hour', 12);\n\t\treturn this;\n\t},\n\n\tgetAMPM: function(){\n\t\treturn (this.get('hr') < 12) ? 'AM' : 'PM';\n\t},\n\n\tparse: function(str){\n\t\tthis.set('time', Date.parse(str));\n\t\treturn this;\n\t},\n\n\tisValid: function(date){\n\t\tif (!date) date = this;\n\t\treturn typeOf(date) == 'date' && !isNaN(date.valueOf());\n\t},\n\n\tformat: function(format){\n\t\tif (!this.isValid()) return 'invalid date';\n\n\t\tif (!format) format = '%x %X';\n\t\tif (typeof format == 'string') format = formats[format.toLowerCase()] || format;\n\t\tif (typeof format == 'function') return format(this);\n\n\t\tvar d = this;\n\t\treturn format.replace(/%([a-z%])/gi,\n\t\t\tfunction($0, $1){\n\t\t\t\tswitch ($1){\n\t\t\t\t\tcase 'a': return Date.getMsg('days_abbr')[d.get('day')];\n\t\t\t\t\tcase 'A': return Date.getMsg('days')[d.get('day')];\n\t\t\t\t\tcase 'b': return Date.getMsg('months_abbr')[d.get('month')];\n\t\t\t\t\tcase 'B': return Date.getMsg('months')[d.get('month')];\n\t\t\t\t\tcase 'c': return d.format('%a %b %d %H:%M:%S %Y');\n\t\t\t\t\tcase 'd': return pad(d.get('date'), 2);\n\t\t\t\t\tcase 'e': return pad(d.get('date'), 2, ' ');\n\t\t\t\t\tcase 'H': return pad(d.get('hr'), 2);\n\t\t\t\t\tcase 'I': return pad((d.get('hr') % 12) || 12, 2);\n\t\t\t\t\tcase 'j': return pad(d.get('dayofyear'), 3);\n\t\t\t\t\tcase 'k': return pad(d.get('hr'), 2, ' ');\n\t\t\t\t\tcase 'l': return pad((d.get('hr') % 12) || 12, 2, ' ');\n\t\t\t\t\tcase 'L': return pad(d.get('ms'), 3);\n\t\t\t\t\tcase 'm': return pad((d.get('mo') + 1), 2);\n\t\t\t\t\tcase 'M': return pad(d.get('min'), 2);\n\t\t\t\t\tcase 'o': return d.get('ordinal');\n\t\t\t\t\tcase 'p': return Date.getMsg(d.get('ampm'));\n\t\t\t\t\tcase 's': return Math.round(d / 1000);\n\t\t\t\t\tcase 'S': return pad(d.get('seconds'), 2);\n\t\t\t\t\tcase 'T': return d.format('%H:%M:%S');\n\t\t\t\t\tcase 'U': return pad(d.get('week'), 2);\n\t\t\t\t\tcase 'w': return d.get('day');\n\t\t\t\t\tcase 'x': return d.format(Date.getMsg('shortDate'));\n\t\t\t\t\tcase 'X': return d.format(Date.getMsg('shortTime'));\n\t\t\t\t\tcase 'y': return d.get('year').toString().substr(2);\n\t\t\t\t\tcase 'Y': return d.get('year');\n\t\t\t\t\tcase 'z': return d.get('GMTOffset');\n\t\t\t\t\tcase 'Z': return d.get('Timezone');\n\t\t\t\t}\n\t\t\t\treturn $1;\n\t\t\t}\n\t\t);\n\t},\n\n\ttoISOString: function(){\n\t\treturn this.format('iso8601');\n\t}\n\n}).alias({\n\ttoJSON: 'toISOString',\n\tcompare: 'diff',\n\tstrftime: 'format'\n});\n\n// The day and month abbreviations are standardized, so we cannot use simply %a and %b because they will get localized\nvar rfcDayAbbr = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n\trfcMonthAbbr = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n\nvar formats = {\n\tdb: '%Y-%m-%d %H:%M:%S',\n\tcompact: '%Y%m%dT%H%M%S',\n\t'short': '%d %b %H:%M',\n\t'long': '%B %d, %Y %H:%M',\n\trfc822: function(date){\n\t\treturn rfcDayAbbr[date.get('day')] + date.format(', %d ') + rfcMonthAbbr[date.get('month')] + date.format(' %Y %H:%M:%S %Z');\n\t},\n\trfc2822: function(date){\n\t\treturn rfcDayAbbr[date.get('day')] + date.format(', %d ') + rfcMonthAbbr[date.get('month')] + date.format(' %Y %H:%M:%S %z');\n\t},\n\tiso8601: function(date){\n\t\treturn (\n\t\t\tdate.getUTCFullYear() + '-' +\n\t\t\tpad(date.getUTCMonth() + 1, 2) + '-' +\n\t\t\tpad(date.getUTCDate(), 2) + 'T' +\n\t\t\tpad(date.getUTCHours(), 2) + ':' +\n\t\t\tpad(date.getUTCMinutes(), 2) + ':' +\n\t\t\tpad(date.getUTCSeconds(), 2) + '.' +\n\t\t\tpad(date.getUTCMilliseconds(), 3) + 'Z'\n\t\t);\n\t}\n};\n\nvar parsePatterns = [],\n\tnativeParse = Date.parse;\n\nvar parseWord = function(type, word, num){\n\tvar ret = -1,\n\t\ttranslated = Date.getMsg(type + 's');\n\tswitch (typeOf(word)){\n\t\tcase 'object':\n\t\t\tret = translated[word.get(type)];\n\t\t\tbreak;\n\t\tcase 'number':\n\t\t\tret = translated[word];\n\t\t\tif (!ret) throw new Error('Invalid ' + type + ' index: ' + word);\n\t\t\tbreak;\n\t\tcase 'string':\n\t\t\tvar match = translated.filter(function(name){\n\t\t\t\treturn this.test(name);\n\t\t\t}, new RegExp('^' + word, 'i'));\n\t\t\tif (!match.length) throw new Error('Invalid ' + type + ' string');\n\t\t\tif (match.length > 1) throw new Error('Ambiguous ' + type);\n\t\t\tret = match[0];\n\t}\n\n\treturn (num) ? translated.indexOf(ret) : ret;\n};\n\nvar startCentury = 1900,\n\tstartYear = 70;\n\nDate.extend({\n\n\tgetMsg: function(key, args){\n\t\treturn Locale.get('Date.' + key, args);\n\t},\n\n\tunits: {\n\t\tms: Function.from(1),\n\t\tsecond: Function.from(1000),\n\t\tminute: Function.from(60000),\n\t\thour: Function.from(3600000),\n\t\tday: Function.from(86400000),\n\t\tweek: Function.from(608400000),\n\t\tmonth: function(month, year){\n\t\t\tvar d = new Date;\n\t\t\treturn Date.daysInMonth(month != null ? month : d.get('mo'), year != null ? year : d.get('year')) * 86400000;\n\t\t},\n\t\tyear: function(year){\n\t\t\tyear = year || new Date().get('year');\n\t\t\treturn Date.isLeapYear(year) ? 31622400000 : 31536000000;\n\t\t}\n\t},\n\n\tdaysInMonth: function(month, year){\n\t\treturn [31, Date.isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];\n\t},\n\n\tisLeapYear: function(year){\n\t\treturn ((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0);\n\t},\n\n\tparse: function(from){\n\t\tvar t = typeOf(from);\n\t\tif (t == 'number') return new Date(from);\n\t\tif (t != 'string') return from;\n\t\tfrom = from.clean();\n\t\tif (!from.length) return null;\n\n\t\tvar parsed;\n\t\tparsePatterns.some(function(pattern){\n\t\t\tvar bits = pattern.re.exec(from);\n\t\t\treturn (bits) ? (parsed = pattern.handler(bits)) : false;\n\t\t});\n\n\t\tif (!(parsed && parsed.isValid())){\n\t\t\tparsed = new Date(nativeParse(from));\n\t\t\tif (!(parsed && parsed.isValid())) parsed = new Date(from.toInt());\n\t\t}\n\t\treturn parsed;\n\t},\n\n\tparseDay: function(day, num){\n\t\treturn parseWord('day', day, num);\n\t},\n\n\tparseMonth: function(month, num){\n\t\treturn parseWord('month', month, num);\n\t},\n\n\tparseUTC: function(value){\n\t\tvar localDate = new Date(value);\n\t\tvar utcSeconds = Date.UTC(\n\t\t\tlocalDate.get('year'),\n\t\t\tlocalDate.get('mo'),\n\t\t\tlocalDate.get('date'),\n\t\t\tlocalDate.get('hr'),\n\t\t\tlocalDate.get('min'),\n\t\t\tlocalDate.get('sec'),\n\t\t\tlocalDate.get('ms')\n\t\t);\n\t\treturn new Date(utcSeconds);\n\t},\n\n\torderIndex: function(unit){\n\t\treturn Date.getMsg('dateOrder').indexOf(unit) + 1;\n\t},\n\n\tdefineFormat: function(name, format){\n\t\tformats[name] = format;\n\t\treturn this;\n\t},\n\n\t\n\n\tdefineParser: function(pattern){\n\t\tparsePatterns.push((pattern.re && pattern.handler) ? pattern : build(pattern));\n\t\treturn this;\n\t},\n\n\tdefineParsers: function(){\n\t\tArray.flatten(arguments).each(Date.defineParser);\n\t\treturn this;\n\t},\n\n\tdefine2DigitYearStart: function(year){\n\t\tstartYear = year % 100;\n\t\tstartCentury = year - startYear;\n\t\treturn this;\n\t}\n\n}).extend({\n\tdefineFormats: Date.defineFormat.overloadSetter()\n});\n\nvar regexOf = function(type){\n\treturn new RegExp('(?:' + Date.getMsg(type).map(function(name){\n\t\treturn name.substr(0, 3);\n\t}).join('|') + ')[a-z]*');\n};\n\nvar replacers = function(key){\n\tswitch (key){\n\t\tcase 'T':\n\t\t\treturn '%H:%M:%S';\n\t\tcase 'x': // iso8601 covers yyyy-mm-dd, so just check if month is first\n\t\t\treturn ((Date.orderIndex('month') == 1) ? '%m[-./]%d' : '%d[-./]%m') + '([-./]%y)?';\n\t\tcase 'X':\n\t\t\treturn '%H([.:]%M)?([.:]%S([.:]%s)?)? ?%p? ?%z?';\n\t}\n\treturn null;\n};\n\nvar keys = {\n\td: /[0-2]?[0-9]|3[01]/,\n\tH: /[01]?[0-9]|2[0-3]/,\n\tI: /0?[1-9]|1[0-2]/,\n\tM: /[0-5]?\\d/,\n\ts: /\\d+/,\n\to: /[a-z]*/,\n\tp: /[ap]\\.?m\\.?/,\n\ty: /\\d{2}|\\d{4}/,\n\tY: /\\d{4}/,\n\tz: /Z|[+-]\\d{2}(?::?\\d{2})?/\n};\n\nkeys.m = keys.I;\nkeys.S = keys.M;\n\nvar currentLanguage;\n\nvar recompile = function(language){\n\tcurrentLanguage = language;\n\n\tkeys.a = keys.A = regexOf('days');\n\tkeys.b = keys.B = regexOf('months');\n\n\tparsePatterns.each(function(pattern, i){\n\t\tif (pattern.format) parsePatterns[i] = build(pattern.format);\n\t});\n};\n\nvar build = function(format){\n\tif (!currentLanguage) return {format: format};\n\n\tvar parsed = [];\n\tvar re = (format.source || format) // allow format to be regex\n\t .replace(/%([a-z])/gi,\n\t\tfunction($0, $1){\n\t\t\treturn replacers($1) || $0;\n\t\t}\n\t).replace(/\\((?!\\?)/g, '(?:') // make all groups non-capturing\n\t .replace(/ (?!\\?|\\*)/g, ',? ') // be forgiving with spaces and commas\n\t .replace(/%([a-z%])/gi,\n\t\tfunction($0, $1){\n\t\t\tvar p = keys[$1];\n\t\t\tif (!p) return $1;\n\t\t\tparsed.push($1);\n\t\t\treturn '(' + p.source + ')';\n\t\t}\n\t).replace(/\\[a-z\\]/gi, '[a-z\\\\u00c0-\\\\uffff;\\&]'); // handle unicode words\n\n\treturn {\n\t\tformat: format,\n\t\tre: new RegExp('^' + re + '$', 'i'),\n\t\thandler: function(bits){\n\t\t\tbits = bits.slice(1).associate(parsed);\n\t\t\tvar date = new Date().clearTime(),\n\t\t\t\tyear = bits.y || bits.Y;\n\n\t\t\tif (year != null) handle.call(date, 'y', year); // need to start in the right year\n\t\t\tif ('d' in bits) handle.call(date, 'd', 1);\n\t\t\tif ('m' in bits || bits.b || bits.B) handle.call(date, 'm', 1);\n\n\t\t\tfor (var key in bits) handle.call(date, key, bits[key]);\n\t\t\treturn date;\n\t\t}\n\t};\n};\n\nvar handle = function(key, value){\n\tif (!value) return this;\n\n\tswitch (key){\n\t\tcase 'a': case 'A': return this.set('day', Date.parseDay(value, true));\n\t\tcase 'b': case 'B': return this.set('mo', Date.parseMonth(value, true));\n\t\tcase 'd': return this.set('date', value);\n\t\tcase 'H': case 'I': return this.set('hr', value);\n\t\tcase 'm': return this.set('mo', value - 1);\n\t\tcase 'M': return this.set('min', value);\n\t\tcase 'p': return this.set('ampm', value.replace(/\\./g, ''));\n\t\tcase 'S': return this.set('sec', value);\n\t\tcase 's': return this.set('ms', ('0.' + value) * 1000);\n\t\tcase 'w': return this.set('day', value);\n\t\tcase 'Y': return this.set('year', value);\n\t\tcase 'y':\n\t\t\tvalue = +value;\n\t\t\tif (value < 100) value += startCentury + (value < startYear ? 100 : 0);\n\t\t\treturn this.set('year', value);\n\t\tcase 'z':\n\t\t\tif (value == 'Z') value = '+00';\n\t\t\tvar offset = value.match(/([+-])(\\d{2}):?(\\d{2})?/);\n\t\t\toffset = (offset[1] + '1') * (offset[2] * 60 + (+offset[3] || 0)) + this.getTimezoneOffset();\n\t\t\treturn this.set('time', this - offset * 60000);\n\t}\n\n\treturn this;\n};\n\nDate.defineParsers(\n\t'%Y([-./]%m([-./]%d((T| )%X)?)?)?', // \"1999-12-31\", \"1999-12-31 11:59pm\", \"1999-12-31 23:59:59\", ISO8601\n\t'%Y%m%d(T%H(%M%S?)?)?', // \"19991231\", \"19991231T1159\", compact\n\t'%x( %X)?', // \"12/31\", \"12.31.99\", \"12-31-1999\", \"12/31/2008 11:59 PM\"\n\t'%d%o( %b( %Y)?)?( %X)?', // \"31st\", \"31st December\", \"31 Dec 1999\", \"31 Dec 1999 11:59pm\"\n\t'%b( %d%o)?( %Y)?( %X)?', // Same as above with month and day switched\n\t'%Y %b( %d%o( %X)?)?', // Same as above with year coming first\n\t'%o %b %d %X %z %Y', // \"Thu Oct 22 08:11:23 +0000 2009\"\n\t'%T', // %H:%M:%S\n\t'%H:%M( ?%p)?' // \"11:05pm\", \"11:05 am\" and \"11:05\"\n);\n\nLocale.addEvent('change', function(language){\n\tif (Locale.get('Date')) recompile(language);\n}).fireEvent('change', Locale.getCurrent());\n\n})();\n\n\n/*\n---\n\nscript: Date.Extras.js\n\nname: Date.Extras\n\ndescription: Extends the Date native object to include extra methods (on top of those in Date.js).\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n - Scott Kyle\n\nrequires:\n - /Date\n\nprovides: [Date.Extras]\n\n...\n*/\n\nDate.implement({\n\n\ttimeDiffInWords: function(to){\n\t\treturn Date.distanceOfTimeInWords(this, to || new Date);\n\t},\n\n\ttimeDiff: function(to, separator){\n\t\tif (to == null) to = new Date;\n\t\tvar delta = ((to - this) / 1000).floor().abs();\n\n\t\tvar vals = [],\n\t\t\tdurations = [60, 60, 24, 365, 0],\n\t\t\tnames = ['s', 'm', 'h', 'd', 'y'],\n\t\t\tvalue, duration;\n\n\t\tfor (var item = 0; item < durations.length; item++){\n\t\t\tif (item && !delta) break;\n\t\t\tvalue = delta;\n\t\t\tif ((duration = durations[item])){\n\t\t\t\tvalue = (delta % duration);\n\t\t\t\tdelta = (delta / duration).floor();\n\t\t\t}\n\t\t\tvals.unshift(value + (names[item] || ''));\n\t\t}\n\n\t\treturn vals.join(separator || ':');\n\t}\n\n}).extend({\n\n\tdistanceOfTimeInWords: function(from, to){\n\t\treturn Date.getTimePhrase(((to - from) / 1000).toInt());\n\t},\n\n\tgetTimePhrase: function(delta){\n\t\tvar suffix = (delta < 0) ? 'Until' : 'Ago';\n\t\tif (delta < 0) delta *= -1;\n\n\t\tvar units = {\n\t\t\tminute: 60,\n\t\t\thour: 60,\n\t\t\tday: 24,\n\t\t\tweek: 7,\n\t\t\tmonth: 52 / 12,\n\t\t\tyear: 12,\n\t\t\teon: Infinity\n\t\t};\n\n\t\tvar msg = 'lessThanMinute';\n\n\t\tfor (var unit in units){\n\t\t\tvar interval = units[unit];\n\t\t\tif (delta < 1.5 * interval){\n\t\t\t\tif (delta > 0.75 * interval) msg = unit;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdelta /= interval;\n\t\t\tmsg = unit + 's';\n\t\t}\n\n\t\tdelta = delta.round();\n\t\treturn Date.getMsg(msg + suffix, delta).substitute({delta: delta});\n\t}\n\n}).defineParsers(\n\n\t{\n\t\t// \"today\", \"tomorrow\", \"yesterday\"\n\t\tre: /^(?:tod|tom|yes)/i,\n\t\thandler: function(bits){\n\t\t\tvar d = new Date().clearTime();\n\t\t\tswitch (bits[0]){\n\t\t\t\tcase 'tom': return d.increment();\n\t\t\t\tcase 'yes': return d.decrement();\n\t\t\t\tdefault: return d;\n\t\t\t}\n\t\t}\n\t},\n\n\t{\n\t\t// \"next Wednesday\", \"last Thursday\"\n\t\tre: /^(next|last) ([a-z]+)$/i,\n\t\thandler: function(bits){\n\t\t\tvar d = new Date().clearTime();\n\t\t\tvar day = d.getDay();\n\t\t\tvar newDay = Date.parseDay(bits[2], true);\n\t\t\tvar addDays = newDay - day;\n\t\t\tif (newDay <= day) addDays += 7;\n\t\t\tif (bits[1] == 'last') addDays -= 7;\n\t\t\treturn d.set('date', d.getDate() + addDays);\n\t\t}\n\t}\n\n).alias('timeAgoInWords', 'timeDiffInWords');\n\n\n/*\n---\n\nname: Locale.en-US.Number\n\ndescription: Number messages for US English.\n\nlicense: MIT-style license\n\nauthors:\n - Arian Stolwijk\n\nrequires:\n - /Locale\n\nprovides: [Locale.en-US.Number]\n\n...\n*/\n\nLocale.define('en-US', 'Number', {\n\n\tdecimal: '.',\n\tgroup: ',',\n\n/* \tCommented properties are the defaults for Number.format\n\tdecimals: 0,\n\tprecision: 0,\n\tscientific: null,\n\n\tprefix: null,\n\tsuffic: null,\n\n\t// Negative/Currency/percentage will mixin Number\n\tnegative: {\n\t\tprefix: '-'\n\t},*/\n\n\tcurrency: {\n//\t\tdecimals: 2,\n\t\tprefix: '$ '\n\t}/*,\n\n\tpercentage: {\n\t\tdecimals: 2,\n\t\tsuffix: '%'\n\t}*/\n\n});\n\n\n\n\n/*\n---\nname: Number.Format\ndescription: Extends the Number Type object to include a number formatting method.\nlicense: MIT-style license\nauthors: [Arian Stolwijk]\nrequires: [Core/Number, Locale.en-US.Number]\n# Number.Extras is for compatibility\nprovides: [Number.Format, Number.Extras]\n...\n*/\n\n\nNumber.implement({\n\n\tformat: function(options){\n\t\t// Thanks dojo and YUI for some inspiration\n\t\tvar value = this;\n\t\toptions = options ? Object.clone(options) : {};\n\t\tvar getOption = function(key){\n\t\t\tif (options[key] != null) return options[key];\n\t\t\treturn Locale.get('Number.' + key);\n\t\t};\n\n\t\tvar negative = value < 0,\n\t\t\tdecimal = getOption('decimal'),\n\t\t\tprecision = getOption('precision'),\n\t\t\tgroup = getOption('group'),\n\t\t\tdecimals = getOption('decimals');\n\n\t\tif (negative){\n\t\t\tvar negativeLocale = getOption('negative') || {};\n\t\t\tif (negativeLocale.prefix == null && negativeLocale.suffix == null) negativeLocale.prefix = '-';\n\t\t\t['prefix', 'suffix'].each(function(key){\n\t\t\t\tif (negativeLocale[key]) options[key] = getOption(key) + negativeLocale[key];\n\t\t\t});\n\n\t\t\tvalue = -value;\n\t\t}\n\n\t\tvar prefix = getOption('prefix'),\n\t\t\tsuffix = getOption('suffix');\n\n\t\tif (decimals !== '' && decimals >= 0 && decimals <= 20) value = value.toFixed(decimals);\n\t\tif (precision >= 1 && precision <= 21) value = (+value).toPrecision(precision);\n\n\t\tvalue += '';\n\t\tvar index;\n\t\tif (getOption('scientific') === false && value.indexOf('e') > -1){\n\t\t\tvar match = value.split('e'),\n\t\t\t\tzeros = +match[1];\n\t\t\tvalue = match[0].replace('.', '');\n\n\t\t\tif (zeros < 0){\n\t\t\t\tzeros = -zeros - 1;\n\t\t\t\tindex = match[0].indexOf('.');\n\t\t\t\tif (index > -1) zeros -= index - 1;\n\t\t\t\twhile (zeros--) value = '0' + value;\n\t\t\t\tvalue = '0.' + value;\n\t\t\t} else {\n\t\t\t\tindex = match[0].lastIndexOf('.');\n\t\t\t\tif (index > -1) zeros -= match[0].length - index - 1;\n\t\t\t\twhile (zeros--) value += '0';\n\t\t\t}\n\t\t}\n\n\t\tif (decimal != '.') value = value.replace('.', decimal);\n\n\t\tif (group){\n\t\t\tindex = value.lastIndexOf(decimal);\n\t\t\tindex = (index > -1) ? index : value.length;\n\t\t\tvar newOutput = value.substring(index),\n\t\t\t\ti = index;\n\n\t\t\twhile (i--){\n\t\t\t\tif ((index - i - 1) % 3 == 0 && i != (index - 1)) newOutput = group + newOutput;\n\t\t\t\tnewOutput = value.charAt(i) + newOutput;\n\t\t\t}\n\n\t\t\tvalue = newOutput;\n\t\t}\n\n\t\tif (prefix) value = prefix + value;\n\t\tif (suffix) value += suffix;\n\n\t\treturn value;\n\t},\n\n\tformatCurrency: function(decimals){\n\t\tvar locale = Locale.get('Number.currency') || {};\n\t\tif (locale.scientific == null) locale.scientific = false;\n\t\tlocale.decimals = decimals != null ? decimals\n\t\t\t: (locale.decimals == null ? 2 : locale.decimals);\n\n\t\treturn this.format(locale);\n\t},\n\n\tformatPercentage: function(decimals){\n\t\tvar locale = Locale.get('Number.percentage') || {};\n\t\tif (locale.suffix == null) locale.suffix = '%';\n\t\tlocale.decimals = decimals != null ? decimals\n\t\t\t: (locale.decimals == null ? 2 : locale.decimals);\n\n\t\treturn this.format(locale);\n\t}\n\n});\n\n\n/*\n---\n\nscript: String.Extras.js\n\nname: String.Extras\n\ndescription: Extends the String native object to include methods useful in managing various kinds of strings (query strings, urls, html, etc).\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n - Guillermo Rauch\n - Christopher Pitt\n\nrequires:\n - Core/String\n - Core/Array\n - MooTools.More\n\nprovides: [String.Extras]\n\n...\n*/\n\n(function(){\n\nvar special = {\n\t'a': /[àáâãäåăą]/g,\n\t'A': /[ÀÁÂÃÄÅĂĄ]/g,\n\t'c': /[ćčç]/g,\n\t'C': /[ĆČÇ]/g,\n\t'd': /[ďđ]/g,\n\t'D': /[ĎÐ]/g,\n\t'e': /[èéêëěę]/g,\n\t'E': /[ÈÉÊËĚĘ]/g,\n\t'g': /[ğ]/g,\n\t'G': /[Ğ]/g,\n\t'i': /[ìíîï]/g,\n\t'I': /[ÌÍÎÏ]/g,\n\t'l': /[ĺľł]/g,\n\t'L': /[ĹĽŁ]/g,\n\t'n': /[ñňń]/g,\n\t'N': /[ÑŇŃ]/g,\n\t'o': /[òóôõöøő]/g,\n\t'O': /[ÒÓÔÕÖØ]/g,\n\t'r': /[řŕ]/g,\n\t'R': /[ŘŔ]/g,\n\t's': /[ššş]/g,\n\t'S': /[ŠŞŚ]/g,\n\t't': /[ťţ]/g,\n\t'T': /[ŤŢ]/g,\n\t'ue': /[ü]/g,\n\t'UE': /[Ü]/g,\n\t'u': /[ùúûůµ]/g,\n\t'U': /[ÙÚÛŮ]/g,\n\t'y': /[ÿý]/g,\n\t'Y': /[ŸÝ]/g,\n\t'z': /[žźż]/g,\n\t'Z': /[ŽŹŻ]/g,\n\t'th': /[þ]/g,\n\t'TH': /[Þ]/g,\n\t'dh': /[ð]/g,\n\t'DH': /[Ð]/g,\n\t'ss': /[ß]/g,\n\t'oe': /[œ]/g,\n\t'OE': /[Œ]/g,\n\t'ae': /[æ]/g,\n\t'AE': /[Æ]/g\n},\n\ntidy = {\n\t' ': /[\\xa0\\u2002\\u2003\\u2009]/g,\n\t'*': /[\\xb7]/g,\n\t'\\'': /[\\u2018\\u2019]/g,\n\t'\"': /[\\u201c\\u201d]/g,\n\t'...': /[\\u2026]/g,\n\t'-': /[\\u2013]/g,\n//\t'--': /[\\u2014]/g,\n\t'»': /[\\uFFFD]/g\n};\n\nvar walk = function(string, replacements){\n\tvar result = string, key;\n\tfor (key in replacements) result = result.replace(replacements[key], key);\n\treturn result;\n};\n\nvar getRegexForTag = function(tag, contents){\n\ttag = tag || '';\n\tvar regstr = contents ? \"<\" + tag + \"(?!\\\\w)[^>]*>([\\\\s\\\\S]*?)<\\/\" + tag + \"(?!\\\\w)>\" : \"<\\/?\" + tag + \"([^>]+)?>\",\n\t\treg = new RegExp(regstr, \"gi\");\n\treturn reg;\n};\n\nString.implement({\n\n\tstandardize: function(){\n\t\treturn walk(this, special);\n\t},\n\n\trepeat: function(times){\n\t\treturn new Array(times + 1).join(this);\n\t},\n\n\tpad: function(length, str, direction){\n\t\tif (this.length >= length) return this;\n\n\t\tvar pad = (str == null ? ' ' : '' + str)\n\t\t\t.repeat(length - this.length)\n\t\t\t.substr(0, length - this.length);\n\n\t\tif (!direction || direction == 'right') return this + pad;\n\t\tif (direction == 'left') return pad + this;\n\n\t\treturn pad.substr(0, (pad.length / 2).floor()) + this + pad.substr(0, (pad.length / 2).ceil());\n\t},\n\n\tgetTags: function(tag, contents){\n\t\treturn this.match(getRegexForTag(tag, contents)) || [];\n\t},\n\n\tstripTags: function(tag, contents){\n\t\treturn this.replace(getRegexForTag(tag, contents), '');\n\t},\n\n\ttidy: function(){\n\t\treturn walk(this, tidy);\n\t},\n\n\ttruncate: function(max, trail, atChar){\n\t\tvar string = this;\n\t\tif (trail == null && arguments.length == 1) trail = '…';\n\t\tif (string.length > max){\n\t\t\tstring = string.substring(0, max);\n\t\t\tif (atChar){\n\t\t\t\tvar index = string.lastIndexOf(atChar);\n\t\t\t\tif (index != -1) string = string.substr(0, index);\n\t\t\t}\n\t\t\tif (trail) string += trail;\n\t\t}\n\t\treturn string;\n\t}\n\n});\n\n})();\n\n\n/*\n---\n\nscript: String.QueryString.js\n\nname: String.QueryString\n\ndescription: Methods for dealing with URI query strings.\n\nlicense: MIT-style license\n\nauthors:\n - Sebastian Markbåge\n - Aaron Newton\n - Lennart Pilon\n - Valerio Proietti\n\nrequires:\n - Core/Array\n - Core/String\n - /MooTools.More\n\nprovides: [String.QueryString]\n\n...\n*/\n\nString.implement({\n\n\tparseQueryString: function(decodeKeys, decodeValues){\n\t\tif (decodeKeys == null) decodeKeys = true;\n\t\tif (decodeValues == null) decodeValues = true;\n\n\t\tvar vars = this.split(/[&;]/),\n\t\t\tobject = {};\n\t\tif (!vars.length) return object;\n\n\t\tvars.each(function(val){\n\t\t\tvar index = val.indexOf('=') + 1,\n\t\t\t\tvalue = index ? val.substr(index) : '',\n\t\t\t\tkeys = index ? val.substr(0, index - 1).match(/([^\\]\\[]+|(\\B)(?=\\]))/g) : [val],\n\t\t\t\tobj = object;\n\t\t\tif (!keys) return;\n\t\t\tif (decodeValues) value = decodeURIComponent(value);\n\t\t\tkeys.each(function(key, i){\n\t\t\t\tif (decodeKeys) key = decodeURIComponent(key);\n\t\t\t\tvar current = obj[key];\n\n\t\t\t\tif (i < keys.length - 1) obj = obj[key] = current || {};\n\t\t\t\telse if (typeOf(current) == 'array') current.push(value);\n\t\t\t\telse obj[key] = current != null ? [current, value] : value;\n\t\t\t});\n\t\t});\n\n\t\treturn object;\n\t},\n\n\tcleanQueryString: function(method){\n\t\treturn this.split('&').filter(function(val){\n\t\t\tvar index = val.indexOf('='),\n\t\t\t\tkey = index < 0 ? '' : val.substr(0, index),\n\t\t\t\tvalue = val.substr(index + 1);\n\n\t\t\treturn method ? method.call(null, key, value) : (value || value === 0);\n\t\t}).join('&');\n\t}\n\n});\n\n\n/*\n---\n\nscript: URI.js\n\nname: URI\n\ndescription: Provides methods useful in managing the window location and uris.\n\nlicense: MIT-style license\n\nauthors:\n - Sebastian Markbåge\n - Aaron Newton\n\nrequires:\n - Core/Object\n - Core/Class\n - Core/Class.Extras\n - Core/Element\n - /String.QueryString\n\nprovides: [URI]\n\n...\n*/\n\n(function(){\n\nvar toString = function(){\n\treturn this.get('value');\n};\n\nvar URI = this.URI = new Class({\n\n\tImplements: Options,\n\n\toptions: {\n\t\t/*base: false*/\n\t},\n\n\tregex: /^(?:(\\w+):)?(?:\\/\\/(?:(?:([^:@\\/]*):?([^:@\\/]*))?@)?([^:\\/?#]*)(?::(\\d*))?)?(\\.\\.?$|(?:[^?#\\/]*\\/)*)([^?#]*)(?:\\?([^#]*))?(?:#(.*))?/,\n\tparts: ['scheme', 'user', 'password', 'host', 'port', 'directory', 'file', 'query', 'fragment'],\n\tschemes: {http: 80, https: 443, ftp: 21, rtsp: 554, mms: 1755, file: 0},\n\n\tinitialize: function(uri, options){\n\t\tthis.setOptions(options);\n\t\tvar base = this.options.base || URI.base;\n\t\tif (!uri) uri = base;\n\n\t\tif (uri && uri.parsed) this.parsed = Object.clone(uri.parsed);\n\t\telse this.set('value', uri.href || uri.toString(), base ? new URI(base) : false);\n\t},\n\n\tparse: function(value, base){\n\t\tvar bits = value.match(this.regex);\n\t\tif (!bits) return false;\n\t\tbits.shift();\n\t\treturn this.merge(bits.associate(this.parts), base);\n\t},\n\n\tmerge: function(bits, base){\n\t\tif ((!bits || !bits.scheme) && (!base || !base.scheme)) return false;\n\t\tif (base){\n\t\t\tthis.parts.every(function(part){\n\t\t\t\tif (bits[part]) return false;\n\t\t\t\tbits[part] = base[part] || '';\n\t\t\t\treturn true;\n\t\t\t});\n\t\t}\n\t\tbits.port = bits.port || this.schemes[bits.scheme.toLowerCase()];\n\t\tbits.directory = bits.directory ? this.parseDirectory(bits.directory, base ? base.directory : '') : '/';\n\t\treturn bits;\n\t},\n\n\tparseDirectory: function(directory, baseDirectory){\n\t\tdirectory = (directory.substr(0, 1) == '/' ? '' : (baseDirectory || '/')) + directory;\n\t\tif (!directory.test(URI.regs.directoryDot)) return directory;\n\t\tvar result = [];\n\t\tdirectory.replace(URI.regs.endSlash, '').split('/').each(function(dir){\n\t\t\tif (dir == '..' && result.length > 0) result.pop();\n\t\t\telse if (dir != '.') result.push(dir);\n\t\t});\n\t\treturn result.join('/') + '/';\n\t},\n\n\tcombine: function(bits){\n\t\treturn bits.value || bits.scheme + '://' +\n\t\t\t(bits.user ? bits.user + (bits.password ? ':' + bits.password : '') + '@' : '') +\n\t\t\t(bits.host || '') + (bits.port && bits.port != this.schemes[bits.scheme] ? ':' + bits.port : '') +\n\t\t\t(bits.directory || '/') + (bits.file || '') +\n\t\t\t(bits.query ? '?' + bits.query : '') +\n\t\t\t(bits.fragment ? '#' + bits.fragment : '');\n\t},\n\n\tset: function(part, value, base){\n\t\tif (part == 'value'){\n\t\t\tvar scheme = value.match(URI.regs.scheme);\n\t\t\tif (scheme) scheme = scheme[1];\n\t\t\tif (scheme && this.schemes[scheme.toLowerCase()] == null) this.parsed = { scheme: scheme, value: value };\n\t\t\telse this.parsed = this.parse(value, (base || this).parsed) || (scheme ? { scheme: scheme, value: value } : { value: value });\n\t\t} else if (part == 'data'){\n\t\t\tthis.setData(value);\n\t\t} else {\n\t\t\tthis.parsed[part] = value;\n\t\t}\n\t\treturn this;\n\t},\n\n\tget: function(part, base){\n\t\tswitch (part){\n\t\t\tcase 'value': return this.combine(this.parsed, base ? base.parsed : false);\n\t\t\tcase 'data' : return this.getData();\n\t\t}\n\t\treturn this.parsed[part] || '';\n\t},\n\n\tgo: function(){\n\t\tdocument.location.href = this.toString();\n\t},\n\n\ttoURI: function(){\n\t\treturn this;\n\t},\n\n\tgetData: function(key, part){\n\t\tvar qs = this.get(part || 'query');\n\t\tif (!(qs || qs === 0)) return key ? null : {};\n\t\tvar obj = qs.parseQueryString();\n\t\treturn key ? obj[key] : obj;\n\t},\n\n\tsetData: function(values, merge, part){\n\t\tif (typeof values == 'string'){\n\t\t\tvar data = this.getData();\n\t\t\tdata[arguments[0]] = arguments[1];\n\t\t\tvalues = data;\n\t\t} else if (merge){\n\t\t\tvalues = Object.merge(this.getData(), values);\n\t\t}\n\t\treturn this.set(part || 'query', Object.toQueryString(values));\n\t},\n\n\tclearData: function(part){\n\t\treturn this.set(part || 'query', '');\n\t},\n\n\ttoString: toString,\n\tvalueOf: toString\n\n});\n\nURI.regs = {\n\tendSlash: /\\/$/,\n\tscheme: /^(\\w+):/,\n\tdirectoryDot: /\\.\\/|\\.$/\n};\n\nURI.base = new URI(Array.from(document.getElements('base[href]', true)).getLast(), {base: document.location});\n\nString.implement({\n\n\ttoURI: function(options){\n\t\treturn new URI(this, options);\n\t}\n\n});\n\n})();\n\n\n/*\n---\n\nscript: URI.Relative.js\n\nname: URI.Relative\n\ndescription: Extends the URI class to add methods for computing relative and absolute urls.\n\nlicense: MIT-style license\n\nauthors:\n - Sebastian Markbåge\n\n\nrequires:\n - /Class.refactor\n - /URI\n\nprovides: [URI.Relative]\n\n...\n*/\n\nURI = Class.refactor(URI, {\n\n\tcombine: function(bits, base){\n\t\tif (!base || bits.scheme != base.scheme || bits.host != base.host || bits.port != base.port)\n\t\t\treturn this.previous.apply(this, arguments);\n\t\tvar end = bits.file + (bits.query ? '?' + bits.query : '') + (bits.fragment ? '#' + bits.fragment : '');\n\n\t\tif (!base.directory) return (bits.directory || (bits.file ? '' : './')) + end;\n\n\t\tvar baseDir = base.directory.split('/'),\n\t\t\trelDir = bits.directory.split('/'),\n\t\t\tpath = '',\n\t\t\toffset;\n\n\t\tvar i = 0;\n\t\tfor (offset = 0; offset < baseDir.length && offset < relDir.length && baseDir[offset] == relDir[offset]; offset++);\n\t\tfor (i = 0; i < baseDir.length - offset - 1; i++) path += '../';\n\t\tfor (i = offset; i < relDir.length - 1; i++) path += relDir[i] + '/';\n\n\t\treturn (path || (bits.file ? '' : './')) + end;\n\t},\n\n\ttoAbsolute: function(base){\n\t\tbase = new URI(base);\n\t\tif (base) base.set('directory', '').set('file', '');\n\t\treturn this.toRelative(base);\n\t},\n\n\ttoRelative: function(base){\n\t\treturn this.get('value', new URI(base));\n\t}\n\n});\n\n\n/*\n---\n\nname: Hash\n\ndescription: Contains Hash Prototypes. Provides a means for overcoming the JavaScript practical impossibility of extending native Objects.\n\nlicense: MIT-style license.\n\nrequires:\n - Core/Object\n - /MooTools.More\n\nprovides: [Hash]\n\n...\n*/\n\n(function(){\n\nif (this.Hash) return;\n\nvar Hash = this.Hash = new Type('Hash', function(object){\n\tif (typeOf(object) == 'hash') object = Object.clone(object.getClean());\n\tfor (var key in object) this[key] = object[key];\n\treturn this;\n});\n\nthis.$H = function(object){\n\treturn new Hash(object);\n};\n\nHash.implement({\n\n\tforEach: function(fn, bind){\n\t\tObject.forEach(this, fn, bind);\n\t},\n\n\tgetClean: function(){\n\t\tvar clean = {};\n\t\tfor (var key in this){\n\t\t\tif (this.hasOwnProperty(key)) clean[key] = this[key];\n\t\t}\n\t\treturn clean;\n\t},\n\n\tgetLength: function(){\n\t\tvar length = 0;\n\t\tfor (var key in this){\n\t\t\tif (this.hasOwnProperty(key)) length++;\n\t\t}\n\t\treturn length;\n\t}\n\n});\n\nHash.alias('each', 'forEach');\n\nHash.implement({\n\n\thas: Object.prototype.hasOwnProperty,\n\n\tkeyOf: function(value){\n\t\treturn Object.keyOf(this, value);\n\t},\n\n\thasValue: function(value){\n\t\treturn Object.contains(this, value);\n\t},\n\n\textend: function(properties){\n\t\tHash.each(properties || {}, function(value, key){\n\t\t\tHash.set(this, key, value);\n\t\t}, this);\n\t\treturn this;\n\t},\n\n\tcombine: function(properties){\n\t\tHash.each(properties || {}, function(value, key){\n\t\t\tHash.include(this, key, value);\n\t\t}, this);\n\t\treturn this;\n\t},\n\n\terase: function(key){\n\t\tif (this.hasOwnProperty(key)) delete this[key];\n\t\treturn this;\n\t},\n\n\tget: function(key){\n\t\treturn (this.hasOwnProperty(key)) ? this[key] : null;\n\t},\n\n\tset: function(key, value){\n\t\tif (!this[key] || this.hasOwnProperty(key)) this[key] = value;\n\t\treturn this;\n\t},\n\n\tempty: function(){\n\t\tHash.each(this, function(value, key){\n\t\t\tdelete this[key];\n\t\t}, this);\n\t\treturn this;\n\t},\n\n\tinclude: function(key, value){\n\t\tif (this[key] == undefined) this[key] = value;\n\t\treturn this;\n\t},\n\n\tmap: function(fn, bind){\n\t\treturn new Hash(Object.map(this, fn, bind));\n\t},\n\n\tfilter: function(fn, bind){\n\t\treturn new Hash(Object.filter(this, fn, bind));\n\t},\n\n\tevery: function(fn, bind){\n\t\treturn Object.every(this, fn, bind);\n\t},\n\n\tsome: function(fn, bind){\n\t\treturn Object.some(this, fn, bind);\n\t},\n\n\tgetKeys: function(){\n\t\treturn Object.keys(this);\n\t},\n\n\tgetValues: function(){\n\t\treturn Object.values(this);\n\t},\n\n\ttoQueryString: function(base){\n\t\treturn Object.toQueryString(this, base);\n\t}\n\n});\n\nHash.alias({indexOf: 'keyOf', contains: 'hasValue'});\n\n\n})();\n\n\n\n/*\n---\n\nscript: Hash.Extras.js\n\nname: Hash.Extras\n\ndescription: Extends the Hash Type to include getFromPath which allows a path notation to child elements.\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n\nrequires:\n - /Hash\n - /Object.Extras\n\nprovides: [Hash.Extras]\n\n...\n*/\n\nHash.implement({\n\n\tgetFromPath: function(notation){\n\t\treturn Object.getFromPath(this, notation);\n\t},\n\n\tcleanValues: function(method){\n\t\treturn new Hash(Object.cleanValues(this, method));\n\t},\n\n\trun: function(){\n\t\tObject.run(arguments);\n\t}\n\n});\n\n\n/*\n---\n\nscript: Element.Forms.js\n\nname: Element.Forms\n\ndescription: Extends the Element native object to include methods useful in managing inputs.\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n\nrequires:\n - Core/Element\n - /String.Extras\n - /MooTools.More\n\nprovides: [Element.Forms]\n\n...\n*/\n\nElement.implement({\n\n\ttidy: function(){\n\t\tthis.set('value', this.get('value').tidy());\n\t},\n\n\tgetTextInRange: function(start, end){\n\t\treturn this.get('value').substring(start, end);\n\t},\n\n\tgetSelectedText: function(){\n\t\tif (this.setSelectionRange) return this.getTextInRange(this.getSelectionStart(), this.getSelectionEnd());\n\t\treturn document.selection.createRange().text;\n\t},\n\n\tgetSelectedRange: function(){\n\t\tif (this.selectionStart != null){\n\t\t\treturn {\n\t\t\t\tstart: this.selectionStart,\n\t\t\t\tend: this.selectionEnd\n\t\t\t};\n\t\t}\n\n\t\tvar pos = {\n\t\t\tstart: 0,\n\t\t\tend: 0\n\t\t};\n\t\tvar range = this.getDocument().selection.createRange();\n\t\tif (!range || range.parentElement() != this) return pos;\n\t\tvar duplicate = range.duplicate();\n\n\t\tif (this.type == 'text'){\n\t\t\tpos.start = 0 - duplicate.moveStart('character', -100000);\n\t\t\tpos.end = pos.start + range.text.length;\n\t\t} else {\n\t\t\tvar value = this.get('value');\n\t\t\tvar offset = value.length;\n\t\t\tduplicate.moveToElementText(this);\n\t\t\tduplicate.setEndPoint('StartToEnd', range);\n\t\t\tif (duplicate.text.length) offset -= value.match(/[\\n\\r]*$/)[0].length;\n\t\t\tpos.end = offset - duplicate.text.length;\n\t\t\tduplicate.setEndPoint('StartToStart', range);\n\t\t\tpos.start = offset - duplicate.text.length;\n\t\t}\n\t\treturn pos;\n\t},\n\n\tgetSelectionStart: function(){\n\t\treturn this.getSelectedRange().start;\n\t},\n\n\tgetSelectionEnd: function(){\n\t\treturn this.getSelectedRange().end;\n\t},\n\n\tsetCaretPosition: function(pos){\n\t\tif (pos == 'end') pos = this.get('value').length;\n\t\tthis.selectRange(pos, pos);\n\t\treturn this;\n\t},\n\n\tgetCaretPosition: function(){\n\t\treturn this.getSelectedRange().start;\n\t},\n\n\tselectRange: function(start, end){\n\t\tif (this.setSelectionRange){\n\t\t\tthis.focus();\n\t\t\tthis.setSelectionRange(start, end);\n\t\t} else {\n\t\t\tvar value = this.get('value');\n\t\t\tvar diff = value.substr(start, end - start).replace(/\\r/g, '').length;\n\t\t\tstart = value.substr(0, start).replace(/\\r/g, '').length;\n\t\t\tvar range = this.createTextRange();\n\t\t\trange.collapse(true);\n\t\t\trange.moveEnd('character', start + diff);\n\t\t\trange.moveStart('character', start);\n\t\t\trange.select();\n\t\t}\n\t\treturn this;\n\t},\n\n\tinsertAtCursor: function(value, select){\n\t\tvar pos = this.getSelectedRange();\n\t\tvar text = this.get('value');\n\t\tthis.set('value', text.substring(0, pos.start) + value + text.substring(pos.end, text.length));\n\t\tif (select !== false) this.selectRange(pos.start, pos.start + value.length);\n\t\telse this.setCaretPosition(pos.start + value.length);\n\t\treturn this;\n\t},\n\n\tinsertAroundCursor: function(options, select){\n\t\toptions = Object.append({\n\t\t\tbefore: '',\n\t\t\tdefaultMiddle: '',\n\t\t\tafter: ''\n\t\t}, options);\n\n\t\tvar value = this.getSelectedText() || options.defaultMiddle;\n\t\tvar pos = this.getSelectedRange();\n\t\tvar text = this.get('value');\n\n\t\tif (pos.start == pos.end){\n\t\t\tthis.set('value', text.substring(0, pos.start) + options.before + value + options.after + text.substring(pos.end, text.length));\n\t\t\tthis.selectRange(pos.start + options.before.length, pos.end + options.before.length + value.length);\n\t\t} else {\n\t\t\tvar current = text.substring(pos.start, pos.end);\n\t\t\tthis.set('value', text.substring(0, pos.start) + options.before + current + options.after + text.substring(pos.end, text.length));\n\t\t\tvar selStart = pos.start + options.before.length;\n\t\t\tif (select !== false) this.selectRange(selStart, selStart + current.length);\n\t\t\telse this.setCaretPosition(selStart + text.length);\n\t\t}\n\t\treturn this;\n\t}\n\n});\n\n\n/*\n---\n\nscript: Elements.From.js\n\nname: Elements.From\n\ndescription: Returns a collection of elements from a string of html.\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n\nrequires:\n - Core/String\n - Core/Element\n - /MooTools.More\n\nprovides: [Elements.from, Elements.From]\n\n...\n*/\n\nElements.from = function(text, excludeScripts){\n\tif (excludeScripts || excludeScripts == null) text = text.stripScripts();\n\n\tvar container, match = text.match(/^\\s*<(t[dhr]|tbody|tfoot|thead)/i);\n\n\tif (match){\n\t\tcontainer = new Element('table');\n\t\tvar tag = match[1].toLowerCase();\n\t\tif (['td', 'th', 'tr'].contains(tag)){\n\t\t\tcontainer = new Element('tbody').inject(container);\n\t\t\tif (tag != 'tr') container = new Element('tr').inject(container);\n\t\t}\n\t}\n\n\treturn (container || new Element('div')).set('html', text).getChildren();\n};\n\n\n/*\n---\n\nname: Element.Event.Pseudos\n\ndescription: Adds the functionality to add pseudo events for Elements\n\nlicense: MIT-style license\n\nauthors:\n - Arian Stolwijk\n\nrequires: [Core/Element.Event, Core/Element.Delegation, Events.Pseudos]\n\nprovides: [Element.Event.Pseudos, Element.Delegation]\n\n...\n*/\n\n(function(){\n\nvar pseudos = {relay: false},\n\tcopyFromEvents = ['once', 'throttle', 'pause'],\n\tcount = copyFromEvents.length;\n\nwhile (count--) pseudos[copyFromEvents[count]] = Events.lookupPseudo(copyFromEvents[count]);\n\nDOMEvent.definePseudo = function(key, listener){\n\tpseudos[key] = listener;\n\treturn this;\n};\n\nvar proto = Element.prototype;\n[Element, Window, Document].invoke('implement', Events.Pseudos(pseudos, proto.addEvent, proto.removeEvent));\n\n})();\n\n\n/*\n---\n\nname: Element.Event.Pseudos.Keys\n\ndescription: Adds functionality fire events if certain keycombinations are pressed\n\nlicense: MIT-style license\n\nauthors:\n - Arian Stolwijk\n\nrequires: [Element.Event.Pseudos]\n\nprovides: [Element.Event.Pseudos.Keys]\n\n...\n*/\n\n(function(){\n\nvar keysStoreKey = '$moo:keys-pressed',\n\tkeysKeyupStoreKey = '$moo:keys-keyup';\n\n\nDOMEvent.definePseudo('keys', function(split, fn, args){\n\n\tvar event = args[0],\n\t\tkeys = [],\n\t\tpressed = this.retrieve(keysStoreKey, []);\n\n\tkeys.append(split.value.replace('++', function(){\n\t\tkeys.push('+'); // shift++ and shift+++a\n\t\treturn '';\n\t}).split('+'));\n\n\tpressed.include(event.key);\n\n\tif (keys.every(function(key){\n\t\treturn pressed.contains(key);\n\t})) fn.apply(this, args);\n\n\tthis.store(keysStoreKey, pressed);\n\n\tif (!this.retrieve(keysKeyupStoreKey)){\n\t\tvar keyup = function(event){\n\t\t\t(function(){\n\t\t\t\tpressed = this.retrieve(keysStoreKey, []).erase(event.key);\n\t\t\t\tthis.store(keysStoreKey, pressed);\n\t\t\t}).delay(0, this); // Fix for IE\n\t\t};\n\t\tthis.store(keysKeyupStoreKey, keyup).addEvent('keyup', keyup);\n\t}\n\n});\n\nDOMEvent.defineKeys({\n\t'16': 'shift',\n\t'17': 'control',\n\t'18': 'alt',\n\t'20': 'capslock',\n\t'33': 'pageup',\n\t'34': 'pagedown',\n\t'35': 'end',\n\t'36': 'home',\n\t'144': 'numlock',\n\t'145': 'scrolllock',\n\t'186': ';',\n\t'187': '=',\n\t'188': ',',\n\t'190': '.',\n\t'191': '/',\n\t'192': '`',\n\t'219': '[',\n\t'220': '\\\\',\n\t'221': ']',\n\t'222': \"'\",\n\t'107': '+'\n}).defineKey(Browser.firefox ? 109 : 189, '-');\n\n})();\n\n\n/*\n---\n\nscript: Element.Measure.js\n\nname: Element.Measure\n\ndescription: Extends the Element native object to include methods useful in measuring dimensions.\n\ncredits: \"Element.measure / .expose methods by Daniel Steigerwald License: MIT-style license. Copyright: Copyright (c) 2008 Daniel Steigerwald, daniel.steigerwald.cz\"\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n\nrequires:\n - Core/Element.Style\n - Core/Element.Dimensions\n - /MooTools.More\n\nprovides: [Element.Measure]\n\n...\n*/\n\n(function(){\n\nvar getStylesList = function(styles, planes){\n\tvar list = [];\n\tObject.each(planes, function(directions){\n\t\tObject.each(directions, function(edge){\n\t\t\tstyles.each(function(style){\n\t\t\t\tlist.push(style + '-' + edge + (style == 'border' ? '-width' : ''));\n\t\t\t});\n\t\t});\n\t});\n\treturn list;\n};\n\nvar calculateEdgeSize = function(edge, styles){\n\tvar total = 0;\n\tObject.each(styles, function(value, style){\n\t\tif (style.test(edge)) total = total + value.toInt();\n\t});\n\treturn total;\n};\n\nvar isVisible = function(el){\n\treturn !!(!el || el.offsetHeight || el.offsetWidth);\n};\n\n\nElement.implement({\n\n\tmeasure: function(fn){\n\t\tif (isVisible(this)) return fn.call(this);\n\t\tvar parent = this.getParent(),\n\t\t\ttoMeasure = [];\n\t\twhile (!isVisible(parent) && parent != document.body){\n\t\t\ttoMeasure.push(parent.expose());\n\t\t\tparent = parent.getParent();\n\t\t}\n\t\tvar restore = this.expose(),\n\t\t\tresult = fn.call(this);\n\t\trestore();\n\t\ttoMeasure.each(function(restore){\n\t\t\trestore();\n\t\t});\n\t\treturn result;\n\t},\n\n\texpose: function(){\n\t\tif (this.getStyle('display') != 'none') return function(){};\n\t\tvar before = this.style.cssText;\n\t\tthis.setStyles({\n\t\t\tdisplay: 'block',\n\t\t\tposition: 'absolute',\n\t\t\tvisibility: 'hidden'\n\t\t});\n\t\treturn function(){\n\t\t\tthis.style.cssText = before;\n\t\t}.bind(this);\n\t},\n\n\tgetDimensions: function(options){\n\t\toptions = Object.merge({computeSize: false}, options);\n\t\tvar dim = {x: 0, y: 0};\n\n\t\tvar getSize = function(el, options){\n\t\t\treturn (options.computeSize) ? el.getComputedSize(options) : el.getSize();\n\t\t};\n\n\t\tvar parent = this.getParent('body');\n\n\t\tif (parent && this.getStyle('display') == 'none'){\n\t\t\tdim = this.measure(function(){\n\t\t\t\treturn getSize(this, options);\n\t\t\t});\n\t\t} else if (parent){\n\t\t\ttry { //safari sometimes crashes here, so catch it\n\t\t\t\tdim = getSize(this, options);\n\t\t\t}catch(e){}\n\t\t}\n\n\t\treturn Object.append(dim, (dim.x || dim.x === 0) ? {\n\t\t\t\twidth: dim.x,\n\t\t\t\theight: dim.y\n\t\t\t} : {\n\t\t\t\tx: dim.width,\n\t\t\t\ty: dim.height\n\t\t\t}\n\t\t);\n\t},\n\n\tgetComputedSize: function(options){\n\t\t\n\n\t\toptions = Object.merge({\n\t\t\tstyles: ['padding','border'],\n\t\t\tplanes: {\n\t\t\t\theight: ['top','bottom'],\n\t\t\t\twidth: ['left','right']\n\t\t\t},\n\t\t\tmode: 'both'\n\t\t}, options);\n\n\t\tvar styles = {},\n\t\t\tsize = {width: 0, height: 0},\n\t\t\tdimensions;\n\n\t\tif (options.mode == 'vertical'){\n\t\t\tdelete size.width;\n\t\t\tdelete options.planes.width;\n\t\t} else if (options.mode == 'horizontal'){\n\t\t\tdelete size.height;\n\t\t\tdelete options.planes.height;\n\t\t}\n\n\t\tgetStylesList(options.styles, options.planes).each(function(style){\n\t\t\tstyles[style] = this.getStyle(style).toInt();\n\t\t}, this);\n\n\t\tObject.each(options.planes, function(edges, plane){\n\n\t\t\tvar capitalized = plane.capitalize(),\n\t\t\t\tstyle = this.getStyle(plane);\n\n\t\t\tif (style == 'auto' && !dimensions) dimensions = this.getDimensions();\n\n\t\t\tstyle = styles[plane] = (style == 'auto') ? dimensions[plane] : style.toInt();\n\t\t\tsize['total' + capitalized] = style;\n\n\t\t\tedges.each(function(edge){\n\t\t\t\tvar edgesize = calculateEdgeSize(edge, styles);\n\t\t\t\tsize['computed' + edge.capitalize()] = edgesize;\n\t\t\t\tsize['total' + capitalized] += edgesize;\n\t\t\t});\n\n\t\t}, this);\n\n\t\treturn Object.append(size, styles);\n\t}\n\n});\n\n})();\n\n\n/*\n---\n\nscript: Element.Pin.js\n\nname: Element.Pin\n\ndescription: Extends the Element native object to include the pin method useful for fixed positioning for elements.\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n\nrequires:\n - Core/Element.Event\n - Core/Element.Dimensions\n - Core/Element.Style\n - /MooTools.More\n\nprovides: [Element.Pin]\n\n...\n*/\n\n(function(){\n\tvar supportsPositionFixed = false,\n\t\tsupportTested = false;\n\n\tvar testPositionFixed = function(){\n\t\tvar test = new Element('div').setStyles({\n\t\t\tposition: 'fixed',\n\t\t\ttop: 0,\n\t\t\tright: 0\n\t\t}).inject(document.body);\n\t\tsupportsPositionFixed = (test.offsetTop === 0);\n\t\ttest.dispose();\n\t\tsupportTested = true;\n\t};\n\n\tElement.implement({\n\n\t\tpin: function(enable, forceScroll){\n\t\t\tif (!supportTested) testPositionFixed();\n\t\t\tif (this.getStyle('display') == 'none') return this;\n\n\t\t\tvar pinnedPosition,\n\t\t\t\tscroll = window.getScroll(),\n\t\t\t\tparent,\n\t\t\t\tscrollFixer;\n\n\t\t\tif (enable !== false){\n\t\t\t\tpinnedPosition = this.getPosition(supportsPositionFixed ? document.body : this.getOffsetParent());\n\t\t\t\tif (!this.retrieve('pin:_pinned')){\n\t\t\t\t\tvar currentPosition = {\n\t\t\t\t\t\ttop: pinnedPosition.y - scroll.y,\n\t\t\t\t\t\tleft: pinnedPosition.x - scroll.x\n\t\t\t\t\t};\n\n\t\t\t\t\tif (supportsPositionFixed && !forceScroll){\n\t\t\t\t\t\tthis.setStyle('position', 'fixed').setStyles(currentPosition);\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tparent = this.getOffsetParent();\n\t\t\t\t\t\tvar position = this.getPosition(parent),\n\t\t\t\t\t\t\tstyles = this.getStyles('left', 'top');\n\n\t\t\t\t\t\tif (parent && styles.left == 'auto' || styles.top == 'auto') this.setPosition(position);\n\t\t\t\t\t\tif (this.getStyle('position') == 'static') this.setStyle('position', 'absolute');\n\n\t\t\t\t\t\tposition = {\n\t\t\t\t\t\t\tx: styles.left.toInt() - scroll.x,\n\t\t\t\t\t\t\ty: styles.top.toInt() - scroll.y\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tscrollFixer = function(){\n\t\t\t\t\t\t\tif (!this.retrieve('pin:_pinned')) return;\n\t\t\t\t\t\t\tvar scroll = window.getScroll();\n\t\t\t\t\t\t\tthis.setStyles({\n\t\t\t\t\t\t\t\tleft: position.x + scroll.x,\n\t\t\t\t\t\t\t\ttop: position.y + scroll.y\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}.bind(this);\n\n\t\t\t\t\t\tthis.store('pin:_scrollFixer', scrollFixer);\n\t\t\t\t\t\twindow.addEvent('scroll', scrollFixer);\n\t\t\t\t\t}\n\t\t\t\t\tthis.store('pin:_pinned', true);\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tif (!this.retrieve('pin:_pinned')) return this;\n\n\t\t\t\tparent = this.getParent();\n\t\t\t\tvar offsetParent = (parent.getComputedStyle('position') != 'static' ? parent : parent.getOffsetParent());\n\n\t\t\t\tpinnedPosition = this.getPosition(offsetParent);\n\n\t\t\t\tthis.store('pin:_pinned', false);\n\t\t\t\tscrollFixer = this.retrieve('pin:_scrollFixer');\n\t\t\t\tif (!scrollFixer){\n\t\t\t\t\tthis.setStyles({\n\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\ttop: pinnedPosition.y + scroll.y,\n\t\t\t\t\t\tleft: pinnedPosition.x + scroll.x\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tthis.store('pin:_scrollFixer', null);\n\t\t\t\t\twindow.removeEvent('scroll', scrollFixer);\n\t\t\t\t}\n\t\t\t\tthis.removeClass('isPinned');\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\tunpin: function(){\n\t\t\treturn this.pin(false);\n\t\t},\n\n\t\ttogglePin: function(){\n\t\t\treturn this.pin(!this.retrieve('pin:_pinned'));\n\t\t}\n\n\t});\n\n\n\n})();\n\n\n/*\n---\n\nscript: Element.Position.js\n\nname: Element.Position\n\ndescription: Extends the Element native object to include methods useful positioning elements relative to others.\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n - Jacob Thornton\n\nrequires:\n - Core/Options\n - Core/Element.Dimensions\n - Element.Measure\n\nprovides: [Element.Position]\n\n...\n*/\n\n(function(original){\n\nvar local = Element.Position = {\n\n\toptions: {/*\n\t\tedge: false,\n\t\treturnPos: false,\n\t\tminimum: {x: 0, y: 0},\n\t\tmaximum: {x: 0, y: 0},\n\t\trelFixedPosition: false,\n\t\tignoreMargins: false,\n\t\tignoreScroll: false,\n\t\tallowNegative: false,*/\n\t\trelativeTo: document.body,\n\t\tposition: {\n\t\t\tx: 'center', //left, center, right\n\t\t\ty: 'center' //top, center, bottom\n\t\t},\n\t\toffset: {x: 0, y: 0}\n\t},\n\n\tgetOptions: function(element, options){\n\t\toptions = Object.merge({}, local.options, options);\n\t\tlocal.setPositionOption(options);\n\t\tlocal.setEdgeOption(options);\n\t\tlocal.setOffsetOption(element, options);\n\t\tlocal.setDimensionsOption(element, options);\n\t\treturn options;\n\t},\n\n\tsetPositionOption: function(options){\n\t\toptions.position = local.getCoordinateFromValue(options.position);\n\t},\n\n\tsetEdgeOption: function(options){\n\t\tvar edgeOption = local.getCoordinateFromValue(options.edge);\n\t\toptions.edge = edgeOption ? edgeOption :\n\t\t\t(options.position.x == 'center' && options.position.y == 'center') ? {x: 'center', y: 'center'} :\n\t\t\t{x: 'left', y: 'top'};\n\t},\n\n\tsetOffsetOption: function(element, options){\n\t\tvar parentOffset = {x: 0, y: 0},\n\t\t\toffsetParent = element.measure(function(){\n\t\t\t\treturn document.id(this.getOffsetParent());\n\t\t\t}),\n\t\t\tparentScroll = offsetParent.getScroll();\n\n\t\tif (!offsetParent || offsetParent == element.getDocument().body) return;\n\t\tparentOffset = offsetParent.measure(function(){\n\t\t\tvar position = this.getPosition();\n\t\t\tif (this.getStyle('position') == 'fixed'){\n\t\t\t\tvar scroll = window.getScroll();\n\t\t\t\tposition.x += scroll.x;\n\t\t\t\tposition.y += scroll.y;\n\t\t\t}\n\t\t\treturn position;\n\t\t});\n\n\t\toptions.offset = {\n\t\t\tparentPositioned: offsetParent != document.id(options.relativeTo),\n\t\t\tx: options.offset.x - parentOffset.x + parentScroll.x,\n\t\t\ty: options.offset.y - parentOffset.y + parentScroll.y\n\t\t};\n\t},\n\n\tsetDimensionsOption: function(element, options){\n\t\toptions.dimensions = element.getDimensions({\n\t\t\tcomputeSize: true,\n\t\t\tstyles: ['padding', 'border', 'margin']\n\t\t});\n\t},\n\n\tgetPosition: function(element, options){\n\t\tvar position = {};\n\t\toptions = local.getOptions(element, options);\n\t\tvar relativeTo = document.id(options.relativeTo) || document.body;\n\n\t\tlocal.setPositionCoordinates(options, position, relativeTo);\n\t\tif (options.edge) local.toEdge(position, options);\n\n\t\tvar offset = options.offset;\n\t\tposition.left = ((position.x >= 0 || offset.parentPositioned || options.allowNegative) ? position.x : 0).toInt();\n\t\tposition.top = ((position.y >= 0 || offset.parentPositioned || options.allowNegative) ? position.y : 0).toInt();\n\n\t\tlocal.toMinMax(position, options);\n\n\t\tif (options.relFixedPosition || relativeTo.getStyle('position') == 'fixed') local.toRelFixedPosition(relativeTo, position);\n\t\tif (options.ignoreScroll) local.toIgnoreScroll(relativeTo, position);\n\t\tif (options.ignoreMargins) local.toIgnoreMargins(position, options);\n\n\t\tposition.left = Math.ceil(position.left);\n\t\tposition.top = Math.ceil(position.top);\n\t\tdelete position.x;\n\t\tdelete position.y;\n\n\t\treturn position;\n\t},\n\n\tsetPositionCoordinates: function(options, position, relativeTo){\n\t\tvar offsetY = options.offset.y,\n\t\t\toffsetX = options.offset.x,\n\t\t\tcalc = (relativeTo == document.body) ? window.getScroll() : relativeTo.getPosition(),\n\t\t\ttop = calc.y,\n\t\t\tleft = calc.x,\n\t\t\twinSize = window.getSize();\n\n\t\tswitch(options.position.x){\n\t\t\tcase 'left': position.x = left + offsetX; break;\n\t\t\tcase 'right': position.x = left + offsetX + relativeTo.offsetWidth; break;\n\t\t\tdefault: position.x = left + ((relativeTo == document.body ? winSize.x : relativeTo.offsetWidth) / 2) + offsetX; break;\n\t\t}\n\n\t\tswitch(options.position.y){\n\t\t\tcase 'top': position.y = top + offsetY; break;\n\t\t\tcase 'bottom': position.y = top + offsetY + relativeTo.offsetHeight; break;\n\t\t\tdefault: position.y = top + ((relativeTo == document.body ? winSize.y : relativeTo.offsetHeight) / 2) + offsetY; break;\n\t\t}\n\t},\n\n\ttoMinMax: function(position, options){\n\t\tvar xy = {left: 'x', top: 'y'}, value;\n\t\t['minimum', 'maximum'].each(function(minmax){\n\t\t\t['left', 'top'].each(function(lr){\n\t\t\t\tvalue = options[minmax] ? options[minmax][xy[lr]] : null;\n\t\t\t\tif (value != null && ((minmax == 'minimum') ? position[lr] < value : position[lr] > value)) position[lr] = value;\n\t\t\t});\n\t\t});\n\t},\n\n\ttoRelFixedPosition: function(relativeTo, position){\n\t\tvar winScroll = window.getScroll();\n\t\tposition.top += winScroll.y;\n\t\tposition.left += winScroll.x;\n\t},\n\n\ttoIgnoreScroll: function(relativeTo, position){\n\t\tvar relScroll = relativeTo.getScroll();\n\t\tposition.top -= relScroll.y;\n\t\tposition.left -= relScroll.x;\n\t},\n\n\ttoIgnoreMargins: function(position, options){\n\t\tposition.left += options.edge.x == 'right'\n\t\t\t? options.dimensions['margin-right']\n\t\t\t: (options.edge.x != 'center'\n\t\t\t\t? -options.dimensions['margin-left']\n\t\t\t\t: -options.dimensions['margin-left'] + ((options.dimensions['margin-right'] + options.dimensions['margin-left']) / 2));\n\n\t\tposition.top += options.edge.y == 'bottom'\n\t\t\t? options.dimensions['margin-bottom']\n\t\t\t: (options.edge.y != 'center'\n\t\t\t\t? -options.dimensions['margin-top']\n\t\t\t\t: -options.dimensions['margin-top'] + ((options.dimensions['margin-bottom'] + options.dimensions['margin-top']) / 2));\n\t},\n\n\ttoEdge: function(position, options){\n\t\tvar edgeOffset = {},\n\t\t\tdimensions = options.dimensions,\n\t\t\tedge = options.edge;\n\n\t\tswitch(edge.x){\n\t\t\tcase 'left': edgeOffset.x = 0; break;\n\t\t\tcase 'right': edgeOffset.x = -dimensions.x - dimensions.computedRight - dimensions.computedLeft; break;\n\t\t\t// center\n\t\t\tdefault: edgeOffset.x = -(Math.round(dimensions.totalWidth / 2)); break;\n\t\t}\n\n\t\tswitch(edge.y){\n\t\t\tcase 'top': edgeOffset.y = 0; break;\n\t\t\tcase 'bottom': edgeOffset.y = -dimensions.y - dimensions.computedTop - dimensions.computedBottom; break;\n\t\t\t// center\n\t\t\tdefault: edgeOffset.y = -(Math.round(dimensions.totalHeight / 2)); break;\n\t\t}\n\n\t\tposition.x += edgeOffset.x;\n\t\tposition.y += edgeOffset.y;\n\t},\n\n\tgetCoordinateFromValue: function(option){\n\t\tif (typeOf(option) != 'string') return option;\n\t\toption = option.toLowerCase();\n\n\t\treturn {\n\t\t\tx: option.test('left') ? 'left'\n\t\t\t\t: (option.test('right') ? 'right' : 'center'),\n\t\t\ty: option.test(/upper|top/) ? 'top'\n\t\t\t\t: (option.test('bottom') ? 'bottom' : 'center')\n\t\t};\n\t}\n\n};\n\nElement.implement({\n\n\tposition: function(options){\n\t\tif (options && (options.x != null || options.y != null)){\n\t\t\treturn (original ? original.apply(this, arguments) : this);\n\t\t}\n\t\tvar position = this.setStyle('position', 'absolute').calculatePosition(options);\n\t\treturn (options && options.returnPos) ? position : this.setStyles(position);\n\t},\n\n\tcalculatePosition: function(options){\n\t\treturn local.getPosition(this, options);\n\t}\n\n});\n\n})(Element.prototype.position);\n\n\n/*\n---\n\nscript: Element.Shortcuts.js\n\nname: Element.Shortcuts\n\ndescription: Extends the Element native object to include some shortcut methods.\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n\nrequires:\n - Core/Element.Style\n - /MooTools.More\n\nprovides: [Element.Shortcuts]\n\n...\n*/\n\nElement.implement({\n\n\tisDisplayed: function(){\n\t\treturn this.getStyle('display') != 'none';\n\t},\n\n\tisVisible: function(){\n\t\tvar w = this.offsetWidth,\n\t\t\th = this.offsetHeight;\n\t\treturn (w == 0 && h == 0) ? false : (w > 0 && h > 0) ? true : this.style.display != 'none';\n\t},\n\n\ttoggle: function(){\n\t\treturn this[this.isDisplayed() ? 'hide' : 'show']();\n\t},\n\n\thide: function(){\n\t\tvar d;\n\t\ttry {\n\t\t\t//IE fails here if the element is not in the dom\n\t\t\td = this.getStyle('display');\n\t\t} catch(e){}\n\t\tif (d == 'none') return this;\n\t\treturn this.store('element:_originalDisplay', d || '').setStyle('display', 'none');\n\t},\n\n\tshow: function(display){\n\t\tif (!display && this.isDisplayed()) return this;\n\t\tdisplay = display || this.retrieve('element:_originalDisplay') || 'block';\n\t\treturn this.setStyle('display', (display == 'none') ? 'block' : display);\n\t},\n\n\tswapClass: function(remove, add){\n\t\treturn this.removeClass(remove).addClass(add);\n\t}\n\n});\n\nDocument.implement({\n\n\tclearSelection: function(){\n\t\tif (window.getSelection){\n\t\t\tvar selection = window.getSelection();\n\t\t\tif (selection && selection.removeAllRanges) selection.removeAllRanges();\n\t\t} else if (document.selection && document.selection.empty){\n\t\t\ttry {\n\t\t\t\t//IE fails here if selected element is not in dom\n\t\t\t\tdocument.selection.empty();\n\t\t\t} catch(e){}\n\t\t}\n\t}\n\n});\n\n\n/*\n---\n\nscript: IframeShim.js\n\nname: IframeShim\n\ndescription: Defines IframeShim, a class for obscuring select lists and flash objects in IE.\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n\nrequires:\n - Core/Element.Event\n - Core/Element.Style\n - Core/Options\n - Core/Events\n - /Element.Position\n - /Class.Occlude\n\nprovides: [IframeShim]\n\n...\n*/\n\nvar IframeShim = new Class({\n\n\tImplements: [Options, Events, Class.Occlude],\n\n\toptions: {\n\t\tclassName: 'iframeShim',\n\t\tsrc: 'javascript:false;document.write(\"\");',\n\t\tdisplay: false,\n\t\tzIndex: null,\n\t\tmargin: 0,\n\t\toffset: {x: 0, y: 0},\n\t\tbrowsers: (Browser.ie6 || (Browser.firefox && Browser.version < 3 && Browser.Platform.mac))\n\t},\n\n\tproperty: 'IframeShim',\n\n\tinitialize: function(element, options){\n\t\tthis.element = document.id(element);\n\t\tif (this.occlude()) return this.occluded;\n\t\tthis.setOptions(options);\n\t\tthis.makeShim();\n\t\treturn this;\n\t},\n\n\tmakeShim: function(){\n\t\tif (this.options.browsers){\n\t\t\tvar zIndex = this.element.getStyle('zIndex').toInt();\n\n\t\t\tif (!zIndex){\n\t\t\t\tzIndex = 1;\n\t\t\t\tvar pos = this.element.getStyle('position');\n\t\t\t\tif (pos == 'static' || !pos) this.element.setStyle('position', 'relative');\n\t\t\t\tthis.element.setStyle('zIndex', zIndex);\n\t\t\t}\n\t\t\tzIndex = ((this.options.zIndex != null || this.options.zIndex === 0) && zIndex > this.options.zIndex) ? this.options.zIndex : zIndex - 1;\n\t\t\tif (zIndex < 0) zIndex = 1;\n\t\t\tthis.shim = new Element('iframe', {\n\t\t\t\tsrc: this.options.src,\n\t\t\t\tscrolling: 'no',\n\t\t\t\tframeborder: 0,\n\t\t\t\tstyles: {\n\t\t\t\t\tzIndex: zIndex,\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\tborder: 'none',\n\t\t\t\t\tfilter: 'progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)'\n\t\t\t\t},\n\t\t\t\t'class': this.options.className\n\t\t\t}).store('IframeShim', this);\n\t\t\tvar inject = (function(){\n\t\t\t\tthis.shim.inject(this.element, 'after');\n\t\t\t\tthis[this.options.display ? 'show' : 'hide']();\n\t\t\t\tthis.fireEvent('inject');\n\t\t\t}).bind(this);\n\t\t\tif (!IframeShim.ready) window.addEvent('load', inject);\n\t\t\telse inject();\n\t\t} else {\n\t\t\tthis.position = this.hide = this.show = this.dispose = Function.from(this);\n\t\t}\n\t},\n\n\tposition: function(){\n\t\tif (!IframeShim.ready || !this.shim) return this;\n\t\tvar size = this.element.measure(function(){\n\t\t\treturn this.getSize();\n\t\t});\n\t\tif (this.options.margin != undefined){\n\t\t\tsize.x = size.x - (this.options.margin * 2);\n\t\t\tsize.y = size.y - (this.options.margin * 2);\n\t\t\tthis.options.offset.x += this.options.margin;\n\t\t\tthis.options.offset.y += this.options.margin;\n\t\t}\n\t\tthis.shim.set({width: size.x, height: size.y}).position({\n\t\t\trelativeTo: this.element,\n\t\t\toffset: this.options.offset\n\t\t});\n\t\treturn this;\n\t},\n\n\thide: function(){\n\t\tif (this.shim) this.shim.setStyle('display', 'none');\n\t\treturn this;\n\t},\n\n\tshow: function(){\n\t\tif (this.shim) this.shim.setStyle('display', 'block');\n\t\treturn this.position();\n\t},\n\n\tdispose: function(){\n\t\tif (this.shim) this.shim.dispose();\n\t\treturn this;\n\t},\n\n\tdestroy: function(){\n\t\tif (this.shim) this.shim.destroy();\n\t\treturn this;\n\t}\n\n});\n\nwindow.addEvent('load', function(){\n\tIframeShim.ready = true;\n});\n\n\n/*\n---\n\nscript: Mask.js\n\nname: Mask\n\ndescription: Creates a mask element to cover another.\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n\nrequires:\n - Core/Options\n - Core/Events\n - Core/Element.Event\n - /Class.Binds\n - /Element.Position\n - /IframeShim\n\nprovides: [Mask]\n\n...\n*/\n\nvar Mask = new Class({\n\n\tImplements: [Options, Events],\n\n\tBinds: ['position'],\n\n\toptions: {/*\n\t\tonShow: function(){},\n\t\tonHide: function(){},\n\t\tonDestroy: function(){},\n\t\tonClick: function(event){},\n\t\tinject: {\n\t\t\twhere: 'after',\n\t\t\ttarget: null,\n\t\t},\n\t\thideOnClick: false,\n\t\tid: null,\n\t\tdestroyOnHide: false,*/\n\t\tstyle: {},\n\t\t'class': 'mask',\n\t\tmaskMargins: false,\n\t\tuseIframeShim: true,\n\t\tiframeShimOptions: {}\n\t},\n\n\tinitialize: function(target, options){\n\t\tthis.target = document.id(target) || document.id(document.body);\n\t\tthis.target.store('mask', this);\n\t\tthis.setOptions(options);\n\t\tthis.render();\n\t\tthis.inject();\n\t},\n\n\trender: function(){\n\t\tthis.element = new Element('div', {\n\t\t\t'class': this.options['class'],\n\t\t\tid: this.options.id || 'mask-' + String.uniqueID(),\n\t\t\tstyles: Object.merge({}, this.options.style, {\n\t\t\t\tdisplay: 'none'\n\t\t\t}),\n\t\t\tevents: {\n\t\t\t\tclick: function(event){\n\t\t\t\t\tthis.fireEvent('click', event);\n\t\t\t\t\tif (this.options.hideOnClick) this.hide();\n\t\t\t\t}.bind(this)\n\t\t\t}\n\t\t});\n\n\t\tthis.hidden = true;\n\t},\n\n\ttoElement: function(){\n\t\treturn this.element;\n\t},\n\n\tinject: function(target, where){\n\t\twhere = where || (this.options.inject ? this.options.inject.where : '') || this.target == document.body ? 'inside' : 'after';\n\t\ttarget = target || (this.options.inject && this.options.inject.target) || this.target;\n\n\t\tthis.element.inject(target, where);\n\n\t\tif (this.options.useIframeShim){\n\t\t\tthis.shim = new IframeShim(this.element, this.options.iframeShimOptions);\n\n\t\t\tthis.addEvents({\n\t\t\t\tshow: this.shim.show.bind(this.shim),\n\t\t\t\thide: this.shim.hide.bind(this.shim),\n\t\t\t\tdestroy: this.shim.destroy.bind(this.shim)\n\t\t\t});\n\t\t}\n\t},\n\n\tposition: function(){\n\t\tthis.resize(this.options.width, this.options.height);\n\n\t\tthis.element.position({\n\t\t\trelativeTo: this.target,\n\t\t\tposition: 'topLeft',\n\t\t\tignoreMargins: !this.options.maskMargins,\n\t\t\tignoreScroll: this.target == document.body\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tresize: function(x, y){\n\t\tvar opt = {\n\t\t\tstyles: ['padding', 'border']\n\t\t};\n\t\tif (this.options.maskMargins) opt.styles.push('margin');\n\n\t\tvar dim = this.target.getComputedSize(opt);\n\t\tif (this.target == document.body){\n\t\t\tthis.element.setStyles({width: 0, height: 0});\n\t\t\tvar win = window.getScrollSize();\n\t\t\tif (dim.totalHeight < win.y) dim.totalHeight = win.y;\n\t\t\tif (dim.totalWidth < win.x) dim.totalWidth = win.x;\n\t\t}\n\t\tthis.element.setStyles({\n\t\t\twidth: Array.pick([x, dim.totalWidth, dim.x]),\n\t\t\theight: Array.pick([y, dim.totalHeight, dim.y])\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tshow: function(){\n\t\tif (!this.hidden) return this;\n\n\t\twindow.addEvent('resize', this.position);\n\t\tthis.position();\n\t\tthis.showMask.apply(this, arguments);\n\n\t\treturn this;\n\t},\n\n\tshowMask: function(){\n\t\tthis.element.setStyle('display', 'block');\n\t\tthis.hidden = false;\n\t\tthis.fireEvent('show');\n\t},\n\n\thide: function(){\n\t\tif (this.hidden) return this;\n\n\t\twindow.removeEvent('resize', this.position);\n\t\tthis.hideMask.apply(this, arguments);\n\t\tif (this.options.destroyOnHide) return this.destroy();\n\n\t\treturn this;\n\t},\n\n\thideMask: function(){\n\t\tthis.element.setStyle('display', 'none');\n\t\tthis.hidden = true;\n\t\tthis.fireEvent('hide');\n\t},\n\n\ttoggle: function(){\n\t\tthis[this.hidden ? 'show' : 'hide']();\n\t},\n\n\tdestroy: function(){\n\t\tthis.hide();\n\t\tthis.element.destroy();\n\t\tthis.fireEvent('destroy');\n\t\tthis.target.eliminate('mask');\n\t}\n\n});\n\nElement.Properties.mask = {\n\n\tset: function(options){\n\t\tvar mask = this.retrieve('mask');\n\t\tif (mask) mask.destroy();\n\t\treturn this.eliminate('mask').store('mask:options', options);\n\t},\n\n\tget: function(){\n\t\tvar mask = this.retrieve('mask');\n\t\tif (!mask){\n\t\t\tmask = new Mask(this, this.retrieve('mask:options'));\n\t\t\tthis.store('mask', mask);\n\t\t}\n\t\treturn mask;\n\t}\n\n};\n\nElement.implement({\n\n\tmask: function(options){\n\t\tif (options) this.set('mask', options);\n\t\tthis.get('mask').show();\n\t\treturn this;\n\t},\n\n\tunmask: function(){\n\t\tthis.get('mask').hide();\n\t\treturn this;\n\t}\n\n});\n\n\n/*\n---\n\nscript: Spinner.js\n\nname: Spinner\n\ndescription: Adds a semi-transparent overlay over a dom element with a spinnin ajax icon.\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n\nrequires:\n - Core/Fx.Tween\n - Core/Request\n - /Class.refactor\n - /Mask\n\nprovides: [Spinner]\n\n...\n*/\n\nvar Spinner = new Class({\n\n\tExtends: Mask,\n\n\tImplements: Chain,\n\n\toptions: {/*\n\t\tmessage: false,*/\n\t\t'class': 'spinner',\n\t\tcontainerPosition: {},\n\t\tcontent: {\n\t\t\t'class': 'spinner-content'\n\t\t},\n\t\tmessageContainer: {\n\t\t\t'class': 'spinner-msg'\n\t\t},\n\t\timg: {\n\t\t\t'class': 'spinner-img'\n\t\t},\n\t\tfxOptions: {\n\t\t\tlink: 'chain'\n\t\t}\n\t},\n\n\tinitialize: function(target, options){\n\t\tthis.target = document.id(target) || document.id(document.body);\n\t\tthis.target.store('spinner', this);\n\t\tthis.setOptions(options);\n\t\tthis.render();\n\t\tthis.inject();\n\n\t\t// Add this to events for when noFx is true; parent methods handle hide/show.\n\t\tvar deactivate = function(){ this.active = false; }.bind(this);\n\t\tthis.addEvents({\n\t\t\thide: deactivate,\n\t\t\tshow: deactivate\n\t\t});\n\t},\n\n\trender: function(){\n\t\tthis.parent();\n\n\t\tthis.element.set('id', this.options.id || 'spinner-' + String.uniqueID());\n\n\t\tthis.content = document.id(this.options.content) || new Element('div', this.options.content);\n\t\tthis.content.inject(this.element);\n\n\t\tif (this.options.message){\n\t\t\tthis.msg = document.id(this.options.message) || new Element('p', this.options.messageContainer).appendText(this.options.message);\n\t\t\tthis.msg.inject(this.content);\n\t\t}\n\n\t\tif (this.options.img){\n\t\t\tthis.img = document.id(this.options.img) || new Element('div', this.options.img);\n\t\t\tthis.img.inject(this.content);\n\t\t}\n\n\t\tthis.element.set('tween', this.options.fxOptions);\n\t},\n\n\tshow: function(noFx){\n\t\tif (this.active) return this.chain(this.show.bind(this));\n\t\tif (!this.hidden){\n\t\t\tthis.callChain.delay(20, this);\n\t\t\treturn this;\n\t\t}\n\n\t\tthis.active = true;\n\n\t\treturn this.parent(noFx);\n\t},\n\n\tshowMask: function(noFx){\n\t\tvar pos = function(){\n\t\t\tthis.content.position(Object.merge({\n\t\t\t\trelativeTo: this.element\n\t\t\t}, this.options.containerPosition));\n\t\t}.bind(this);\n\n\t\tif (noFx){\n\t\t\tthis.parent();\n\t\t\tpos();\n\t\t} else {\n\t\t\tif (!this.options.style.opacity) this.options.style.opacity = this.element.getStyle('opacity').toFloat();\n\t\t\tthis.element.setStyles({\n\t\t\t\tdisplay: 'block',\n\t\t\t\topacity: 0\n\t\t\t}).tween('opacity', this.options.style.opacity);\n\t\t\tpos();\n\t\t\tthis.hidden = false;\n\t\t\tthis.fireEvent('show');\n\t\t\tthis.callChain();\n\t\t}\n\t},\n\n\thide: function(noFx){\n\t\tif (this.active) return this.chain(this.hide.bind(this));\n\t\tif (this.hidden){\n\t\t\tthis.callChain.delay(20, this);\n\t\t\treturn this;\n\t\t}\n\t\tthis.active = true;\n\t\treturn this.parent(noFx);\n\t},\n\n\thideMask: function(noFx){\n\t\tif (noFx) return this.parent();\n\t\tthis.element.tween('opacity', 0).get('tween').chain(function(){\n\t\t\tthis.element.setStyle('display', 'none');\n\t\t\tthis.hidden = true;\n\t\t\tthis.fireEvent('hide');\n\t\t\tthis.callChain();\n\t\t}.bind(this));\n\t},\n\n\tdestroy: function(){\n\t\tthis.content.destroy();\n\t\tthis.parent();\n\t\tthis.target.eliminate('spinner');\n\t}\n\n});\n\nRequest = Class.refactor(Request, {\n\n\toptions: {\n\t\tuseSpinner: false,\n\t\tspinnerOptions: {},\n\t\tspinnerTarget: false\n\t},\n\n\tinitialize: function(options){\n\t\tthis._send = this.send;\n\t\tthis.send = function(options){\n\t\t\tvar spinner = this.getSpinner();\n\t\t\tif (spinner) spinner.chain(this._send.pass(options, this)).show();\n\t\t\telse this._send(options);\n\t\t\treturn this;\n\t\t};\n\t\tthis.previous(options);\n\t},\n\n\tgetSpinner: function(){\n\t\tif (!this.spinner){\n\t\t\tvar update = document.id(this.options.spinnerTarget) || document.id(this.options.update);\n\t\t\tif (this.options.useSpinner && update){\n\t\t\t\tupdate.set('spinner', this.options.spinnerOptions);\n\t\t\t\tvar spinner = this.spinner = update.get('spinner');\n\t\t\t\t['complete', 'exception', 'cancel'].each(function(event){\n\t\t\t\t\tthis.addEvent(event, spinner.hide.bind(spinner));\n\t\t\t\t}, this);\n\t\t\t}\n\t\t}\n\t\treturn this.spinner;\n\t}\n\n});\n\nElement.Properties.spinner = {\n\n\tset: function(options){\n\t\tvar spinner = this.retrieve('spinner');\n\t\tif (spinner) spinner.destroy();\n\t\treturn this.eliminate('spinner').store('spinner:options', options);\n\t},\n\n\tget: function(){\n\t\tvar spinner = this.retrieve('spinner');\n\t\tif (!spinner){\n\t\t\tspinner = new Spinner(this, this.retrieve('spinner:options'));\n\t\t\tthis.store('spinner', spinner);\n\t\t}\n\t\treturn spinner;\n\t}\n\n};\n\nElement.implement({\n\n\tspin: function(options){\n\t\tif (options) this.set('spinner', options);\n\t\tthis.get('spinner').show();\n\t\treturn this;\n\t},\n\n\tunspin: function(){\n\t\tthis.get('spinner').hide();\n\t\treturn this;\n\t}\n\n});\n\n\n/*\n---\n\nscript: Form.Request.js\n\nname: Form.Request\n\ndescription: Handles the basic functionality of submitting a form and updating a dom element with the result.\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n\nrequires:\n - Core/Request.HTML\n - /Class.Binds\n - /Class.Occlude\n - /Spinner\n - /String.QueryString\n - /Element.Delegation\n\nprovides: [Form.Request]\n\n...\n*/\n\nif (!window.Form) window.Form = {};\n\n(function(){\n\n\tForm.Request = new Class({\n\n\t\tBinds: ['onSubmit', 'onFormValidate'],\n\n\t\tImplements: [Options, Events, Class.Occlude],\n\n\t\toptions: {/*\n\t\t\tonFailure: function(){},\n\t\t\tonSuccess: function(){}, // aliased to onComplete,\n\t\t\tonSend: function(){}*/\n\t\t\trequestOptions: {\n\t\t\t\tevalScripts: true,\n\t\t\t\tuseSpinner: true,\n\t\t\t\temulation: false,\n\t\t\t\tlink: 'ignore'\n\t\t\t},\n\t\t\tsendButtonClicked: true,\n\t\t\textraData: {},\n\t\t\tresetForm: true\n\t\t},\n\n\t\tproperty: 'form.request',\n\n\t\tinitialize: function(form, target, options){\n\t\t\tthis.element = document.id(form);\n\t\t\tif (this.occlude()) return this.occluded;\n\t\t\tthis.setOptions(options)\n\t\t\t\t.setTarget(target)\n\t\t\t\t.attach();\n\t\t},\n\n\t\tsetTarget: function(target){\n\t\t\tthis.target = document.id(target);\n\t\t\tif (!this.request){\n\t\t\t\tthis.makeRequest();\n\t\t\t} else {\n\t\t\t\tthis.request.setOptions({\n\t\t\t\t\tupdate: this.target\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\ttoElement: function(){\n\t\t\treturn this.element;\n\t\t},\n\n\t\tmakeRequest: function(){\n\t\t\tvar self = this;\n\t\t\tthis.request = new Request.HTML(Object.merge({\n\t\t\t\t\tupdate: this.target,\n\t\t\t\t\temulation: false,\n\t\t\t\t\tspinnerTarget: this.element,\n\t\t\t\t\tmethod: this.element.get('method') || 'post'\n\t\t\t}, this.options.requestOptions)).addEvents({\n\t\t\t\tsuccess: function(tree, elements, html, javascript){\n\t\t\t\t\t['complete', 'success'].each(function(evt){\n\t\t\t\t\t\tself.fireEvent(evt, [self.target, tree, elements, html, javascript]);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tfailure: function(){\n\t\t\t\t\tself.fireEvent('complete', arguments).fireEvent('failure', arguments);\n\t\t\t\t},\n\t\t\t\texception: function(){\n\t\t\t\t\tself.fireEvent('failure', arguments);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn this.attachReset();\n\t\t},\n\n\t\tattachReset: function(){\n\t\t\tif (!this.options.resetForm) return this;\n\t\t\tthis.request.addEvent('success', function(){\n\t\t\t\tFunction.attempt(function(){\n\t\t\t\t\tthis.element.reset();\n\t\t\t\t}.bind(this));\n\t\t\t\tif (window.OverText) OverText.update();\n\t\t\t}.bind(this));\n\t\t\treturn this;\n\t\t},\n\n\t\tattach: function(attach){\n\t\t\tvar method = (attach != false) ? 'addEvent' : 'removeEvent';\n\t\t\tthis.element[method]('click:relay(button, input[type=submit])', this.saveClickedButton.bind(this));\n\n\t\t\tvar fv = this.element.retrieve('validator');\n\t\t\tif (fv) fv[method]('onFormValidate', this.onFormValidate);\n\t\t\telse this.element[method]('submit', this.onSubmit);\n\n\t\t\treturn this;\n\t\t},\n\n\t\tdetach: function(){\n\t\t\treturn this.attach(false);\n\t\t},\n\n\t\t//public method\n\t\tenable: function(){\n\t\t\treturn this.attach();\n\t\t},\n\n\t\t//public method\n\t\tdisable: function(){\n\t\t\treturn this.detach();\n\t\t},\n\n\t\tonFormValidate: function(valid, form, event){\n\t\t\t//if there's no event, then this wasn't a submit event\n\t\t\tif (!event) return;\n\t\t\tvar fv = this.element.retrieve('validator');\n\t\t\tif (valid || (fv && !fv.options.stopOnFailure)){\n\t\t\t\tevent.stop();\n\t\t\t\tthis.send();\n\t\t\t}\n\t\t},\n\n\t\tonSubmit: function(event){\n\t\t\tvar fv = this.element.retrieve('validator');\n\t\t\tif (fv){\n\t\t\t\t//form validator was created after Form.Request\n\t\t\t\tthis.element.removeEvent('submit', this.onSubmit);\n\t\t\t\tfv.addEvent('onFormValidate', this.onFormValidate);\n\t\t\t\tthis.element.validate();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (event) event.stop();\n\t\t\tthis.send();\n\t\t},\n\n\t\tsaveClickedButton: function(event, target){\n\t\t\tvar targetName = target.get('name');\n\t\t\tif (!targetName || !this.options.sendButtonClicked) return;\n\t\t\tthis.options.extraData[targetName] = target.get('value') || true;\n\t\t\tthis.clickedCleaner = function(){\n\t\t\t\tdelete this.options.extraData[targetName];\n\t\t\t\tthis.clickedCleaner = function(){};\n\t\t\t}.bind(this);\n\t\t},\n\n\t\tclickedCleaner: function(){},\n\n\t\tsend: function(){\n\t\t\tvar str = this.element.toQueryString().trim(),\n\t\t\t\tdata = Object.toQueryString(this.options.extraData);\n\n\t\t\tif (str) str += \"&\" + data;\n\t\t\telse str = data;\n\n\t\t\tthis.fireEvent('send', [this.element, str.parseQueryString()]);\n\t\t\tthis.request.send({\n\t\t\t\tdata: str,\n\t\t\t\turl: this.options.requestOptions.url || this.element.get('action')\n\t\t\t});\n\t\t\tthis.clickedCleaner();\n\t\t\treturn this;\n\t\t}\n\n\t});\n\n\tElement.implement('formUpdate', function(update, options){\n\t\tvar fq = this.retrieve('form.request');\n\t\tif (!fq){\n\t\t\tfq = new Form.Request(this, update, options);\n\t\t} else {\n\t\t\tif (update) fq.setTarget(update);\n\t\t\tif (options) fq.setOptions(options).makeRequest();\n\t\t}\n\t\tfq.send();\n\t\treturn this;\n\t});\n\n})();\n\n\n/*\n---\n\nscript: Fx.Reveal.js\n\nname: Fx.Reveal\n\ndescription: Defines Fx.Reveal, a class that shows and hides elements with a transition.\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n\nrequires:\n - Core/Fx.Morph\n - /Element.Shortcuts\n - /Element.Measure\n\nprovides: [Fx.Reveal]\n\n...\n*/\n\n(function(){\n\n\nvar hideTheseOf = function(object){\n\tvar hideThese = object.options.hideInputs;\n\tif (window.OverText){\n\t\tvar otClasses = [null];\n\t\tOverText.each(function(ot){\n\t\t\totClasses.include('.' + ot.options.labelClass);\n\t\t});\n\t\tif (otClasses) hideThese += otClasses.join(', ');\n\t}\n\treturn (hideThese) ? object.element.getElements(hideThese) : null;\n};\n\n\nFx.Reveal = new Class({\n\n\tExtends: Fx.Morph,\n\n\toptions: {/*\n\t\tonShow: function(thisElement){},\n\t\tonHide: function(thisElement){},\n\t\tonComplete: function(thisElement){},\n\t\theightOverride: null,\n\t\twidthOverride: null,*/\n\t\tlink: 'cancel',\n\t\tstyles: ['padding', 'border', 'margin'],\n\t\ttransitionOpacity: !Browser.ie6,\n\t\tmode: 'vertical',\n\t\tdisplay: function(){\n\t\t\treturn this.element.get('tag') != 'tr' ? 'block' : 'table-row';\n\t\t},\n\t\topacity: 1,\n\t\thideInputs: Browser.ie ? 'select, input, textarea, object, embed' : null\n\t},\n\n\tdissolve: function(){\n\t\tif (!this.hiding && !this.showing){\n\t\t\tif (this.element.getStyle('display') != 'none'){\n\t\t\t\tthis.hiding = true;\n\t\t\t\tthis.showing = false;\n\t\t\t\tthis.hidden = true;\n\t\t\t\tthis.cssText = this.element.style.cssText;\n\n\t\t\t\tvar startStyles = this.element.getComputedSize({\n\t\t\t\t\tstyles: this.options.styles,\n\t\t\t\t\tmode: this.options.mode\n\t\t\t\t});\n\t\t\t\tif (this.options.transitionOpacity) startStyles.opacity = this.options.opacity;\n\n\t\t\t\tvar zero = {};\n\t\t\t\tObject.each(startStyles, function(style, name){\n\t\t\t\t\tzero[name] = [style, 0];\n\t\t\t\t});\n\n\t\t\t\tthis.element.setStyles({\n\t\t\t\t\tdisplay: Function.from(this.options.display).call(this),\n\t\t\t\t\toverflow: 'hidden'\n\t\t\t\t});\n\n\t\t\t\tvar hideThese = hideTheseOf(this);\n\t\t\t\tif (hideThese) hideThese.setStyle('visibility', 'hidden');\n\n\t\t\t\tthis.$chain.unshift(function(){\n\t\t\t\t\tif (this.hidden){\n\t\t\t\t\t\tthis.hiding = false;\n\t\t\t\t\t\tthis.element.style.cssText = this.cssText;\n\t\t\t\t\t\tthis.element.setStyle('display', 'none');\n\t\t\t\t\t\tif (hideThese) hideThese.setStyle('visibility', 'visible');\n\t\t\t\t\t}\n\t\t\t\t\tthis.fireEvent('hide', this.element);\n\t\t\t\t\tthis.callChain();\n\t\t\t\t}.bind(this));\n\n\t\t\t\tthis.start(zero);\n\t\t\t} else {\n\t\t\t\tthis.callChain.delay(10, this);\n\t\t\t\tthis.fireEvent('complete', this.element);\n\t\t\t\tthis.fireEvent('hide', this.element);\n\t\t\t}\n\t\t} else if (this.options.link == 'chain'){\n\t\t\tthis.chain(this.dissolve.bind(this));\n\t\t} else if (this.options.link == 'cancel' && !this.hiding){\n\t\t\tthis.cancel();\n\t\t\tthis.dissolve();\n\t\t}\n\t\treturn this;\n\t},\n\n\treveal: function(){\n\t\tif (!this.showing && !this.hiding){\n\t\t\tif (this.element.getStyle('display') == 'none'){\n\t\t\t\tthis.hiding = false;\n\t\t\t\tthis.showing = true;\n\t\t\t\tthis.hidden = false;\n\t\t\t\tthis.cssText = this.element.style.cssText;\n\n\t\t\t\tvar startStyles;\n\t\t\t\tthis.element.measure(function(){\n\t\t\t\t\tstartStyles = this.element.getComputedSize({\n\t\t\t\t\t\tstyles: this.options.styles,\n\t\t\t\t\t\tmode: this.options.mode\n\t\t\t\t\t});\n\t\t\t\t}.bind(this));\n\t\t\t\tif (this.options.heightOverride != null) startStyles.height = this.options.heightOverride.toInt();\n\t\t\t\tif (this.options.widthOverride != null) startStyles.width = this.options.widthOverride.toInt();\n\t\t\t\tif (this.options.transitionOpacity){\n\t\t\t\t\tthis.element.setStyle('opacity', 0);\n\t\t\t\t\tstartStyles.opacity = this.options.opacity;\n\t\t\t\t}\n\n\t\t\t\tvar zero = {\n\t\t\t\t\theight: 0,\n\t\t\t\t\tdisplay: Function.from(this.options.display).call(this)\n\t\t\t\t};\n\t\t\t\tObject.each(startStyles, function(style, name){\n\t\t\t\t\tzero[name] = 0;\n\t\t\t\t});\n\t\t\t\tzero.overflow = 'hidden';\n\n\t\t\t\tthis.element.setStyles(zero);\n\n\t\t\t\tvar hideThese = hideTheseOf(this);\n\t\t\t\tif (hideThese) hideThese.setStyle('visibility', 'hidden');\n\n\t\t\t\tthis.$chain.unshift(function(){\n\t\t\t\t\tthis.element.style.cssText = this.cssText;\n\t\t\t\t\tthis.element.setStyle('display', Function.from(this.options.display).call(this));\n\t\t\t\t\tif (!this.hidden) this.showing = false;\n\t\t\t\t\tif (hideThese) hideThese.setStyle('visibility', 'visible');\n\t\t\t\t\tthis.callChain();\n\t\t\t\t\tthis.fireEvent('show', this.element);\n\t\t\t\t}.bind(this));\n\n\t\t\t\tthis.start(startStyles);\n\t\t\t} else {\n\t\t\t\tthis.callChain();\n\t\t\t\tthis.fireEvent('complete', this.element);\n\t\t\t\tthis.fireEvent('show', this.element);\n\t\t\t}\n\t\t} else if (this.options.link == 'chain'){\n\t\t\tthis.chain(this.reveal.bind(this));\n\t\t} else if (this.options.link == 'cancel' && !this.showing){\n\t\t\tthis.cancel();\n\t\t\tthis.reveal();\n\t\t}\n\t\treturn this;\n\t},\n\n\ttoggle: function(){\n\t\tif (this.element.getStyle('display') == 'none'){\n\t\t\tthis.reveal();\n\t\t} else {\n\t\t\tthis.dissolve();\n\t\t}\n\t\treturn this;\n\t},\n\n\tcancel: function(){\n\t\tthis.parent.apply(this, arguments);\n\t\tif (this.cssText != null) this.element.style.cssText = this.cssText;\n\t\tthis.hiding = false;\n\t\tthis.showing = false;\n\t\treturn this;\n\t}\n\n});\n\nElement.Properties.reveal = {\n\n\tset: function(options){\n\t\tthis.get('reveal').cancel().setOptions(options);\n\t\treturn this;\n\t},\n\n\tget: function(){\n\t\tvar reveal = this.retrieve('reveal');\n\t\tif (!reveal){\n\t\t\treveal = new Fx.Reveal(this);\n\t\t\tthis.store('reveal', reveal);\n\t\t}\n\t\treturn reveal;\n\t}\n\n};\n\nElement.Properties.dissolve = Element.Properties.reveal;\n\nElement.implement({\n\n\treveal: function(options){\n\t\tthis.get('reveal').setOptions(options).reveal();\n\t\treturn this;\n\t},\n\n\tdissolve: function(options){\n\t\tthis.get('reveal').setOptions(options).dissolve();\n\t\treturn this;\n\t},\n\n\tnix: function(options){\n\t\tvar params = Array.link(arguments, {destroy: Type.isBoolean, options: Type.isObject});\n\t\tthis.get('reveal').setOptions(options).dissolve().chain(function(){\n\t\t\tthis[params.destroy ? 'destroy' : 'dispose']();\n\t\t}.bind(this));\n\t\treturn this;\n\t},\n\n\twink: function(){\n\t\tvar params = Array.link(arguments, {duration: Type.isNumber, options: Type.isObject});\n\t\tvar reveal = this.get('reveal').setOptions(params.options);\n\t\treveal.reveal().chain(function(){\n\t\t\t(function(){\n\t\t\t\treveal.dissolve();\n\t\t\t}).delay(params.duration || 2000);\n\t\t});\n\t}\n\n});\n\n})();\n\n\n/*\n---\n\nscript: Form.Request.Append.js\n\nname: Form.Request.Append\n\ndescription: Handles the basic functionality of submitting a form and updating a dom element with the result. The result is appended to the DOM element instead of replacing its contents.\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n\nrequires:\n - /Form.Request\n - /Fx.Reveal\n - /Elements.from\n\nprovides: [Form.Request.Append]\n\n...\n*/\n\nForm.Request.Append = new Class({\n\n\tExtends: Form.Request,\n\n\toptions: {\n\t\t//onBeforeEffect: function(){},\n\t\tuseReveal: true,\n\t\trevealOptions: {},\n\t\tinject: 'bottom'\n\t},\n\n\tmakeRequest: function(){\n\t\tthis.request = new Request.HTML(Object.merge({\n\t\t\t\turl: this.element.get('action'),\n\t\t\t\tmethod: this.element.get('method') || 'post',\n\t\t\t\tspinnerTarget: this.element\n\t\t\t}, this.options.requestOptions, {\n\t\t\t\tevalScripts: false\n\t\t\t})\n\t\t).addEvents({\n\t\t\tsuccess: function(tree, elements, html, javascript){\n\t\t\t\tvar container;\n\t\t\t\tvar kids = Elements.from(html);\n\t\t\t\tif (kids.length == 1){\n\t\t\t\t\tcontainer = kids[0];\n\t\t\t\t} else {\n\t\t\t\t\t container = new Element('div', {\n\t\t\t\t\t\tstyles: {\n\t\t\t\t\t\t\tdisplay: 'none'\n\t\t\t\t\t\t}\n\t\t\t\t\t}).adopt(kids);\n\t\t\t\t}\n\t\t\t\tcontainer.inject(this.target, this.options.inject);\n\t\t\t\tif (this.options.requestOptions.evalScripts) Browser.exec(javascript);\n\t\t\t\tthis.fireEvent('beforeEffect', container);\n\t\t\t\tvar finish = function(){\n\t\t\t\t\tthis.fireEvent('success', [container, this.target, tree, elements, html, javascript]);\n\t\t\t\t}.bind(this);\n\t\t\t\tif (this.options.useReveal){\n\t\t\t\t\tcontainer.set('reveal', this.options.revealOptions).get('reveal').chain(finish);\n\t\t\t\t\tcontainer.reveal();\n\t\t\t\t} else {\n\t\t\t\t\tfinish();\n\t\t\t\t}\n\t\t\t}.bind(this),\n\t\t\tfailure: function(xhr){\n\t\t\t\tthis.fireEvent('failure', xhr);\n\t\t\t}.bind(this)\n\t\t});\n\t\tthis.attachReset();\n\t}\n\n});\n\n\n/*\n---\n\nname: Locale.en-US.Form.Validator\n\ndescription: Form Validator messages for English.\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n\nrequires:\n - /Locale\n\nprovides: [Locale.en-US.Form.Validator]\n\n...\n*/\n\nLocale.define('en-US', 'FormValidator', {\n\n\trequired: 'This field is required.',\n\tlength: 'Please enter {length} characters (you entered {elLength} characters)',\n\tminLength: 'Please enter at least {minLength} characters (you entered {length} characters).',\n\tmaxLength: 'Please enter no more than {maxLength} characters (you entered {length} characters).',\n\tinteger: 'Please enter an integer in this field. Numbers with decimals (e.g. 1.25) are not permitted.',\n\tnumeric: 'Please enter only numeric values in this field (i.e. \"1\" or \"1.1\" or \"-1\" or \"-1.1\").',\n\tdigits: 'Please use numbers and punctuation only in this field (for example, a phone number with dashes or dots is permitted).',\n\talpha: 'Please use only letters (a-z) within this field. No spaces or other characters are allowed.',\n\talphanum: 'Please use only letters (a-z) or numbers (0-9) in this field. No spaces or other characters are allowed.',\n\tdateSuchAs: 'Please enter a valid date such as {date}',\n\tdateInFormatMDY: 'Please enter a valid date such as MM/DD/YYYY (i.e. \"12/31/1999\")',\n\temail: 'Please enter a valid email address. For example \"fred@domain.com\".',\n\turl: 'Please enter a valid URL such as http://www.example.com.',\n\tcurrencyDollar: 'Please enter a valid $ amount. For example $100.00 .',\n\toneRequired: 'Please enter something for at least one of these inputs.',\n\terrorPrefix: 'Error: ',\n\twarningPrefix: 'Warning: ',\n\n\t// Form.Validator.Extras\n\tnoSpace: 'There can be no spaces in this input.',\n\treqChkByNode: 'No items are selected.',\n\trequiredChk: 'This field is required.',\n\treqChkByName: 'Please select a {label}.',\n\tmatch: 'This field needs to match the {matchName} field',\n\tstartDate: 'the start date',\n\tendDate: 'the end date',\n\tcurrendDate: 'the current date',\n\tafterDate: 'The date should be the same or after {label}.',\n\tbeforeDate: 'The date should be the same or before {label}.',\n\tstartMonth: 'Please select a start month',\n\tsameMonth: 'These two dates must be in the same month - you must change one or the other.',\n\tcreditcard: 'The credit card number entered is invalid. Please check the number and try again. {length} digits entered.'\n\n});\n\n\n/*\n---\n\nscript: Form.Validator.js\n\nname: Form.Validator\n\ndescription: A css-class based form validation system.\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n\nrequires:\n - Core/Options\n - Core/Events\n - Core/Slick.Finder\n - Core/Element.Event\n - Core/Element.Style\n - Core/JSON\n - /Locale\n - /Class.Binds\n - /Date\n - /Element.Forms\n - /Locale.en-US.Form.Validator\n - /Element.Shortcuts\n\nprovides: [Form.Validator, InputValidator, FormValidator.BaseValidators]\n\n...\n*/\nif (!window.Form) window.Form = {};\n\nvar InputValidator = this.InputValidator = new Class({\n\n\tImplements: [Options],\n\n\toptions: {\n\t\terrorMsg: 'Validation failed.',\n\t\ttest: Function.from(true)\n\t},\n\n\tinitialize: function(className, options){\n\t\tthis.setOptions(options);\n\t\tthis.className = className;\n\t},\n\n\ttest: function(field, props){\n\t\tfield = document.id(field);\n\t\treturn (field) ? this.options.test(field, props || this.getProps(field)) : false;\n\t},\n\n\tgetError: function(field, props){\n\t\tfield = document.id(field);\n\t\tvar err = this.options.errorMsg;\n\t\tif (typeOf(err) == 'function') err = err(field, props || this.getProps(field));\n\t\treturn err;\n\t},\n\n\tgetProps: function(field){\n\t\tfield = document.id(field);\n\t\treturn (field) ? field.get('validatorProps') : {};\n\t}\n\n});\n\nElement.Properties.validators = {\n\n\tget: function(){\n\t\treturn (this.get('data-validators') || this.className).clean().split(' ');\n\t}\n\n};\n\nElement.Properties.validatorProps = {\n\n\tset: function(props){\n\t\treturn this.eliminate('$moo:validatorProps').store('$moo:validatorProps', props);\n\t},\n\n\tget: function(props){\n\t\tif (props) this.set(props);\n\t\tif (this.retrieve('$moo:validatorProps')) return this.retrieve('$moo:validatorProps');\n\t\tif (this.getProperty('data-validator-properties') || this.getProperty('validatorProps')){\n\t\t\ttry {\n\t\t\t\tthis.store('$moo:validatorProps', JSON.decode(this.getProperty('validatorProps') || this.getProperty('data-validator-properties')));\n\t\t\t}catch(e){\n\t\t\t\treturn {};\n\t\t\t}\n\t\t} else {\n\t\t\tvar vals = this.get('validators').filter(function(cls){\n\t\t\t\treturn cls.test(':');\n\t\t\t});\n\t\t\tif (!vals.length){\n\t\t\t\tthis.store('$moo:validatorProps', {});\n\t\t\t} else {\n\t\t\t\tprops = {};\n\t\t\t\tvals.each(function(cls){\n\t\t\t\t\tvar split = cls.split(':');\n\t\t\t\t\tif (split[1]){\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tprops[split[0]] = JSON.decode(split[1]);\n\t\t\t\t\t\t} catch(e){}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.store('$moo:validatorProps', props);\n\t\t\t}\n\t\t}\n\t\treturn this.retrieve('$moo:validatorProps');\n\t}\n\n};\n\nForm.Validator = new Class({\n\n\tImplements: [Options, Events],\n\n\tBinds: ['onSubmit'],\n\n\toptions: {/*\n\t\tonFormValidate: function(isValid, form, event){},\n\t\tonElementValidate: function(isValid, field, className, warn){},\n\t\tonElementPass: function(field){},\n\t\tonElementFail: function(field, validatorsFailed){}, */\n\t\tfieldSelectors: 'input, select, textarea',\n\t\tignoreHidden: true,\n\t\tignoreDisabled: true,\n\t\tuseTitles: false,\n\t\tevaluateOnSubmit: true,\n\t\tevaluateFieldsOnBlur: true,\n\t\tevaluateFieldsOnChange: true,\n\t\tserial: true,\n\t\tstopOnFailure: true,\n\t\twarningPrefix: function(){\n\t\t\treturn Form.Validator.getMsg('warningPrefix') || 'Warning: ';\n\t\t},\n\t\terrorPrefix: function(){\n\t\t\treturn Form.Validator.getMsg('errorPrefix') || 'Error: ';\n\t\t}\n\t},\n\n\tinitialize: function(form, options){\n\t\tthis.setOptions(options);\n\t\tthis.element = document.id(form);\n\t\tthis.element.store('validator', this);\n\t\tthis.warningPrefix = Function.from(this.options.warningPrefix)();\n\t\tthis.errorPrefix = Function.from(this.options.errorPrefix)();\n\t\tif (this.options.evaluateOnSubmit) this.element.addEvent('submit', this.onSubmit);\n\t\tif (this.options.evaluateFieldsOnBlur || this.options.evaluateFieldsOnChange) this.watchFields(this.getFields());\n\t},\n\n\ttoElement: function(){\n\t\treturn this.element;\n\t},\n\n\tgetFields: function(){\n\t\treturn (this.fields = this.element.getElements(this.options.fieldSelectors));\n\t},\n\n\twatchFields: function(fields){\n\t\tfields.each(function(el){\n\t\t\tif (this.options.evaluateFieldsOnBlur)\n\t\t\t\tel.addEvent('blur', this.validationMonitor.pass([el, false], this));\n\t\t\tif (this.options.evaluateFieldsOnChange)\n\t\t\t\tel.addEvent('change', this.validationMonitor.pass([el, true], this));\n\t\t}, this);\n\t},\n\n\tvalidationMonitor: function(){\n\t\tclearTimeout(this.timer);\n\t\tthis.timer = this.validateField.delay(50, this, arguments);\n\t},\n\n\tonSubmit: function(event){\n\t\tif (this.validate(event)) this.reset();\n\t},\n\n\treset: function(){\n\t\tthis.getFields().each(this.resetField, this);\n\t\treturn this;\n\t},\n\n\tvalidate: function(event){\n\t\tvar result = this.getFields().map(function(field){\n\t\t\treturn this.validateField(field, true);\n\t\t}, this).every(function(v){\n\t\t\treturn v;\n\t\t});\n\t\tthis.fireEvent('formValidate', [result, this.element, event]);\n\t\tif (this.options.stopOnFailure && !result && event) event.preventDefault();\n\t\treturn result;\n\t},\n\n\tvalidateField: function(field, force){\n\t\tif (this.paused) return true;\n\t\tfield = document.id(field);\n\t\tvar passed = !field.hasClass('validation-failed');\n\t\tvar failed, warned;\n\t\tif (this.options.serial && !force){\n\t\t\tfailed = this.element.getElement('.validation-failed');\n\t\t\twarned = this.element.getElement('.warning');\n\t\t}\n\t\tif (field && (!failed || force || field.hasClass('validation-failed') || (failed && !this.options.serial))){\n\t\t\tvar validationTypes = field.get('validators');\n\t\t\tvar validators = validationTypes.some(function(cn){\n\t\t\t\treturn this.getValidator(cn);\n\t\t\t}, this);\n\t\t\tvar validatorsFailed = [];\n\t\t\tvalidationTypes.each(function(className){\n\t\t\t\tif (className && !this.test(className, field)) validatorsFailed.include(className);\n\t\t\t}, this);\n\t\t\tpassed = validatorsFailed.length === 0;\n\t\t\tif (validators && !this.hasValidator(field, 'warnOnly')){\n\t\t\t\tif (passed){\n\t\t\t\t\tfield.addClass('validation-passed').removeClass('validation-failed');\n\t\t\t\t\tthis.fireEvent('elementPass', [field]);\n\t\t\t\t} else {\n\t\t\t\t\tfield.addClass('validation-failed').removeClass('validation-passed');\n\t\t\t\t\tthis.fireEvent('elementFail', [field, validatorsFailed]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!warned){\n\t\t\t\tvar warnings = validationTypes.some(function(cn){\n\t\t\t\t\tif (cn.test('^warn'))\n\t\t\t\t\t\treturn this.getValidator(cn.replace(/^warn-/,''));\n\t\t\t\t\telse return null;\n\t\t\t\t}, this);\n\t\t\t\tfield.removeClass('warning');\n\t\t\t\tvar warnResult = validationTypes.map(function(cn){\n\t\t\t\t\tif (cn.test('^warn'))\n\t\t\t\t\t\treturn this.test(cn.replace(/^warn-/,''), field, true);\n\t\t\t\t\telse return null;\n\t\t\t\t}, this);\n\t\t\t}\n\t\t}\n\t\treturn passed;\n\t},\n\n\ttest: function(className, field, warn){\n\t\tfield = document.id(field);\n\t\tif ((this.options.ignoreHidden && !field.isVisible()) || (this.options.ignoreDisabled && field.get('disabled'))) return true;\n\t\tvar validator = this.getValidator(className);\n\t\tif (warn != null) warn = false;\n\t\tif (this.hasValidator(field, 'warnOnly')) warn = true;\n\t\tvar isValid = this.hasValidator(field, 'ignoreValidation') || (validator ? validator.test(field) : true);\n\t\tif (validator && field.isVisible()) this.fireEvent('elementValidate', [isValid, field, className, warn]);\n\t\tif (warn) return true;\n\t\treturn isValid;\n\t},\n\n\thasValidator: function(field, value){\n\t\treturn field.get('validators').contains(value);\n\t},\n\n\tresetField: function(field){\n\t\tfield = document.id(field);\n\t\tif (field){\n\t\t\tfield.get('validators').each(function(className){\n\t\t\t\tif (className.test('^warn-')) className = className.replace(/^warn-/, '');\n\t\t\t\tfield.removeClass('validation-failed');\n\t\t\t\tfield.removeClass('warning');\n\t\t\t\tfield.removeClass('validation-passed');\n\t\t\t}, this);\n\t\t}\n\t\treturn this;\n\t},\n\n\tstop: function(){\n\t\tthis.paused = true;\n\t\treturn this;\n\t},\n\n\tstart: function(){\n\t\tthis.paused = false;\n\t\treturn this;\n\t},\n\n\tignoreField: function(field, warn){\n\t\tfield = document.id(field);\n\t\tif (field){\n\t\t\tthis.enforceField(field);\n\t\t\tif (warn) field.addClass('warnOnly');\n\t\t\telse field.addClass('ignoreValidation');\n\t\t}\n\t\treturn this;\n\t},\n\n\tenforceField: function(field){\n\t\tfield = document.id(field);\n\t\tif (field) field.removeClass('warnOnly').removeClass('ignoreValidation');\n\t\treturn this;\n\t}\n\n});\n\nForm.Validator.getMsg = function(key){\n\treturn Locale.get('FormValidator.' + key);\n};\n\nForm.Validator.adders = {\n\n\tvalidators:{},\n\n\tadd : function(className, options){\n\t\tthis.validators[className] = new InputValidator(className, options);\n\t\t//if this is a class (this method is used by instances of Form.Validator and the Form.Validator namespace)\n\t\t//extend these validators into it\n\t\t//this allows validators to be global and/or per instance\n\t\tif (!this.initialize){\n\t\t\tthis.implement({\n\t\t\t\tvalidators: this.validators\n\t\t\t});\n\t\t}\n\t},\n\n\taddAllThese : function(validators){\n\t\tArray.from(validators).each(function(validator){\n\t\t\tthis.add(validator[0], validator[1]);\n\t\t}, this);\n\t},\n\n\tgetValidator: function(className){\n\t\treturn this.validators[className.split(':')[0]];\n\t}\n\n};\n\nObject.append(Form.Validator, Form.Validator.adders);\n\nForm.Validator.implement(Form.Validator.adders);\n\nForm.Validator.add('IsEmpty', {\n\n\terrorMsg: false,\n\ttest: function(element){\n\t\tif (element.type == 'select-one' || element.type == 'select')\n\t\t\treturn !(element.selectedIndex >= 0 && element.options[element.selectedIndex].value != '');\n\t\telse\n\t\t\treturn ((element.get('value') == null) || (element.get('value').length == 0));\n\t}\n\n});\n\nForm.Validator.addAllThese([\n\n\t['required', {\n\t\terrorMsg: function(){\n\t\t\treturn Form.Validator.getMsg('required');\n\t\t},\n\t\ttest: function(element){\n\t\t\treturn !Form.Validator.getValidator('IsEmpty').test(element);\n\t\t}\n\t}],\n\n\t['length', {\n\t\terrorMsg: function(element, props){\n\t\t\tif (typeOf(props.length) != 'null')\n\t\t\t\treturn Form.Validator.getMsg('length').substitute({length: props.length, elLength: element.get('value').length});\n\t\t\telse return '';\n\t\t},\n\t\ttest: function(element, props){\n\t\t\tif (typeOf(props.length) != 'null') return (element.get('value').length == props.length || element.get('value').length == 0);\n\t\t\telse return true;\n\t\t}\n\t}],\t\n\n\t['minLength', {\n\t\terrorMsg: function(element, props){\n\t\t\tif (typeOf(props.minLength) != 'null')\n\t\t\t\treturn Form.Validator.getMsg('minLength').substitute({minLength: props.minLength, length: element.get('value').length});\n\t\t\telse return '';\n\t\t},\n\t\ttest: function(element, props){\n\t\t\tif (typeOf(props.minLength) != 'null') return (element.get('value').length >= (props.minLength || 0));\n\t\t\telse return true;\n\t\t}\n\t}],\n\n\t['maxLength', {\n\t\terrorMsg: function(element, props){\n\t\t\t//props is {maxLength:10}\n\t\t\tif (typeOf(props.maxLength) != 'null')\n\t\t\t\treturn Form.Validator.getMsg('maxLength').substitute({maxLength: props.maxLength, length: element.get('value').length});\n\t\t\telse return '';\n\t\t},\n\t\ttest: function(element, props){\n\t\t\treturn element.get('value').length <= (props.maxLength || 10000);\n\t\t}\n\t}],\n\n\t['validate-integer', {\n\t\terrorMsg: Form.Validator.getMsg.pass('integer'),\n\t\ttest: function(element){\n\t\t\treturn Form.Validator.getValidator('IsEmpty').test(element) || (/^(-?[1-9]\\d*|0)$/).test(element.get('value'));\n\t\t}\n\t}],\n\n\t['validate-numeric', {\n\t\terrorMsg: Form.Validator.getMsg.pass('numeric'),\n\t\ttest: function(element){\n\t\t\treturn Form.Validator.getValidator('IsEmpty').test(element) ||\n\t\t\t\t(/^-?(?:0$0(?=\\d*\\.)|[1-9]|0)\\d*(\\.\\d+)?$/).test(element.get('value'));\n\t\t}\n\t}],\n\n\t['validate-digits', {\n\t\terrorMsg: Form.Validator.getMsg.pass('digits'),\n\t\ttest: function(element){\n\t\t\treturn Form.Validator.getValidator('IsEmpty').test(element) || (/^[\\d() .:\\-\\+#]+$/.test(element.get('value')));\n\t\t}\n\t}],\n\n\t['validate-alpha', {\n\t\terrorMsg: Form.Validator.getMsg.pass('alpha'),\n\t\ttest: function(element){\n\t\t\treturn Form.Validator.getValidator('IsEmpty').test(element) || (/^[a-zA-Z]+$/).test(element.get('value'));\n\t\t}\n\t}],\n\n\t['validate-alphanum', {\n\t\terrorMsg: Form.Validator.getMsg.pass('alphanum'),\n\t\ttest: function(element){\n\t\t\treturn Form.Validator.getValidator('IsEmpty').test(element) || !(/\\W/).test(element.get('value'));\n\t\t}\n\t}],\n\n\t['validate-date', {\n\t\terrorMsg: function(element, props){\n\t\t\tif (Date.parse){\n\t\t\t\tvar format = props.dateFormat || '%x';\n\t\t\t\treturn Form.Validator.getMsg('dateSuchAs').substitute({date: new Date().format(format)});\n\t\t\t} else {\n\t\t\t\treturn Form.Validator.getMsg('dateInFormatMDY');\n\t\t\t}\n\t\t},\n\t\ttest: function(element, props){\n\t\t\tif (Form.Validator.getValidator('IsEmpty').test(element)) return true;\n\t\t\tvar dateLocale = Locale.getCurrent().sets.Date,\n\t\t\t\tdateNouns = new RegExp([dateLocale.days, dateLocale.days_abbr, dateLocale.months, dateLocale.months_abbr].flatten().join('|'), 'i'),\n\t\t\t\tvalue = element.get('value'),\n\t\t\t\twordsInValue = value.match(/[a-z]+/gi);\n\n\t\t\t\tif (wordsInValue && !wordsInValue.every(dateNouns.exec, dateNouns)) return false;\n\n\t\t\t\tvar date = Date.parse(value),\n\t\t\t\t\tformat = props.dateFormat || '%x',\n\t\t\t\t\tformatted = date.format(format);\n\n\t\t\t\tif (formatted != 'invalid date') element.set('value', formatted);\n\t\t\t\treturn date.isValid();\n\t\t}\n\t}],\n\n\t['validate-email', {\n\t\terrorMsg: Form.Validator.getMsg.pass('email'),\n\t\ttest: function(element){\n\t\t\t/*\n\t\t\tvar chars = \"[a-z0-9!#$%&'*+/=?^_`{|}~-]\",\n\t\t\t\tlocal = '(?:' + chars + '\\\\.?){0,63}' + chars,\n\n\t\t\t\tlabel = '[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?',\n\t\t\t\thostname = '(?:' + label + '\\\\.)*' + label;\n\n\t\t\t\toctet = '(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)',\n\t\t\t\tipv4 = '\\\\[(?:' + octet + '\\\\.){3}' + octet + '\\\\]',\n\n\t\t\t\tdomain = '(?:' + hostname + '|' + ipv4 + ')';\n\n\t\t\tvar regex = new RegExp('^' + local + '@' + domain + '$', 'i');\n\t\t\t*/\n\t\t\treturn Form.Validator.getValidator('IsEmpty').test(element) || (/^(?:[a-z0-9!#$%&'*+\\/=?^_`{|}~-]\\.?){0,63}[a-z0-9!#$%&'*+\\/=?^_`{|}~-]@(?:(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\])$/i).test(element.get('value'));\n\t\t}\n\t}],\n\n\t['validate-url', {\n\t\terrorMsg: Form.Validator.getMsg.pass('url'),\n\t\ttest: function(element){\n\t\t\treturn Form.Validator.getValidator('IsEmpty').test(element) || (/^(https?|ftp|rmtp|mms):\\/\\/(([A-Z0-9][A-Z0-9_-]*)(\\.[A-Z0-9][A-Z0-9_-]*)+)(:(\\d+))?\\/?/i).test(element.get('value'));\n\t\t}\n\t}],\n\n\t['validate-currency-dollar', {\n\t\terrorMsg: Form.Validator.getMsg.pass('currencyDollar'),\n\t\ttest: function(element){\n\t\t\treturn Form.Validator.getValidator('IsEmpty').test(element) || (/^\\$?\\-?([1-9]{1}[0-9]{0,2}(\\,[0-9]{3})*(\\.[0-9]{0,2})?|[1-9]{1}\\d*(\\.[0-9]{0,2})?|0(\\.[0-9]{0,2})?|(\\.[0-9]{1,2})?)$/).test(element.get('value'));\n\t\t}\n\t}],\n\n\t['validate-one-required', {\n\t\terrorMsg: Form.Validator.getMsg.pass('oneRequired'),\n\t\ttest: function(element, props){\n\t\t\tvar p = document.id(props['validate-one-required']) || element.getParent(props['validate-one-required']);\n\t\t\treturn p.getElements('input').some(function(el){\n\t\t\t\tif (['checkbox', 'radio'].contains(el.get('type'))) return el.get('checked');\n\t\t\t\treturn el.get('value');\n\t\t\t});\n\t\t}\n\t}]\n\n]);\n\nElement.Properties.validator = {\n\n\tset: function(options){\n\t\tthis.get('validator').setOptions(options);\n\t},\n\n\tget: function(){\n\t\tvar validator = this.retrieve('validator');\n\t\tif (!validator){\n\t\t\tvalidator = new Form.Validator(this);\n\t\t\tthis.store('validator', validator);\n\t\t}\n\t\treturn validator;\n\t}\n\n};\n\nElement.implement({\n\n\tvalidate: function(options){\n\t\tif (options) this.set('validator', options);\n\t\treturn this.get('validator').validate();\n\t}\n\n});\n\n\n\n\n\n\n\n/*\n---\n\nscript: Form.Validator.Inline.js\n\nname: Form.Validator.Inline\n\ndescription: Extends Form.Validator to add inline messages.\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n\nrequires:\n - /Form.Validator\n\nprovides: [Form.Validator.Inline]\n\n...\n*/\n\nForm.Validator.Inline = new Class({\n\n\tExtends: Form.Validator,\n\n\toptions: {\n\t\tshowError: function(errorElement){\n\t\t\tif (errorElement.reveal) errorElement.reveal();\n\t\t\telse errorElement.setStyle('display', 'block');\n\t\t},\n\t\thideError: function(errorElement){\n\t\t\tif (errorElement.dissolve) errorElement.dissolve();\n\t\t\telse errorElement.setStyle('display', 'none');\n\t\t},\n\t\tscrollToErrorsOnSubmit: true,\n\t\tscrollToErrorsOnBlur: false,\n\t\tscrollToErrorsOnChange: false,\n\t\tscrollFxOptions: {\n\t\t\ttransition: 'quad:out',\n\t\t\toffset: {\n\t\t\t\ty: -20\n\t\t\t}\n\t\t}\n\t},\n\n\tinitialize: function(form, options){\n\t\tthis.parent(form, options);\n\t\tthis.addEvent('onElementValidate', function(isValid, field, className, warn){\n\t\t\tvar validator = this.getValidator(className);\n\t\t\tif (!isValid && validator.getError(field)){\n\t\t\t\tif (warn) field.addClass('warning');\n\t\t\t\tvar advice = this.makeAdvice(className, field, validator.getError(field), warn);\n\t\t\t\tthis.insertAdvice(advice, field);\n\t\t\t\tthis.showAdvice(className, field);\n\t\t\t} else {\n\t\t\t\tthis.hideAdvice(className, field);\n\t\t\t}\n\t\t});\n\t},\n\n\tmakeAdvice: function(className, field, error, warn){\n\t\tvar errorMsg = (warn) ? this.warningPrefix : this.errorPrefix;\n\t\t\terrorMsg += (this.options.useTitles) ? field.title || error:error;\n\t\tvar cssClass = (warn) ? 'warning-advice' : 'validation-advice';\n\t\tvar advice = this.getAdvice(className, field);\n\t\tif (advice){\n\t\t\tadvice = advice.set('html', errorMsg);\n\t\t} else {\n\t\t\tadvice = new Element('div', {\n\t\t\t\thtml: errorMsg,\n\t\t\t\tstyles: { display: 'none' },\n\t\t\t\tid: 'advice-' + className.split(':')[0] + '-' + this.getFieldId(field)\n\t\t\t}).addClass(cssClass);\n\t\t}\n\t\tfield.store('$moo:advice-' + className, advice);\n\t\treturn advice;\n\t},\n\n\tgetFieldId : function(field){\n\t\treturn field.id ? field.id : field.id = 'input_' + field.name;\n\t},\n\n\tshowAdvice: function(className, field){\n\t\tvar advice = this.getAdvice(className, field);\n\t\tif (\n\t\t\tadvice &&\n\t\t\t!field.retrieve('$moo:' + this.getPropName(className)) &&\n\t\t\t(\n\t\t\t\tadvice.getStyle('display') == 'none' ||\n\t\t\t\tadvice.getStyle('visiblity') == 'hidden' ||\n\t\t\t\tadvice.getStyle('opacity') == 0\n\t\t\t)\n\t\t){\n\t\t\tfield.store('$moo:' + this.getPropName(className), true);\n\t\t\tthis.options.showError(advice);\n\t\t\tthis.fireEvent('showAdvice', [field, advice, className]);\n\t\t}\n\t},\n\n\thideAdvice: function(className, field){\n\t\tvar advice = this.getAdvice(className, field);\n\t\tif (advice && field.retrieve('$moo:' + this.getPropName(className))){\n\t\t\tfield.store('$moo:' + this.getPropName(className), false);\n\t\t\tthis.options.hideError(advice);\n\t\t\tthis.fireEvent('hideAdvice', [field, advice, className]);\n\t\t}\n\t},\n\n\tgetPropName: function(className){\n\t\treturn 'advice' + className;\n\t},\n\n\tresetField: function(field){\n\t\tfield = document.id(field);\n\t\tif (!field) return this;\n\t\tthis.parent(field);\n\t\tfield.get('validators').each(function(className){\n\t\t\tthis.hideAdvice(className, field);\n\t\t}, this);\n\t\treturn this;\n\t},\n\n\tgetAllAdviceMessages: function(field, force){\n\t\tvar advice = [];\n\t\tif (field.hasClass('ignoreValidation') && !force) return advice;\n\t\tvar validators = field.get('validators').some(function(cn){\n\t\t\tvar warner = cn.test('^warn-') || field.hasClass('warnOnly');\n\t\t\tif (warner) cn = cn.replace(/^warn-/, '');\n\t\t\tvar validator = this.getValidator(cn);\n\t\t\tif (!validator) return;\n\t\t\tadvice.push({\n\t\t\t\tmessage: validator.getError(field),\n\t\t\t\twarnOnly: warner,\n\t\t\t\tpassed: validator.test(),\n\t\t\t\tvalidator: validator\n\t\t\t});\n\t\t}, this);\n\t\treturn advice;\n\t},\n\n\tgetAdvice: function(className, field){\n\t\treturn field.retrieve('$moo:advice-' + className);\n\t},\n\n\tinsertAdvice: function(advice, field){\n\t\t//Check for error position prop\n\t\tvar props = field.get('validatorProps');\n\t\t//Build advice\n\t\tif (!props.msgPos || !document.id(props.msgPos)){\n\t\t\tif (field.type && field.type.toLowerCase() == 'radio') field.getParent().adopt(advice);\n\t\t\telse advice.inject(document.id(field), 'after');\n\t\t} else {\n\t\t\tdocument.id(props.msgPos).grab(advice);\n\t\t}\n\t},\n\n\tvalidateField: function(field, force, scroll){\n\t\tvar result = this.parent(field, force);\n\t\tif (((this.options.scrollToErrorsOnSubmit && scroll == null) || scroll) && !result){\n\t\t\tvar failed = document.id(this).getElement('.validation-failed');\n\t\t\tvar par = document.id(this).getParent();\n\t\t\twhile (par != document.body && par.getScrollSize().y == par.getSize().y){\n\t\t\t\tpar = par.getParent();\n\t\t\t}\n\t\t\tvar fx = par.retrieve('$moo:fvScroller');\n\t\t\tif (!fx && window.Fx && Fx.Scroll){\n\t\t\t\tfx = new Fx.Scroll(par, this.options.scrollFxOptions);\n\t\t\t\tpar.store('$moo:fvScroller', fx);\n\t\t\t}\n\t\t\tif (failed){\n\t\t\t\tif (fx) fx.toElement(failed);\n\t\t\t\telse par.scrollTo(par.getScroll().x, failed.getPosition(par).y - 20);\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t},\n\n\twatchFields: function(fields){\n\t\tfields.each(function(el){\n\t\tif (this.options.evaluateFieldsOnBlur){\n\t\t\tel.addEvent('blur', this.validationMonitor.pass([el, false, this.options.scrollToErrorsOnBlur], this));\n\t\t}\n\t\tif (this.options.evaluateFieldsOnChange){\n\t\t\t\tel.addEvent('change', this.validationMonitor.pass([el, true, this.options.scrollToErrorsOnChange], this));\n\t\t\t}\n\t\t}, this);\n\t}\n\n});\n\n\n/*\n---\n\nscript: Form.Validator.Extras.js\n\nname: Form.Validator.Extras\n\ndescription: Additional validators for the Form.Validator class.\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n\nrequires:\n - /Form.Validator\n\nprovides: [Form.Validator.Extras]\n\n...\n*/\nForm.Validator.addAllThese([\n\n\t['validate-enforce-oncheck', {\n\t\ttest: function(element, props){\n\t\t\tvar fv = element.getParent('form').retrieve('validator');\n\t\t\tif (!fv) return true;\n\t\t\t(props.toEnforce || document.id(props.enforceChildrenOf).getElements('input, select, textarea')).map(function(item){\n\t\t\t\tif (element.checked){\n\t\t\t\t\tfv.enforceField(item);\n\t\t\t\t} else {\n\t\t\t\t\tfv.ignoreField(item);\n\t\t\t\t\tfv.resetField(item);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn true;\n\t\t}\n\t}],\n\n\t['validate-ignore-oncheck', {\n\t\ttest: function(element, props){\n\t\t\tvar fv = element.getParent('form').retrieve('validator');\n\t\t\tif (!fv) return true;\n\t\t\t(props.toIgnore || document.id(props.ignoreChildrenOf).getElements('input, select, textarea')).each(function(item){\n\t\t\t\tif (element.checked){\n\t\t\t\t\tfv.ignoreField(item);\n\t\t\t\t\tfv.resetField(item);\n\t\t\t\t} else {\n\t\t\t\t\tfv.enforceField(item);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn true;\n\t\t}\n\t}],\n\n\t['validate-nospace', {\n\t\terrorMsg: function(){\n\t\t\treturn Form.Validator.getMsg('noSpace');\n\t\t},\n\t\ttest: function(element, props){\n\t\t\treturn !element.get('value').test(/\\s/);\n\t\t}\n\t}],\n\n\t['validate-toggle-oncheck', {\n\t\ttest: function(element, props){\n\t\t\tvar fv = element.getParent('form').retrieve('validator');\n\t\t\tif (!fv) return true;\n\t\t\tvar eleArr = props.toToggle || document.id(props.toToggleChildrenOf).getElements('input, select, textarea');\n\t\t\tif (!element.checked){\n\t\t\t\teleArr.each(function(item){\n\t\t\t\t\tfv.ignoreField(item);\n\t\t\t\t\tfv.resetField(item);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\teleArr.each(function(item){\n\t\t\t\t\tfv.enforceField(item);\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}],\n\n\t['validate-reqchk-bynode', {\n\t\terrorMsg: function(){\n\t\t\treturn Form.Validator.getMsg('reqChkByNode');\n\t\t},\n\t\ttest: function(element, props){\n\t\t\treturn (document.id(props.nodeId).getElements(props.selector || 'input[type=checkbox], input[type=radio]')).some(function(item){\n\t\t\t\treturn item.checked;\n\t\t\t});\n\t\t}\n\t}],\n\n\t['validate-required-check', {\n\t\terrorMsg: function(element, props){\n\t\t\treturn props.useTitle ? element.get('title') : Form.Validator.getMsg('requiredChk');\n\t\t},\n\t\ttest: function(element, props){\n\t\t\treturn !!element.checked;\n\t\t}\n\t}],\n\n\t['validate-reqchk-byname', {\n\t\terrorMsg: function(element, props){\n\t\t\treturn Form.Validator.getMsg('reqChkByName').substitute({label: props.label || element.get('type')});\n\t\t},\n\t\ttest: function(element, props){\n\t\t\tvar grpName = props.groupName || element.get('name');\n\t\t\tvar oneCheckedItem = $$(document.getElementsByName(grpName)).some(function(item, index){\n\t\t\t\treturn item.checked;\n\t\t\t});\n\t\t\tvar fv = element.getParent('form').retrieve('validator');\n\t\t\tif (oneCheckedItem && fv) fv.resetField(element);\n\t\t\treturn oneCheckedItem;\n\t\t}\n\t}],\n\n\t['validate-match', {\n\t\terrorMsg: function(element, props){\n\t\t\treturn Form.Validator.getMsg('match').substitute({matchName: props.matchName || document.id(props.matchInput).get('name')});\n\t\t},\n\t\ttest: function(element, props){\n\t\t\tvar eleVal = element.get('value');\n\t\t\tvar matchVal = document.id(props.matchInput) && document.id(props.matchInput).get('value');\n\t\t\treturn eleVal && matchVal ? eleVal == matchVal : true;\n\t\t}\n\t}],\n\n\t['validate-after-date', {\n\t\terrorMsg: function(element, props){\n\t\t\treturn Form.Validator.getMsg('afterDate').substitute({\n\t\t\t\tlabel: props.afterLabel || (props.afterElement ? Form.Validator.getMsg('startDate') : Form.Validator.getMsg('currentDate'))\n\t\t\t});\n\t\t},\n\t\ttest: function(element, props){\n\t\t\tvar start = document.id(props.afterElement) ? Date.parse(document.id(props.afterElement).get('value')) : new Date();\n\t\t\tvar end = Date.parse(element.get('value'));\n\t\t\treturn end && start ? end >= start : true;\n\t\t}\n\t}],\n\n\t['validate-before-date', {\n\t\terrorMsg: function(element, props){\n\t\t\treturn Form.Validator.getMsg('beforeDate').substitute({\n\t\t\t\tlabel: props.beforeLabel || (props.beforeElement ? Form.Validator.getMsg('endDate') : Form.Validator.getMsg('currentDate'))\n\t\t\t});\n\t\t},\n\t\ttest: function(element, props){\n\t\t\tvar start = Date.parse(element.get('value'));\n\t\t\tvar end = document.id(props.beforeElement) ? Date.parse(document.id(props.beforeElement).get('value')) : new Date();\n\t\t\treturn end && start ? end >= start : true;\n\t\t}\n\t}],\n\n\t['validate-custom-required', {\n\t\terrorMsg: function(){\n\t\t\treturn Form.Validator.getMsg('required');\n\t\t},\n\t\ttest: function(element, props){\n\t\t\treturn element.get('value') != props.emptyValue;\n\t\t}\n\t}],\n\n\t['validate-same-month', {\n\t\terrorMsg: function(element, props){\n\t\t\tvar startMo = document.id(props.sameMonthAs) && document.id(props.sameMonthAs).get('value');\n\t\t\tvar eleVal = element.get('value');\n\t\t\tif (eleVal != '') return Form.Validator.getMsg(startMo ? 'sameMonth' : 'startMonth');\n\t\t},\n\t\ttest: function(element, props){\n\t\t\tvar d1 = Date.parse(element.get('value'));\n\t\t\tvar d2 = Date.parse(document.id(props.sameMonthAs) && document.id(props.sameMonthAs).get('value'));\n\t\t\treturn d1 && d2 ? d1.format('%B') == d2.format('%B') : true;\n\t\t}\n\t}],\n\n\n\t['validate-cc-num', {\n\t\terrorMsg: function(element){\n\t\t\tvar ccNum = element.get('value').replace(/[^0-9]/g, '');\n\t\t\treturn Form.Validator.getMsg('creditcard').substitute({length: ccNum.length});\n\t\t},\n\t\ttest: function(element){\n\t\t\t// required is a different test\n\t\t\tif (Form.Validator.getValidator('IsEmpty').test(element)) return true;\n\n\t\t\t// Clean number value\n\t\t\tvar ccNum = element.get('value');\n\t\t\tccNum = ccNum.replace(/[^0-9]/g, '');\n\n\t\t\tvar valid_type = false;\n\n\t\t\tif (ccNum.test(/^4[0-9]{12}([0-9]{3})?$/)) valid_type = 'Visa';\n\t\t\telse if (ccNum.test(/^5[1-5]([0-9]{14})$/)) valid_type = 'Master Card';\n\t\t\telse if (ccNum.test(/^3[47][0-9]{13}$/)) valid_type = 'American Express';\n\t\t\telse if (ccNum.test(/^6011[0-9]{12}$/)) valid_type = 'Discover';\n\n\t\t\tif (valid_type){\n\t\t\t\tvar sum = 0;\n\t\t\t\tvar cur = 0;\n\n\t\t\t\tfor (var i=ccNum.length-1; i>=0; --i){\n\t\t\t\t\tcur = ccNum.charAt(i).toInt();\n\t\t\t\t\tif (cur == 0) continue;\n\n\t\t\t\t\tif ((ccNum.length-i) % 2 == 0) cur += cur;\n\t\t\t\t\tif (cur > 9){\n\t\t\t\t\t\tcur = cur.toString().charAt(0).toInt() + cur.toString().charAt(1).toInt();\n\t\t\t\t\t}\n\n\t\t\t\t\tsum += cur;\n\t\t\t\t}\n\t\t\t\tif ((sum % 10) == 0) return true;\n\t\t\t}\n\n\t\t\tvar chunks = '';\n\t\t\twhile (ccNum != ''){\n\t\t\t\tchunks += ' ' + ccNum.substr(0,4);\n\t\t\t\tccNum = ccNum.substr(4);\n\t\t\t}\n\n\t\t\telement.getParent('form').retrieve('validator').ignoreField(element);\n\t\t\telement.set('value', chunks.clean());\n\t\t\telement.getParent('form').retrieve('validator').enforceField(element);\n\t\t\treturn false;\n\t\t}\n\t}]\n\n\n]);\n\n\n/*\n---\n\nscript: OverText.js\n\nname: OverText\n\ndescription: Shows text over an input that disappears when the user clicks into it. The text remains hidden if the user adds a value.\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n\nrequires:\n - Core/Options\n - Core/Events\n - Core/Element.Event\n - Class.Binds\n - Class.Occlude\n - Element.Position\n - Element.Shortcuts\n\nprovides: [OverText]\n\n...\n*/\n\nvar OverText = new Class({\n\n\tImplements: [Options, Events, Class.Occlude],\n\n\tBinds: ['reposition', 'assert', 'focus', 'hide'],\n\n\toptions: {/*\n\t\ttextOverride: null,\n\t\tonFocus: function(){},\n\t\tonTextHide: function(textEl, inputEl){},\n\t\tonTextShow: function(textEl, inputEl){}, */\n\t\telement: 'label',\n\t\tlabelClass: 'overTxtLabel',\n\t\tpositionOptions: {\n\t\t\tposition: 'upperLeft',\n\t\t\tedge: 'upperLeft',\n\t\t\toffset: {\n\t\t\t\tx: 4,\n\t\t\t\ty: 2\n\t\t\t}\n\t\t},\n\t\tpoll: false,\n\t\tpollInterval: 250,\n\t\twrap: false\n\t},\n\n\tproperty: 'OverText',\n\n\tinitialize: function(element, options){\n\t\telement = this.element = document.id(element);\n\n\t\tif (this.occlude()) return this.occluded;\n\t\tthis.setOptions(options);\n\n\t\tthis.attach(element);\n\t\tOverText.instances.push(this);\n\n\t\tif (this.options.poll) this.poll();\n\t},\n\n\ttoElement: function(){\n\t\treturn this.element;\n\t},\n\n\tattach: function(){\n\t\tvar element = this.element,\n\t\t\toptions = this.options,\n\t\t\tvalue = options.textOverride || element.get('alt') || element.get('title');\n\n\t\tif (!value) return this;\n\n\t\tvar text = this.text = new Element(options.element, {\n\t\t\t'class': options.labelClass,\n\t\t\tstyles: {\n\t\t\t\tlineHeight: 'normal',\n\t\t\t\tposition: 'absolute',\n\t\t\t\tcursor: 'text'\n\t\t\t},\n\t\t\thtml: value,\n\t\t\tevents: {\n\t\t\t\tclick: this.hide.pass(options.element == 'label', this)\n\t\t\t}\n\t\t}).inject(element, 'after');\n\n\t\tif (options.element == 'label'){\n\t\t\tif (!element.get('id')) element.set('id', 'input_' + String.uniqueID());\n\t\t\ttext.set('for', element.get('id'));\n\t\t}\n\n\t\tif (options.wrap){\n\t\t\tthis.textHolder = new Element('div.overTxtWrapper', {\n\t\t\t\tstyles: {\n\t\t\t\t\tlineHeight: 'normal',\n\t\t\t\t\tposition: 'relative'\n\t\t\t\t}\n\t\t\t}).grab(text).inject(element, 'before');\n\t\t}\n\n\t\treturn this.enable();\n\t},\n\n\tdestroy: function(){\n\t\tthis.element.eliminate(this.property); // Class.Occlude storage\n\t\tthis.disable();\n\t\tif (this.text) this.text.destroy();\n\t\tif (this.textHolder) this.textHolder.destroy();\n\t\treturn this;\n\t},\n\n\tdisable: function(){\n\t\tthis.element.removeEvents({\n\t\t\tfocus: this.focus,\n\t\t\tblur: this.assert,\n\t\t\tchange: this.assert\n\t\t});\n\t\twindow.removeEvent('resize', this.reposition);\n\t\tthis.hide(true, true);\n\t\treturn this;\n\t},\n\n\tenable: function(){\n\t\tthis.element.addEvents({\n\t\t\tfocus: this.focus,\n\t\t\tblur: this.assert,\n\t\t\tchange: this.assert\n\t\t});\n\t\twindow.addEvent('resize', this.reposition);\n\t\tthis.reposition();\n\t\treturn this;\n\t},\n\n\twrap: function(){\n\t\tif (this.options.element == 'label'){\n\t\t\tif (!this.element.get('id')) this.element.set('id', 'input_' + String.uniqueID());\n\t\t\tthis.text.set('for', this.element.get('id'));\n\t\t}\n\t},\n\n\tstartPolling: function(){\n\t\tthis.pollingPaused = false;\n\t\treturn this.poll();\n\t},\n\n\tpoll: function(stop){\n\t\t//start immediately\n\t\t//pause on focus\n\t\t//resumeon blur\n\t\tif (this.poller && !stop) return this;\n\t\tif (stop){\n\t\t\tclearInterval(this.poller);\n\t\t} else {\n\t\t\tthis.poller = (function(){\n\t\t\t\tif (!this.pollingPaused) this.assert(true);\n\t\t\t}).periodical(this.options.pollInterval, this);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tstopPolling: function(){\n\t\tthis.pollingPaused = true;\n\t\treturn this.poll(true);\n\t},\n\n\tfocus: function(){\n\t\tif (this.text && (!this.text.isDisplayed() || this.element.get('disabled'))) return this;\n\t\treturn this.hide();\n\t},\n\n\thide: function(suppressFocus, force){\n\t\tif (this.text && (this.text.isDisplayed() && (!this.element.get('disabled') || force))){\n\t\t\tthis.text.hide();\n\t\t\tthis.fireEvent('textHide', [this.text, this.element]);\n\t\t\tthis.pollingPaused = true;\n\t\t\tif (!suppressFocus){\n\t\t\t\ttry {\n\t\t\t\t\tthis.element.fireEvent('focus');\n\t\t\t\t\tthis.element.focus();\n\t\t\t\t} catch(e){} //IE barfs if you call focus on hidden elements\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t},\n\n\tshow: function(){\n\t\tif (this.text && !this.text.isDisplayed()){\n\t\t\tthis.text.show();\n\t\t\tthis.reposition();\n\t\t\tthis.fireEvent('textShow', [this.text, this.element]);\n\t\t\tthis.pollingPaused = false;\n\t\t}\n\t\treturn this;\n\t},\n\n\ttest: function(){\n\t\treturn !this.element.get('value');\n\t},\n\n\tassert: function(suppressFocus){\n\t\treturn this[this.test() ? 'show' : 'hide'](suppressFocus);\n\t},\n\n\treposition: function(){\n\t\tthis.assert(true);\n\t\tif (!this.element.isVisible()) return this.stopPolling().hide();\n\t\tif (this.text && this.test()){\n\t\t\tthis.text.position(Object.merge(this.options.positionOptions, {\n\t\t\t\trelativeTo: this.element\n\t\t\t}));\n\t\t}\n\t\treturn this;\n\t}\n\n});\n\nOverText.instances = [];\n\nObject.append(OverText, {\n\n\teach: function(fn){\n\t\treturn OverText.instances.each(function(ot, i){\n\t\t\tif (ot.element && ot.text) fn.call(OverText, ot, i);\n\t\t});\n\t},\n\n\tupdate: function(){\n\n\t\treturn OverText.each(function(ot){\n\t\t\treturn ot.reposition();\n\t\t});\n\n\t},\n\n\thideAll: function(){\n\n\t\treturn OverText.each(function(ot){\n\t\t\treturn ot.hide(true, true);\n\t\t});\n\n\t},\n\n\tshowAll: function(){\n\t\treturn OverText.each(function(ot){\n\t\t\treturn ot.show();\n\t\t});\n\t}\n\n});\n\n\n\n/*\n---\n\nscript: Fx.Elements.js\n\nname: Fx.Elements\n\ndescription: Effect to change any number of CSS properties of any number of Elements.\n\nlicense: MIT-style license\n\nauthors:\n - Valerio Proietti\n\nrequires:\n - Core/Fx.CSS\n - /MooTools.More\n\nprovides: [Fx.Elements]\n\n...\n*/\n\nFx.Elements = new Class({\n\n\tExtends: Fx.CSS,\n\n\tinitialize: function(elements, options){\n\t\tthis.elements = this.subject = $$(elements);\n\t\tthis.parent(options);\n\t},\n\n\tcompute: function(from, to, delta){\n\t\tvar now = {};\n\n\t\tfor (var i in from){\n\t\t\tvar iFrom = from[i], iTo = to[i], iNow = now[i] = {};\n\t\t\tfor (var p in iFrom) iNow[p] = this.parent(iFrom[p], iTo[p], delta);\n\t\t}\n\n\t\treturn now;\n\t},\n\n\tset: function(now){\n\t\tfor (var i in now){\n\t\t\tif (!this.elements[i]) continue;\n\n\t\t\tvar iNow = now[i];\n\t\t\tfor (var p in iNow) this.render(this.elements[i], p, iNow[p], this.options.unit);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tstart: function(obj){\n\t\tif (!this.check(obj)) return this;\n\t\tvar from = {}, to = {};\n\n\t\tfor (var i in obj){\n\t\t\tif (!this.elements[i]) continue;\n\n\t\t\tvar iProps = obj[i], iFrom = from[i] = {}, iTo = to[i] = {};\n\n\t\t\tfor (var p in iProps){\n\t\t\t\tvar parsed = this.prepare(this.elements[i], p, iProps[p]);\n\t\t\t\tiFrom[p] = parsed.from;\n\t\t\t\tiTo[p] = parsed.to;\n\t\t\t}\n\t\t}\n\n\t\treturn this.parent(from, to);\n\t}\n\n});\n\n\n/*\n---\n\nscript: Fx.Accordion.js\n\nname: Fx.Accordion\n\ndescription: An Fx.Elements extension which allows you to easily create accordion type controls.\n\nlicense: MIT-style license\n\nauthors:\n - Valerio Proietti\n\nrequires:\n - Core/Element.Event\n - /Fx.Elements\n\nprovides: [Fx.Accordion]\n\n...\n*/\n\nFx.Accordion = new Class({\n\n\tExtends: Fx.Elements,\n\n\toptions: {/*\n\t\tonActive: function(toggler, section){},\n\t\tonBackground: function(toggler, section){},*/\n\t\tfixedHeight: false,\n\t\tfixedWidth: false,\n\t\tdisplay: 0,\n\t\tshow: false,\n\t\theight: true,\n\t\twidth: false,\n\t\topacity: true,\n\t\talwaysHide: false,\n\t\ttrigger: 'click',\n\t\tinitialDisplayFx: true,\n\t\tresetHeight: true\n\t},\n\n\tinitialize: function(){\n\t\tvar defined = function(obj){\n\t\t\treturn obj != null;\n\t\t};\n\n\t\tvar params = Array.link(arguments, {\n\t\t\t'container': Type.isElement, //deprecated\n\t\t\t'options': Type.isObject,\n\t\t\t'togglers': defined,\n\t\t\t'elements': defined\n\t\t});\n\t\tthis.parent(params.elements, params.options);\n\n\t\tvar options = this.options,\n\t\t\ttogglers = this.togglers = $$(params.togglers);\n\n\t\tthis.previous = -1;\n\t\tthis.internalChain = new Chain();\n\n\t\tif (options.alwaysHide) this.options.link = 'chain';\n\n\t\tif (options.show || this.options.show === 0){\n\t\t\toptions.display = false;\n\t\t\tthis.previous = options.show;\n\t\t}\n\n\t\tif (options.start){\n\t\t\toptions.display = false;\n\t\t\toptions.show = false;\n\t\t}\n\n\t\tvar effects = this.effects = {};\n\n\t\tif (options.opacity) effects.opacity = 'fullOpacity';\n\t\tif (options.width) effects.width = options.fixedWidth ? 'fullWidth' : 'offsetWidth';\n\t\tif (options.height) effects.height = options.fixedHeight ? 'fullHeight' : 'scrollHeight';\n\n\t\tfor (var i = 0, l = togglers.length; i < l; i++) this.addSection(togglers[i], this.elements[i]);\n\n\t\tthis.elements.each(function(el, i){\n\t\t\tif (options.show === i){\n\t\t\t\tthis.fireEvent('active', [togglers[i], el]);\n\t\t\t} else {\n\t\t\t\tfor (var fx in effects) el.setStyle(fx, 0);\n\t\t\t}\n\t\t}, this);\n\n\t\tif (options.display || options.display === 0 || options.initialDisplayFx === false){\n\t\t\tthis.display(options.display, options.initialDisplayFx);\n\t\t}\n\n\t\tif (options.fixedHeight !== false) options.resetHeight = false;\n\t\tthis.addEvent('complete', this.internalChain.callChain.bind(this.internalChain));\n\t},\n\n\taddSection: function(toggler, element){\n\t\ttoggler = document.id(toggler);\n\t\telement = document.id(element);\n\t\tthis.togglers.include(toggler);\n\t\tthis.elements.include(element);\n\n\t\tvar togglers = this.togglers,\n\t\t\toptions = this.options,\n\t\t\ttest = togglers.contains(toggler),\n\t\t\tidx = togglers.indexOf(toggler),\n\t\t\tdisplayer = this.display.pass(idx, this);\n\n\t\ttoggler.store('accordion:display', displayer)\n\t\t\t.addEvent(options.trigger, displayer);\n\n\t\tif (options.height) element.setStyles({'padding-top': 0, 'border-top': 'none', 'padding-bottom': 0, 'border-bottom': 'none'});\n\t\tif (options.width) element.setStyles({'padding-left': 0, 'border-left': 'none', 'padding-right': 0, 'border-right': 'none'});\n\n\t\telement.fullOpacity = 1;\n\t\tif (options.fixedWidth) element.fullWidth = options.fixedWidth;\n\t\tif (options.fixedHeight) element.fullHeight = options.fixedHeight;\n\t\telement.setStyle('overflow', 'hidden');\n\n\t\tif (!test) for (var fx in this.effects){\n\t\t\telement.setStyle(fx, 0);\n\t\t}\n\t\treturn this;\n\t},\n\n\tremoveSection: function(toggler, displayIndex){\n\t\tvar togglers = this.togglers,\n\t\t\tidx = togglers.indexOf(toggler),\n\t\t\telement = this.elements[idx];\n\n\t\tvar remover = function(){\n\t\t\ttogglers.erase(toggler);\n\t\t\tthis.elements.erase(element);\n\t\t\tthis.detach(toggler);\n\t\t}.bind(this);\n\n\t\tif (this.now == idx || displayIndex != null){\n\t\t\tthis.display(displayIndex != null ? displayIndex : (idx - 1 >= 0 ? idx - 1 : 0)).chain(remover);\n\t\t} else {\n\t\t\tremover();\n\t\t}\n\t\treturn this;\n\t},\n\n\tdetach: function(toggler){\n\t\tvar remove = function(toggler){\n\t\t\ttoggler.removeEvent(this.options.trigger, toggler.retrieve('accordion:display'));\n\t\t}.bind(this);\n\n\t\tif (!toggler) this.togglers.each(remove);\n\t\telse remove(toggler);\n\t\treturn this;\n\t},\n\n\tdisplay: function(index, useFx){\n\t\tif (!this.check(index, useFx)) return this;\n\n\t\tvar obj = {},\n\t\t\telements = this.elements,\n\t\t\toptions = this.options,\n\t\t\teffects = this.effects;\n\n\t\tif (useFx == null) useFx = true;\n\t\tif (typeOf(index) == 'element') index = elements.indexOf(index);\n\t\tif (index == this.previous && !options.alwaysHide) return this;\n\n\t\tif (options.resetHeight){\n\t\t\tvar prev = elements[this.previous];\n\t\t\tif (prev && !this.selfHidden){\n\t\t\t\tfor (var fx in effects) prev.setStyle(fx, prev[effects[fx]]);\n\t\t\t}\n\t\t}\n\n\t\tif ((this.timer && options.link == 'chain') || (index === this.previous && !options.alwaysHide)) return this;\n\n\t\tthis.previous = index;\n\t\tthis.selfHidden = false;\n\n\t\telements.each(function(el, i){\n\t\t\tobj[i] = {};\n\t\t\tvar hide;\n\t\t\tif (i != index){\n\t\t\t\thide = true;\n\t\t\t} else if (options.alwaysHide && ((el.offsetHeight > 0 && options.height) || el.offsetWidth > 0 && options.width)){\n\t\t\t\thide = true;\n\t\t\t\tthis.selfHidden = true;\n\t\t\t}\n\t\t\tthis.fireEvent(hide ? 'background' : 'active', [this.togglers[i], el]);\n\t\t\tfor (var fx in effects) obj[i][fx] = hide ? 0 : el[effects[fx]];\n\t\t\tif (!useFx && !hide && options.resetHeight) obj[i].height = 'auto';\n\t\t}, this);\n\n\t\tthis.internalChain.clearChain();\n\t\tthis.internalChain.chain(function(){\n\t\t\tif (options.resetHeight && !this.selfHidden){\n\t\t\t\tvar el = elements[index];\n\t\t\t\tif (el) el.setStyle('height', 'auto');\n\t\t\t}\n\t\t}.bind(this));\n\n\t\treturn useFx ? this.start(obj) : this.set(obj).internalChain.callChain();\n\t}\n\n});\n\n\n\n\n/*\n---\n\nscript: Fx.Move.js\n\nname: Fx.Move\n\ndescription: Defines Fx.Move, a class that works with Element.Position.js to transition an element from one location to another.\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n\nrequires:\n - Core/Fx.Morph\n - /Element.Position\n\nprovides: [Fx.Move]\n\n...\n*/\n\nFx.Move = new Class({\n\n\tExtends: Fx.Morph,\n\n\toptions: {\n\t\trelativeTo: document.body,\n\t\tposition: 'center',\n\t\tedge: false,\n\t\toffset: {x: 0, y: 0}\n\t},\n\n\tstart: function(destination){\n\t\tvar element = this.element,\n\t\t\ttopLeft = element.getStyles('top', 'left');\n\t\tif (topLeft.top == 'auto' || topLeft.left == 'auto'){\n\t\t\telement.setPosition(element.getPosition(element.getOffsetParent()));\n\t\t}\n\t\treturn this.parent(element.position(Object.merge({}, this.options, destination, {returnPos: true})));\n\t}\n\n});\n\nElement.Properties.move = {\n\n\tset: function(options){\n\t\tthis.get('move').cancel().setOptions(options);\n\t\treturn this;\n\t},\n\n\tget: function(){\n\t\tvar move = this.retrieve('move');\n\t\tif (!move){\n\t\t\tmove = new Fx.Move(this, {link: 'cancel'});\n\t\t\tthis.store('move', move);\n\t\t}\n\t\treturn move;\n\t}\n\n};\n\nElement.implement({\n\n\tmove: function(options){\n\t\tthis.get('move').start(options);\n\t\treturn this;\n\t}\n\n});\n\n\n/*\n---\n\nscript: Fx.Scroll.js\n\nname: Fx.Scroll\n\ndescription: Effect to smoothly scroll any element, including the window.\n\nlicense: MIT-style license\n\nauthors:\n - Valerio Proietti\n\nrequires:\n - Core/Fx\n - Core/Element.Event\n - Core/Element.Dimensions\n - /MooTools.More\n\nprovides: [Fx.Scroll]\n\n...\n*/\n\n(function(){\n\nFx.Scroll = new Class({\n\n\tExtends: Fx,\n\n\toptions: {\n\t\toffset: {x: 0, y: 0},\n\t\twheelStops: true\n\t},\n\n\tinitialize: function(element, options){\n\t\tthis.element = this.subject = document.id(element);\n\t\tthis.parent(options);\n\n\t\tif (typeOf(this.element) != 'element') this.element = document.id(this.element.getDocument().body);\n\n\t\tif (this.options.wheelStops){\n\t\t\tvar stopper = this.element,\n\t\t\t\tcancel = this.cancel.pass(false, this);\n\t\t\tthis.addEvent('start', function(){\n\t\t\t\tstopper.addEvent('mousewheel', cancel);\n\t\t\t}, true);\n\t\t\tthis.addEvent('complete', function(){\n\t\t\t\tstopper.removeEvent('mousewheel', cancel);\n\t\t\t}, true);\n\t\t}\n\t},\n\n\tset: function(){\n\t\tvar now = Array.flatten(arguments);\n\t\tif (Browser.firefox) now = [Math.round(now[0]), Math.round(now[1])]; // not needed anymore in newer firefox versions\n\t\tthis.element.scrollTo(now[0], now[1]);\n\t\treturn this;\n\t},\n\n\tcompute: function(from, to, delta){\n\t\treturn [0, 1].map(function(i){\n\t\t\treturn Fx.compute(from[i], to[i], delta);\n\t\t});\n\t},\n\n\tstart: function(x, y){\n\t\tif (!this.check(x, y)) return this;\n\t\tvar scroll = this.element.getScroll();\n\t\treturn this.parent([scroll.x, scroll.y], [x, y]);\n\t},\n\n\tcalculateScroll: function(x, y){\n\t\tvar element = this.element,\n\t\t\tscrollSize = element.getScrollSize(),\n\t\t\tscroll = element.getScroll(),\n\t\t\tsize = element.getSize(),\n\t\t\toffset = this.options.offset,\n\t\t\tvalues = {x: x, y: y};\n\n\t\tfor (var z in values){\n\t\t\tif (!values[z] && values[z] !== 0) values[z] = scroll[z];\n\t\t\tif (typeOf(values[z]) != 'number') values[z] = scrollSize[z] - size[z];\n\t\t\tvalues[z] += offset[z];\n\t\t}\n\n\t\treturn [values.x, values.y];\n\t},\n\n\ttoTop: function(){\n\t\treturn this.start.apply(this, this.calculateScroll(false, 0));\n\t},\n\n\ttoLeft: function(){\n\t\treturn this.start.apply(this, this.calculateScroll(0, false));\n\t},\n\n\ttoRight: function(){\n\t\treturn this.start.apply(this, this.calculateScroll('right', false));\n\t},\n\n\ttoBottom: function(){\n\t\treturn this.start.apply(this, this.calculateScroll(false, 'bottom'));\n\t},\n\n\ttoElement: function(el, axes){\n\t\taxes = axes ? Array.from(axes) : ['x', 'y'];\n\t\tvar scroll = isBody(this.element) ? {x: 0, y: 0} : this.element.getScroll();\n\t\tvar position = Object.map(document.id(el).getPosition(this.element), function(value, axis){\n\t\t\treturn axes.contains(axis) ? value + scroll[axis] : false;\n\t\t});\n\t\treturn this.start.apply(this, this.calculateScroll(position.x, position.y));\n\t},\n\n\ttoElementEdge: function(el, axes, offset){\n\t\taxes = axes ? Array.from(axes) : ['x', 'y'];\n\t\tel = document.id(el);\n\t\tvar to = {},\n\t\t\tposition = el.getPosition(this.element),\n\t\t\tsize = el.getSize(),\n\t\t\tscroll = this.element.getScroll(),\n\t\t\tcontainerSize = this.element.getSize(),\n\t\t\tedge = {\n\t\t\t\tx: position.x + size.x,\n\t\t\t\ty: position.y + size.y\n\t\t\t};\n\n\t\t['x', 'y'].each(function(axis){\n\t\t\tif (axes.contains(axis)){\n\t\t\t\tif (edge[axis] > scroll[axis] + containerSize[axis]) to[axis] = edge[axis] - containerSize[axis];\n\t\t\t\tif (position[axis] < scroll[axis]) to[axis] = position[axis];\n\t\t\t}\n\t\t\tif (to[axis] == null) to[axis] = scroll[axis];\n\t\t\tif (offset && offset[axis]) to[axis] = to[axis] + offset[axis];\n\t\t}, this);\n\n\t\tif (to.x != scroll.x || to.y != scroll.y) this.start(to.x, to.y);\n\t\treturn this;\n\t},\n\n\ttoElementCenter: function(el, axes, offset){\n\t\taxes = axes ? Array.from(axes) : ['x', 'y'];\n\t\tel = document.id(el);\n\t\tvar to = {},\n\t\t\tposition = el.getPosition(this.element),\n\t\t\tsize = el.getSize(),\n\t\t\tscroll = this.element.getScroll(),\n\t\t\tcontainerSize = this.element.getSize();\n\n\t\t['x', 'y'].each(function(axis){\n\t\t\tif (axes.contains(axis)){\n\t\t\t\tto[axis] = position[axis] - (containerSize[axis] - size[axis]) / 2;\n\t\t\t}\n\t\t\tif (to[axis] == null) to[axis] = scroll[axis];\n\t\t\tif (offset && offset[axis]) to[axis] = to[axis] + offset[axis];\n\t\t}, this);\n\n\t\tif (to.x != scroll.x || to.y != scroll.y) this.start(to.x, to.y);\n\t\treturn this;\n\t}\n\n});\n\n\n\nfunction isBody(element){\n\treturn (/^(?:body|html)$/i).test(element.tagName);\n}\n\n})();\n\n\n/*\n---\n\nscript: Fx.Slide.js\n\nname: Fx.Slide\n\ndescription: Effect to slide an element in and out of view.\n\nlicense: MIT-style license\n\nauthors:\n - Valerio Proietti\n\nrequires:\n - Core/Fx\n - Core/Element.Style\n - /MooTools.More\n\nprovides: [Fx.Slide]\n\n...\n*/\n\nFx.Slide = new Class({\n\n\tExtends: Fx,\n\n\toptions: {\n\t\tmode: 'vertical',\n\t\twrapper: false,\n\t\thideOverflow: true,\n\t\tresetHeight: false\n\t},\n\n\tinitialize: function(element, options){\n\t\telement = this.element = this.subject = document.id(element);\n\t\tthis.parent(options);\n\t\toptions = this.options;\n\n\t\tvar wrapper = element.retrieve('wrapper'),\n\t\t\tstyles = element.getStyles('margin', 'position', 'overflow');\n\n\t\tif (options.hideOverflow) styles = Object.append(styles, {overflow: 'hidden'});\n\t\tif (options.wrapper) wrapper = document.id(options.wrapper).setStyles(styles);\n\n\t\tif (!wrapper) wrapper = new Element('div', {\n\t\t\tstyles: styles\n\t\t}).wraps(element);\n\n\t\telement.store('wrapper', wrapper).setStyle('margin', 0);\n\t\tif (element.getStyle('overflow') == 'visible') element.setStyle('overflow', 'hidden');\n\n\t\tthis.now = [];\n\t\tthis.open = true;\n\t\tthis.wrapper = wrapper;\n\n\t\tthis.addEvent('complete', function(){\n\t\t\tthis.open = (wrapper['offset' + this.layout.capitalize()] != 0);\n\t\t\tif (this.open && this.options.resetHeight) wrapper.setStyle('height', '');\n\t\t}, true);\n\t},\n\n\tvertical: function(){\n\t\tthis.margin = 'margin-top';\n\t\tthis.layout = 'height';\n\t\tthis.offset = this.element.offsetHeight;\n\t},\n\n\thorizontal: function(){\n\t\tthis.margin = 'margin-left';\n\t\tthis.layout = 'width';\n\t\tthis.offset = this.element.offsetWidth;\n\t},\n\n\tset: function(now){\n\t\tthis.element.setStyle(this.margin, now[0]);\n\t\tthis.wrapper.setStyle(this.layout, now[1]);\n\t\treturn this;\n\t},\n\n\tcompute: function(from, to, delta){\n\t\treturn [0, 1].map(function(i){\n\t\t\treturn Fx.compute(from[i], to[i], delta);\n\t\t});\n\t},\n\n\tstart: function(how, mode){\n\t\tif (!this.check(how, mode)) return this;\n\t\tthis[mode || this.options.mode]();\n\n\t\tvar margin = this.element.getStyle(this.margin).toInt(),\n\t\t\tlayout = this.wrapper.getStyle(this.layout).toInt(),\n\t\t\tcaseIn = [[margin, layout], [0, this.offset]],\n\t\t\tcaseOut = [[margin, layout], [-this.offset, 0]],\n\t\t\tstart;\n\n\t\tswitch (how){\n\t\t\tcase 'in': start = caseIn; break;\n\t\t\tcase 'out': start = caseOut; break;\n\t\t\tcase 'toggle': start = (layout == 0) ? caseIn : caseOut;\n\t\t}\n\t\treturn this.parent(start[0], start[1]);\n\t},\n\n\tslideIn: function(mode){\n\t\treturn this.start('in', mode);\n\t},\n\n\tslideOut: function(mode){\n\t\treturn this.start('out', mode);\n\t},\n\n\thide: function(mode){\n\t\tthis[mode || this.options.mode]();\n\t\tthis.open = false;\n\t\treturn this.set([-this.offset, 0]);\n\t},\n\n\tshow: function(mode){\n\t\tthis[mode || this.options.mode]();\n\t\tthis.open = true;\n\t\treturn this.set([0, this.offset]);\n\t},\n\n\ttoggle: function(mode){\n\t\treturn this.start('toggle', mode);\n\t}\n\n});\n\nElement.Properties.slide = {\n\n\tset: function(options){\n\t\tthis.get('slide').cancel().setOptions(options);\n\t\treturn this;\n\t},\n\n\tget: function(){\n\t\tvar slide = this.retrieve('slide');\n\t\tif (!slide){\n\t\t\tslide = new Fx.Slide(this, {link: 'cancel'});\n\t\t\tthis.store('slide', slide);\n\t\t}\n\t\treturn slide;\n\t}\n\n};\n\nElement.implement({\n\n\tslide: function(how, mode){\n\t\thow = how || 'toggle';\n\t\tvar slide = this.get('slide'), toggle;\n\t\tswitch (how){\n\t\t\tcase 'hide': slide.hide(mode); break;\n\t\t\tcase 'show': slide.show(mode); break;\n\t\t\tcase 'toggle':\n\t\t\t\tvar flag = this.retrieve('slide:flag', slide.open);\n\t\t\t\tslide[flag ? 'slideOut' : 'slideIn'](mode);\n\t\t\t\tthis.store('slide:flag', !flag);\n\t\t\t\ttoggle = true;\n\t\t\tbreak;\n\t\t\tdefault: slide.start(how, mode);\n\t\t}\n\t\tif (!toggle) this.eliminate('slide:flag');\n\t\treturn this;\n\t}\n\n});\n\n\n/*\n---\n\nscript: Fx.SmoothScroll.js\n\nname: Fx.SmoothScroll\n\ndescription: Class for creating a smooth scrolling effect to all internal links on the page.\n\nlicense: MIT-style license\n\nauthors:\n - Valerio Proietti\n\nrequires:\n - Core/Slick.Finder\n - /Fx.Scroll\n\nprovides: [Fx.SmoothScroll]\n\n...\n*/\n\nFx.SmoothScroll = new Class({\n\n\tExtends: Fx.Scroll,\n\n\toptions: {\n\t\taxes: ['x', 'y']\n\t},\n\n\tinitialize: function(options, context){\n\t\tcontext = context || document;\n\t\tthis.doc = context.getDocument();\n\t\tthis.parent(this.doc, options);\n\n\t\tvar win = context.getWindow(),\n\t\t\tlocation = win.location.href.match(/^[^#]*/)[0] + '#',\n\t\t\tlinks = $$(this.options.links || this.doc.links);\n\n\t\tlinks.each(function(link){\n\t\t\tif (link.href.indexOf(location) != 0) return;\n\t\t\tvar anchor = link.href.substr(location.length);\n\t\t\tif (anchor) this.useLink(link, anchor);\n\t\t}, this);\n\n\t\tthis.addEvent('complete', function(){\n\t\t\twin.location.hash = this.anchor;\n\t\t\tthis.element.scrollTo(this.to[0], this.to[1]);\n\t\t}, true);\n\t},\n\n\tuseLink: function(link, anchor){\n\n\t\tlink.addEvent('click', function(event){\n\t\t\tvar el = document.id(anchor) || this.doc.getElement('a[name=' + anchor + ']');\n\t\t\tif (!el) return;\n\n\t\t\tevent.preventDefault();\n\t\t\tthis.toElement(el, this.options.axes).chain(function(){\n\t\t\t\tthis.fireEvent('scrolledTo', [link, el]);\n\t\t\t}.bind(this));\n\n\t\t\tthis.anchor = anchor;\n\n\t\t}.bind(this));\n\n\t\treturn this;\n\t}\n});\n\n\n/*\n---\n\nscript: Fx.Sort.js\n\nname: Fx.Sort\n\ndescription: Defines Fx.Sort, a class that reorders lists with a transition.\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n\nrequires:\n - Core/Element.Dimensions\n - /Fx.Elements\n - /Element.Measure\n\nprovides: [Fx.Sort]\n\n...\n*/\n\nFx.Sort = new Class({\n\n\tExtends: Fx.Elements,\n\n\toptions: {\n\t\tmode: 'vertical'\n\t},\n\n\tinitialize: function(elements, options){\n\t\tthis.parent(elements, options);\n\t\tthis.elements.each(function(el){\n\t\t\tif (el.getStyle('position') == 'static') el.setStyle('position', 'relative');\n\t\t});\n\t\tthis.setDefaultOrder();\n\t},\n\n\tsetDefaultOrder: function(){\n\t\tthis.currentOrder = this.elements.map(function(el, index){\n\t\t\treturn index;\n\t\t});\n\t},\n\n\tsort: function(){\n\t\tif (!this.check(arguments)) return this;\n\t\tvar newOrder = Array.flatten(arguments);\n\n\t\tvar top = 0,\n\t\t\tleft = 0,\n\t\t\tnext = {},\n\t\t\tzero = {},\n\t\t\tvert = this.options.mode == 'vertical';\n\n\t\tvar current = this.elements.map(function(el, index){\n\t\t\tvar size = el.getComputedSize({styles: ['border', 'padding', 'margin']});\n\t\t\tvar val;\n\t\t\tif (vert){\n\t\t\t\tval = {\n\t\t\t\t\ttop: top,\n\t\t\t\t\tmargin: size['margin-top'],\n\t\t\t\t\theight: size.totalHeight\n\t\t\t\t};\n\t\t\t\ttop += val.height - size['margin-top'];\n\t\t\t} else {\n\t\t\t\tval = {\n\t\t\t\t\tleft: left,\n\t\t\t\t\tmargin: size['margin-left'],\n\t\t\t\t\twidth: size.totalWidth\n\t\t\t\t};\n\t\t\t\tleft += val.width;\n\t\t\t}\n\t\t\tvar plane = vert ? 'top' : 'left';\n\t\t\tzero[index] = {};\n\t\t\tvar start = el.getStyle(plane).toInt();\n\t\t\tzero[index][plane] = start || 0;\n\t\t\treturn val;\n\t\t}, this);\n\n\t\tthis.set(zero);\n\t\tnewOrder = newOrder.map(function(i){ return i.toInt(); });\n\t\tif (newOrder.length != this.elements.length){\n\t\t\tthis.currentOrder.each(function(index){\n\t\t\t\tif (!newOrder.contains(index)) newOrder.push(index);\n\t\t\t});\n\t\t\tif (newOrder.length > this.elements.length)\n\t\t\t\tnewOrder.splice(this.elements.length-1, newOrder.length - this.elements.length);\n\t\t}\n\t\tvar margin = 0;\n\t\ttop = left = 0;\n\t\tnewOrder.each(function(item){\n\t\t\tvar newPos = {};\n\t\t\tif (vert){\n\t\t\t\tnewPos.top = top - current[item].top - margin;\n\t\t\t\ttop += current[item].height;\n\t\t\t} else {\n\t\t\t\tnewPos.left = left - current[item].left;\n\t\t\t\tleft += current[item].width;\n\t\t\t}\n\t\t\tmargin = margin + current[item].margin;\n\t\t\tnext[item]=newPos;\n\t\t}, this);\n\t\tvar mapped = {};\n\t\tArray.clone(newOrder).sort().each(function(index){\n\t\t\tmapped[index] = next[index];\n\t\t});\n\t\tthis.start(mapped);\n\t\tthis.currentOrder = newOrder;\n\n\t\treturn this;\n\t},\n\n\trearrangeDOM: function(newOrder){\n\t\tnewOrder = newOrder || this.currentOrder;\n\t\tvar parent = this.elements[0].getParent();\n\t\tvar rearranged = [];\n\t\tthis.elements.setStyle('opacity', 0);\n\t\t//move each element and store the new default order\n\t\tnewOrder.each(function(index){\n\t\t\trearranged.push(this.elements[index].inject(parent).setStyles({\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0\n\t\t\t}));\n\t\t}, this);\n\t\tthis.elements.setStyle('opacity', 1);\n\t\tthis.elements = $$(rearranged);\n\t\tthis.setDefaultOrder();\n\t\treturn this;\n\t},\n\n\tgetDefaultOrder: function(){\n\t\treturn this.elements.map(function(el, index){\n\t\t\treturn index;\n\t\t});\n\t},\n\n\tgetCurrentOrder: function(){\n\t\treturn this.currentOrder;\n\t},\n\n\tforward: function(){\n\t\treturn this.sort(this.getDefaultOrder());\n\t},\n\n\tbackward: function(){\n\t\treturn this.sort(this.getDefaultOrder().reverse());\n\t},\n\n\treverse: function(){\n\t\treturn this.sort(this.currentOrder.reverse());\n\t},\n\n\tsortByElements: function(elements){\n\t\treturn this.sort(elements.map(function(el){\n\t\t\treturn this.elements.indexOf(el);\n\t\t}, this));\n\t},\n\n\tswap: function(one, two){\n\t\tif (typeOf(one) == 'element') one = this.elements.indexOf(one);\n\t\tif (typeOf(two) == 'element') two = this.elements.indexOf(two);\n\n\t\tvar newOrder = Array.clone(this.currentOrder);\n\t\tnewOrder[this.currentOrder.indexOf(one)] = two;\n\t\tnewOrder[this.currentOrder.indexOf(two)] = one;\n\n\t\treturn this.sort(newOrder);\n\t}\n\n});\n\n\n/*\n---\n\nscript: Drag.js\n\nname: Drag\n\ndescription: The base Drag Class. Can be used to drag and resize Elements using mouse events.\n\nlicense: MIT-style license\n\nauthors:\n - Valerio Proietti\n - Tom Occhinno\n - Jan Kassens\n\nrequires:\n - Core/Events\n - Core/Options\n - Core/Element.Event\n - Core/Element.Style\n - Core/Element.Dimensions\n - /MooTools.More\n\nprovides: [Drag]\n...\n\n*/\n\nvar Drag = new Class({\n\n\tImplements: [Events, Options],\n\n\toptions: {/*\n\t\tonBeforeStart: function(thisElement){},\n\t\tonStart: function(thisElement, event){},\n\t\tonSnap: function(thisElement){},\n\t\tonDrag: function(thisElement, event){},\n\t\tonCancel: function(thisElement){},\n\t\tonComplete: function(thisElement, event){},*/\n\t\tsnap: 6,\n\t\tunit: 'px',\n\t\tgrid: false,\n\t\tstyle: true,\n\t\tlimit: false,\n\t\thandle: false,\n\t\tinvert: false,\n\t\tpreventDefault: false,\n\t\tstopPropagation: false,\n\t\tmodifiers: {x: 'left', y: 'top'}\n\t},\n\n\tinitialize: function(){\n\t\tvar params = Array.link(arguments, {\n\t\t\t'options': Type.isObject,\n\t\t\t'element': function(obj){\n\t\t\t\treturn obj != null;\n\t\t\t}\n\t\t});\n\n\t\tthis.element = document.id(params.element);\n\t\tthis.document = this.element.getDocument();\n\t\tthis.setOptions(params.options || {});\n\t\tvar htype = typeOf(this.options.handle);\n\t\tthis.handles = ((htype == 'array' || htype == 'collection') ? $$(this.options.handle) : document.id(this.options.handle)) || this.element;\n\t\tthis.mouse = {'now': {}, 'pos': {}};\n\t\tthis.value = {'start': {}, 'now': {}};\n\n\t\tthis.selection = (Browser.ie) ? 'selectstart' : 'mousedown';\n\n\n\t\tif (Browser.ie && !Drag.ondragstartFixed){\n\t\t\tdocument.ondragstart = Function.from(false);\n\t\t\tDrag.ondragstartFixed = true;\n\t\t}\n\n\t\tthis.bound = {\n\t\t\tstart: this.start.bind(this),\n\t\t\tcheck: this.check.bind(this),\n\t\t\tdrag: this.drag.bind(this),\n\t\t\tstop: this.stop.bind(this),\n\t\t\tcancel: this.cancel.bind(this),\n\t\t\teventStop: Function.from(false)\n\t\t};\n\t\tthis.attach();\n\t},\n\n\tattach: function(){\n\t\tthis.handles.addEvent('mousedown', this.bound.start);\n\t\treturn this;\n\t},\n\n\tdetach: function(){\n\t\tthis.handles.removeEvent('mousedown', this.bound.start);\n\t\treturn this;\n\t},\n\n\tstart: function(event){\n\t\tvar options = this.options;\n\n\t\tif (event.rightClick) return;\n\n\t\tif (options.preventDefault) event.preventDefault();\n\t\tif (options.stopPropagation) event.stopPropagation();\n\t\tthis.mouse.start = event.page;\n\n\t\tthis.fireEvent('beforeStart', this.element);\n\n\t\tvar limit = options.limit;\n\t\tthis.limit = {x: [], y: []};\n\n\t\tvar z, coordinates;\n\t\tfor (z in options.modifiers){\n\t\t\tif (!options.modifiers[z]) continue;\n\n\t\t\tvar style = this.element.getStyle(options.modifiers[z]);\n\n\t\t\t// Some browsers (IE and Opera) don't always return pixels.\n\t\t\tif (style && !style.match(/px$/)){\n\t\t\t\tif (!coordinates) coordinates = this.element.getCoordinates(this.element.getOffsetParent());\n\t\t\t\tstyle = coordinates[options.modifiers[z]];\n\t\t\t}\n\n\t\t\tif (options.style) this.value.now[z] = (style || 0).toInt();\n\t\t\telse this.value.now[z] = this.element[options.modifiers[z]];\n\n\t\t\tif (options.invert) this.value.now[z] *= -1;\n\n\t\t\tthis.mouse.pos[z] = event.page[z] - this.value.now[z];\n\n\t\t\tif (limit && limit[z]){\n\t\t\t\tvar i = 2;\n\t\t\t\twhile (i--){\n\t\t\t\t\tvar limitZI = limit[z][i];\n\t\t\t\t\tif (limitZI || limitZI === 0) this.limit[z][i] = (typeof limitZI == 'function') ? limitZI() : limitZI;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (typeOf(this.options.grid) == 'number') this.options.grid = {\n\t\t\tx: this.options.grid,\n\t\t\ty: this.options.grid\n\t\t};\n\n\t\tvar events = {\n\t\t\tmousemove: this.bound.check,\n\t\t\tmouseup: this.bound.cancel\n\t\t};\n\t\tevents[this.selection] = this.bound.eventStop;\n\t\tthis.document.addEvents(events);\n\t},\n\n\tcheck: function(event){\n\t\tif (this.options.preventDefault) event.preventDefault();\n\t\tvar distance = Math.round(Math.sqrt(Math.pow(event.page.x - this.mouse.start.x, 2) + Math.pow(event.page.y - this.mouse.start.y, 2)));\n\t\tif (distance > this.options.snap){\n\t\t\tthis.cancel();\n\t\t\tthis.document.addEvents({\n\t\t\t\tmousemove: this.bound.drag,\n\t\t\t\tmouseup: this.bound.stop\n\t\t\t});\n\t\t\tthis.fireEvent('start', [this.element, event]).fireEvent('snap', this.element);\n\t\t}\n\t},\n\n\tdrag: function(event){\n\t\tvar options = this.options;\n\n\t\tif (options.preventDefault) event.preventDefault();\n\t\tthis.mouse.now = event.page;\n\n\t\tfor (var z in options.modifiers){\n\t\t\tif (!options.modifiers[z]) continue;\n\t\t\tthis.value.now[z] = this.mouse.now[z] - this.mouse.pos[z];\n\n\t\t\tif (options.invert) this.value.now[z] *= -1;\n\n\t\t\tif (options.limit && this.limit[z]){\n\t\t\t\tif ((this.limit[z][1] || this.limit[z][1] === 0) && (this.value.now[z] > this.limit[z][1])){\n\t\t\t\t\tthis.value.now[z] = this.limit[z][1];\n\t\t\t\t} else if ((this.limit[z][0] || this.limit[z][0] === 0) && (this.value.now[z] < this.limit[z][0])){\n\t\t\t\t\tthis.value.now[z] = this.limit[z][0];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (options.grid[z]) this.value.now[z] -= ((this.value.now[z] - (this.limit[z][0]||0)) % options.grid[z]);\n\n\t\t\tif (options.style) this.element.setStyle(options.modifiers[z], this.value.now[z] + options.unit);\n\t\t\telse this.element[options.modifiers[z]] = this.value.now[z];\n\t\t}\n\n\t\tthis.fireEvent('drag', [this.element, event]);\n\t},\n\n\tcancel: function(event){\n\t\tthis.document.removeEvents({\n\t\t\tmousemove: this.bound.check,\n\t\t\tmouseup: this.bound.cancel\n\t\t});\n\t\tif (event){\n\t\t\tthis.document.removeEvent(this.selection, this.bound.eventStop);\n\t\t\tthis.fireEvent('cancel', this.element);\n\t\t}\n\t},\n\n\tstop: function(event){\n\t\tvar events = {\n\t\t\tmousemove: this.bound.drag,\n\t\t\tmouseup: this.bound.stop\n\t\t};\n\t\tevents[this.selection] = this.bound.eventStop;\n\t\tthis.document.removeEvents(events);\n\t\tif (event) this.fireEvent('complete', [this.element, event]);\n\t}\n\n});\n\nElement.implement({\n\n\tmakeResizable: function(options){\n\t\tvar drag = new Drag(this, Object.merge({\n\t\t\tmodifiers: {\n\t\t\t\tx: 'width',\n\t\t\t\ty: 'height'\n\t\t\t}\n\t\t}, options));\n\n\t\tthis.store('resizer', drag);\n\t\treturn drag.addEvent('drag', function(){\n\t\t\tthis.fireEvent('resize', drag);\n\t\t}.bind(this));\n\t}\n\n});\n\n\n/*\n---\n\nscript: Drag.Move.js\n\nname: Drag.Move\n\ndescription: A Drag extension that provides support for the constraining of draggables to containers and droppables.\n\nlicense: MIT-style license\n\nauthors:\n - Valerio Proietti\n - Tom Occhinno\n - Jan Kassens\n - Aaron Newton\n - Scott Kyle\n\nrequires:\n - Core/Element.Dimensions\n - /Drag\n\nprovides: [Drag.Move]\n\n...\n*/\n\nDrag.Move = new Class({\n\n\tExtends: Drag,\n\n\toptions: {/*\n\t\tonEnter: function(thisElement, overed){},\n\t\tonLeave: function(thisElement, overed){},\n\t\tonDrop: function(thisElement, overed, event){},*/\n\t\tdroppables: [],\n\t\tcontainer: false,\n\t\tprecalculate: false,\n\t\tincludeMargins: true,\n\t\tcheckDroppables: true\n\t},\n\n\tinitialize: function(element, options){\n\t\tthis.parent(element, options);\n\t\telement = this.element;\n\n\t\tthis.droppables = $$(this.options.droppables);\n\t\tthis.container = document.id(this.options.container);\n\n\t\tif (this.container && typeOf(this.container) != 'element')\n\t\t\tthis.container = document.id(this.container.getDocument().body);\n\n\t\tif (this.options.style){\n\t\t\tif (this.options.modifiers.x == 'left' && this.options.modifiers.y == 'top'){\n\t\t\t\tvar parent = element.getOffsetParent(),\n\t\t\t\t\tstyles = element.getStyles('left', 'top');\n\t\t\t\tif (parent && (styles.left == 'auto' || styles.top == 'auto')){\n\t\t\t\t\telement.setPosition(element.getPosition(parent));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (element.getStyle('position') == 'static') element.setStyle('position', 'absolute');\n\t\t}\n\n\t\tthis.addEvent('start', this.checkDroppables, true);\n\t\tthis.overed = null;\n\t},\n\n\tstart: function(event){\n\t\tif (this.container) this.options.limit = this.calculateLimit();\n\n\t\tif (this.options.precalculate){\n\t\t\tthis.positions = this.droppables.map(function(el){\n\t\t\t\treturn el.getCoordinates();\n\t\t\t});\n\t\t}\n\n\t\tthis.parent(event);\n\t},\n\n\tcalculateLimit: function(){\n\t\tvar element = this.element,\n\t\t\tcontainer = this.container,\n\n\t\t\toffsetParent = document.id(element.getOffsetParent()) || document.body,\n\t\t\tcontainerCoordinates = container.getCoordinates(offsetParent),\n\t\t\telementMargin = {},\n\t\t\telementBorder = {},\n\t\t\tcontainerMargin = {},\n\t\t\tcontainerBorder = {},\n\t\t\toffsetParentPadding = {};\n\n\t\t['top', 'right', 'bottom', 'left'].each(function(pad){\n\t\t\telementMargin[pad] = element.getStyle('margin-' + pad).toInt();\n\t\t\telementBorder[pad] = element.getStyle('border-' + pad).toInt();\n\t\t\tcontainerMargin[pad] = container.getStyle('margin-' + pad).toInt();\n\t\t\tcontainerBorder[pad] = container.getStyle('border-' + pad).toInt();\n\t\t\toffsetParentPadding[pad] = offsetParent.getStyle('padding-' + pad).toInt();\n\t\t}, this);\n\n\t\tvar width = element.offsetWidth + elementMargin.left + elementMargin.right,\n\t\t\theight = element.offsetHeight + elementMargin.top + elementMargin.bottom,\n\t\t\tleft = 0,\n\t\t\ttop = 0,\n\t\t\tright = containerCoordinates.right - containerBorder.right - width,\n\t\t\tbottom = containerCoordinates.bottom - containerBorder.bottom - height;\n\n\t\tif (this.options.includeMargins){\n\t\t\tleft += elementMargin.left;\n\t\t\ttop += elementMargin.top;\n\t\t} else {\n\t\t\tright += elementMargin.right;\n\t\t\tbottom += elementMargin.bottom;\n\t\t}\n\n\t\tif (element.getStyle('position') == 'relative'){\n\t\t\tvar coords = element.getCoordinates(offsetParent);\n\t\t\tcoords.left -= element.getStyle('left').toInt();\n\t\t\tcoords.top -= element.getStyle('top').toInt();\n\n\t\t\tleft -= coords.left;\n\t\t\ttop -= coords.top;\n\t\t\tif (container.getStyle('position') != 'relative'){\n\t\t\t\tleft += containerBorder.left;\n\t\t\t\ttop += containerBorder.top;\n\t\t\t}\n\t\t\tright += elementMargin.left - coords.left;\n\t\t\tbottom += elementMargin.top - coords.top;\n\n\t\t\tif (container != offsetParent){\n\t\t\t\tleft += containerMargin.left + offsetParentPadding.left;\n\t\t\t\ttop += ((Browser.ie6 || Browser.ie7) ? 0 : containerMargin.top) + offsetParentPadding.top;\n\t\t\t}\n\t\t} else {\n\t\t\tleft -= elementMargin.left;\n\t\t\ttop -= elementMargin.top;\n\t\t\tif (container != offsetParent){\n\t\t\t\tleft += containerCoordinates.left + containerBorder.left;\n\t\t\t\ttop += containerCoordinates.top + containerBorder.top;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tx: [left, right],\n\t\t\ty: [top, bottom]\n\t\t};\n\t},\n\n\tgetDroppableCoordinates: function(element){\n\t\tvar position = element.getCoordinates();\n\t\tif (element.getStyle('position') == 'fixed'){\n\t\t\tvar scroll = window.getScroll();\n\t\t\tposition.left += scroll.x;\n\t\t\tposition.right += scroll.x;\n\t\t\tposition.top += scroll.y;\n\t\t\tposition.bottom += scroll.y;\n\t\t}\n\t\treturn position;\n\t},\n\n\tcheckDroppables: function(){\n\t\tvar overed = this.droppables.filter(function(el, i){\n\t\t\tel = this.positions ? this.positions[i] : this.getDroppableCoordinates(el);\n\t\t\tvar now = this.mouse.now;\n\t\t\treturn (now.x > el.left && now.x < el.right && now.y < el.bottom && now.y > el.top);\n\t\t}, this).getLast();\n\n\t\tif (this.overed != overed){\n\t\t\tif (this.overed) this.fireEvent('leave', [this.element, this.overed]);\n\t\t\tif (overed) this.fireEvent('enter', [this.element, overed]);\n\t\t\tthis.overed = overed;\n\t\t}\n\t},\n\n\tdrag: function(event){\n\t\tthis.parent(event);\n\t\tif (this.options.checkDroppables && this.droppables.length) this.checkDroppables();\n\t},\n\n\tstop: function(event){\n\t\tthis.checkDroppables();\n\t\tthis.fireEvent('drop', [this.element, this.overed, event]);\n\t\tthis.overed = null;\n\t\treturn this.parent(event);\n\t}\n\n});\n\nElement.implement({\n\n\tmakeDraggable: function(options){\n\t\tvar drag = new Drag.Move(this, options);\n\t\tthis.store('dragger', drag);\n\t\treturn drag;\n\t}\n\n});\n\n\n/*\n---\n\nscript: Slider.js\n\nname: Slider\n\ndescription: Class for creating horizontal and vertical slider controls.\n\nlicense: MIT-style license\n\nauthors:\n - Valerio Proietti\n\nrequires:\n - Core/Element.Dimensions\n - /Class.Binds\n - /Drag\n - /Element.Measure\n\nprovides: [Slider]\n\n...\n*/\n\nvar Slider = new Class({\n\n\tImplements: [Events, Options],\n\n\tBinds: ['clickedElement', 'draggedKnob', 'scrolledElement'],\n\n\toptions: {/*\n\t\tonTick: function(intPosition){},\n\t\tonChange: function(intStep){},\n\t\tonComplete: function(strStep){},*/\n\t\tonTick: function(position){\n\t\t\tthis.setKnobPosition(position);\n\t\t},\n\t\tinitialStep: 0,\n\t\tsnap: false,\n\t\toffset: 0,\n\t\trange: false,\n\t\twheel: false,\n\t\tsteps: 100,\n\t\tmode: 'horizontal'\n\t},\n\n\tinitialize: function(element, knob, options){\n\t\tthis.setOptions(options);\n\t\toptions = this.options;\n\t\tthis.element = document.id(element);\n\t\tknob = this.knob = document.id(knob);\n\t\tthis.previousChange = this.previousEnd = this.step = -1;\n\n\t\tvar limit = {},\n\t\t\tmodifiers = {x: false, y: false};\n\n\t\tswitch (options.mode){\n\t\t\tcase 'vertical':\n\t\t\t\tthis.axis = 'y';\n\t\t\t\tthis.property = 'top';\n\t\t\t\tthis.offset = 'offsetHeight';\n\t\t\t\tbreak;\n\t\t\tcase 'horizontal':\n\t\t\t\tthis.axis = 'x';\n\t\t\t\tthis.property = 'left';\n\t\t\t\tthis.offset = 'offsetWidth';\n\t\t}\n\n\t\tthis.setSliderDimensions();\n\t\tthis.setRange(options.range);\n\n\t\tif (knob.getStyle('position') == 'static') knob.setStyle('position', 'relative');\n\t\tknob.setStyle(this.property, -options.offset);\n\t\tmodifiers[this.axis] = this.property;\n\t\tlimit[this.axis] = [-options.offset, this.full - options.offset];\n\n\t\tvar dragOptions = {\n\t\t\tsnap: 0,\n\t\t\tlimit: limit,\n\t\t\tmodifiers: modifiers,\n\t\t\tonDrag: this.draggedKnob,\n\t\t\tonStart: this.draggedKnob,\n\t\t\tonBeforeStart: (function(){\n\t\t\t\tthis.isDragging = true;\n\t\t\t}).bind(this),\n\t\t\tonCancel: function(){\n\t\t\t\tthis.isDragging = false;\n\t\t\t}.bind(this),\n\t\t\tonComplete: function(){\n\t\t\t\tthis.isDragging = false;\n\t\t\t\tthis.draggedKnob();\n\t\t\t\tthis.end();\n\t\t\t}.bind(this)\n\t\t};\n\t\tif (options.snap) this.setSnap(dragOptions);\n\n\t\tthis.drag = new Drag(knob, dragOptions);\n\t\tthis.attach();\n\t\tif (options.initialStep != null) this.set(options.initialStep);\n\t},\n\n\tattach: function(){\n\t\tthis.element.addEvent('mousedown', this.clickedElement);\n\t\tif (this.options.wheel) this.element.addEvent('mousewheel', this.scrolledElement);\n\t\tthis.drag.attach();\n\t\treturn this;\n\t},\n\n\tdetach: function(){\n\t\tthis.element.removeEvent('mousedown', this.clickedElement)\n\t\t\t.removeEvent('mousewheel', this.scrolledElement);\n\t\tthis.drag.detach();\n\t\treturn this;\n\t},\n\n\tautosize: function(){\n\t\tthis.setSliderDimensions()\n\t\t\t.setKnobPosition(this.toPosition(this.step));\n\t\tthis.drag.options.limit[this.axis] = [-this.options.offset, this.full - this.options.offset];\n\t\tif (this.options.snap) this.setSnap();\n\t\treturn this;\n\t},\n\n\tsetSnap: function(options){\n\t\tif (!options) options = this.drag.options;\n\t\toptions.grid = Math.ceil(this.stepWidth);\n\t\toptions.limit[this.axis][1] = this.full;\n\t\treturn this;\n\t},\n\n\tsetKnobPosition: function(position){\n\t\tif (this.options.snap) position = this.toPosition(this.step);\n\t\tthis.knob.setStyle(this.property, position);\n\t\treturn this;\n\t},\n\n\tsetSliderDimensions: function(){\n\t\tthis.full = this.element.measure(function(){\n\t\t\tthis.half = this.knob[this.offset] / 2;\n\t\t\treturn this.element[this.offset] - this.knob[this.offset] + (this.options.offset * 2);\n\t\t}.bind(this));\n\t\treturn this;\n\t},\n\n\tset: function(step){\n\t\tif (!((this.range > 0) ^ (step < this.min))) step = this.min;\n\t\tif (!((this.range > 0) ^ (step > this.max))) step = this.max;\n\n\t\tthis.step = Math.round(step);\n\t\treturn this.checkStep()\n\t\t\t.fireEvent('tick', this.toPosition(this.step))\n\t\t\t.end();\n\t},\n\n\tsetRange: function(range, pos){\n\t\tthis.min = Array.pick([range[0], 0]);\n\t\tthis.max = Array.pick([range[1], this.options.steps]);\n\t\tthis.range = this.max - this.min;\n\t\tthis.steps = this.options.steps || this.full;\n\t\tthis.stepSize = Math.abs(this.range) / this.steps;\n\t\tthis.stepWidth = this.stepSize * this.full / Math.abs(this.range);\n\t\tif (range) this.set(Array.pick([pos, this.step]).floor(this.min).max(this.max));\n\t\treturn this;\n\t},\n\n\tclickedElement: function(event){\n\t\tif (this.isDragging || event.target == this.knob) return;\n\n\t\tvar dir = this.range < 0 ? -1 : 1,\n\t\t\tposition = event.page[this.axis] - this.element.getPosition()[this.axis] - this.half;\n\n\t\tposition = position.limit(-this.options.offset, this.full - this.options.offset);\n\n\t\tthis.step = Math.round(this.min + dir * this.toStep(position));\n\n\t\tthis.checkStep()\n\t\t\t.fireEvent('tick', position)\n\t\t\t.end();\n\t},\n\n\tscrolledElement: function(event){\n\t\tvar mode = (this.options.mode == 'horizontal') ? (event.wheel < 0) : (event.wheel > 0);\n\t\tthis.set(this.step + (mode ? -1 : 1) * this.stepSize);\n\t\tevent.stop();\n\t},\n\n\tdraggedKnob: function(){\n\t\tvar dir = this.range < 0 ? -1 : 1,\n\t\t\tposition = this.drag.value.now[this.axis];\n\n\t\tposition = position.limit(-this.options.offset, this.full -this.options.offset);\n\n\t\tthis.step = Math.round(this.min + dir * this.toStep(position));\n\t\tthis.checkStep();\n\t},\n\n\tcheckStep: function(){\n\t\tvar step = this.step;\n\t\tif (this.previousChange != step){\n\t\t\tthis.previousChange = step;\n\t\t\tthis.fireEvent('change', step);\n\t\t}\n\t\treturn this;\n\t},\n\n\tend: function(){\n\t\tvar step = this.step;\n\t\tif (this.previousEnd !== step){\n\t\t\tthis.previousEnd = step;\n\t\t\tthis.fireEvent('complete', step + '');\n\t\t}\n\t\treturn this;\n\t},\n\n\ttoStep: function(position){\n\t\tvar step = (position + this.options.offset) * this.stepSize / this.full * this.steps;\n\t\treturn this.options.steps ? Math.round(step -= step % this.stepSize) : step;\n\t},\n\n\ttoPosition: function(step){\n\t\treturn (this.full * Math.abs(this.min - step)) / (this.steps * this.stepSize) - this.options.offset;\n\t}\n\n});\n\n\n/*\n---\n\nscript: Sortables.js\n\nname: Sortables\n\ndescription: Class for creating a drag and drop sorting interface for lists of items.\n\nlicense: MIT-style license\n\nauthors:\n - Tom Occhino\n\nrequires:\n - Core/Fx.Morph\n - /Drag.Move\n\nprovides: [Sortables]\n\n...\n*/\n\nvar Sortables = new Class({\n\n\tImplements: [Events, Options],\n\n\toptions: {/*\n\t\tonSort: function(element, clone){},\n\t\tonStart: function(element, clone){},\n\t\tonComplete: function(element){},*/\n\t\topacity: 1,\n\t\tclone: false,\n\t\trevert: false,\n\t\thandle: false,\n\t\tdragOptions: {}\n\t},\n\n\tinitialize: function(lists, options){\n\t\tthis.setOptions(options);\n\n\t\tthis.elements = [];\n\t\tthis.lists = [];\n\t\tthis.idle = true;\n\n\t\tthis.addLists($$(document.id(lists) || lists));\n\n\t\tif (!this.options.clone) this.options.revert = false;\n\t\tif (this.options.revert) this.effect = new Fx.Morph(null, Object.merge({\n\t\t\tduration: 250,\n\t\t\tlink: 'cancel'\n\t\t}, this.options.revert));\n\t},\n\n\tattach: function(){\n\t\tthis.addLists(this.lists);\n\t\treturn this;\n\t},\n\n\tdetach: function(){\n\t\tthis.lists = this.removeLists(this.lists);\n\t\treturn this;\n\t},\n\n\taddItems: function(){\n\t\tArray.flatten(arguments).each(function(element){\n\t\t\tthis.elements.push(element);\n\t\t\tvar start = element.retrieve('sortables:start', function(event){\n\t\t\t\tthis.start.call(this, event, element);\n\t\t\t}.bind(this));\n\t\t\t(this.options.handle ? element.getElement(this.options.handle) || element : element).addEvent('mousedown', start);\n\t\t}, this);\n\t\treturn this;\n\t},\n\n\taddLists: function(){\n\t\tArray.flatten(arguments).each(function(list){\n\t\t\tthis.lists.include(list);\n\t\t\tthis.addItems(list.getChildren());\n\t\t}, this);\n\t\treturn this;\n\t},\n\n\tremoveItems: function(){\n\t\treturn $$(Array.flatten(arguments).map(function(element){\n\t\t\tthis.elements.erase(element);\n\t\t\tvar start = element.retrieve('sortables:start');\n\t\t\t(this.options.handle ? element.getElement(this.options.handle) || element : element).removeEvent('mousedown', start);\n\n\t\t\treturn element;\n\t\t}, this));\n\t},\n\n\tremoveLists: function(){\n\t\treturn $$(Array.flatten(arguments).map(function(list){\n\t\t\tthis.lists.erase(list);\n\t\t\tthis.removeItems(list.getChildren());\n\n\t\t\treturn list;\n\t\t}, this));\n\t},\n\n\tgetClone: function(event, element){\n\t\tif (!this.options.clone) return new Element(element.tagName).inject(document.body);\n\t\tif (typeOf(this.options.clone) == 'function') return this.options.clone.call(this, event, element, this.list);\n\t\tvar clone = element.clone(true).setStyles({\n\t\t\tmargin: 0,\n\t\t\tposition: 'absolute',\n\t\t\tvisibility: 'hidden',\n\t\t\twidth: element.getStyle('width')\n\t\t}).addEvent('mousedown', function(event){\n\t\t\telement.fireEvent('mousedown', event);\n\t\t});\n\t\t//prevent the duplicated radio inputs from unchecking the real one\n\t\tif (clone.get('html').test('radio')){\n\t\t\tclone.getElements('input[type=radio]').each(function(input, i){\n\t\t\t\tinput.set('name', 'clone_' + i);\n\t\t\t\tif (input.get('checked')) element.getElements('input[type=radio]')[i].set('checked', true);\n\t\t\t});\n\t\t}\n\n\t\treturn clone.inject(this.list).setPosition(element.getPosition(element.getOffsetParent()));\n\t},\n\n\tgetDroppables: function(){\n\t\tvar droppables = this.list.getChildren().erase(this.clone).erase(this.element);\n\t\tif (!this.options.constrain) droppables.append(this.lists).erase(this.list);\n\t\treturn droppables;\n\t},\n\n\tinsert: function(dragging, element){\n\t\tvar where = 'inside';\n\t\tif (this.lists.contains(element)){\n\t\t\tthis.list = element;\n\t\t\tthis.drag.droppables = this.getDroppables();\n\t\t} else {\n\t\t\twhere = this.element.getAllPrevious().contains(element) ? 'before' : 'after';\n\t\t}\n\t\tthis.element.inject(element, where);\n\t\tthis.fireEvent('sort', [this.element, this.clone]);\n\t},\n\n\tstart: function(event, element){\n\t\tif (\n\t\t\t!this.idle ||\n\t\t\tevent.rightClick ||\n\t\t\t['button', 'input', 'a', 'textarea'].contains(event.target.get('tag'))\n\t\t) return;\n\n\t\tthis.idle = false;\n\t\tthis.element = element;\n\t\tthis.opacity = element.getStyle('opacity');\n\t\tthis.list = element.getParent();\n\t\tthis.clone = this.getClone(event, element);\n\n\t\tthis.drag = new Drag.Move(this.clone, Object.merge({\n\t\t\t\n\t\t\tdroppables: this.getDroppables()\n\t\t}, this.options.dragOptions)).addEvents({\n\t\t\tonSnap: function(){\n\t\t\t\tevent.stop();\n\t\t\t\tthis.clone.setStyle('visibility', 'visible');\n\t\t\t\tthis.element.setStyle('opacity', this.options.opacity || 0);\n\t\t\t\tthis.fireEvent('start', [this.element, this.clone]);\n\t\t\t}.bind(this),\n\t\t\tonEnter: this.insert.bind(this),\n\t\t\tonCancel: this.end.bind(this),\n\t\t\tonComplete: this.end.bind(this)\n\t\t});\n\n\t\tthis.clone.inject(this.element, 'before');\n\t\tthis.drag.start(event);\n\t},\n\n\tend: function(){\n\t\tthis.drag.detach();\n\t\tthis.element.setStyle('opacity', this.opacity);\n\t\tif (this.effect){\n\t\t\tvar dim = this.element.getStyles('width', 'height'),\n\t\t\t\tclone = this.clone,\n\t\t\t\tpos = clone.computePosition(this.element.getPosition(this.clone.getOffsetParent()));\n\n\t\t\tvar destroy = function(){\n\t\t\t\tthis.removeEvent('cancel', destroy);\n\t\t\t\tclone.destroy();\n\t\t\t};\n\n\t\t\tthis.effect.element = clone;\n\t\t\tthis.effect.start({\n\t\t\t\ttop: pos.top,\n\t\t\t\tleft: pos.left,\n\t\t\t\twidth: dim.width,\n\t\t\t\theight: dim.height,\n\t\t\t\topacity: 0.25\n\t\t\t}).addEvent('cancel', destroy).chain(destroy);\n\t\t} else {\n\t\t\tthis.clone.destroy();\n\t\t}\n\t\tthis.reset();\n\t},\n\n\treset: function(){\n\t\tthis.idle = true;\n\t\tthis.fireEvent('complete', this.element);\n\t},\n\n\tserialize: function(){\n\t\tvar params = Array.link(arguments, {\n\t\t\tmodifier: Type.isFunction,\n\t\t\tindex: function(obj){\n\t\t\t\treturn obj != null;\n\t\t\t}\n\t\t});\n\t\tvar serial = this.lists.map(function(list){\n\t\t\treturn list.getChildren().map(params.modifier || function(element){\n\t\t\t\treturn element.get('id');\n\t\t\t}, this);\n\t\t}, this);\n\n\t\tvar index = params.index;\n\t\tif (this.lists.length == 1) index = 0;\n\t\treturn (index || index === 0) && index >= 0 && index < this.lists.length ? serial[index] : serial;\n\t}\n\n});\n\n\n/*\n---\n\nscript: Request.JSONP.js\n\nname: Request.JSONP\n\ndescription: Defines Request.JSONP, a class for cross domain javascript via script injection.\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n - Guillermo Rauch\n - Arian Stolwijk\n\nrequires:\n - Core/Element\n - Core/Request\n - MooTools.More\n\nprovides: [Request.JSONP]\n\n...\n*/\n\nRequest.JSONP = new Class({\n\n\tImplements: [Chain, Events, Options],\n\n\toptions: {/*\n\t\tonRequest: function(src, scriptElement){},\n\t\tonComplete: function(data){},\n\t\tonSuccess: function(data){},\n\t\tonCancel: function(){},\n\t\tonTimeout: function(){},\n\t\tonError: function(){}, */\n\t\tonRequest: function(src){\n\t\t\tif (this.options.log && window.console && console.log){\n\t\t\t\tconsole.log('JSONP retrieving script with url:' + src);\n\t\t\t}\n\t\t},\n\t\tonError: function(src){\n\t\t\tif (this.options.log && window.console && console.warn){\n\t\t\t\tconsole.warn('JSONP '+ src +' will fail in Internet Explorer, which enforces a 2083 bytes length limit on URIs');\n\t\t\t}\n\t\t},\n\t\turl: '',\n\t\tcallbackKey: 'callback',\n\t\tinjectScript: document.head,\n\t\tdata: '',\n\t\tlink: 'ignore',\n\t\ttimeout: 0,\n\t\tlog: false\n\t},\n\n\tinitialize: function(options){\n\t\tthis.setOptions(options);\n\t},\n\n\tsend: function(options){\n\t\tif (!Request.prototype.check.call(this, options)) return this;\n\t\tthis.running = true;\n\n\t\tvar type = typeOf(options);\n\t\tif (type == 'string' || type == 'element') options = {data: options};\n\t\toptions = Object.merge(this.options, options || {});\n\n\t\tvar data = options.data;\n\t\tswitch (typeOf(data)){\n\t\t\tcase 'element': data = document.id(data).toQueryString(); break;\n\t\t\tcase 'object': case 'hash': data = Object.toQueryString(data);\n\t\t}\n\n\t\tvar index = this.index = Request.JSONP.counter++;\n\n\t\tvar src = options.url +\n\t\t\t(options.url.test('\\\\?') ? '&' :'?') +\n\t\t\t(options.callbackKey) +\n\t\t\t'=Request.JSONP.request_map.request_'+ index +\n\t\t\t(data ? '&' + data : '');\n\n\t\tif (src.length > 2083) this.fireEvent('error', src);\n\n\t\tRequest.JSONP.request_map['request_' + index] = function(){\n\t\t\tthis.success(arguments, index);\n\t\t}.bind(this);\n\n\t\tvar script = this.getScript(src).inject(options.injectScript);\n\t\tthis.fireEvent('request', [src, script]);\n\n\t\tif (options.timeout) this.timeout.delay(options.timeout, this);\n\n\t\treturn this;\n\t},\n\n\tgetScript: function(src){\n\t\tif (!this.script) this.script = new Element('script', {\n\t\t\ttype: 'text/javascript',\n\t\t\tasync: true,\n\t\t\tsrc: src\n\t\t});\n\t\treturn this.script;\n\t},\n\n\tsuccess: function(args, index){\n\t\tif (!this.running) return;\n\t\tthis.clear()\n\t\t\t.fireEvent('complete', args).fireEvent('success', args)\n\t\t\t.callChain();\n\t},\n\n\tcancel: function(){\n\t\tif (this.running) this.clear().fireEvent('cancel');\n\t\treturn this;\n\t},\n\n\tisRunning: function(){\n\t\treturn !!this.running;\n\t},\n\n\tclear: function(){\n\t\tthis.running = false;\n\t\tif (this.script){\n\t\t\tthis.script.destroy();\n\t\t\tthis.script = null;\n\t\t}\n\t\treturn this;\n\t},\n\n\ttimeout: function(){\n\t\tif (this.running){\n\t\t\tthis.running = false;\n\t\t\tthis.fireEvent('timeout', [this.script.get('src'), this.script]).fireEvent('failure').cancel();\n\t\t}\n\t\treturn this;\n\t}\n\n});\n\nRequest.JSONP.counter = 0;\nRequest.JSONP.request_map = {};\n\n\n/*\n---\n\nscript: Request.Queue.js\n\nname: Request.Queue\n\ndescription: Controls several instances of Request and its variants to run only one request at a time.\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n\nrequires:\n - Core/Element\n - Core/Request\n - /Class.Binds\n\nprovides: [Request.Queue]\n\n...\n*/\n\nRequest.Queue = new Class({\n\n\tImplements: [Options, Events],\n\n\tBinds: ['attach', 'request', 'complete', 'cancel', 'success', 'failure', 'exception'],\n\n\toptions: {/*\n\t\tonRequest: function(argsPassedToOnRequest){},\n\t\tonSuccess: function(argsPassedToOnSuccess){},\n\t\tonComplete: function(argsPassedToOnComplete){},\n\t\tonCancel: function(argsPassedToOnCancel){},\n\t\tonException: function(argsPassedToOnException){},\n\t\tonFailure: function(argsPassedToOnFailure){},\n\t\tonEnd: function(){},\n\t\t*/\n\t\tstopOnFailure: true,\n\t\tautoAdvance: true,\n\t\tconcurrent: 1,\n\t\trequests: {}\n\t},\n\n\tinitialize: function(options){\n\t\tvar requests;\n\t\tif (options){\n\t\t\trequests = options.requests;\n\t\t\tdelete options.requests;\n\t\t}\n\t\tthis.setOptions(options);\n\t\tthis.requests = {};\n\t\tthis.queue = [];\n\t\tthis.reqBinders = {};\n\n\t\tif (requests) this.addRequests(requests);\n\t},\n\n\taddRequest: function(name, request){\n\t\tthis.requests[name] = request;\n\t\tthis.attach(name, request);\n\t\treturn this;\n\t},\n\n\taddRequests: function(obj){\n\t\tObject.each(obj, function(req, name){\n\t\t\tthis.addRequest(name, req);\n\t\t}, this);\n\t\treturn this;\n\t},\n\n\tgetName: function(req){\n\t\treturn Object.keyOf(this.requests, req);\n\t},\n\n\tattach: function(name, req){\n\t\tif (req._groupSend) return this;\n\t\t['request', 'complete', 'cancel', 'success', 'failure', 'exception'].each(function(evt){\n\t\t\tif (!this.reqBinders[name]) this.reqBinders[name] = {};\n\t\t\tthis.reqBinders[name][evt] = function(){\n\t\t\t\tthis['on' + evt.capitalize()].apply(this, [name, req].append(arguments));\n\t\t\t}.bind(this);\n\t\t\treq.addEvent(evt, this.reqBinders[name][evt]);\n\t\t}, this);\n\t\treq._groupSend = req.send;\n\t\treq.send = function(options){\n\t\t\tthis.send(name, options);\n\t\t\treturn req;\n\t\t}.bind(this);\n\t\treturn this;\n\t},\n\n\tremoveRequest: function(req){\n\t\tvar name = typeOf(req) == 'object' ? this.getName(req) : req;\n\t\tif (!name && typeOf(name) != 'string') return this;\n\t\treq = this.requests[name];\n\t\tif (!req) return this;\n\t\t['request', 'complete', 'cancel', 'success', 'failure', 'exception'].each(function(evt){\n\t\t\treq.removeEvent(evt, this.reqBinders[name][evt]);\n\t\t}, this);\n\t\treq.send = req._groupSend;\n\t\tdelete req._groupSend;\n\t\treturn this;\n\t},\n\n\tgetRunning: function(){\n\t\treturn Object.filter(this.requests, function(r){\n\t\t\treturn r.running;\n\t\t});\n\t},\n\n\tisRunning: function(){\n\t\treturn !!(Object.keys(this.getRunning()).length);\n\t},\n\n\tsend: function(name, options){\n\t\tvar q = function(){\n\t\t\tthis.requests[name]._groupSend(options);\n\t\t\tthis.queue.erase(q);\n\t\t}.bind(this);\n\n\t\tq.name = name;\n\t\tif (Object.keys(this.getRunning()).length >= this.options.concurrent || (this.error && this.options.stopOnFailure)) this.queue.push(q);\n\t\telse q();\n\t\treturn this;\n\t},\n\n\thasNext: function(name){\n\t\treturn (!name) ? !!this.queue.length : !!this.queue.filter(function(q){ return q.name == name; }).length;\n\t},\n\n\tresume: function(){\n\t\tthis.error = false;\n\t\t(this.options.concurrent - Object.keys(this.getRunning()).length).times(this.runNext, this);\n\t\treturn this;\n\t},\n\n\trunNext: function(name){\n\t\tif (!this.queue.length) return this;\n\t\tif (!name){\n\t\t\tthis.queue[0]();\n\t\t} else {\n\t\t\tvar found;\n\t\t\tthis.queue.each(function(q){\n\t\t\t\tif (!found && q.name == name){\n\t\t\t\t\tfound = true;\n\t\t\t\t\tq();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t},\n\n\trunAll: function(){\n\t\tthis.queue.each(function(q){\n\t\t\tq();\n\t\t});\n\t\treturn this;\n\t},\n\n\tclear: function(name){\n\t\tif (!name){\n\t\t\tthis.queue.empty();\n\t\t} else {\n\t\t\tthis.queue = this.queue.map(function(q){\n\t\t\t\tif (q.name != name) return q;\n\t\t\t\telse return false;\n\t\t\t}).filter(function(q){\n\t\t\t\treturn q;\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t},\n\n\tcancel: function(name){\n\t\tthis.requests[name].cancel();\n\t\treturn this;\n\t},\n\n\tonRequest: function(){\n\t\tthis.fireEvent('request', arguments);\n\t},\n\n\tonComplete: function(){\n\t\tthis.fireEvent('complete', arguments);\n\t\tif (!this.queue.length) this.fireEvent('end');\n\t},\n\n\tonCancel: function(){\n\t\tif (this.options.autoAdvance && !this.error) this.runNext();\n\t\tthis.fireEvent('cancel', arguments);\n\t},\n\n\tonSuccess: function(){\n\t\tif (this.options.autoAdvance && !this.error) this.runNext();\n\t\tthis.fireEvent('success', arguments);\n\t},\n\n\tonFailure: function(){\n\t\tthis.error = true;\n\t\tif (!this.options.stopOnFailure && this.options.autoAdvance) this.runNext();\n\t\tthis.fireEvent('failure', arguments);\n\t},\n\n\tonException: function(){\n\t\tthis.error = true;\n\t\tif (!this.options.stopOnFailure && this.options.autoAdvance) this.runNext();\n\t\tthis.fireEvent('exception', arguments);\n\t}\n\n});\n\n\n/*\n---\n\nscript: Request.Periodical.js\n\nname: Request.Periodical\n\ndescription: Requests the same URL to pull data from a server but increases the intervals if no data is returned to reduce the load\n\nlicense: MIT-style license\n\nauthors:\n - Christoph Pojer\n\nrequires:\n - Core/Request\n - /MooTools.More\n\nprovides: [Request.Periodical]\n\n...\n*/\n\nRequest.implement({\n\n\toptions: {\n\t\tinitialDelay: 5000,\n\t\tdelay: 5000,\n\t\tlimit: 60000\n\t},\n\n\tstartTimer: function(data){\n\t\tvar fn = function(){\n\t\t\tif (!this.running) this.send({data: data});\n\t\t};\n\t\tthis.lastDelay = this.options.initialDelay;\n\t\tthis.timer = fn.delay(this.lastDelay, this);\n\t\tthis.completeCheck = function(response){\n\t\t\tclearTimeout(this.timer);\n\t\t\tthis.lastDelay = (response) ? this.options.delay : (this.lastDelay + this.options.delay).min(this.options.limit);\n\t\t\tthis.timer = fn.delay(this.lastDelay, this);\n\t\t};\n\t\treturn this.addEvent('complete', this.completeCheck);\n\t},\n\n\tstopTimer: function(){\n\t\tclearTimeout(this.timer);\n\t\treturn this.removeEvent('complete', this.completeCheck);\n\t}\n\n});\n\n\n/*\n---\n\nscript: Color.js\n\nname: Color\n\ndescription: Class for creating and manipulating colors in JavaScript. Supports HSB -> RGB Conversions and vice versa.\n\nlicense: MIT-style license\n\nauthors:\n - Valerio Proietti\n\nrequires:\n - Core/Array\n - Core/String\n - Core/Number\n - Core/Hash\n - Core/Function\n - MooTools.More\n\nprovides: [Color]\n\n...\n*/\n\n(function(){\n\nvar Color = this.Color = new Type('Color', function(color, type){\n\tif (arguments.length >= 3){\n\t\ttype = 'rgb'; color = Array.slice(arguments, 0, 3);\n\t} else if (typeof color == 'string'){\n\t\tif (color.match(/rgb/)) color = color.rgbToHex().hexToRgb(true);\n\t\telse if (color.match(/hsb/)) color = color.hsbToRgb();\n\t\telse color = color.hexToRgb(true);\n\t}\n\ttype = type || 'rgb';\n\tswitch (type){\n\t\tcase 'hsb':\n\t\t\tvar old = color;\n\t\t\tcolor = color.hsbToRgb();\n\t\t\tcolor.hsb = old;\n\t\tbreak;\n\t\tcase 'hex': color = color.hexToRgb(true); break;\n\t}\n\tcolor.rgb = color.slice(0, 3);\n\tcolor.hsb = color.hsb || color.rgbToHsb();\n\tcolor.hex = color.rgbToHex();\n\treturn Object.append(color, this);\n});\n\nColor.implement({\n\n\tmix: function(){\n\t\tvar colors = Array.slice(arguments);\n\t\tvar alpha = (typeOf(colors.getLast()) == 'number') ? colors.pop() : 50;\n\t\tvar rgb = this.slice();\n\t\tcolors.each(function(color){\n\t\t\tcolor = new Color(color);\n\t\t\tfor (var i = 0; i < 3; i++) rgb[i] = Math.round((rgb[i] / 100 * (100 - alpha)) + (color[i] / 100 * alpha));\n\t\t});\n\t\treturn new Color(rgb, 'rgb');\n\t},\n\n\tinvert: function(){\n\t\treturn new Color(this.map(function(value){\n\t\t\treturn 255 - value;\n\t\t}));\n\t},\n\n\tsetHue: function(value){\n\t\treturn new Color([value, this.hsb[1], this.hsb[2]], 'hsb');\n\t},\n\n\tsetSaturation: function(percent){\n\t\treturn new Color([this.hsb[0], percent, this.hsb[2]], 'hsb');\n\t},\n\n\tsetBrightness: function(percent){\n\t\treturn new Color([this.hsb[0], this.hsb[1], percent], 'hsb');\n\t}\n\n});\n\nthis.$RGB = function(r, g, b){\n\treturn new Color([r, g, b], 'rgb');\n};\n\nthis.$HSB = function(h, s, b){\n\treturn new Color([h, s, b], 'hsb');\n};\n\nthis.$HEX = function(hex){\n\treturn new Color(hex, 'hex');\n};\n\nArray.implement({\n\n\trgbToHsb: function(){\n\t\tvar red = this[0],\n\t\t\t\tgreen = this[1],\n\t\t\t\tblue = this[2],\n\t\t\t\thue = 0;\n\t\tvar max = Math.max(red, green, blue),\n\t\t\t\tmin = Math.min(red, green, blue);\n\t\tvar delta = max - min;\n\t\tvar brightness = max / 255,\n\t\t\t\tsaturation = (max != 0) ? delta / max : 0;\n\t\tif (saturation != 0){\n\t\t\tvar rr = (max - red) / delta;\n\t\t\tvar gr = (max - green) / delta;\n\t\t\tvar br = (max - blue) / delta;\n\t\t\tif (red == max) hue = br - gr;\n\t\t\telse if (green == max) hue = 2 + rr - br;\n\t\t\telse hue = 4 + gr - rr;\n\t\t\thue /= 6;\n\t\t\tif (hue < 0) hue++;\n\t\t}\n\t\treturn [Math.round(hue * 360), Math.round(saturation * 100), Math.round(brightness * 100)];\n\t},\n\n\thsbToRgb: function(){\n\t\tvar br = Math.round(this[2] / 100 * 255);\n\t\tif (this[1] == 0){\n\t\t\treturn [br, br, br];\n\t\t} else {\n\t\t\tvar hue = this[0] % 360;\n\t\t\tvar f = hue % 60;\n\t\t\tvar p = Math.round((this[2] * (100 - this[1])) / 10000 * 255);\n\t\t\tvar q = Math.round((this[2] * (6000 - this[1] * f)) / 600000 * 255);\n\t\t\tvar t = Math.round((this[2] * (6000 - this[1] * (60 - f))) / 600000 * 255);\n\t\t\tswitch (Math.floor(hue / 60)){\n\t\t\t\tcase 0: return [br, t, p];\n\t\t\t\tcase 1: return [q, br, p];\n\t\t\t\tcase 2: return [p, br, t];\n\t\t\t\tcase 3: return [p, q, br];\n\t\t\t\tcase 4: return [t, p, br];\n\t\t\t\tcase 5: return [br, p, q];\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n});\n\nString.implement({\n\n\trgbToHsb: function(){\n\t\tvar rgb = this.match(/\\d{1,3}/g);\n\t\treturn (rgb) ? rgb.rgbToHsb() : null;\n\t},\n\n\thsbToRgb: function(){\n\t\tvar hsb = this.match(/\\d{1,3}/g);\n\t\treturn (hsb) ? hsb.hsbToRgb() : null;\n\t}\n\n});\n\n})();\n\n\n\n/*\n---\n\nscript: Group.js\n\nname: Group\n\ndescription: Class for monitoring collections of events\n\nlicense: MIT-style license\n\nauthors:\n - Valerio Proietti\n\nrequires:\n - Core/Events\n - /MooTools.More\n\nprovides: [Group]\n\n...\n*/\n\n(function(){\n\nthis.Group = new Class({\n\n\tinitialize: function(){\n\t\tthis.instances = Array.flatten(arguments);\n\t},\n\n\taddEvent: function(type, fn){\n\t\tvar instances = this.instances,\n\t\t\tlen = instances.length,\n\t\t\ttogo = len,\n\t\t\targs = new Array(len),\n\t\t\tself = this;\n\n\t\tinstances.each(function(instance, i){\n\t\t\tinstance.addEvent(type, function(){\n\t\t\t\tif (!args[i]) togo--;\n\t\t\t\targs[i] = arguments;\n\t\t\t\tif (!togo){\n\t\t\t\t\tfn.call(self, instances, instance, args);\n\t\t\t\t\ttogo = len;\n\t\t\t\t\targs = new Array(len);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n});\n\n})();\n\n\n/*\n---\n\nscript: Hash.Cookie.js\n\nname: Hash.Cookie\n\ndescription: Class for creating, reading, and deleting Cookies in JSON format.\n\nlicense: MIT-style license\n\nauthors:\n - Valerio Proietti\n - Aaron Newton\n\nrequires:\n - Core/Cookie\n - Core/JSON\n - /MooTools.More\n - /Hash\n\nprovides: [Hash.Cookie]\n\n...\n*/\n\nHash.Cookie = new Class({\n\n\tExtends: Cookie,\n\n\toptions: {\n\t\tautoSave: true\n\t},\n\n\tinitialize: function(name, options){\n\t\tthis.parent(name, options);\n\t\tthis.load();\n\t},\n\n\tsave: function(){\n\t\tvar value = JSON.encode(this.hash);\n\t\tif (!value || value.length > 4096) return false; //cookie would be truncated!\n\t\tif (value == '{}') this.dispose();\n\t\telse this.write(value);\n\t\treturn true;\n\t},\n\n\tload: function(){\n\t\tthis.hash = new Hash(JSON.decode(this.read(), true));\n\t\treturn this;\n\t}\n\n});\n\nHash.each(Hash.prototype, function(method, name){\n\tif (typeof method == 'function') Hash.Cookie.implement(name, function(){\n\t\tvar value = method.apply(this.hash, arguments);\n\t\tif (this.options.autoSave) this.save();\n\t\treturn value;\n\t});\n});\n\n\n/*\n---\nname: Table\ndescription: LUA-Style table implementation.\nlicense: MIT-style license\nauthors:\n - Valerio Proietti\nrequires: [Core/Array]\nprovides: [Table]\n...\n*/\n\n(function(){\n\nvar Table = this.Table = function(){\n\n\tthis.length = 0;\n\tvar keys = [],\n\t values = [];\n\t\n\tthis.set = function(key, value){\n\t\tvar index = keys.indexOf(key);\n\t\tif (index == -1){\n\t\t\tvar length = keys.length;\n\t\t\tkeys[length] = key;\n\t\t\tvalues[length] = value;\n\t\t\tthis.length++;\n\t\t} else {\n\t\t\tvalues[index] = value;\n\t\t}\n\t\treturn this;\n\t};\n\n\tthis.get = function(key){\n\t\tvar index = keys.indexOf(key);\n\t\treturn (index == -1) ? null : values[index];\n\t};\n\n\tthis.erase = function(key){\n\t\tvar index = keys.indexOf(key);\n\t\tif (index != -1){\n\t\t\tthis.length--;\n\t\t\tkeys.splice(index, 1);\n\t\t\treturn values.splice(index, 1)[0];\n\t\t}\n\t\treturn null;\n\t};\n\n\tthis.each = this.forEach = function(fn, bind){\n\t\tfor (var i = 0, l = this.length; i < l; i++) fn.call(bind, keys[i], values[i], this);\n\t};\n\t\n};\n\nif (this.Type) new Type('Table', Table);\n\n})();\n\n\n/*\n---\n\nscript: HtmlTable.js\n\nname: HtmlTable\n\ndescription: Builds table elements with methods to add rows.\n\nlicense: MIT-style license\n\nauthors:\n - Aaron Newton\n\nrequires:\n - Core/Options\n - Core/Events\n - /Class.Occlude\n\nprovides: [HtmlTable]\n\n...\n*/\n\nvar HtmlTable = new Class({\n\n\tImplements: [Options, Events, Class.Occlude],\n\n\toptions: {\n\t\tproperties: {\n\t\t\tcellpadding: 0,\n\t\t\tcellspacing: 0,\n\t\t\tborder: 0\n\t\t},\n\t\trows: [],\n\t\theaders: [],\n\t\tfooters: []\n\t},\n\n\tproperty: 'HtmlTable',\n\n\tinitialize: function(){\n\t\tvar params = Array.link(arguments, {options: Type.isObject, table: Type.isElement, id: Type.isString});\n\t\tthis.setOptions(params.options);\n\t\tif (!params.table && params.id) params.table = document.id(params.id);\n\t\tthis.element = params.table || new Element('table', this.options.properties);\n\t\tif (this.occlude()) return this.occluded;\n\t\tthis.build();\n\t},\n\n\tbuild: function(){\n\t\tthis.element.store('HtmlTable', this);\n\n\t\tthis.body = document.id(this.element.tBodies[0]) || new Element('tbody').inject(this.element);\n\t\t$$(this.body.rows);\n\n\t\tif (this.options.headers.length) this.setHeaders(this.options.headers);\n\t\telse this.thead = document.id(this.element.tHead);\n\n\t\tif (this.thead) this.head = this.getHead();\n\t\tif (this.options.footers.length) this.setFooters(this.options.footers);\n\n\t\tthis.tfoot = document.id(this.element.tFoot);\n\t\tif (this.tfoot) this.foot = document.id(this.tfoot.rows[0]);\n\n\t\tthis.options.rows.each(function(row){\n\t\t\tthis.push(row);\n\t\t}, this);\n\t},\n\n\ttoElement: function(){\n\t\treturn this.element;\n\t},\n\n\tempty: function(){\n\t\tthis.body.empty();\n\t\treturn this;\n\t},\n\n\tset: function(what, items){\n\t\tvar target = (what == 'headers') ? 'tHead' : 'tFoot',\n\t\t\tlower = target.toLowerCase();\n\n\t\tthis[lower] = (document.id(this.element[target]) || new Element(lower).inject(this.element, 'top')).empty();\n\t\tvar data = this.push(items, {}, this[lower], what == 'headers' ? 'th' : 'td');\n\n\t\tif (what == 'headers') this.head = this.getHead();\n\t\telse this.foot = this.getHead();\n\n\t\treturn data;\n\t},\n\n\tgetHead: function(){\n\t\tvar rows = this.thead.rows;\n\t\treturn rows.length > 1 ? $$(rows) : rows.length ? document.id(rows[0]) : false;\n\t},\n\n\tsetHeaders: function(headers){\n\t\tthis.set('headers', headers);\n\t\treturn this;\n\t},\n\n\tsetFooters: function(footers){\n\t\tthis.set('footers', footers);\n\t\treturn this;\n\t},\n\n\tupdate: function(tr, row, tag){\n\t\tvar tds = tr.getChildren(tag || 'td'), last = tds.length - 1;\n\n\t\trow.each(function(data, index){\n\t\t\tvar td = tds[index] || new Element(tag || 'td').inject(tr),\n\t\t\t\tcontent = (data ? data.content : '') || data,\n\t\t\t\ttype = typeOf(content);\n\n\t\t\tif (data && data.properties) td.set(data.properties);\n\t\t\tif (/(element(s?)|array|collection)/.test(type)) td.empty().adopt(content);\n\t\t\telse td.set('html', content);\n\n\t\t\tif (index > last) tds.push(td);\n\t\t\telse tds[index] = td;\n\t\t});\n\n\t\treturn {\n\t\t\ttr: tr,\n\t\t\ttds: tds\n\t\t};\n\t},\n\n\tpush: function(row, rowProperties, target, tag, where){\n\t\tif (typeOf(row) == 'element' && row.get('tag') == 'tr'){\n\t\t\trow.inject(target || this.body, where);\n\t\t\treturn {\n\t\t\t\ttr: row,\n\t\t\t\ttds: row.getChildren('td')\n\t\t\t};\n\t\t}\n\t\treturn this.update(new Element('tr', rowProperties).inject(target || this.body, where), row, tag);\n\t},\n\n\tpushMany: function(rows, rowProperties, target, tag, where){\n\t\treturn rows.map(function(row){\n\t\t\treturn this.push(row, rowProperties, target, tag, where);\n\t\t}, this);\n\t}\n\n});\n\n\n['adopt', 'inject', 'wraps', 'grab', 'replaces', 'dispose'].each(function(method){\n\tHtmlTable.implement(method, function(){\n\t\tthis.element[method].apply(this.element, arguments);\n\t\treturn this;\n\t});\n});\n\n\n\n\n/*\n---\n\nscript: HtmlTable.Zebra.js\n\nname: HtmlTable.Zebra\n\ndescription: Builds a stripy table with methods to add rows.\n\nlicense: MIT-style license\n\nauthors:\n - Harald Kirschner\n - Aaron Newton\n\nrequires:\n - /HtmlTable\n - /Element.Shortcuts\n - /Class.refactor\n\nprovides: [HtmlTable.Zebra]\n\n...\n*/\n\nHtmlTable = Class.refactor(HtmlTable, {\n\n\toptions: {\n\t\tclassZebra: 'table-tr-odd',\n\t\tzebra: true,\n\t\tzebraOnlyVisibleRows: true\n\t},\n\n\tinitialize: function(){\n\t\tthis.previous.apply(this, arguments);\n\t\tif (this.occluded) return this.occluded;\n\t\tif (this.options.zebra) this.updateZebras();\n\t},\n\n\tupdateZebras: function(){\n\t\tvar index = 0;\n\t\tArray.each(this.body.rows, function(row){\n\t\t\tif (!this.options.zebraOnlyVisibleRows || row.isDisplayed()){\n\t\t\t\tthis.zebra(row, index++);\n\t\t\t}\n\t\t}, this);\n\t},\n\n\tsetRowStyle: function(row, i){\n\t\tif (this.previous) this.previous(row, i);\n\t\tthis.zebra(row, i);\n\t},\n\n\tzebra: function(row, i){\n\t\treturn row[((i % 2) ? 'remove' : 'add')+'Class'](this.options.classZebra);\n\t},\n\n\tpush: function(){\n\t\tvar pushed = this.previous.apply(this, arguments);\n\t\tif (this.options.zebra) this.updateZebras();\n\t\treturn pushed;\n\t}\n\n});\n\n\n/*\n---\n\nscript: HtmlTable.Sort.js\n\nname: HtmlTable.Sort\n\ndescription: Builds a stripy, sortable table with methods to add rows.\n\nlicense: MIT-style license\n\nauthors:\n - Harald Kirschner\n - Aaron Newton\n - Jacob Thornton\n\nrequires:\n - Core/Hash\n - /HtmlTable\n - /Class.refactor\n - /Element.Delegation\n - /String.Extras\n - /Date\n\nprovides: [HtmlTable.Sort]\n\n...\n*/\n\nHtmlTable = Class.refactor(HtmlTable, {\n\n\toptions: {/*\n\t\tonSort: function(){}, */\n\t\tsortIndex: 0,\n\t\tsortReverse: false,\n\t\tparsers: [],\n\t\tdefaultParser: 'string',\n\t\tclassSortable: 'table-sortable',\n\t\tclassHeadSort: 'table-th-sort',\n\t\tclassHeadSortRev: 'table-th-sort-rev',\n\t\tclassNoSort: 'table-th-nosort',\n\t\tclassGroupHead: 'table-tr-group-head',\n\t\tclassGroup: 'table-tr-group',\n\t\tclassCellSort: 'table-td-sort',\n\t\tclassSortSpan: 'table-th-sort-span',\n\t\tsortable: false,\n\t\tthSelector: 'th'\n\t},\n\n\tinitialize: function (){\n\t\tthis.previous.apply(this, arguments);\n\t\tif (this.occluded) return this.occluded;\n\t\tthis.sorted = {index: null, dir: 1};\n\t\tif (!this.bound) this.bound = {};\n\t\tthis.bound.headClick = this.headClick.bind(this);\n\t\tthis.sortSpans = new Elements();\n\t\tif (this.options.sortable){\n\t\t\tthis.enableSort();\n\t\t\tif (this.options.sortIndex != null) this.sort(this.options.sortIndex, this.options.sortReverse);\n\t\t}\n\t},\n\n\tattachSorts: function(attach){\n\t\tthis.detachSorts();\n\t\tif (attach !== false) this.element.addEvent('click:relay(' + this.options.thSelector + ')', this.bound.headClick);\n\t},\n\n\tdetachSorts: function(){\n\t\tthis.element.removeEvents('click:relay(' + this.options.thSelector + ')');\n\t},\n\n\tsetHeaders: function(){\n\t\tthis.previous.apply(this, arguments);\n\t\tif (this.sortEnabled) this.setParsers();\n\t},\n\n\tsetParsers: function(){\n\t\tthis.parsers = this.detectParsers();\n\t},\n\n\tdetectParsers: function(){\n\t\treturn this.head && this.head.getElements(this.options.thSelector).flatten().map(this.detectParser, this);\n\t},\n\n\tdetectParser: function(cell, index){\n\t\tif (cell.hasClass(this.options.classNoSort) || cell.retrieve('htmltable-parser')) return cell.retrieve('htmltable-parser');\n\t\tvar thDiv = new Element('div');\n\t\tthDiv.adopt(cell.childNodes).inject(cell);\n\t\tvar sortSpan = new Element('span', {'class': this.options.classSortSpan}).inject(thDiv, 'top');\n\t\tthis.sortSpans.push(sortSpan);\n\t\tvar parser = this.options.parsers[index],\n\t\t\trows = this.body.rows,\n\t\t\tcancel;\n\t\tswitch (typeOf(parser)){\n\t\t\tcase 'function': parser = {convert: parser}; cancel = true; break;\n\t\t\tcase 'string': parser = parser; cancel = true; break;\n\t\t}\n\t\tif (!cancel){\n\t\t\tHtmlTable.ParserPriority.some(function(parserName){\n\t\t\t\tvar current = HtmlTable.Parsers[parserName],\n\t\t\t\t\tmatch = current.match;\n\t\t\t\tif (!match) return false;\n\t\t\t\tfor (var i = 0, j = rows.length; i < j; i++){\n\t\t\t\t\tvar cell = document.id(rows[i].cells[index]),\n\t\t\t\t\t\ttext = cell ? cell.get('html').clean() : '';\n\t\t\t\t\tif (text && match.test(text)){\n\t\t\t\t\t\tparser = current;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tif (!parser) parser = this.options.defaultParser;\n\t\tcell.store('htmltable-parser', parser);\n\t\treturn parser;\n\t},\n\n\theadClick: function(event, el){\n\t\tif (!this.head || el.hasClass(this.options.classNoSort)) return;\n\t\treturn this.sort(Array.indexOf(this.head.getElements(this.options.thSelector).flatten(), el) % this.body.rows[0].cells.length);\n\t},\n\n\tserialize: function(){\n\t\tvar previousSerialization = this.previous.apply(this, arguments) || {};\n\t\tif (this.options.sortable){\n\t\t\tpreviousSerialization.sortIndex = this.sorted.index;\n\t\t\tpreviousSerialization.sortReverse = this.sorted.reverse;\n\t\t}\n\t\treturn previousSerialization;\n\t},\n\n\trestore: function(tableState){\n\t\tif(this.options.sortable && tableState.sortIndex){\n\t\t\tthis.sort(tableState.sortIndex, tableState.sortReverse);\n\t\t}\n\t\tthis.previous.apply(this, arguments);\n\t},\n\n\tsetSortedState: function(index, reverse){\n\t\tif (reverse != null) this.sorted.reverse = reverse;\n\t\telse if (this.sorted.index == index) this.sorted.reverse = !this.sorted.reverse;\n\t\telse this.sorted.reverse = this.sorted.index == null;\n\n\t\tif (index != null) this.sorted.index = index;\n\t},\n\n\tsetHeadSort: function(sorted){\n\t\tvar head = $$(!this.head.length ? this.head.cells[this.sorted.index] : this.head.map(function(row){\n\t\t\treturn row.getElements(this.options.thSelector)[this.sorted.index];\n\t\t}, this).clean());\n\t\tif (!head.length) return;\n\t\tif (sorted){\n\t\t\thead.addClass(this.options.classHeadSort);\n\t\t\tif (this.sorted.reverse) head.addClass(this.options.classHeadSortRev);\n\t\t\telse head.removeClass(this.options.classHeadSortRev);\n\t\t} else {\n\t\t\thead.removeClass(this.options.classHeadSort).removeClass(this.options.classHeadSortRev);\n\t\t}\n\t},\n\n\tsetRowSort: function(data, pre){\n\t\tvar count = data.length,\n\t\t\tbody = this.body,\n\t\t\tgroup,\n\t\t\trowIndex;\n\n\t\twhile (count){\n\t\t\tvar item = data[--count],\n\t\t\t\tposition = item.position,\n\t\t\t\trow = body.rows[position];\n\n\t\t\tif (row.disabled) continue;\n\t\t\tif (!pre){\n\t\t\t\tgroup = this.setGroupSort(group, row, item);\n\t\t\t\tthis.setRowStyle(row, count);\n\t\t\t}\n\t\t\tbody.appendChild(row);\n\n\t\t\tfor (rowIndex = 0; rowIndex < count; rowIndex++){\n\t\t\t\tif (data[rowIndex].position > position) data[rowIndex].position--;\n\t\t\t}\n\t\t}\n\t},\n\n\tsetRowStyle: function(row, i){\n\t\tthis.previous(row, i);\n\t\trow.cells[this.sorted.index].addClass(this.options.classCellSort);\n\t},\n\n\tsetGroupSort: function(group, row, item){\n\t\tif (group == item.value) row.removeClass(this.options.classGroupHead).addClass(this.options.classGroup);\n\t\telse row.removeClass(this.options.classGroup).addClass(this.options.classGroupHead);\n\t\treturn item.value;\n\t},\n\n\tgetParser: function(){\n\t\tvar parser = this.parsers[this.sorted.index];\n\t\treturn typeOf(parser) == 'string' ? HtmlTable.Parsers[parser] : parser;\n\t},\n\n\tsort: function(index, reverse, pre){\n\t\tif (!this.head) return;\n\n\t\tif (!pre){\n\t\t\tthis.clearSort();\n\t\t\tthis.setSortedState(index, reverse);\n\t\t\tthis.setHeadSort(true);\n\t\t}\n\n\t\tvar parser = this.getParser();\n\t\tif (!parser) return;\n\n\t\tvar rel;\n\t\tif (!Browser.ie){\n\t\t\trel = this.body.getParent();\n\t\t\tthis.body.dispose();\n\t\t}\n\n\t\tvar data = this.parseData(parser).sort(function(a, b){\n\t\t\tif (a.value === b.value) return 0;\n\t\t\treturn a.value > b.value ? 1 : -1;\n\t\t});\n\n\t\tif (this.sorted.reverse == (parser == HtmlTable.Parsers['input-checked'])) data.reverse(true);\n\t\tthis.setRowSort(data, pre);\n\n\t\tif (rel) rel.grab(this.body);\n\t\tthis.fireEvent('stateChanged');\n\t\treturn this.fireEvent('sort', [this.body, this.sorted.index]);\n\t},\n\n\tparseData: function(parser){\n\t\treturn Array.map(this.body.rows, function(row, i){\n\t\t\tvar value = parser.convert.call(document.id(row.cells[this.sorted.index]));\n\t\t\treturn {\n\t\t\t\tposition: i,\n\t\t\t\tvalue: value\n\t\t\t};\n\t\t}, this);\n\t},\n\n\tclearSort: function(){\n\t\tthis.setHeadSort(false);\n\t\tthis.body.getElements('td').removeClass(this.options.classCellSort);\n\t},\n\n\treSort: function(){\n\t\tif (this.sortEnabled) this.sort.call(this, this.sorted.index, this.sorted.reverse);\n\t\treturn this;\n\t},\n\n\tenableSort: function(){\n\t\tthis.element.addClass(this.options.classSortable);\n\t\tthis.attachSorts(true);\n\t\tthis.setParsers();\n\t\tthis.sortEnabled = true;\n\t\treturn this;\n\t},\n\n\tdisableSort: function(){\n\t\tthis.element.removeClass(this.options.classSortable);\n\t\tthis.attachSorts(false);\n\t\tthis.sortSpans.each(function(span){\n\t\t\tspan.destroy();\n\t\t});\n\t\tthis.sortSpans.empty();\n\t\tthis.sortEnabled = false;\n\t\treturn this;\n\t}\n\n});\n\nHtmlTable.ParserPriority = ['date', 'input-checked', 'input-value', 'float', 'number'];\n\nHtmlTable.Parsers = {\n\n\t'date': {\n\t\tmatch: /^\\d{2}[-\\/ ]\\d{2}[-\\/ ]\\d{2,4}$/,\n\t\tconvert: function(){\n\t\t\tvar d = Date.parse(this.get('text').stripTags());\n\t\t\treturn (typeOf(d) == 'date') ? d.format('db') : '';\n\t\t},\n\t\ttype: 'date'\n\t},\n\t'input-checked': {\n\t\tmatch: / type=\"(radio|checkbox)\" /,\n\t\tconvert: function(){\n\t\t\treturn this.getElement('input').checked;\n\t\t}\n\t},\n\t'input-value': {\n\t\tmatch: / 0)) return null;\n\t\tif (includeHiddenRows){\n\t\t\tindex += offset;\n\t\t} else {\n\t\t\tvar limit = 0,\n\t\t\t count = 0;\n\t\t\tif (offset > 0){\n\t\t\t\twhile (count < offset && index < this.body.rows.length -1){\n\t\t\t\t\tif (this.body.rows[++index].isDisplayed()) count++;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile (count > offset && index > 0){\n\t\t\t\t\tif (this.body.rows[--index].isDisplayed()) count--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn index;\n\t},\n\n\tattachSelects: function(attach){\n\t\tattach = attach != null ? attach : true;\n\n\t\tvar method = attach ? 'addEvents' : 'removeEvents';\n\t\tthis.element[method]({\n\t\t\tmouseleave: this.bound.mouseleave,\n\t\t\tclick: this.bound.activateKeyboard\n\t\t});\n\n\t\tthis.body[method]({\n\t\t\t'click:relay(tr)': this.bound.clickRow,\n\t\t\t'contextmenu:relay(tr)': this.bound.clickRow\n\t\t});\n\n\t\tif (this.options.useKeyboard || this.keyboard){\n\t\t\tif (!this.keyboard) this.keyboard = new Keyboard();\n\t\t\tif (!this.selectKeysDefined){\n\t\t\t\tthis.selectKeysDefined = true;\n\t\t\t\tvar timer, held;\n\n\t\t\t\tvar move = function(offset){\n\t\t\t\t\tvar mover = function(e){\n\t\t\t\t\t\tclearTimeout(timer);\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tvar to = this.body.rows[this.getRowByOffset(offset, this.options.selectHiddenRows)];\n\t\t\t\t\t\tif (e.shift && to && this.isSelected(to)){\n\t\t\t\t\t\t\tthis.deselectRow(this.focused);\n\t\t\t\t\t\t\tthis.focused = to;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (to && (!this.options.allowMultiSelect || !e.shift)){\n\t\t\t\t\t\t\t\tthis.selectNone();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis.shiftFocus(offset, e);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (held){\n\t\t\t\t\t\t\ttimer = mover.delay(100, this, e);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttimer = (function(){\n\t\t\t\t\t\t\t\theld = true;\n\t\t\t\t\t\t\t\tmover(e);\n\t\t\t\t\t\t\t}).delay(400);\n\t\t\t\t\t\t}\n\t\t\t\t\t}.bind(this);\n\t\t\t\t\treturn mover;\n\t\t\t\t}.bind(this);\n\n\t\t\t\tvar clear = function(){\n\t\t\t\t\tclearTimeout(timer);\n\t\t\t\t\theld = false;\n\t\t\t\t};\n\n\t\t\t\tthis.keyboard.addEvents({\n\t\t\t\t\t'keydown:shift+up': move(-1),\n\t\t\t\t\t'keydown:shift+down': move(1),\n\t\t\t\t\t'keyup:shift+up': clear,\n\t\t\t\t\t'keyup:shift+down': clear,\n\t\t\t\t\t'keyup:up': clear,\n\t\t\t\t\t'keyup:down': clear\n\t\t\t\t});\n\n\t\t\t\tvar shiftHint = '';\n\t\t\t\tif (this.options.allowMultiSelect && this.options.shiftForMultiSelect && this.options.useKeyboard){\n\t\t\t\t\tshiftHint = \" (Shift multi-selects).\";\n\t\t\t\t}\n\n\t\t\t\tthis.keyboard.addShortcuts({\n\t\t\t\t\t'Select Previous Row': {\n\t\t\t\t\t\tkeys: 'up',\n\t\t\t\t\t\tshortcut: 'up arrow',\n\t\t\t\t\t\thandler: move(-1),\n\t\t\t\t\t\tdescription: 'Select the previous row in the table.' + shiftHint\n\t\t\t\t\t},\n\t\t\t\t\t'Select Next Row': {\n\t\t\t\t\t\tkeys: 'down',\n\t\t\t\t\t\tshortcut: 'down arrow',\n\t\t\t\t\t\thandler: move(1),\n\t\t\t\t\t\tdescription: 'Select the next row in the table.' + shiftHint\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t}\n\t\t\tthis.keyboard[attach ? 'activate' : 'deactivate']();\n\t\t}\n\t\tthis.updateSelects();\n\t},\n\n\tmouseleave: function(){\n\t\tif (this.hovered) this.leaveRow(this.hovered);\n\t}\n\n});\n\n\n/*\n---\n\nscript: Locale.Set.From.js\n\nname: Locale.Set.From\n\ndescription: Provides an alternative way to create Locale.Set objects.\n\nlicense: MIT-style license\n\nauthors:\n - Tim Wienk\n\nrequires:\n - Core/JSON\n - /Locale\n\nprovides: Locale.Set.From\n\n...\n*/\n\n(function(){\n\nvar parsers = {\n\t'json': JSON.decode\n};\n\nLocale.Set.defineParser = function(name, fn){\n\tparsers[name] = fn;\n};\n\nLocale.Set.from = function(set, type){\n\tif (instanceOf(set, Locale.Set)) return set;\n\n\tif (!type && typeOf(set) == 'string') type = 'json';\n\tif (parsers[type]) set = parsers[type](set);\n\n\tvar locale = new Locale.Set;\n\n\tlocale.sets = set.sets || {};\n\n\tif (set.inherits){\n\t\tlocale.inherits.locales = Array.from(set.inherits.locales);\n\t\tlocale.inherits.sets = set.inherits.sets || {};\n\t}\n\n\treturn locale;\n};\n\n})();\n\nvar Scroller = new Class({\n\n\tImplements: [Events, Options],\n\n\toptions: {\n\t\tarea: 20,\n\t\tvelocity: 1,\n\t\tonChange: function(x, y){\n\t\t\tthis.element.scrollTo(x, y);\n\t\t},\n\t\tfps: 50\n\t},\n\n\tinitialize: function(element, options){\n\t\tthis.setOptions(options);\n\t\tthis.element = document.id(element);\n\t\tthis.docBody = document.id(this.element.getDocument().body);\n\t\tthis.listener = (typeOf(this.element) != 'element') ? this.docBody : this.element;\n\t\tthis.timer = null;\n\t\tthis.bound = {\n\t\t\tattach: this.attach.bind(this),\n\t\t\tdetach: this.detach.bind(this),\n\t\t\tgetCoords: this.getCoords.bind(this)\n\t\t};\n\t},\n\n\tstart: function(){\n\t\tthis.listener.addEvents({\n\t\t\tmouseover: this.bound.attach,\n\t\t\tmouseleave: this.bound.detach\n\t\t});\n\t\treturn this;\n\t},\n\n\tstop: function(){\n\t\tthis.listener.removeEvents({\n\t\t\tmouseover: this.bound.attach,\n\t\t\tmouseleave: this.bound.detach\n\t\t});\n\t\tthis.detach();\n\t\tthis.timer = clearInterval(this.timer);\n\t\treturn this;\n\t},\n\n\tattach: function(){\n\t\tthis.listener.addEvent('mousemove', this.bound.getCoords);\n\t},\n\n\tdetach: function(){\n\t\tthis.listener.removeEvent('mousemove', this.bound.getCoords);\n\t\tthis.timer = clearInterval(this.timer);\n\t},\n\n\tgetCoords: function(event){\n\t\tthis.page = (this.listener.get('tag') == 'body') ? event.client : event.page;\n\t\tif (!this.timer) this.timer = this.scroll.periodical(Math.round(1000 / this.options.fps), this);\n\t},\n\n\tscroll: function(){\n\t\tvar size = this.element.getSize(),\n\t\t\tscroll = this.element.getScroll(),\n\t\t\tpos = this.element != this.docBody ? this.element.getOffsets() : {x: 0, y:0},\n\t\t\tscrollSize = this.element.getScrollSize(),\n\t\t\tchange = {x: 0, y: 0},\n\t\t\ttop = this.options.area.top || this.options.area,\n\t\t\tbottom = this.options.area.bottom || this.options.area;\n\t\tfor (var z in this.page){\n\t\t\tif (this.page[z] < (top + pos[z]) && scroll[z] != 0){\n\t\t\t\tchange[z] = (this.page[z] - top - pos[z]) * this.options.velocity;\n\t\t\t} else if (this.page[z] + bottom > (size[z] + pos[z]) && scroll[z] + size[z] != scrollSize[z]){\n\t\t\t\tchange[z] = (this.page[z] - size[z] + bottom - pos[z]) * this.options.velocity;\n\t\t\t}\n\t\t\tchange[z] = change[z].round();\n\t\t}\n\t\tif (change.y || change.x) this.fireEvent('change', [scroll.x + change.x, scroll.y + change.y]);\n\t}\n\n});\n","/*!\n * iScroll v4.2.5 ~ Copyright (c) 2012 Matteo Spinelli, http://cubiq.org\n * Released under MIT license, http://cubiq.org/license\n */\n(function(window, doc){\nvar m = Math,\n\tdummyStyle = doc.createElement('div').style,\n\tvendor = (function () {\n\t\tvar vendors = 't,webkitT,MozT,msT,OT'.split(','),\n\t\t\tt,\n\t\t\ti = 0,\n\t\t\tl = vendors.length;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tt = vendors[i] + 'ransform';\n\t\t\tif ( t in dummyStyle ) {\n\t\t\t\treturn vendors[i].substr(0, vendors[i].length - 1);\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t})(),\n\tcssVendor = vendor ? '-' + vendor.toLowerCase() + '-' : '',\n\n\t// Style properties\n\ttransform = prefixStyle('transform'),\n\ttransitionProperty = prefixStyle('transitionProperty'),\n\ttransitionDuration = prefixStyle('transitionDuration'),\n\ttransformOrigin = prefixStyle('transformOrigin'),\n\ttransitionTimingFunction = prefixStyle('transitionTimingFunction'),\n\ttransitionDelay = prefixStyle('transitionDelay'),\n\n // Browser capabilities\n\tisAndroid = (/android/gi).test(navigator.appVersion),\n\tisIDevice = (/iphone|ipad/gi).test(navigator.appVersion),\n\tisTouchPad = (/hp-tablet/gi).test(navigator.appVersion),\n\n has3d = prefixStyle('perspective') in dummyStyle,\n hasTouch = 'ontouchstart' in window && !isTouchPad,\n hasTransform = vendor !== false,\n hasTransitionEnd = prefixStyle('transition') in dummyStyle,\n\n\tRESIZE_EV = 'onorientationchange' in window ? 'orientationchange' : 'resize',\n\tSTART_EV = hasTouch ? 'touchstart' : 'mousedown',\n\tMOVE_EV = hasTouch ? 'touchmove' : 'mousemove',\n\tEND_EV = hasTouch ? 'touchend' : 'mouseup',\n\tCANCEL_EV = hasTouch ? 'touchcancel' : 'mouseup',\n\tTRNEND_EV = (function () {\n\t\tif ( vendor === false ) return false;\n\n\t\tvar transitionEnd = {\n\t\t\t\t''\t\t\t: 'transitionend',\n\t\t\t\t'webkit'\t: 'webkitTransitionEnd',\n\t\t\t\t'Moz'\t\t: 'transitionend',\n\t\t\t\t'O'\t\t\t: 'otransitionend',\n\t\t\t\t'ms'\t\t: 'MSTransitionEnd'\n\t\t\t};\n\n\t\treturn transitionEnd[vendor];\n\t})(),\n\n\tnextFrame = (function() {\n\t\treturn window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\twindow.oRequestAnimationFrame ||\n\t\t\twindow.msRequestAnimationFrame ||\n\t\t\tfunction(callback) { return setTimeout(callback, 1); };\n\t})(),\n\tcancelFrame = (function () {\n\t\treturn window.cancelRequestAnimationFrame ||\n\t\t\twindow.webkitCancelAnimationFrame ||\n\t\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\t\twindow.mozCancelRequestAnimationFrame ||\n\t\t\twindow.oCancelRequestAnimationFrame ||\n\t\t\twindow.msCancelRequestAnimationFrame ||\n\t\t\tclearTimeout;\n\t})(),\n\n\t// Helpers\n\ttranslateZ = has3d ? ' translateZ(0)' : '',\n\n\t// Constructor\n\tiScroll = function (el, options) {\n\t\tvar that = this,\n\t\t\ti;\n\n\t\tthat.wrapper = typeof el == 'object' ? el : doc.getElementById(el);\n\t\tthat.wrapper.style.overflow = 'hidden';\n\t\tthat.scroller = that.wrapper.children[0];\n\n\t\t// Default options\n\t\tthat.options = {\n\t\t\thScroll: true,\n\t\t\tvScroll: true,\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\tbounce: true,\n\t\t\tbounceLock: false,\n\t\t\tmomentum: true,\n\t\t\tlockDirection: true,\n\t\t\tuseTransform: true,\n\t\t\tuseTransition: false,\n\t\t\ttopOffset: 0,\n\t\t\tcheckDOMChanges: false,\t\t// Experimental\n\t\t\thandleClick: true,\n\n\t\t\t// Scrollbar\n\t\t\thScrollbar: true,\n\t\t\tvScrollbar: true,\n\t\t\tfixedScrollbar: isAndroid,\n\t\t\thideScrollbar: isIDevice,\n\t\t\tfadeScrollbar: isIDevice && has3d,\n\t\t\tscrollbarClass: '',\n\n\t\t\t// Zoom\n\t\t\tzoom: false,\n\t\t\tzoomMin: 1,\n\t\t\tzoomMax: 4,\n\t\t\tdoubleTapZoom: 2,\n\t\t\twheelAction: 'scroll',\n\n\t\t\t// Snap\n\t\t\tsnap: false,\n\t\t\tsnapThreshold: 1,\n\n\t\t\t// Events\n\t\t\tonRefresh: null,\n\t\t\tonBeforeScrollStart: function (e) { e.preventDefault(); },\n\t\t\tonScrollStart: null,\n\t\t\tonBeforeScrollMove: null,\n\t\t\tonScrollMove: null,\n\t\t\tonBeforeScrollEnd: null,\n\t\t\tonScrollEnd: null,\n\t\t\tonTouchEnd: null,\n\t\t\tonDestroy: null,\n\t\t\tonZoomStart: null,\n\t\t\tonZoom: null,\n\t\t\tonZoomEnd: null\n\t\t};\n\n\t\t// User defined options\n\t\tfor (i in options) that.options[i] = options[i];\n\t\t\n\t\t// Set starting position\n\t\tthat.x = that.options.x;\n\t\tthat.y = that.options.y;\n\n\t\t// Normalize options\n\t\tthat.options.useTransform = hasTransform && that.options.useTransform;\n\t\tthat.options.hScrollbar = that.options.hScroll && that.options.hScrollbar;\n\t\tthat.options.vScrollbar = that.options.vScroll && that.options.vScrollbar;\n\t\tthat.options.zoom = that.options.useTransform && that.options.zoom;\n\t\tthat.options.useTransition = hasTransitionEnd && that.options.useTransition;\n\n\t\t// Helpers FIX ANDROID BUG!\n\t\t// translate3d and scale doesn't work together!\n\t\t// Ignoring 3d ONLY WHEN YOU SET that.options.zoom\n\t\tif ( that.options.zoom && isAndroid ){\n\t\t\ttranslateZ = '';\n\t\t}\n\t\t\n\t\t// Set some default styles\n\t\tthat.scroller.style[transitionProperty] = that.options.useTransform ? cssVendor + 'transform' : 'top left';\n\t\tthat.scroller.style[transitionDuration] = '0';\n\t\tthat.scroller.style[transformOrigin] = '0 0';\n\t\tif (that.options.useTransition) that.scroller.style[transitionTimingFunction] = 'cubic-bezier(0.33,0.66,0.66,1)';\n\t\t\n\t\tif (that.options.useTransform) that.scroller.style[transform] = 'translate(' + that.x + 'px,' + that.y + 'px)' + translateZ;\n\t\telse that.scroller.style.cssText += ';position:absolute;top:' + that.y + 'px;left:' + that.x + 'px';\n\n\t\tif (that.options.useTransition) that.options.fixedScrollbar = true;\n\n\t\tthat.refresh();\n\n\t\tthat._bind(RESIZE_EV, window);\n\t\tthat._bind(START_EV);\n\t\tif (!hasTouch) {\n\t\t\tif (that.options.wheelAction != 'none') {\n\t\t\t\tthat._bind('DOMMouseScroll');\n\t\t\t\tthat._bind('mousewheel');\n\t\t\t}\n\t\t}\n\n\t\tif (that.options.checkDOMChanges) that.checkDOMTime = setInterval(function () {\n\t\t\tthat._checkDOMChanges();\n\t\t}, 500);\n\t};\n\t\n\tiScroll.canIScroll = function() {\n\t\tvar m = /MSIE ([0-9]{1,}[\\.0-9]{0,})/.exec(navigator.userAgent);\n\t\treturn !(m && parseFloat(m[1]) < 9);\n\t}\n\n// Prototype\niScroll.prototype = {\n\tenabled: true,\n\tx: 0,\n\ty: 0,\n\tsteps: [],\n\tscale: 1,\n\tcurrPageX: 0, currPageY: 0,\n\tpagesX: [], pagesY: [],\n\taniTime: null,\n\twheelZoomCount: 0,\n\t\n\thandleEvent: function (e) {\n\t\tvar that = this;\n\t\tswitch(e.type) {\n\t\t\tcase START_EV:\n\t\t\t\tif (!hasTouch && e.button !== 0) return;\n\t\t\t\tthat._start(e);\n\t\t\t\tbreak;\n\t\t\tcase MOVE_EV: that._move(e); break;\n\t\t\tcase END_EV:\n\t\t\tcase CANCEL_EV: that._end(e); break;\n\t\t\tcase RESIZE_EV: that._resize(); break;\n\t\t\tcase 'DOMMouseScroll': case 'mousewheel': that._wheel(e); break;\n\t\t\tcase TRNEND_EV: that._transitionEnd(e); break;\n\t\t}\n\t},\n\t\n\t_checkDOMChanges: function () {\n\t\tif (this.moved || this.zoomed || this.animating ||\n\t\t\t(this.scrollerW == this.scroller.offsetWidth * this.scale && this.scrollerH == this.scroller.offsetHeight * this.scale)) return;\n\n\t\tthis.refresh();\n\t},\n\t\n\t_scrollbar: function (dir) {\n\t\tvar that = this,\n\t\t\tbar;\n\n\t\tif (!that[dir + 'Scrollbar']) {\n\t\t\tif (that[dir + 'ScrollbarWrapper']) {\n\t\t\t\tif (hasTransform) that[dir + 'ScrollbarIndicator'].style[transform] = '';\n\t\t\t\tthat[dir + 'ScrollbarWrapper'].parentNode.removeChild(that[dir + 'ScrollbarWrapper']);\n\t\t\t\tthat[dir + 'ScrollbarWrapper'] = null;\n\t\t\t\tthat[dir + 'ScrollbarIndicator'] = null;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (!that[dir + 'ScrollbarWrapper']) {\n\t\t\t// Create the scrollbar wrapper\n\t\t\tbar = doc.createElement('div');\n\n\t\t\tif (that.options.scrollbarClass) bar.className = that.options.scrollbarClass + dir.toUpperCase();\n\t\t\telse bar.style.cssText = 'position:absolute;z-index:100;' + (dir == 'h' ? 'height:7px;bottom:1px;left:2px;right:' + (that.vScrollbar ? '7' : '2') + 'px' : 'width:7px;bottom:' + (that.hScrollbar ? '7' : '2') + 'px;top:2px;right:1px');\n\n\t\t\tbar.style.cssText += ';pointer-events:none;' + cssVendor + 'transition-property:opacity;' + cssVendor + 'transition-duration:' + (that.options.fadeScrollbar ? '350ms' : '0') + ';overflow:hidden;opacity:' + (that.options.hideScrollbar ? '0' : '1');\n\n\t\t\tthat.wrapper.appendChild(bar);\n\t\t\tthat[dir + 'ScrollbarWrapper'] = bar;\n\n\t\t\t// Create the scrollbar indicator\n\t\t\tbar = doc.createElement('div');\n\t\t\tif (!that.options.scrollbarClass) {\n\t\t\t\tbar.style.cssText = 'position:absolute;z-index:100;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);' + cssVendor + 'background-clip:padding-box;' + cssVendor + 'box-sizing:border-box;' + (dir == 'h' ? 'height:100%' : 'width:100%') + ';' + cssVendor + 'border-radius:3px;border-radius:3px';\n\t\t\t}\n\t\t\tbar.style.cssText += ';pointer-events:none;' + cssVendor + 'transition-property:' + cssVendor + 'transform;' + cssVendor + 'transition-timing-function:cubic-bezier(0.33,0.66,0.66,1);' + cssVendor + 'transition-duration:0;' + cssVendor + 'transform: translate(0,0)' + translateZ;\n\t\t\tif (that.options.useTransition) bar.style.cssText += ';' + cssVendor + 'transition-timing-function:cubic-bezier(0.33,0.66,0.66,1)';\n\n\t\t\tthat[dir + 'ScrollbarWrapper'].appendChild(bar);\n\t\t\tthat[dir + 'ScrollbarIndicator'] = bar;\n\t\t}\n\n\t\tif (dir == 'h') {\n\t\t\tthat.hScrollbarSize = that.hScrollbarWrapper.clientWidth;\n\t\t\tthat.hScrollbarIndicatorSize = m.max(m.round(that.hScrollbarSize * that.hScrollbarSize / that.scrollerW), 8);\n\t\t\tthat.hScrollbarIndicator.style.width = that.hScrollbarIndicatorSize + 'px';\n\t\t\tthat.hScrollbarMaxScroll = that.hScrollbarSize - that.hScrollbarIndicatorSize;\n\t\t\tthat.hScrollbarProp = that.hScrollbarMaxScroll / that.maxScrollX;\n\t\t} else {\n\t\t\tthat.vScrollbarSize = that.vScrollbarWrapper.clientHeight;\n\t\t\tthat.vScrollbarIndicatorSize = m.max(m.round(that.vScrollbarSize * that.vScrollbarSize / that.scrollerH), 8);\n\t\t\tthat.vScrollbarIndicator.style.height = that.vScrollbarIndicatorSize + 'px';\n\t\t\tthat.vScrollbarMaxScroll = that.vScrollbarSize - that.vScrollbarIndicatorSize;\n\t\t\tthat.vScrollbarProp = that.vScrollbarMaxScroll / that.maxScrollY;\n\t\t}\n\n\t\t// Reset position\n\t\tthat._scrollbarPos(dir, true);\n\t},\n\t\n\t_resize: function () {\n\t\tvar that = this;\n\t\tsetTimeout(function () { that.refresh(); }, isAndroid ? 200 : 0);\n\t},\n\t\n\t_pos: function (x, y) {\n\t\tif (this.zoomed) return;\n\n\t\tx = this.hScroll ? x : 0;\n\t\ty = this.vScroll ? y : 0;\n\n\t\tif (this.options.useTransform) {\n\t\t\tthis.scroller.style[transform] = 'translate(' + x + 'px,' + y + 'px) scale(' + this.scale + ')' + translateZ;\n\t\t} else {\n\t\t\tx = m.round(x);\n\t\t\ty = m.round(y);\n\t\t\tthis.scroller.style.left = x + 'px';\n\t\t\tthis.scroller.style.top = y + 'px';\n\t\t}\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\tthis._scrollbarPos('h');\n\t\tthis._scrollbarPos('v');\n\t},\n\n\t_scrollbarPos: function (dir, hidden) {\n\t\tvar that = this,\n\t\t\tpos = dir == 'h' ? that.x : that.y,\n\t\t\tsize;\n\n\t\tif (!that[dir + 'Scrollbar']) return;\n\n\t\tpos = that[dir + 'ScrollbarProp'] * pos;\n\n\t\tif (pos < 0) {\n\t\t\tif (!that.options.fixedScrollbar) {\n\t\t\t\tsize = that[dir + 'ScrollbarIndicatorSize'] + m.round(pos * 3);\n\t\t\t\tif (size < 8) size = 8;\n\t\t\t\tthat[dir + 'ScrollbarIndicator'].style[dir == 'h' ? 'width' : 'height'] = size + 'px';\n\t\t\t}\n\t\t\tpos = 0;\n\t\t} else if (pos > that[dir + 'ScrollbarMaxScroll']) {\n\t\t\tif (!that.options.fixedScrollbar) {\n\t\t\t\tsize = that[dir + 'ScrollbarIndicatorSize'] - m.round((pos - that[dir + 'ScrollbarMaxScroll']) * 3);\n\t\t\t\tif (size < 8) size = 8;\n\t\t\t\tthat[dir + 'ScrollbarIndicator'].style[dir == 'h' ? 'width' : 'height'] = size + 'px';\n\t\t\t\tpos = that[dir + 'ScrollbarMaxScroll'] + (that[dir + 'ScrollbarIndicatorSize'] - size);\n\t\t\t} else {\n\t\t\t\tpos = that[dir + 'ScrollbarMaxScroll'];\n\t\t\t}\n\t\t}\n\n\t\tthat[dir + 'ScrollbarWrapper'].style[transitionDelay] = '0';\n\t\tthat[dir + 'ScrollbarWrapper'].style.opacity = hidden && that.options.hideScrollbar ? '0' : '1';\n\t\tthat[dir + 'ScrollbarIndicator'].style[transform] = 'translate(' + (dir == 'h' ? pos + 'px,0)' : '0,' + pos + 'px)') + translateZ;\n\t},\n\t\n\t_start: function (e) {\n\t\tvar that = this,\n\t\t\tpoint = hasTouch ? e.touches[0] : e,\n\t\t\tmatrix, x, y,\n\t\t\tc1, c2;\n\n\t\tif (!that.enabled) return;\n\n\t\tif (that.options.onBeforeScrollStart) {\n\t\t\tif(that.options.onBeforeScrollStart.call(that, e)===false) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (that.options.useTransition || that.options.zoom) that._transitionTime(0);\n\n\t\tthat.moved = false;\n\t\tthat.animating = false;\n\t\tthat.zoomed = false;\n\t\tthat.distX = 0;\n\t\tthat.distY = 0;\n\t\tthat.absDistX = 0;\n\t\tthat.absDistY = 0;\n\t\tthat.dirX = 0;\n\t\tthat.dirY = 0;\n\n\t\t// Gesture start\n\t\tif (that.options.zoom && hasTouch && e.touches.length > 1) {\n\t\t\tc1 = m.abs(e.touches[0].pageX-e.touches[1].pageX);\n\t\t\tc2 = m.abs(e.touches[0].pageY-e.touches[1].pageY);\n\t\t\tthat.touchesDistStart = m.sqrt(c1 * c1 + c2 * c2);\n\n\t\t\tthat.originX = m.abs(e.touches[0].pageX + e.touches[1].pageX - that.wrapperOffsetLeft * 2) / 2 - that.x;\n\t\t\tthat.originY = m.abs(e.touches[0].pageY + e.touches[1].pageY - that.wrapperOffsetTop * 2) / 2 - that.y;\n\n\t\t\tif (that.options.onZoomStart) that.options.onZoomStart.call(that, e);\n\t\t}\n\n\t\tif (that.options.momentum) {\n\t\t\tif (that.options.useTransform) {\n\t\t\t\t// Very lame general purpose alternative to CSSMatrix\n\t\t\t\tmatrix = getComputedStyle(that.scroller, null)[transform].replace(/[^0-9\\-.,]/g, '').split(',');\n\t\t\t\tx = +(matrix[12] || matrix[4]);\n\t\t\t\ty = +(matrix[13] || matrix[5]);\n\t\t\t} else {\n\t\t\t\tx = +getComputedStyle(that.scroller, null).left.replace(/[^0-9-]/g, '');\n\t\t\t\ty = +getComputedStyle(that.scroller, null).top.replace(/[^0-9-]/g, '');\n\t\t\t}\n\t\t\t\n\t\t\tif (x != that.x || y != that.y) {\n\t\t\t\tif (that.options.useTransition) that._unbind(TRNEND_EV);\n\t\t\t\telse cancelFrame(that.aniTime);\n\t\t\t\tthat.steps = [];\n\t\t\t\tthat._pos(x, y);\n\t\t\t\tif (that.options.onScrollEnd) that.options.onScrollEnd.call(that);\n\t\t\t}\n\t\t}\n\n\t\tthat.absStartX = that.x;\t// Needed by snap threshold\n\t\tthat.absStartY = that.y;\n\n\t\tthat.startX = that.x;\n\t\tthat.startY = that.y;\n\t\tthat.pointX = point.pageX;\n\t\tthat.pointY = point.pageY;\n\n\t\tthat.startTime = e.timeStamp || Date.now();\n\n\t\tif (that.options.onScrollStart) that.options.onScrollStart.call(that, e);\n\n\t\tthat._bind(MOVE_EV, window);\n\t\tthat._bind(END_EV, window);\n\t\tthat._bind(CANCEL_EV, window);\n\t},\n\t\n\t_move: function (e) {\n\t\tvar that = this,\n\t\t\tpoint = hasTouch ? e.touches[0] : e,\n\t\t\tdeltaX = point.pageX - that.pointX,\n\t\t\tdeltaY = point.pageY - that.pointY,\n\t\t\tnewX = that.x + deltaX,\n\t\t\tnewY = that.y + deltaY,\n\t\t\tc1, c2, scale,\n\t\t\ttimestamp = e.timeStamp || Date.now();\n\n\t\tif (that.options.onBeforeScrollMove) that.options.onBeforeScrollMove.call(that, e);\n\n\t\t// Zoom\n\t\tif (that.options.zoom && hasTouch && e.touches.length > 1) {\n\t\t\tc1 = m.abs(e.touches[0].pageX - e.touches[1].pageX);\n\t\t\tc2 = m.abs(e.touches[0].pageY - e.touches[1].pageY);\n\t\t\tthat.touchesDist = m.sqrt(c1*c1+c2*c2);\n\n\t\t\tthat.zoomed = true;\n\n\t\t\tscale = 1 / that.touchesDistStart * that.touchesDist * this.scale;\n\n\t\t\tif (scale < that.options.zoomMin) scale = 0.5 * that.options.zoomMin * Math.pow(2.0, scale / that.options.zoomMin);\n\t\t\telse if (scale > that.options.zoomMax) scale = 2.0 * that.options.zoomMax * Math.pow(0.5, that.options.zoomMax / scale);\n\n\t\t\tthat.lastScale = scale / this.scale;\n\n\t\t\tnewX = this.originX - this.originX * that.lastScale + this.x,\n\t\t\tnewY = this.originY - this.originY * that.lastScale + this.y;\n\n\t\t\tthis.scroller.style[transform] = 'translate(' + newX + 'px,' + newY + 'px) scale(' + scale + ')' + translateZ;\n\n\t\t\tif (that.options.onZoom) that.options.onZoom.call(that, e);\n\t\t\treturn;\n\t\t}\n\n\t\tthat.pointX = point.pageX;\n\t\tthat.pointY = point.pageY;\n\n\t\t// Slow down if outside of the boundaries\n\t\tif (newX > 0 || newX < that.maxScrollX) {\n\t\t\tnewX = that.options.bounce ? that.x + (deltaX / 2) : newX >= 0 || that.maxScrollX >= 0 ? 0 : that.maxScrollX;\n\t\t}\n\t\tif (newY > that.minScrollY || newY < that.maxScrollY) {\n\t\t\tnewY = that.options.bounce ? that.y + (deltaY / 2) : newY >= that.minScrollY || that.maxScrollY >= 0 ? that.minScrollY : that.maxScrollY;\n\t\t}\n\n\t\tthat.distX += deltaX;\n\t\tthat.distY += deltaY;\n\t\tthat.absDistX = m.abs(that.distX);\n\t\tthat.absDistY = m.abs(that.distY);\n\n\t\tif (that.absDistX < 6 && that.absDistY < 6) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Lock direction\n\t\tif (that.options.lockDirection) {\n\t\t\tif (that.absDistX > that.absDistY + 5) {\n\t\t\t\tnewY = that.y;\n\t\t\t\tdeltaY = 0;\n\t\t\t} else if (that.absDistY > that.absDistX + 5) {\n\t\t\t\tnewX = that.x;\n\t\t\t\tdeltaX = 0;\n\t\t\t}\n\t\t}\n\n\t\tthat.moved = true;\n\t\tthat._pos(newX, newY);\n\t\tthat.dirX = deltaX > 0 ? -1 : deltaX < 0 ? 1 : 0;\n\t\tthat.dirY = deltaY > 0 ? -1 : deltaY < 0 ? 1 : 0;\n\n\t\tif (timestamp - that.startTime > 300) {\n\t\t\tthat.startTime = timestamp;\n\t\t\tthat.startX = that.x;\n\t\t\tthat.startY = that.y;\n\t\t}\n\t\t\n\t\tif (that.options.onScrollMove) that.options.onScrollMove.call(that, e);\n\t},\n\t\n\t_end: function (e) {\n\t\tif (hasTouch && e.touches.length !== 0) return;\n\n\t\tvar that = this,\n\t\t\tpoint = hasTouch ? e.changedTouches[0] : e,\n\t\t\ttarget, ev,\n\t\t\tmomentumX = { dist:0, time:0 },\n\t\t\tmomentumY = { dist:0, time:0 },\n\t\t\tduration = (e.timeStamp || Date.now()) - that.startTime,\n\t\t\tnewPosX = that.x,\n\t\t\tnewPosY = that.y,\n\t\t\tdistX, distY,\n\t\t\tnewDuration,\n\t\t\tsnap,\n\t\t\tscale;\n\n\t\tthat._unbind(MOVE_EV, window);\n\t\tthat._unbind(END_EV, window);\n\t\tthat._unbind(CANCEL_EV, window);\n\n\t\tif (that.options.onBeforeScrollEnd) that.options.onBeforeScrollEnd.call(that, e);\n\n\t\tif (that.zoomed) {\n\t\t\tscale = that.scale * that.lastScale;\n\t\t\tscale = Math.max(that.options.zoomMin, scale);\n\t\t\tscale = Math.min(that.options.zoomMax, scale);\n\t\t\tthat.lastScale = scale / that.scale;\n\t\t\tthat.scale = scale;\n\n\t\t\tthat.x = that.originX - that.originX * that.lastScale + that.x;\n\t\t\tthat.y = that.originY - that.originY * that.lastScale + that.y;\n\t\t\t\n\t\t\tthat.scroller.style[transitionDuration] = '200ms';\n\t\t\tthat.scroller.style[transform] = 'translate(' + that.x + 'px,' + that.y + 'px) scale(' + that.scale + ')' + translateZ;\n\t\t\t\n\t\t\tthat.zoomed = false;\n\t\t\tthat.refresh();\n\n\t\t\tif (that.options.onZoomEnd) that.options.onZoomEnd.call(that, e);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!that.moved) {\n\t\t\tif (hasTouch) {\n\t\t\t\tif (that.doubleTapTimer && that.options.zoom) {\n\t\t\t\t\t// Double tapped\n\t\t\t\t\tclearTimeout(that.doubleTapTimer);\n\t\t\t\t\tthat.doubleTapTimer = null;\n\t\t\t\t\tif (that.options.onZoomStart) that.options.onZoomStart.call(that, e);\n\t\t\t\t\tthat.zoom(that.pointX, that.pointY, that.scale == 1 ? that.options.doubleTapZoom : 1);\n\t\t\t\t\tif (that.options.onZoomEnd) {\n\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\tthat.options.onZoomEnd.call(that, e);\n\t\t\t\t\t\t}, 200); // 200 is default zoom duration\n\t\t\t\t\t}\n\t\t\t\t} else if (this.options.handleClick) {\n\t\t\t\t\tthat.doubleTapTimer = setTimeout(function () {\n\t\t\t\t\t\tthat.doubleTapTimer = null;\n\n\t\t\t\t\t\t// Find the last touched element\n\t\t\t\t\t\ttarget = point.target;\n\t\t\t\t\t\twhile (target.nodeType != 1) target = target.parentNode;\n\n\t\t\t\t\t\tif (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA') {\n\t\t\t\t\t\t\tev = doc.createEvent('MouseEvents');\n\t\t\t\t\t\t\tev.initMouseEvent('click', true, true, e.view, 1,\n\t\t\t\t\t\t\t\tpoint.screenX, point.screenY, point.clientX, point.clientY,\n\t\t\t\t\t\t\t\te.ctrlKey, e.altKey, e.shiftKey, e.metaKey,\n\t\t\t\t\t\t\t\t0, null);\n\t\t\t\t\t\t\tev._fake = true;\n\t\t\t\t\t\t\ttarget.dispatchEvent(ev);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, that.options.zoom ? 250 : 0);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthat._resetPos(400);\n\n\t\t\tif (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e);\n\t\t\treturn;\n\t\t}\n\n\t\tif (duration < 300 && that.options.momentum) {\n\t\t\tmomentumX = newPosX ? that._momentum(newPosX - that.startX, duration, -that.x, that.scrollerW - that.wrapperW + that.x, that.options.bounce ? that.wrapperW : 0) : momentumX;\n\t\t\tmomentumY = newPosY ? that._momentum(newPosY - that.startY, duration, -that.y, (that.maxScrollY < 0 ? that.scrollerH - that.wrapperH + that.y - that.minScrollY : 0), that.options.bounce ? that.wrapperH : 0) : momentumY;\n\n\t\t\tnewPosX = that.x + momentumX.dist;\n\t\t\tnewPosY = that.y + momentumY.dist;\n\n\t\t\tif ((that.x > 0 && newPosX > 0) || (that.x < that.maxScrollX && newPosX < that.maxScrollX)) momentumX = { dist:0, time:0 };\n\t\t\tif ((that.y > that.minScrollY && newPosY > that.minScrollY) || (that.y < that.maxScrollY && newPosY < that.maxScrollY)) momentumY = { dist:0, time:0 };\n\t\t}\n\n\t\tif (momentumX.dist || momentumY.dist) {\n\t\t\tnewDuration = m.max(m.max(momentumX.time, momentumY.time), 10);\n\n\t\t\t// Do we need to snap?\n\t\t\tif (that.options.snap) {\n\t\t\t\tdistX = newPosX - that.absStartX;\n\t\t\t\tdistY = newPosY - that.absStartY;\n\t\t\t\tif (m.abs(distX) < that.options.snapThreshold && m.abs(distY) < that.options.snapThreshold) { that.scrollTo(that.absStartX, that.absStartY, 200); }\n\t\t\t\telse {\n\t\t\t\t\tsnap = that._snap(newPosX, newPosY);\n\t\t\t\t\tnewPosX = snap.x;\n\t\t\t\t\tnewPosY = snap.y;\n\t\t\t\t\tnewDuration = m.max(snap.time, newDuration);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthat.scrollTo(m.round(newPosX), m.round(newPosY), newDuration);\n\n\t\t\tif (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e);\n\t\t\treturn;\n\t\t}\n\n\t\t// Do we need to snap?\n\t\tif (that.options.snap) {\n\t\t\tdistX = newPosX - that.absStartX;\n\t\t\tdistY = newPosY - that.absStartY;\n\t\t\tif (m.abs(distX) < that.options.snapThreshold && m.abs(distY) < that.options.snapThreshold) that.scrollTo(that.absStartX, that.absStartY, 200);\n\t\t\telse {\n\t\t\t\tsnap = that._snap(that.x, that.y);\n\t\t\t\tif (snap.x != that.x || snap.y != that.y) that.scrollTo(snap.x, snap.y, snap.time);\n\t\t\t}\n\n\t\t\tif (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e);\n\t\t\treturn;\n\t\t}\n\n\t\tthat._resetPos(200);\n\t\tif (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e);\n\t},\n\t\n\t_resetPos: function (time) {\n\t\tvar that = this,\n\t\t\tresetX = that.x >= 0 ? 0 : that.x < that.maxScrollX ? that.maxScrollX : that.x,\n\t\t\tresetY = that.y >= that.minScrollY || that.maxScrollY > 0 ? that.minScrollY : that.y < that.maxScrollY ? that.maxScrollY : that.y;\n\n\t\tif (resetX == that.x && resetY == that.y) {\n\t\t\tif (that.moved) {\n\t\t\t\tthat.moved = false;\n\t\t\t\tif (that.options.onScrollEnd) that.options.onScrollEnd.call(that);\t\t// Execute custom code on scroll end\n\t\t\t}\n\n\t\t\tif (that.hScrollbar && that.options.hideScrollbar) {\n\t\t\t\tif (vendor == 'webkit') that.hScrollbarWrapper.style[transitionDelay] = '300ms';\n\t\t\t\tthat.hScrollbarWrapper.style.opacity = '0';\n\t\t\t}\n\t\t\tif (that.vScrollbar && that.options.hideScrollbar) {\n\t\t\t\tif (vendor == 'webkit') that.vScrollbarWrapper.style[transitionDelay] = '300ms';\n\t\t\t\tthat.vScrollbarWrapper.style.opacity = '0';\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tthat.scrollTo(resetX, resetY, time || 0);\n\t},\n\n\t_wheel: function (e) {\n\t\tif(!this.enabled) return;\n\t\te.preventDefault();\n\t\tvar that = this,\n\t\t\twheelDeltaX, wheelDeltaY,\n\t\t\tdeltaX, deltaY,\n\t\t\tdeltaScale;\n\n\t\tif ('wheelDeltaX' in e) {\n\t\t\twheelDeltaX = e.wheelDeltaX / 12;\n\t\t\twheelDeltaY = e.wheelDeltaY / 12;\n\t\t} else if('wheelDelta' in e) {\n\t\t\twheelDeltaX = wheelDeltaY = e.wheelDelta / 12;\n\t\t} else if ('detail' in e) {\n\t\t\twheelDeltaX = wheelDeltaY = -e.detail * 3;\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif (that.options.wheelAction == 'zoom') {\n\t\t\tdeltaScale = that.scale * Math.pow(2, 1/3 * (wheelDeltaY ? wheelDeltaY / Math.abs(wheelDeltaY) : 0));\n\t\t\tif (deltaScale < that.options.zoomMin) deltaScale = that.options.zoomMin;\n\t\t\tif (deltaScale > that.options.zoomMax) deltaScale = that.options.zoomMax;\n\t\t\t\n\t\t\tif (deltaScale != that.scale) {\n\t\t\t\tif (!that.wheelZoomCount && that.options.onZoomStart) that.options.onZoomStart.call(that, e);\n\t\t\t\tthat.wheelZoomCount++;\n\t\t\t\t\n\t\t\t\tthat.zoom(e.pageX, e.pageY, deltaScale, 400);\n\t\t\t\t\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tthat.wheelZoomCount--;\n\t\t\t\t\tif (!that.wheelZoomCount && that.options.onZoomEnd) that.options.onZoomEnd.call(that, e);\n\t\t\t\t}, 400);\n\t\t\t}\n\t\t\t\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tdeltaX = that.x + wheelDeltaX;\n\t\tdeltaY = that.y + wheelDeltaY;\n\n\t\tif (deltaX > 0) deltaX = 0;\n\t\telse if (deltaX < that.maxScrollX) deltaX = that.maxScrollX;\n\n\t\tif (deltaY > that.minScrollY) deltaY = that.minScrollY;\n\t\telse if (deltaY < that.maxScrollY) deltaY = that.maxScrollY;\n \n\t\tif (that.maxScrollY < 0) {\n\t\t\tthat.scrollTo(deltaX, deltaY, 0);\n\t\t}\n\t},\n\t\n\t_transitionEnd: function (e) {\n\t\tvar that = this;\n\n\t\tif (e.target != that.scroller) return;\n\n\t\tthat._unbind(TRNEND_EV);\n\t\t\n\t\tthat._startAni();\n\t},\n\n\n\t/**\n\t*\n\t* Utilities\n\t*\n\t*/\n\t_startAni: function () {\n\t\tvar that = this,\n\t\t\tstartX = that.x, startY = that.y,\n\t\t\tstartTime = Date.now(),\n\t\t\tstep, easeOut,\n\t\t\tanimate;\n\n\t\tif (that.animating) return;\n\t\t\n\t\tif (!that.steps.length) {\n\t\t\tthat._resetPos(400);\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tstep = that.steps.shift();\n\t\t\n\t\tif (step.x == startX && step.y == startY) step.time = 0;\n\n\t\tthat.animating = true;\n\t\tthat.moved = true;\n\t\t\n\t\tif (that.options.useTransition) {\n\t\t\tthat._transitionTime(step.time);\n\t\t\tthat._pos(step.x, step.y);\n\t\t\tthat.animating = false;\n\t\t\tif (step.time) that._bind(TRNEND_EV);\n\t\t\telse that._resetPos(0);\n\t\t\treturn;\n\t\t}\n\n\t\tanimate = function () {\n\t\t\tvar now = Date.now(),\n\t\t\t\tnewX, newY;\n\n\t\t\tif (now >= startTime + step.time) {\n\t\t\t\tthat._pos(step.x, step.y);\n\t\t\t\tthat.animating = false;\n\t\t\t\tif (that.options.onAnimationEnd) that.options.onAnimationEnd.call(that);\t\t\t// Execute custom code on animation end\n\t\t\t\tthat._startAni();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tnow = (now - startTime) / step.time - 1;\n\t\t\teaseOut = m.sqrt(1 - now * now);\n\t\t\tnewX = (step.x - startX) * easeOut + startX;\n\t\t\tnewY = (step.y - startY) * easeOut + startY;\n\t\t\tthat._pos(newX, newY);\n\t\t\tif (that.animating) that.aniTime = nextFrame(animate);\n\t\t};\n\n\t\tanimate();\n\t},\n\n\t_transitionTime: function (time) {\n\t\ttime += 'ms';\n\t\tthis.scroller.style[transitionDuration] = time;\n\t\tif (this.hScrollbar) this.hScrollbarIndicator.style[transitionDuration] = time;\n\t\tif (this.vScrollbar) this.vScrollbarIndicator.style[transitionDuration] = time;\n\t},\n\n\t_momentum: function (dist, time, maxDistUpper, maxDistLower, size) {\n\t\tvar deceleration = 0.0006,\n\t\t\tspeed = m.abs(dist) / time,\n\t\t\tnewDist = (speed * speed) / (2 * deceleration),\n\t\t\tnewTime = 0, outsideDist = 0;\n\n\t\t// Proportinally reduce speed if we are outside of the boundaries\n\t\tif (dist > 0 && newDist > maxDistUpper) {\n\t\t\toutsideDist = size / (6 / (newDist / speed * deceleration));\n\t\t\tmaxDistUpper = maxDistUpper + outsideDist;\n\t\t\tspeed = speed * maxDistUpper / newDist;\n\t\t\tnewDist = maxDistUpper;\n\t\t} else if (dist < 0 && newDist > maxDistLower) {\n\t\t\toutsideDist = size / (6 / (newDist / speed * deceleration));\n\t\t\tmaxDistLower = maxDistLower + outsideDist;\n\t\t\tspeed = speed * maxDistLower / newDist;\n\t\t\tnewDist = maxDistLower;\n\t\t}\n\n\t\tnewDist = newDist * (dist < 0 ? -1 : 1);\n\t\tnewTime = speed / deceleration;\n\n\t\treturn { dist: newDist, time: m.round(newTime) };\n\t},\n\n\t_offset: function (el) {\n\t\tvar left = -el.offsetLeft,\n\t\t\ttop = -el.offsetTop;\n\t\t\t\n\t\twhile (el = el.offsetParent) {\n\t\t\tleft -= el.offsetLeft;\n\t\t\ttop -= el.offsetTop;\n\t\t}\n\t\t\n\t\tif (el != this.wrapper) {\n\t\t\tleft *= this.scale;\n\t\t\ttop *= this.scale;\n\t\t}\n\n\t\treturn { left: left, top: top };\n\t},\n\n\t_snap: function (x, y) {\n\t\tvar that = this,\n\t\t\ti, l,\n\t\t\tpage, time,\n\t\t\tsizeX, sizeY;\n\n\t\t// Check page X\n\t\tpage = that.pagesX.length - 1;\n\t\tfor (i=0, l=that.pagesX.length; i= that.pagesX[i]) {\n\t\t\t\tpage = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (page == that.currPageX && page > 0 && that.dirX < 0) page--;\n\t\tx = that.pagesX[page];\n\t\tsizeX = m.abs(x - that.pagesX[that.currPageX]);\n\t\tsizeX = sizeX ? m.abs(that.x - x) / sizeX * 500 : 0;\n\t\tthat.currPageX = page;\n\n\t\t// Check page Y\n\t\tpage = that.pagesY.length-1;\n\t\tfor (i=0; i= that.pagesY[i]) {\n\t\t\t\tpage = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (page == that.currPageY && page > 0 && that.dirY < 0) page--;\n\t\ty = that.pagesY[page];\n\t\tsizeY = m.abs(y - that.pagesY[that.currPageY]);\n\t\tsizeY = sizeY ? m.abs(that.y - y) / sizeY * 500 : 0;\n\t\tthat.currPageY = page;\n\n\t\t// Snap with constant speed (proportional duration)\n\t\ttime = m.round(m.max(sizeX, sizeY)) || 200;\n\n\t\treturn { x: x, y: y, time: time };\n\t},\n\n\t_bind: function (type, el, bubble) {\n\t\t(el || this.scroller).addEventListener(type, this, !!bubble);\n\t},\n\n\t_unbind: function (type, el, bubble) {\n\t\t(el || this.scroller).removeEventListener(type, this, !!bubble);\n\t},\n\n\n\t/**\n\t*\n\t* Public methods\n\t*\n\t*/\n\tdestroy: function () {\n\t\tvar that = this;\n\n\t\tthat.scroller.style[transform] = '';\n\n\t\t// Remove the scrollbars\n\t\tthat.hScrollbar = false;\n\t\tthat.vScrollbar = false;\n\t\tthat._scrollbar('h');\n\t\tthat._scrollbar('v');\n\n\t\t// Remove the event listeners\n\t\tthat._unbind(RESIZE_EV, window);\n\t\tthat._unbind(START_EV);\n\t\tthat._unbind(MOVE_EV, window);\n\t\tthat._unbind(END_EV, window);\n\t\tthat._unbind(CANCEL_EV, window);\n\t\t\n\t\tif (!that.options.hasTouch) {\n\t\t\tthat._unbind('DOMMouseScroll');\n\t\t\tthat._unbind('mousewheel');\n\t\t}\n\t\t\n\t\tif (that.options.useTransition) that._unbind(TRNEND_EV);\n\t\t\n\t\tif (that.options.checkDOMChanges) clearInterval(that.checkDOMTime);\n\t\t\n\t\tif (that.options.onDestroy) that.options.onDestroy.call(that);\n\t},\n\n\trefresh: function () {\n\t\tvar that = this,\n\t\t\toffset,\n\t\t\ti, l,\n\t\t\tels,\n\t\t\tpos = 0,\n\t\t\tpage = 0;\n\n\t\tif (that.scale < that.options.zoomMin) that.scale = that.options.zoomMin;\n\t\tthat.wrapperW = that.wrapper.clientWidth || 1;\n\t\tthat.wrapperH = that.wrapper.clientHeight || 1;\n\n\t\tthat.minScrollY = -that.options.topOffset || 0;\n\t\tthat.scrollerW = m.round(that.scroller.offsetWidth * that.scale);\n\t\tthat.scrollerH = m.round((that.scroller.offsetHeight + that.minScrollY) * that.scale);\n\t\tthat.maxScrollX = that.wrapperW - that.scrollerW;\n\t\tthat.maxScrollY = that.wrapperH - that.scrollerH + that.minScrollY;\n\t\tthat.dirX = 0;\n\t\tthat.dirY = 0;\n\n\t\tif (that.options.onRefresh) that.options.onRefresh.call(that);\n\n\t\tthat.hScroll = that.options.hScroll && that.maxScrollX < 0;\n\t\tthat.vScroll = that.options.vScroll && (!that.options.bounceLock && !that.hScroll || that.scrollerH > that.wrapperH);\n\n\t\tthat.hScrollbar = that.hScroll && that.options.hScrollbar;\n\t\tthat.vScrollbar = that.vScroll && that.options.vScrollbar && that.scrollerH > that.wrapperH;\n\n\t\toffset = that._offset(that.wrapper);\n\t\tthat.wrapperOffsetLeft = -offset.left;\n\t\tthat.wrapperOffsetTop = -offset.top;\n\n\t\t// Prepare snap\n\t\tif (typeof that.options.snap == 'string') {\n\t\t\tthat.pagesX = [];\n\t\t\tthat.pagesY = [];\n\t\t\tels = that.scroller.querySelectorAll(that.options.snap);\n\t\t\tfor (i=0, l=els.length; i= that.maxScrollX) {\n\t\t\t\tthat.pagesX[page] = pos;\n\t\t\t\tpos = pos - that.wrapperW;\n\t\t\t\tpage++;\n\t\t\t}\n\t\t\tif (that.maxScrollX%that.wrapperW) that.pagesX[that.pagesX.length] = that.maxScrollX - that.pagesX[that.pagesX.length-1] + that.pagesX[that.pagesX.length-1];\n\n\t\t\tpos = 0;\n\t\t\tpage = 0;\n\t\t\tthat.pagesY = [];\n\t\t\twhile (pos >= that.maxScrollY) {\n\t\t\t\tthat.pagesY[page] = pos;\n\t\t\t\tpos = pos - that.wrapperH;\n\t\t\t\tpage++;\n\t\t\t}\n\t\t\tif (that.maxScrollY%that.wrapperH) that.pagesY[that.pagesY.length] = that.maxScrollY - that.pagesY[that.pagesY.length-1] + that.pagesY[that.pagesY.length-1];\n\t\t}\n\n\t\t// Prepare the scrollbars\n\t\tthat._scrollbar('h');\n\t\tthat._scrollbar('v');\n\n\t\tif (!that.zoomed) {\n\t\t\tthat.scroller.style[transitionDuration] = '0';\n\t\t\tthat._resetPos(400);\n\t\t}\n\t},\n\n\tscrollTo: function (x, y, time, relative) {\n\t\tvar that = this,\n\t\t\tstep = x,\n\t\t\ti, l;\n\n\t\tthat.stop();\n\n\t\tif (!step.length) step = [{ x: x, y: y, time: time, relative: relative }];\n\t\t\n\t\tfor (i=0, l=step.length; i 0 ? 0 : pos.left < that.maxScrollX ? that.maxScrollX : pos.left;\n\t\tpos.top = pos.top > that.minScrollY ? that.minScrollY : pos.top < that.maxScrollY ? that.maxScrollY : pos.top;\n\t\ttime = time === undefined ? m.max(m.abs(pos.left)*2, m.abs(pos.top)*2) : time;\n\n\t\tthat.scrollTo(pos.left, pos.top, time);\n\t},\n\n\tscrollToPage: function (pageX, pageY, time) {\n\t\tvar that = this, x, y;\n\t\t\n\t\ttime = time === undefined ? 400 : time;\n\n\t\tif (that.options.onScrollStart) that.options.onScrollStart.call(that);\n\n\t\tif (that.options.snap) {\n\t\t\tpageX = pageX == 'next' ? that.currPageX+1 : pageX == 'prev' ? that.currPageX-1 : pageX;\n\t\t\tpageY = pageY == 'next' ? that.currPageY+1 : pageY == 'prev' ? that.currPageY-1 : pageY;\n\n\t\t\tpageX = pageX < 0 ? 0 : pageX > that.pagesX.length-1 ? that.pagesX.length-1 : pageX;\n\t\t\tpageY = pageY < 0 ? 0 : pageY > that.pagesY.length-1 ? that.pagesY.length-1 : pageY;\n\n\t\t\tthat.currPageX = pageX;\n\t\t\tthat.currPageY = pageY;\n\t\t\tx = that.pagesX[pageX];\n\t\t\ty = that.pagesY[pageY];\n\t\t} else {\n\t\t\tx = -that.wrapperW * pageX;\n\t\t\ty = -that.wrapperH * pageY;\n\t\t\tif (x < that.maxScrollX) x = that.maxScrollX;\n\t\t\tif (y < that.maxScrollY) y = that.maxScrollY;\n\t\t}\n\n\t\tthat.scrollTo(x, y, time);\n\t},\n\n\tdisable: function () {\n\t\tthis.stop();\n\t\tthis._resetPos(0);\n\t\tthis.enabled = false;\n\n\t\t// If disabled after touchstart we make sure that there are no left over events\n\t\tthis._unbind(MOVE_EV, window);\n\t\tthis._unbind(END_EV, window);\n\t\tthis._unbind(CANCEL_EV, window);\n\t},\n\t\n\tenable: function () {\n\t\tthis.enabled = true;\n\t},\n\t\n\tstop: function () {\n\t\tif (this.options.useTransition) this._unbind(TRNEND_EV);\n\t\telse cancelFrame(this.aniTime);\n\t\tthis.steps = [];\n\t\tthis.moved = false;\n\t\tthis.animating = false;\n\t},\n\t\n\tzoom: function (x, y, scale, time) {\n\t\tvar that = this,\n\t\t\trelScale = scale / that.scale;\n\n\t\tif (!that.options.useTransform) return;\n\n\t\tthat.zoomed = true;\n\t\ttime = time === undefined ? 200 : time;\n\t\tx = x - that.wrapperOffsetLeft - that.x;\n\t\ty = y - that.wrapperOffsetTop - that.y;\n\t\tthat.x = x - x * relScale + that.x;\n\t\tthat.y = y - y * relScale + that.y;\n\n\t\tthat.scale = scale;\n\t\tthat.refresh();\n\n\t\tthat.x = that.x > 0 ? 0 : that.x < that.maxScrollX ? that.maxScrollX : that.x;\n\t\tthat.y = that.y > that.minScrollY ? that.minScrollY : that.y < that.maxScrollY ? that.maxScrollY : that.y;\n\n\t\tthat.scroller.style[transitionDuration] = time + 'ms';\n\t\tthat.scroller.style[transform] = 'translate(' + that.x + 'px,' + that.y + 'px) scale(' + scale + ')' + translateZ;\n\t\tthat.zoomed = false;\n\t},\n\t\n\tisReady: function () {\n\t\treturn !this.moved && !this.zoomed && !this.animating;\n\t}\n};\n\nfunction prefixStyle (style) {\n\tif ( vendor === '' ) return style;\n\n\tstyle = style.charAt(0).toUpperCase() + style.substr(1);\n\treturn vendor + style;\n}\n\ndummyStyle = null;\t// for the sake of it\n\nif (typeof exports !== 'undefined') exports.iScroll = iScroll;\nelse window.iScroll = iScroll;\n\n})(window, document);\n","/* \n\tPDFObject, copyright (C) 2008 Philip Hutchison (pipwerks.com)\n\tDocumentation and examples are at www.pdfobject.com \n\tVersion 1.2, April 2011\n\tMIT style license\n*/\n\n/*global ActiveXObject, window */\n\n\nvar PDFObject = function (obj){\n\t\n\tif(!obj || !obj.url){ return false; }\n\n\tvar pdfobjectversion = \"1.2\",\n\t\t//Set reasonable defaults\n\t\tid = obj.id || false,\n\t\twidth = obj.width || \"100%\",\n\t\theight = obj.height || \"100%\",\n\t\tpdfOpenParams = obj.pdfOpenParams,\n\t\turl,\n\t\tpluginTypeFound;\n\t\n\n\t/* ----------------------------------------------------\n\t Supporting functions\n\t ---------------------------------------------------- */\n\n\t//Tests specifically for Adobe Reader (aka Acrobat) in Internet Explorer\n\tvar hasReaderActiveX = function (){\n\n\t\tvar axObj = null;\n\t\t\n\t\tif (window.ActiveXObject) {\n\t\t\ttry {\n\t\t\t\taxObj = new ActiveXObject(\"AcroPDF.PDF\");\n\t\t\t}\n\t\t\tcatch(e) {\n\t\t\t\t\n\t\t\t}\n\t\t\t\t\n\t\t\t//If \"AcroPDF.PDF\" didn't work, try \"PDF.PdfCtrl\"\n\t\t\tif(!axObj){\n\t\t\t\ttry {\n\t\t\t\t\taxObj = new ActiveXObject(\"PDF.PdfCtrl\");\n\t\t\t\t}\n\t\t\t\tcatch(e) {\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t//If either \"AcroPDF.PDF\" or \"PDF.PdfCtrl\" are found, return true\n\t\t\tif (axObj !== null) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\n\t\t}\n\t\t\n\t\t//If you got to this point, there's no ActiveXObject for PDFs\n\t\treturn false;\n\t\t\n\t};\n\n\n\n\t//Tests specifically for Adobe Reader (aka Adobe Acrobat) in non-IE browsers\n\tvar hasReader = function (){\n\t\n\t\tvar i,\n\t\t\tn = navigator.plugins,\n\t\t\tcount = n.length,\n\t\t\tregx = /Adobe Reader|Adobe PDF|Acrobat/gi;\n\t\t\n\t\tfor(i=0; i';\n\n\t\treturn targetNode.getElementsByTagName(\"object\")[0];\n\n\t};\n\n\t//The hash (#) prevents odd behavior in Windows\n\t//Append optional Adobe params for opening document\n\turl = encodeURI(obj.url) + \"#\" + buildQueryString(pdfOpenParams);\n\tpluginTypeFound = pluginFound();\n\t\n\tthis.get = function(prop){ return get(prop); };\n\tthis.embed = function(id){ return embed(id); };\n\t\n\treturn this;\n\t\n};","/**\r\n * lscache library\r\n * Copyright (c) 2011, Pamela Fox\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n/**\r\n * Creates a namespace for the lscache functions.\r\n */\r\nvar lscache = function() {\r\n // Prefixes the key name on the expiration items in localStorage \r\n var CACHESUFFIX = '-cacheexpiration';\r\n\r\n // Determines if localStorage is supported in the browser;\r\n // result is cached for better performance instead of being run each time.\r\n // Feature detection is based on how Modernizr does it;\r\n // it's not straightforward due to FF4 issues.\r\n var supportsStorage = function () {\r\n try {\r\n return !!localStorage.getItem;\r\n } catch (e) {\r\n return false;\r\n }\r\n }();\r\n\r\n // Determines if native JSON (de-)serialization is supported in the browser.\r\n var supportsJSON = (window.JSON != null);\r\n\r\n /**\r\n * Returns the full string for the localStorage expiration item.\r\n * @param {String} key\r\n * @return {string}\r\n */\r\n function expirationKey(key) {\r\n return key + CACHESUFFIX;\r\n }\r\n\r\n /**\r\n * Returns the number of seconds since the epoch.\r\n * @return {number}\r\n */\r\n function currentTime() {\r\n return Math.floor((new Date().getTime())/1000);\r\n }\r\n\r\n return {\r\n\r\n /**\r\n * Stores the value in localStorage. Expires after specified number of minutes.\r\n * @param {string} key\r\n * @param {Object|string} value\r\n * @param {number} time\r\n */\r\n set: function(key, value, time) {\r\n if (!supportsStorage) return;\r\n\r\n // If we don't get a string value, try to stringify\r\n // In future, localStorage may properly support storing non-strings\r\n // and this can be removed.\r\n if (typeof value != 'string') {\r\n if (!supportsJSON) return;\r\n try {\r\n value = JSON.stringify(value);\r\n } catch (e) {\r\n // Sometimes we can't stringify due to circular refs\r\n // in complex objects, so we won't bother storing then.\r\n return;\r\n }\r\n }\r\n\r\n // Use this function to loop until the value \"fits\" into available space.\r\n function setItem(key, value) {\r\n try {\r\n\t\t\tif (time) {\r\n\t\t\t if(time == -1) {\r\n\t\t\t\t localStorage.setItem(expirationKey(key), -1);\r\n\t\t\t } else {\r\n\t\t\t\tlocalStorage.setItem(expirationKey(key), currentTime() + time);\r\n\t\t\t }\r\n\t\t } else {\r\n\t\t\t// In case they set a time earlier, remove that info from localStorage.\r\n\t\t\tlocalStorage.removeItem(expirationKey(key));\r\n\t\t }\r\n\t\t\t\r\n return localStorage.setItem(key, value);\r\n } catch (e) {\r\n\t\t\tvar a = e;\r\n if (e.name === 'QUOTA_EXCEEDED_ERR' || e.name == 'NS_ERROR_DOM_QUOTA_REACHED' || e.message == 'QUOTA_EXCEEDED_ERR') {\r\n // If the quota is exceeded, but the localStorage is empty, we can't store the item.\r\n if(localStorage.length <= 0) {\r\n return null;\r\n }\r\n // If we exceeded the quota, then we will sort\r\n // by the expire time, and then remove the N oldest\r\n var storedKeys = [], storedKey, mainKey, i;\r\n for (i = 0; i < localStorage.length; i++) {\r\n storedKey = localStorage.key(i);\r\n if (storedKey.indexOf(CACHESUFFIX) > -1) {\r\n mainKey = storedKey.split(CACHESUFFIX)[0];\r\n storedKeys.push({key: mainKey, expiration: parseInt(localStorage[storedKey])});\r\n }\r\n }\r\n storedKeys.sort(function(a, b) { return a.expiration == -1 ? 1 : (a.expiration-b.expiration); });\r\n\r\n for (i = 0, len = Math.min(30, storedKeys.length); i < len; i++) {\r\n localStorage.removeItem(storedKeys[i].key);\r\n localStorage.removeItem(expirationKey(storedKeys[i].key));\r\n }\r\n return setItem(key, value);\r\n } else {\r\n // If it was some other error, just give up.\r\n return null;\r\n }\r\n }\r\n }\r\n\r\n setItem(key, value);\r\n },\r\n\r\n /**\r\n * Retrieves specified value from localStorage, if not expired.\r\n * @param {string} key\r\n * @return {string|Object}\r\n */\r\n get: function(key) {\r\n if (!supportsStorage) return null;\r\n\r\n /**\r\n * Tries to de-serialize stored value if its an object, and returns the\r\n * normal value otherwise.\r\n * @param {String} key\r\n */\r\n function parsedStorage(key) {\r\n if (supportsJSON) {\r\n try {\r\n // We can't tell if its JSON or a string, so we try to parse\r\n return JSON.parse(localStorage.getItem(key));\r\n } catch(e) {\r\n // If we can't parse, it's probably because it isn't an object\r\n return localStorage.getItem(key);\r\n }\r\n } else {\r\n return localStorage.getItem(key);\r\n }\r\n }\r\n\r\n // Return the de-serialized item if not expired\r\n if (localStorage.getItem(expirationKey(key))) {\r\n var expirationTime = parseInt(localStorage.getItem(expirationKey(key)), 10);\r\n // Check if we should actually kick item out of storage\r\n if (currentTime() >= expirationTime && expirationTime != -1) {\r\n localStorage.removeItem(key);\r\n localStorage.removeItem(expirationKey(key));\r\n return null;\r\n } else {\r\n return parsedStorage(key);\r\n }\r\n } else if (localStorage.getItem(key)) {\r\n return parsedStorage(key);\r\n }\r\n return null;\r\n },\r\n\r\n /**\r\n * Removes a value from localStorage.\r\n * Equivalent to 'delete' in memcache, but that's a keyword in JS.\r\n * @param {string} key\r\n */\r\n remove: function(key) {\r\n if (!supportsStorage) return;\r\n localStorage.removeItem(key);\r\n localStorage.removeItem(expirationKey(key));\r\n }\r\n };\r\n}();\r\n","appbuilder = window.appbuilder || {};\nappbuilder.app = appbuilder.app || {};\nappbuilder.app.version = 2.0;\n\nappbuilder.app.makeElement = function(type, options, el) {\n\tif(!el) {\n\t\tel = 'div';\n\t}\n\tif(!options) {\n\t\toptions = {\n\t\t\t'class' : type\n\t\t};\n\t}\n\telse {\n\t\tif(!options['class']) {\n\t\t\toptions['class'] = type;\n\t\t}\n\t\telse {\n\t\t\toptions['class'] = options['class'] + ' ' + type;\n\t\t}\n\t}\n\treturn new Element(el, options);\n};\nappbuilder.app.createScreen = function(id, type, title, content, hasBack, scrolls, back, tab, classes, inner) {\n\treturn '
' +\n\t\t\t(title ? \n\t\t\t'
' + \n\t\t\t\t'
' +\n\t\t\t\t(hasBack ? '
Back
' : '') +\n\t\t\t\t'
' + title + '
' +\n\t\t\t'
' : '' ) + \n\t\t\t'
' + \n\t\t\t\t(inner || scrolls ? '
' : '') +\n\t\t\t\tcontent || '' +\n\t\t\t\t(inner || scrolls ? '
' : '') +\n\t\t\t'
' + \n\t\t'
';\n};\n//Make a confirm dialog\nappbuilder.app.makeConfirm = function(question, okfnc, cancelfnc, okbtn, cancelbtn) {\n\tvar confirm = new Element('div', {\n\t\t'class': 'confirm',\n\t\thtml: '
' +\n\t\t\t'
' + question + '
' +\n\t\t\t'
' +\n\t\t\t\t'' + (okbtn || 'OK') + ' ' +\n\t\t\t\t(cancelbtn !== false ? \n\t\t\t\t\t'' + (cancelbtn || 'Cancel') + '' :\n\t\t\t\t\t'') +\n\t\t\t'
' +\n\t\t'
'\n\t});\n\tconfirm.getElement('.ok').addEvent('click', function(e) {\n\t\tconfirm.destroy.delay(0, confirm);\n\t\tif(typeOf(okfnc) == 'function') {\n\t\t\tokfnc();\n\t\t}\n\t\tif(typeOf(okfnc) != 'string') {\n\t\t\te.stop();\n\t\t}\n\t});\n\tif(cancelbtn !== false) {\n\t\tconfirm.getElement('.cancel').addEvent('click', function(e) {\n\t\t\tconfirm.destroy();\n\t\t\tif(typeOf(cancelfnc) == 'function') {\n\t\t\t\tcancelfnc();\n\t\t\t}\n\t\t\tif(typeOf(cancelfnc) != 'string') {\n\t\t\t\te.stop();\n\t\t\t}\n\t\t});\n\t}\n\treturn confirm;\n};\n//Replacement for alert\nappbuilder.app.alert = function(message, context) {\n\tif(appbuilder.app.isPhoneGap) {\n\t\tnavigator.notification.alert(message);\n\t}\n\telse if(appbuilder.app.isMobile) {\n\t\talert(message);\n\t}\n\telse {\n\t\tappbuilder.app.makeConfirm(message, null, null, null, false).inject(document.id(context || document.getElement('.phone-inner') || document.getElement('.phone') || document.body));\n\t}\n};\n//Replacement for confirm\nappbuilder.app.confirm = function(message, cb, context) {\n\tif(appbuilder.app.isPhoneGap) {\n\t\tnavigator.notification.confirm(message, function(btnIndex) {\n\t\t\tcb(btnIndex == 1);\n\t\t});\n\t}\n\telse if(appbuilder.app.isMobile) {\n\t\tcb(confirm(message));\n\t}\n\telse {\n\t\tappbuilder.app.makeConfirm(message, function() {cb(true);}, function() {cb(false);})\n .inject(document.id(context || document.getElement('.phone-inner') || document.getElement('.phone') || document.body));\n\t}\n};\n\nappbuilder.app.loadScript = (function() {\n\tvar loaded = [];\n\treturn function(url, onload, onfail, forceReload) {\n\t\tif(loaded.contains(url)) {\n\t\t\tonload();\n\t\t}\n\t\telse if(!appbuilder.app.online()) {\n\t\t\tonfail && onfail();\n\t\t}\n\t\telse {\n\t\t\tvar script = new Element('script');\n\t\t\tscript.type = \"text/javascript\";\n\t\t\t//script.async = true;\n\t\t\tscript.src = url;\n\t\t\tvar after = function() {\n\t\t\t\tloaded.push(url);\n\t\t\t\tonload && onload();\n\t\t\t};\n\t\t\tif (!script.addEventListener){\n\t\t\t\tscript.addEvent('readystatechange', function(){\n\t\t\t\t\tif (['loaded', 'complete'].contains(this.readyState)) after();\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tscript.addEvent('load', after);\n\t\t\t}\n\t\t\tscript.addEvent('fail', function() {\n\t\t\t\tonfail && onfail();\n\t\t\t});\n\t\t\tscript.inject(document.body);\n\t\t}\n\t};\n})();\n\nappbuilder.app.decoy = (function() {\n\tvar decoyEl;\n\treturn function() {\n\t\tif(!decoyEl) {\n\t\t\tdecoyEl = appbuilder.app.makeElement('decoy', {}, 'button').inject(document.getElement('div'),'before');\n\t\t}\n\t\tdecoyEl.setStyle('display', 'block');\n\t\tdecoyEl.focus();\n\t\t(function() {\n\t\t\tdecoyEl.setStyle('display', 'none');\n\t\t}).delay(1);\n\t}\n})();\n\nappbuilder.app.spinner = function() {\n\t/*var svg = '' +\n\t'';\n\tfor (var i = 0; i < 12; i++) {\n\t\tsvg += '' +\n\t\t'';\n\t}\n\tsvg += '';\n\t//container.appendChild(document.adoptNode((new DOMParser).parseFromString(svg, 'text/xml').firstChild));*/\n\tvar svg = '';\n\treturn appbuilder.app.makeElement('loading-ani', {html: svg});\n};\nappbuilder.app.isIE = '\\v'=='v';\nif(window.console) {\n try {\n if (window.console.log.apply) {\n appbuilder.app.debug = function () {\n console.log.apply(console, arguments);\n };\n appbuilder.app.error = function () {\n console.error.apply(console, arguments);\n };\n }\n else {\n throw new Error();\n }\n }\n catch(e) {\n appbuilder.app.debug = function(a1, a2, a3, a4) {\n console.log('app', a1, a2, a3, a4);\n };\n appbuilder.app.error = function(a1, a2, a3, a4) {\n console.error('app', a1, a2, a3, a4);\n };\n }\n}\nelse {\n\tappbuilder.app.debug = function() {};\n\tappbuilder.app.error = function() {};\n}\n(function() {\n\tvar agent = navigator.userAgent,\n\t\tplatformBB = false,\n\t\tv;\n if(Browser.Platform.android) {\n\t\tv = agent.match(/Android.([\\d\\.]+)/);\n\t\tif(v && v[1]) {\n\t\t\tBrowser.version = parseFloat(v[1]) || Browser.version;\n\t\t}\n\t}\n\tif(agent.indexOf('BB10') >=0) {\n\t\tplatformBB = true;\n\t\tBrowser.Platform.BB10 = true;\n\t\tBrowser.version = 10.0;\n\t}\n\telse if(agent.indexOf('PlayBook') >= 0) {\n\t\tplatformBB = true;\n\t\tBrowser.Platform.playBook = true;\n\t\tBrowser.version = 7.2;\n\t}\n\telse if(Browser.Platform.ios) {\n v = agent.match(/OS (\\d+_\\d*) /);\n if (v && v[1]) {\n Browser.version = parseFloat(v[1].replace('_', '.')) || Browser.version;\n }\n if (Browser.version >= 7) {\n if (navigator.platform == \"iPod touch\") {\n Browser.Platform.ipodIos7 = true;\n } else if (navigator.platform == \"iPhone\") {\n Browser.Platform.iphoneIos7 = true;\n } else {\n Browser.Platform.ipadIos7 = true;\n }\n }\n\t}\n\telse if(agent.indexOf('BlackBerry') >= 0) {\n\t\tplatformBB = true;\n\t\tBrowser.Platform.smartphone = true;\n\t\tBrowser.version = 6.0;\n\t}\n\tif(platformBB) {\n\t\tBrowser.Platform[Browser.Platform.name] = false;\n\t\tBrowser.Platform.name = 'blackberry';\n\t\tBrowser.Platform.blackberry = true;\n\t\tBrowser[Browser.name] = false;\n\t\tBrowser.name = 'blackberry';\n\t\tBrowser.blackberry = true;\n\t\t\n\t\tv = agent.match(/(?:Version|BlackBerry\\d+)\\/([\\d\\.]+)/);\n\t\tif(v && v[1]) {\n\t\t\tBrowser.version = parseFloat(v[1]) || Browser.version;\n\t\t}\n\t}\n})();\n//Browser.Platform.fixMobileLandscape = false;\n//function shouldRotateToOrientation (rotation) {\n//\t\tif(Browser.Platform.ipodIos7 || Browser.Platform.iphoneIos7){\n//\t\t\talert(rotation);\n//\t\t\tif(rotation==90 || rotation==-90 ){\n//\t\t\t\tBrowser.Platform.fixMobileLandscape = true;\n//\t\t\t}else{\n//\t\t\t\tBrowser.Platform.fixMobileLandscape = false;\n//\t\t\t}\n//\t\t}\n//\t\treturn true;\n//}\n\nappbuilder.app.isMobile = (Browser.Platform.ios || Browser.Platform.android || Browser.Platform.blackberry);\nappbuilder.app.isPhoneGap = typeof window.cordova !== 'undefined' || typeof window.PhoneGap !== 'undefined';\nappbuilder.app.hasPhoneDialer = appbuilder.app.isPhoneGap && typeof window.PhoneDialer !== 'undefined';\nappbuilder.app.info = {\n\ttelPreview: !appbuilder.app.isMobile,\n\temailPreview: !appbuilder.app.isMobile,\n\tversion: appbuilder.app.version\n};\nappbuilder.app.hasCORS = ('withCredentials' in Browser.Request());\n\nwindow.addEvent('domready', function() {\n\tappbuilder.app.debug('ready', 'dom');\n\tif(appbuilder.app.isPhoneGap) {\n\t\tdocument.addEventListener('deviceready', function() {\n\t\t\tappbuilder.app.debug('ready', 'phonegap');\n\t\t\tif(window.plugins) {\n\t\t\t\tappbuilder.app.hasGAPlugin = appbuilder.app.isPhoneGap && window.plugins.gaPlugin;\n\t\t\t\tappbuilder.app.debug('hasGAPlugin', appbuilder.app.hasGAPlugin ? 'yes' : 'no');\n\t\t\t}\n\t\t\tif(navigator.device && navigator.device.capture) {\n\t\t\t\tappbuilder.app.info.canCapture = [];\n\t\t\t\tif(navigator.device.capture.captureVideo) {\n\t\t\t\t\tappbuilder.app.info.canCapture.push('video');\n\t\t\t\t}\n\t\t\t\tif(navigator.device.capture.captureImage) {\n\t\t\t\t\tappbuilder.app.info.canCapture.push('photo');\n\t\t\t\t}\n\t\t\t\tif(navigator.device.capture.captureAudio) {\n\t\t\t\t\tappbuilder.app.info.canCapture.push('audio');\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(navigator.camera && navigator.camera.getPicture) {\n\t\t\t\tappbuilder.app.info.canChoose = ['photo', 'video'];\n\t\t\t}\n\t\t\tif(appbuilder.app.ready) {\n\t\t\t\tappbuilder.app.debug('ready', 'ready');\n\t\t\t\tappbuilder.app.ready();\n\t\t\t}\n\t\t});\n\t\tappbuilder.app.mapMarker = 'mapmarker.png';\n\t}\n\telse {\n\t\tif(appbuilder.base) {\n\t\t\tappbuilder.app.mapMarker = appbuilder.base + 'components/com_appbuilder/assets/images/phone/mapmarker.png';\n\t\t}\n\t\telse {\n\t\t\tappbuilder.app.mapMarker = 'https://static.appshed.com/images/mapmarker.png';\n\t\t}\n\t\tif(appbuilder.app.ready) {\n\t\t\tappbuilder.app.debug('ready', 'ready');\n\t\t\tappbuilder.app.ready();\n\t\t}\n\t}\n});\n\nappbuilder.app.online = function() {\n if(window.blackberry && blackberry.system){\n return blackberry.system.hasDataCoverage();\n }\n return navigator.onLine !== false;\n};\n\nappbuilder.app.blankImage = 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==';\n\n(function() {\n\tvar canvas = document.createElement(\"canvas\");\n\tif(canvas.getContext) {\n\t\tvar data = canvas.toDataURL(\"image/png\");\n\t\tappbuilder.app.canGetImageData = (data && data.indexOf(\"data:image/png\") == 0);\n\t}\n\telse {\n\t\tappbuilder.app.canGetImageData = false;\n\t}\n\tif(appbuilder.app.canGetImageData) {\n\t\tappbuilder.app.debug('imageData', 'yes');\n\t\tappbuilder.app.getImageDataURL = function(url, cb) {\n\t\t\tappbuilder.app.debug('imageData', 'get', url);\n\t\t\tvar img = new Image();\n\t\t\timg.onload = function() {\n\t\t\t\tvar canvas = document.createElement(\"canvas\");\n\t\t\t\t//Dont save images bigger than 1 mega pixels\n\t\t\t\tif(this.width * this.height < 1000000) {\n\t\t\t\t\tcanvas.width = this.width;\n\t\t\t\t\tcanvas.height = this.height;\n\t\t\t\t\tcanvas.getContext(\"2d\").drawImage(this, 0, 0);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar data = canvas.toDataURL(\"image/png\");\n\t\t\t\t\t\tappbuilder.app.debug('imageData', 'got', url);\n\t\t\t\t\t\tcb(data);\n\t\t\t\t\t}\n\t\t\t\t\tcatch(e) {\n\t\t\t\t\t\tappbuilder.app.debug('imageData', 'fail 2', url);\n\t\t\t\t\t\tcb(false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tappbuilder.app.debug('imageData', 'tooBig', url);\n\t\t\t\t\tcb(false);\n\t\t\t\t}\n\t\t\t};\n\t\t\timg.crossOrigin = \"Anonymous\";\n\t\t\timg.onerror = img.onabort = function() {\n\t\t\t\tappbuilder.app.debug('imageData', 'fail', url);\n\t\t\t\tcb(false);\n\t\t\t};\n\t\t\ttry {\n\t\t\t\timg.src = url;\n\t\t\t}\n\t\t\tcatch(e) {\n\t\t\t\tappbuilder.app.debug('imageData', 'fail', url);\n\t\t\t\tcb(false);\n\t\t\t}\n\t\t};\n\t}\n\telse {\n\t\tappbuilder.app.debug('imageData', 'no');\n\t\tappbuilder.app.getImageDataURL = function(url, cb) {\n\t\t\tcb(false);\n\t\t};\n\t}\n})();\n\n(function() {\n\tvar started = false;\n\tappbuilder.app.startHeightTracker = function() {\n\t\tif(!started) {\n\t\t\tvar headerElement = document.getElementsByTagName('head')[0],\n\t\t\t\tstyleElement = document.createElement('style'),\n\t\t\t\tupdateMinHeight = appbuilder.app.isIE ? function() {\n\t\t\t\t\tstyleElement.styleSheet.cssText = \n\t\t\t\t\t\t\".phone.fixed .phone-navigator .app .app-navigator .screen .items.scrolling {min-height: \" + window.getSize().y + \"px;}\";\n\t\t\t\t} : function() {\n\t\t\t\t\tstyleElement.innerHTML = \n\t\t\t\t\t\t\".phone.fixed .phone-navigator .app .app-navigator .screen .items.scrolling {min-height: \" + window.getSize().y + \"px;}\";\n\t\t\t\t};\n\t\t\tstyleElement.setAttribute('type', 'text/css');\n\t\t\theaderElement.appendChild(styleElement);\n\t\t\twindow.addEvent('resize', updateMinHeight);\n\t\t\tupdateMinHeight();\n\t\t\tstarted = true;\n\t\t}\n\t};\n})();\n","/**\n * \n * Spinning Wheel\n * \n * Based on origonal by cubiq, \n * http://cubiq.org/spinning-wheel-on-webkit-for-iphone-ipod-touch/11\n * \n * Changes to make a bit more cross browser compatible. Based on code in iScroll 4.\n * Also added a 'container' property to allow the spinner to be embeded within an element.\n * Updated CSS to make use of gradients and data urls to reduce extra requests\n *\n * Changes by Fred Cox\n * Copyright (c) 2011 Fred Cox, http://fedr.co/\n * \n * Origonal by Matteo Spinelli\n * Copyright (c) 2009 Matteo Spinelli, http://cubiq.org/\n * \n * Released under MIT license\n * http://cubiq.org/dropbox/mit-license.txt\n * \n * Version 3.0 - Last updated: 2013.03.01\n * \n */\n(function() {\n\tvar dummyStyle = document.createElement('div').style,\n\t\tvendor = (function () {\n\t\t\tvar vendors = 't,webkitT,MozT,msT,OT'.split(','),\n\t\t\t\tt,\n\t\t\t\ti = 0,\n\t\t\t\tl = vendors.length;\n\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tt = vendors[i] + 'ransform';\n\t\t\t\tif ( t in dummyStyle ) {\n\t\t\t\t\treturn vendors[i].substr(0, vendors[i].length - 1);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t})(),\n\t\tcssVendor = vendor ? '-' + vendor.toLowerCase() + '-' : '',\n\n\t\t// Style properties\n\t\ttransform = prefixStyle('transform'),\n\t\ttransitionProperty = prefixStyle('transitionProperty'),\n\t\ttransitionDuration = prefixStyle('transitionDuration'),\n\t\ttransformOrigin = prefixStyle('transformOrigin'),\n\t\ttransitionTimingFunction = prefixStyle('transitionTimingFunction'),\n\t\ttransitionDelay = prefixStyle('transitionDelay'),\n\n\t\t// Browser capabilities\n\t\tisAndroid = (/android/gi).test(navigator.appVersion),\n\t\tisIDevice = (/iphone|ipad/gi).test(navigator.appVersion),\n\t\tisTouchPad = (/hp-tablet/gi).test(navigator.appVersion),\n\t\n\t\thas3d = prefixStyle('perspective') in dummyStyle,\n\t\thasTouch = 'ontouchstart' in window && !isTouchPad,\n\t\thasTransform = vendor !== false,\n\t\thasTransitionEnd = prefixStyle('transition') in dummyStyle,\n\n\t\tRESIZE_EV = 'onorientationchange' in window ? 'orientationchange' : 'resize',\n\t\tSTART_EV = hasTouch ? 'touchstart' : 'mousedown',\n\t\tMOVE_EV = hasTouch ? 'touchmove' : 'mousemove',\n\t\tEND_EV = hasTouch ? 'touchend' : 'mouseup',\n\t\t//CANCEL_EV = hasTouch ? 'touchcancel' : 'mouseup',\n\t\t//WHEEL_EV = vendor == 'Moz' ? 'DOMMouseScroll' : 'mousewheel',\n\t\tTRNEND_EV = (function () {\n\t\t\tif ( vendor === false ) return false;\n\n\t\t\tvar transitionEnd = {\n\t\t\t\t\t''\t\t\t: 'transitionend',\n\t\t\t\t\t'webkit'\t: 'webkitTransitionEnd',\n\t\t\t\t\t'Moz'\t\t: 'transitionend',\n\t\t\t\t\t'O'\t\t\t: 'otransitionend',\n\t\t\t\t\t'ms'\t\t: 'MSTransitionEnd'\n\t\t\t\t};\n\n\t\t\treturn transitionEnd[vendor];\n\t\t})(),\n\t\t\n\t\t// Helpers\n\t\ttranslateZ = has3d ? ' translateZ(0)' : '',\n\t\tSpinningWheel = {\n\t\tcellHeight: 44,\n\t\tfriction: 0.003,\n\t\tslotData: [],\n\n\n\t\t/**\n\t\t *\n\t\t * Event handler\n\t\t *\n\t\t */\n\n\t\thandleEvent: function (e) {\n\t\t\tif (e.type == START_EV) {\n\t\t\t\tthis.lockScreen(e);\n\t\t\t\tif (e.currentTarget.id == 'sw-cancel' || e.currentTarget.id == 'sw-done') {\n\t\t\t\t\tthis.tapDown(e);\n\t\t\t\t} else if (e.currentTarget.id == 'sw-frame') {\n\t\t\t\t\tthis.scrollStart(e);\n\t\t\t\t}\n\t\t\t} else if (e.type == MOVE_EV) {\n\t\t\t\tthis.lockScreen(e);\n\n\t\t\t\tif (e.currentTarget.id == 'sw-cancel' || e.currentTarget.id == 'sw-done') {\n\t\t\t\t\tthis.tapCancel(e);\n\t\t\t\t} else if(this.scrollHasStarted/* || e.currentTarget.id == 'sw-frame'*/) {\n\t\t\t\t\tthis.scrollMove(e);\n\t\t\t\t}\n\t\t\t} else if (e.type == END_EV) {\n\t\t\t\tif (e.currentTarget.id == 'sw-cancel' || e.currentTarget.id == 'sw-done') {\n\t\t\t\t\tthis.tapUp(e);\n\t\t\t\t} else if (this.scrollHasStarted/* || e.currentTarget.id == 'sw-frame'*/) {\n\t\t\t\t\tthis.scrollEnd(e);\n\t\t\t\t}\n\t\t\t} else if (e.type == TRNEND_EV) {\n\t\t\t\tif (e.target.id == 'sw-wrapper') {\n\t\t\t\t\tthis.destroy();\n\t\t\t\t} else {\n\t\t\t\t\tthis.backWithinBoundaries(e);\n\t\t\t\t}\n\t\t\t} else if (e.type == RESIZE_EV) {\n\t\t\t\tthis.onOrientationChange(e);\n\t\t\t} else if (e.type == 'scroll') {\n\t\t\t\tthis.onScroll(e);\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t *\n\t\t * Global events\n\t\t *\n\t\t */\n\n\t\tonOrientationChange: function (e) {\n\t\t\twindow.scrollTo(0, 0);\n\t\t\tthis.swWrapper.style.top = (this.container ? this.container.clientHeight : (window.innerHeight + window.pageYOffset)) + 'px';\n\t\t\tthis.calculateSlotsWidth();\n\t\t},\n\n\t\tonScroll: function (e) {\n\t\t\tthis.swWrapper.style.top = (this.container ? this.container.clientHeight : (window.innerHeight + window.pageYOffset)) + 'px';\n\t\t},\n\n\t\tlockScreen: function (e) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t},\n\n\n\t\t/**\n\t\t *\n\t\t * Initialization\n\t\t *\n\t\t */\n\n\t\treset: function () {\n\t\t\tthis.slotEl = [];\n\n\t\t\tthis.activeSlot = null;\n\n\t\t\tthis.swWrapper = undefined;\n\t\t\tthis.swSlotWrapper = undefined;\n\t\t\tthis.swSlots = undefined;\n\t\t\tthis.swFrame = undefined;\n\t\t},\n\n\t\tcalculateSlotsWidth: function () {\n\t\t\tvar div = this.swSlots.getElementsByTagName('div');\n\t\t\tfor (var i = 0; i < div.length; i += 1) {\n\t\t\t\tthis.slotEl[i].slotWidth = div[i].offsetWidth;\n\t\t\t}\n\t\t},\n\n\t\tcreate: function () {\n\t\t\tvar i, l, out, ul, div;\n\n\t\t\tthis.reset();\t// Initialize object variables\n\n\t\t\t// Create the Spinning Wheel main wrapper\n\t\t\tdiv = document.createElement('div');\n\t\t\tdiv.id = 'sw-wrapper';\n\t\t\tdiv.style.top = (this.container ? this.container.clientHeight : (window.innerHeight + window.pageYOffset)) + 'px';\t\t// Place the SW down the actual viewing screen\n\t\t\tdiv.style[transitionProperty] = hasTransform ? cssVendor + 'transform' : 'top left';\n\t\t\tdiv.style[transitionDuration] = '400ms';\n\t\t\tif(!hasTransform) {\n\t\t\t\tdiv.style.position = 'absolute';\n\t\t\t}\n\t\t\tdiv.innerHTML = '
Cancel
Done
';\n\n\t\t\t(this.container || document.body).appendChild(div);\n\n\t\t\tthis.swWrapper = div;\t\t\t\t\t\t\t\t\t\t\t\t\t// The SW wrapper\n\t\t\tthis.swSlotWrapper = document.getElementById('sw-slots-wrapper');\t\t// Slots visible area\n\t\t\tthis.swSlots = document.getElementById('sw-slots');\t\t\t\t\t\t// Pseudo table element (inner wrapper)\n\t\t\tthis.swFrame = document.getElementById('sw-frame');\t\t\t\t\t\t// The scrolling controller\n\t\t\tif(!('borderImage' in document.body.style || 'webkitBorderImage' in document.body.style)) {\n\t\t\t\tthis.swFrame.style.borderWidth = 0;\n\t\t\t\tthis.swFrame.style.height = '215px';\n\t\t\t\tthis.swFrame.style.background = 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAADXCAYAAAAwRYC4AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3MzExQUJGOTdBNzAxMUUyQTREQ0Y2NUVCQTI2RTQwNiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3MzExQUJGQTdBNzAxMUUyQTREQ0Y2NUVCQTI2RTQwNiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjczMTFBQkY3N0E3MDExRTJBNERDRjY1RUJBMjZFNDA2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjczMTFBQkY4N0E3MDExRTJBNERDRjY1RUJBMjZFNDA2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+CK03FgAAASlJREFUeNpivH799n8GIGC5evUuA5jBwPAfxmAEs5gYoAAh9f8/uhQjI1Rq2bKFjCAGo5KC5h2oLoY/MMZv3CJwxi9SpPCIECP1izJd5Ln5NxGhgUcEk/EXgwGX+ocqlZaRBxH5D4/l//A4hUYlPqn//zFSAroUMdpJtJ0kNXArGAiqYeVRAbMYz51/ugklPQ8hBsvy5RcPDlnHf/nzuAccBUAcDkurr2CMDzDGVxjjJxFJ/R+Gmv+41fxHYTBD8X8YgwGFwYTCgPuCGeoBHAxi1EDKTGtrd7TUC0urzGzMbIxfP39iZIFZzAIzHTuDBYMBl2LFrYYVtwgmg40yEWIYrFRSTJIL8TAgweLr76cKji8FRR1o8kMqmhhRUzgwAhlRykw8UgABBgCFIa30CoPe0wAAAABJRU5ErkJggg==) repeat-x';\n\t\t\t\tdiv.style.background = 'white';\n\t\t\t}\n\t\t\t\n\t\t\t// Create HTML slot elements\n\t\t\tfor (l = 0; l < this.slotData.length; l += 1) {\n\t\t\t\t// Create the slot\n\t\t\t\tul = document.createElement('ul');\n\t\t\t\tout = '';\n\t\t\t\tfor (i in this.slotData[l].values) {\n\t\t\t\t\tif(this.slotData[l].values.hasOwnProperty(i)) {\n\t\t\t\t\t\tout += '
  • ' + this.slotData[l].values[i] + '<' + '/li>';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tul.innerHTML = out;\n\n\t\t\t\tdiv = document.createElement('div');\t\t// Create slot container\n\t\t\t\tdiv.className = this.slotData[l].style;\t\t// Add styles to the container\n\t\t\t\tdiv.appendChild(ul);\n\n\t\t\t\t// Append the slot to the wrapper\n\t\t\t\tthis.swSlots.appendChild(div);\n\n\t\t\t\tul.slotPosition = l;\t\t\t// Save the slot position inside the wrapper\n\t\t\t\tul.slotYPosition = 0;\n\t\t\t\tul.slotWidth = 0;\n\t\t\t\tul.slotMaxScroll = this.swSlotWrapper.clientHeight - ul.clientHeight - 86;\n\t\t\t\tif (hasTransform) ul.style[transitionTimingFunction] = 'cubic-bezier(0, 0, 0.2, 1)';\n\n\t\t\t\tthis.slotEl.push(ul);\t\t\t// Save the slot for later use\n\n\t\t\t\t// Place the slot to its default position (if other than 0)\n\t\t\t\tif (this.slotData[l].defaultValue) {\n\t\t\t\t\tthis.scrollToValue(l, this.slotData[l].defaultValue);\t\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.calculateSlotsWidth();\n\n\t\t\t// Global events\n\t\t\tdocument.addEventListener(START_EV, this, false);\t\t\t// Prevent page scrolling\n\t\t\tdocument.addEventListener(MOVE_EV, this, false);\n\t\t\tdocument.addEventListener(END_EV, this, false);\t\t\t// Prevent page scrolling\n\t\t\twindow.addEventListener(RESIZE_EV, this, true);\t\t// Optimize SW on orientation change\n\t\t\twindow.addEventListener('scroll', this, true);\t\t\t\t// Reposition SW on page scroll\n\n\t\t\t// Cancel/Done buttons events\n\t\t\tdocument.getElementById('sw-cancel').addEventListener(START_EV, this, false);\n\t\t\tdocument.getElementById('sw-done').addEventListener(START_EV, this, false);\n\n\t\t\t// Add scrolling to the slots\n\t\t\tthis.swFrame.addEventListener(START_EV, this, false);\n\t\t},\n\n\t\topen: function () {\n\t\t\tthis.create();\n\n\t\t\tthis.swWrapper.style[transitionTimingFunction] = 'ease-out';\n\t\t\tif (hasTransform) {\n\t\t\t\tthis.swWrapper.style[transform] = 'translate(0, -260px)' + translateZ;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.swWrapper.style.left = 0;\n\t\t\t\tthis.swWrapper.style.top = -260 + 'px';\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t *\n\t\t * Unload\n\t\t *\n\t\t */\n\n\t\tdestroy: function () {\n\t\t\tthis.swWrapper.removeEventListener(TRNEND_EV, this, false);\n\n\t\t\tthis.swFrame.removeEventListener(START_EV, this, false);\n\n\t\t\tdocument.getElementById('sw-cancel').removeEventListener(START_EV, this, false);\n\t\t\tdocument.getElementById('sw-done').removeEventListener(START_EV, this, false);\n\n\t\t\tdocument.removeEventListener(START_EV, this, false);\n\t\t\tdocument.removeEventListener(MOVE_EV, this, false);\n\t\t\twindow.removeEventListener(RESIZE_EV, this, true);\n\t\t\twindow.removeEventListener('scroll', this, true);\n\n\t\t\tthis.slotData = [];\n\t\t\tthis.cancelAction = function () {\n\t\t\t\treturn false;\n\t\t\t};\n\n\t\t\tthis.cancelDone = function () {\n\t\t\t\treturn true;\n\t\t\t};\n\n\t\t\tthis.reset();\n\n\t\t\t(this.container || document.body).removeChild(document.getElementById('sw-wrapper'));\n\t\t},\n\n\t\tclose: function () {\n\t\t\tthis.swWrapper.style[transitionTimingFunction] = 'ease-in';\n\t\t\tif (hasTransform) {\n\t\t\t\tthis.swWrapper.style[transform] = 'translate(0, 0)' + translateZ;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.swWrapper.style.left = 0;\n\t\t\t\tthis.swWrapper.style.top = 0;\n\t\t\t}\n\t\t\t\n\t\t\tthis.swWrapper.addEventListener(TRNEND_EV, this, false);\n\t\t},\n\n\n\t\t/**\n\t\t *\n\t\t * Generic methods\n\t\t *\n\t\t */\n\n\t\taddSlot: function (values, style, defaultValue) {\n\t\t\tif (!style) {\n\t\t\t\tstyle = '';\n\t\t\t}\n\n\t\t\tstyle = style.split(' ');\n\n\t\t\tfor (var i = 0; i < style.length; i += 1) {\n\t\t\t\tstyle[i] = 'sw-' + style[i];\n\t\t\t}\n\n\t\t\tstyle = style.join(' ');\n\n\t\t\tvar obj = { 'values': values, 'style': style, 'defaultValue': defaultValue };\n\t\t\tthis.slotData.push(obj);\n\t\t},\n\n\t\tgetSelectedValues: function () {\n\t\t\tvar index, count,\n\t\t\t\ti, l,\n\t\t\t\tkeys = [], values = [];\n\n\t\t\tfor (i in this.slotEl) {\n\t\t\t\tif(this.slotEl.hasOwnProperty(i)) {\n\t\t\t\t\t// Remove any residual animation\n\t\t\t\t\tthis.slotEl[i].removeEventListener(TRNEND_EV, this, false);\n\t\t\t\t\tthis.slotEl[i].style[transitionDelay] = '0';\n\n\t\t\t\t\tif (this.slotEl[i].slotYPosition > 0) {\n\t\t\t\t\t\tthis.setPosition(i, 0);\n\t\t\t\t\t} else if (this.slotEl[i].slotYPosition < this.slotEl[i].slotMaxScroll) {\n\t\t\t\t\t\tthis.setPosition(i, this.slotEl[i].slotMaxScroll);\n\t\t\t\t\t}\n\n\t\t\t\t\tindex = -Math.round(this.slotEl[i].slotYPosition / this.cellHeight);\n\n\t\t\t\t\tcount = 0;\n\t\t\t\t\tfor (l in this.slotData[i].values) {\n\t\t\t\t\t\tif(this.slotData[i].values.hasOwnProperty(l)) {\n\t\t\t\t\t\t\tif (count == index) {\n\t\t\t\t\t\t\t\tkeys.push(l);\n\t\t\t\t\t\t\t\tvalues.push(this.slotData[i].values[l]);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcount += 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn { 'keys': keys, 'values': values };\n\t\t},\n\n\n\t\t/**\n\t\t *\n\t\t * Rolling slots\n\t\t *\n\t\t */\n\n\t\tsetPosition: function (slot, pos) {\n\t\t\tthis.slotEl[slot].slotYPosition = pos;\n\t\t\tif(hasTransform) {\n\t\t\t\tthis.slotEl[slot].style[transform] = 'translate(0, ' + pos + 'px)' + translateZ;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.slotEl[slot].style.left = 0;\n\t\t\t\tthis.slotEl[slot].style.top = pos;\n\t\t\t}\n\t\t},\n\n\t\tscrollStart: function (e) {\n\t\t\t// Find the clicked slot\n\t\t\tvar point = hasTouch ? e.touches[0] : e;\n\t\t\t\n\t\t\tvar l = 0, p = this.swSlots;\n\t\t\twhile(p){\n\t\t\t\tl += p.offsetLeft;\n\t\t\t\tp = p.offsetParent;\n\t\t\t}\n\t\t\t\n\t\t\tvar xPos = point.pageX - l;\t// Clicked position minus left offset (should be 11px)\n\n\t\t\t// Find tapped slot\n\t\t\tvar slot = 0;\n\t\t\tfor (var i = 0; i < this.slotEl.length; i += 1) {\n\t\t\t\tslot += this.slotEl[i].slotWidth;\n\n\t\t\t\tif (xPos < slot) {\n\t\t\t\t\tthis.activeSlot = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If slot is readonly do nothing\n\t\t\tif (this.slotData[this.activeSlot].style.match('readonly')) {\n\t\t\t\t//this.swFrame.removeEventListener(MOVE_EV, this, false);\n\t\t\t\t//this.swFrame.removeEventListener(END_EV, this, false);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.slotEl[this.activeSlot].removeEventListener(TRNEND_EV, this, false);\t// Remove transition event (if any)\n\t\t\tthis.slotEl[this.activeSlot].style[transitionDelay] = '0'; // Remove any residual transition\n\n\t\t\t// Stop and hold slot position\n\t\t\t//var theTransform = window.getComputedStyle(this.slotEl[this.activeSlot])[vendor + 'Transform'];\n\t\t\t//theTransform = new WebKitCSSMatrix(theTransform).m42;\n\t\t\t//if (theTransform != this.slotEl[this.activeSlot].slotYPosition) {\n\t\t\t//\tthis.setPosition(this.activeSlot, theTransform);\n\t\t\t//}\n\n\t\t\tthis.startY = point.pageY;\n\t\t\tthis.scrollStartY = this.slotEl[this.activeSlot].slotYPosition;\n\t\t\tthis.scrollStartTime = e.timeStamp;\n\n\t\t\t//this.swFrame.addEventListener(MOVE_EV, this, false);\n\t\t\t//this.swFrame.addEventListener(END_EV, this, false);\n\t\t\t\n\t\t\tthis.scrollHasStarted = true;\n\t\t\t\n\t\t\treturn true;\n\t\t},\n\n\t\tscrollMove: function (e) {\n\t\t\tvar point = hasTouch ? e.touches[0] : e;\n\t\t\tvar topDelta = point.pageY - this.startY;\n\n\t\t\tif (this.slotEl[this.activeSlot].slotYPosition > 0 || this.slotEl[this.activeSlot].slotYPosition < this.slotEl[this.activeSlot].slotMaxScroll) {\n\t\t\t\ttopDelta /= 2;\n\t\t\t}\n\n\t\t\tthis.setPosition(this.activeSlot, this.slotEl[this.activeSlot].slotYPosition + topDelta);\n\t\t\tthis.startY = point.pageY;\n\n\t\t\t// Prevent slingshot effect\n\t\t\tif (e.timeStamp - this.scrollStartTime > 80) {\n\t\t\t\tthis.scrollStartY = this.slotEl[this.activeSlot].slotYPosition;\n\t\t\t\tthis.scrollStartTime = e.timeStamp;\n\t\t\t}\n\t\t},\n\n\t\tscrollEnd: function (e) {\n\t\t\t//this.swFrame.removeEventListener(MOVE_EV, this, false);\n\t\t\t//this.swFrame.removeEventListener(END_EV, this, false);\n\t\t\t\n\t\t\tthis.scrollHasStarted = false;\n\n\t\t\t// If we are outside of the boundaries, let's go back to the sheepfold\n\t\t\tif (this.slotEl[this.activeSlot].slotYPosition > 0 || this.slotEl[this.activeSlot].slotYPosition < this.slotEl[this.activeSlot].slotMaxScroll) {\n\t\t\t\tthis.scrollTo(this.activeSlot, this.slotEl[this.activeSlot].slotYPosition > 0 ? 0 : this.slotEl[this.activeSlot].slotMaxScroll);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lame formula to calculate a fake deceleration\n\t\t\tvar scrollDistance = this.slotEl[this.activeSlot].slotYPosition - this.scrollStartY;\n\n\t\t\t// The drag session was too short\n\t\t\tif (scrollDistance < this.cellHeight / 1.5 && scrollDistance > -this.cellHeight / 1.5) {\n\t\t\t\tif (this.slotEl[this.activeSlot].slotYPosition % this.cellHeight) {\n\t\t\t\t\tthis.scrollTo(this.activeSlot, Math.round(this.slotEl[this.activeSlot].slotYPosition / this.cellHeight) * this.cellHeight, '100ms');\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar scrollDuration = e.timeStamp - this.scrollStartTime;\n\n\t\t\tvar newDuration = (2 * scrollDistance / scrollDuration) / this.friction;\n\t\t\tvar newScrollDistance = (this.friction / 2) * (newDuration * newDuration);\n\n\t\t\tif (newDuration < 0) {\n\t\t\t\tnewDuration = -newDuration;\n\t\t\t\tnewScrollDistance = -newScrollDistance;\n\t\t\t}\n\n\t\t\tvar newPosition = this.slotEl[this.activeSlot].slotYPosition + newScrollDistance;\n\n\t\t\tif (newPosition > 0) {\n\t\t\t\t// Prevent the slot to be dragged outside the visible area (top margin)\n\t\t\t\tnewPosition /= 2;\n\t\t\t\tnewDuration /= 3;\n\n\t\t\t\tif (newPosition > this.swSlotWrapper.clientHeight / 4) {\n\t\t\t\t\tnewPosition = this.swSlotWrapper.clientHeight / 4;\n\t\t\t\t}\n\t\t\t} else if (newPosition < this.slotEl[this.activeSlot].slotMaxScroll) {\n\t\t\t\t// Prevent the slot to be dragged outside the visible area (bottom margin)\n\t\t\t\tnewPosition = (newPosition - this.slotEl[this.activeSlot].slotMaxScroll) / 2 + this.slotEl[this.activeSlot].slotMaxScroll;\n\t\t\t\tnewDuration /= 3;\n\n\t\t\t\tif (newPosition < this.slotEl[this.activeSlot].slotMaxScroll - this.swSlotWrapper.clientHeight / 4) {\n\t\t\t\t\tnewPosition = this.slotEl[this.activeSlot].slotMaxScroll - this.swSlotWrapper.clientHeight / 4;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnewPosition = Math.round(newPosition / this.cellHeight) * this.cellHeight;\n\t\t\t}\n\n\t\t\tthis.scrollTo(this.activeSlot, Math.round(newPosition), Math.round(newDuration) + 'ms');\n\n\t\t\treturn true;\n\t\t},\n\n\t\tscrollTo: function (slotNum, dest, runtime) {\n\t\t\tthis.slotEl[slotNum].style[transitionDuration] = runtime ? runtime : '100ms';\n\t\t\tthis.setPosition(slotNum, dest ? dest : 0);\n\n\t\t\t// If we are outside of the boundaries go back to the sheepfold\n\t\t\tif (this.slotEl[slotNum].slotYPosition > 0 || this.slotEl[slotNum].slotYPosition < this.slotEl[slotNum].slotMaxScroll) {\n\t\t\t\tthis.slotEl[slotNum].addEventListener(TRNEND_EV, this, false);\n\t\t\t}\n\t\t},\n\n\t\tscrollToValue: function (slot, value) {\n\t\t\tvar yPos, count, i;\n\n\t\t\tthis.slotEl[slot].removeEventListener(TRNEND_EV, this, false);\n\t\t\tthis.slotEl[slot].style[transitionDuration] = '0';\n\n\t\t\tcount = 0;\n\t\t\tfor (i in this.slotData[slot].values) {\n\t\t\t\tif(this.slotData[slot].values.hasOwnProperty(i)) {\n\t\t\t\t\tif (i == value) {\n\t\t\t\t\t\tyPos = count * this.cellHeight;\n\t\t\t\t\t\tthis.setPosition(slot, yPos);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcount -= 1;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tbackWithinBoundaries: function (e) {\n\t\t\te.target.removeEventListener(TRNEND_EV, this, false);\n\n\t\t\tthis.scrollTo(e.target.slotPosition, e.target.slotYPosition > 0 ? 0 : e.target.slotMaxScroll, '150ms');\n\t\t\treturn false;\n\t\t},\n\n\n\t\t/**\n\t\t *\n\t\t * Buttons\n\t\t *\n\t\t */\n\n\t\ttapDown: function (e) {\n\t\t\te.currentTarget.addEventListener(MOVE_EV, this, false);\n\t\t\te.currentTarget.addEventListener(END_EV, this, false);\n\t\t\te.currentTarget.className = 'sw-pressed';\n\t\t},\n\n\t\ttapCancel: function (e) {\n\t\t\te.currentTarget.removeEventListener(MOVE_EV, this, false);\n\t\t\te.currentTarget.removeEventListener(END_EV, this, false);\n\t\t\te.currentTarget.className = '';\n\t\t},\n\n\t\ttapUp: function (e) {\n\t\t\tthis.tapCancel(e);\n\n\t\t\tif (e.currentTarget.id == 'sw-cancel') {\n\t\t\t\tthis.cancelAction();\n\t\t\t} else {\n\t\t\t\tthis.doneAction();\n\t\t\t}\n\n\t\t\tthis.close();\n\t\t},\n\n\t\tsetCancelAction: function (action) {\n\t\t\tthis.cancelAction = action;\n\t\t},\n\n\t\tsetDoneAction: function (action) {\n\t\t\tthis.doneAction = action;\n\t\t},\n\n\t\tcancelAction: function () {\n\t\t\treturn false;\n\t\t},\n\n\t\tcancelDone: function () {\n\t\t\treturn true;\n\t\t}\n\t};\n\t\n\tfunction prefixStyle (style) {\n\t\tif ( vendor === '' ) return style;\n\n\t\tstyle = style.charAt(0).toUpperCase() + style.substr(1);\n\t\treturn vendor + style;\n\t}\n\n\tdummyStyle = null;\t// for the sake of it\n\t\n\twindow.SpinningWheel = SpinningWheel;\n})();","appbuilder = window.appbuilder || {};\nappbuilder.app = appbuilder.app || {};\nappbuilder.app.scroll = appbuilder.app.scroll || {};\nappbuilder.app.scroll.canIScroll = iScroll.canIScroll();\n\nif(appbuilder.app.scroll.canIScroll) {\n\tappbuilder.app.debug('scroll', 'iscroll', 'yes');\n\tappbuilder.app.scroll.iphone = new Class({\n\t\tiScrollOptions : {\n\t\t\thScroll: false,\n\t\t\thideScrollbar: true,\n\t\t\tonBeforeScrollStart: function (e) {\n\t\t\t\tif(e.target.tagName != 'INPUT'\n\t\t\t\t&& e.target.tagName != 'SELECT'\n\t\t\t && e.target.tagName != 'TEXTAREA') {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tenabled: true,\n\n\t\tinitialize : function(element, options) {\n\t\t\tthis.iScroll = new iScroll(element, Object.merge(this.iScrollOptions, options || {}));\n\t\t},\n\t\t\n\t\trefresh : function() {\n\t\t\tappbuilder.app.debug('scroll', 'refresh');\n\t\t\tthis.iScroll.refresh();\n\t\t},\n\t\t\n\t\tscrollToElement: function(e, t) {\n\t\t\tthis.iScroll.scrollToElement(e, t);\n\t\t},\n\t\t\n\t\tscrollToTop: function() {\n\t\t\tthis.iScroll.scrollTo(0, 0);\n\t\t},\n\t\t\n\t\tisScrolling : function() {\n\t\t\treturn !this.iScroll.isReady();\n\t\t},\n\t\t\n\t\tsetEnabled: function(enabled) {\n\t\t\tthis.enabled = enabled;\n\t\t\tif(enabled) {\n\t\t\t\tthis.iScroll.enable();\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.iScroll.disable();\n\t\t\t}\n\t\t},\t\n\t\t\t\t\n\t\tdisable:function(){\n\t\t\tthis.iScroll.disable();\n\t\t},\n\t\t\n\t\tenable:function(){\n\t\t\tthis.iScroll.enable();\n\t\t}\n\t}, 'scroll.iphone-iscroll');\n\t\n\tappbuilder.app.scroll.gallery = new Class({\n\t\tExtends: appbuilder.app.scroll.iphone,\n\t\tiScrollOptions : {\n\t\t\thScroll: true,\n\t\t\thScrollbar : false,\n\t\t\tvScroll: false,\n\t\t\tmomentum: false,\n\t\t\tsnap : '.item.gallery',\n\t\t\tzoom: true\n\t\t},\n\t\t\n\t\trefresh: function() {\n\t\t\tthis.parent();\n\t\t},\n\n\t\tgotoPage : function(number) {\n\t\t\tthis.iScroll.scrollToPage(number, 0, 1);\n\t\t},\n\n\t\tgetPage : function() {\n\t\t\treturn this.iScroll.currPageX;\n\t\t}\n\t}, 'scroll.gallery-iscroll');\n\n\tappbuilder.app.scroll.appsscreen = new Class({\n\t\tExtends: appbuilder.app.scroll.gallery,\n\t\tiScrollOptions : {\n\t\t\tsnap : '.apps'\n\t\t},\n\t\tinitialize : function(element, options) {\n\t\t\tvar dots = element.getElements('.home-dots .dot');\n\t\t\tvar currentPage = 1;\n\t\t\tvar homeUnderlay = element.getElement('.home-underlay');\n\t\t\tvar setopacity = function(iscroll, xx) {\n\t\t\t\tif(currentPage == 1 || currentPage == 0) {\n\t\t\t\t\tvar width = iscroll.wrapperW;\n\t\t\t\t\tvar x = -xx;\n\t\t\t\t\tx = Math.min(x, width);\n\t\t\t\t\tx = Math.max(x, 0);\n\t\t\t\t\tvar opacity = (1 - (x / width)) * 0.6;\n\t\t\t\t\thomeUnderlay.setStyle('opacity', opacity);\n\t\t\t\t}\n\t\t\t};\n\t\t\tthis.iScroll = new iScroll(element, Object.merge(this.iScrollOptions, {\n\t\t\t\tonScrollEnd: (function() {\n\t\t\t\t\tdots.removeClass('curr');\n\t\t\t\t\tcurrentPage = this.getPage();\n\t\t\t\t\tdots[currentPage].addClass('curr');\n\t\t\t\t}).bind(this),\n\t\t\t\tonScrollMove: function(e) {\n\t\t\t\t\tsetopacity(this, this.x);//this is iScroll\n\t\t\t\t},\n\t\t\t\tonTouchEnd: function(e) {\n\t\t\t\t\tsetopacity(this, this.pagesX[this.currPageX]);//this is iScroll\n\t\t\t\t}\n\t\t\t}, options || {}));\n\t\t\tthis.gotoPage(1);\n\t\t}\n\t}, 'scroll.apps-iscroll');\n}\nelse {\n\tappbuilder.app.debug('scroll', 'iscroll', 'no');\n\tvar drag = new Class({\n\t\tExtends : Drag,\n\t\tstart : function(e) {\n\t\t\tif (e.target.nodeName != 'SELECT' && e.target.nodeName != 'INPUT' && e.target.nodeName != 'TEXTAREA') {\n\t\t\t\tthis.parent(e);\n\t\t\t}\n\t\t}\n\t});\n\n\tappbuilder.app.scroll.iphone = new Class({\n\t\telement : null,\n\t\tdrag : null,\n\t\tdragging : false,\n\t\tmodifiers: {\n\t\t\tx: null,\n\t\t\ty: 'top'\n\t\t},\n\t\tenabled: true,\n\t\t\n\t\tinitialize : function(element) {\n\t\t\tthis.element = element;\n\t\t\tthis.inner = element.getFirst();\n\t\t\tvar elementSize = this.element.getSize();\n\t\t\tvar innerSize = this.inner.getSize();\n\t\t\tvar pos = this.inner.getStyle('position');\n\t\t\tif(pos != 'absolute' && pos != 'fixed' && pos != 'relative') {\n\t\t\t\tthis.inner.setStyle('position', 'relative');\n\t\t\t}\n\t\t\tthis.drag = new drag(this.inner, {\n\t\t\t\thandle: this.element,\n\t\t\t\tstyle : true,\n\t\t\t\tmodifiers: this.modifiers,\n\t\t\t\tinvert : false,\n\t\t\t\tpreventDefault : false,\n\t\t\t\tlimit: {\n\t\t\t\t\ty: [-innerSize.y + elementSize.y, 0],\n\t\t\t\t\tx: [-innerSize.x + elementSize.x, 0]\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.drag.addEvent('start', (function() {\n\t\t\t\tthis.dragging = true;\n\t\t\t}).bind(this));\n\n\t\t\tthis.drag.addEvent('complete', (function() {\n\t\t\t\t(function() {\n\t\t\t\t\tthis.dragging = false;\n\t\t\t\t}).delay(100, this);\n\t\t\t}).bind(this));\n\n\t\t\tthis.element.addEvent('mousewheel', (function(e) {\n\t\t\t\te.stop();\n\t\t\t\tthis.scrollWheel(e.wheel);\n\t\t\t\tthis.dragging = true;\n\t\t\t\tif(this.mouseTimeout > 0) {\n\t\t\t\t\tclearTimeout(this.mouseTimeout);\n\t\t\t\t}\n\t\t\t\tthis.mouseTimeout = (function() {\n\t\t\t\t\tthis.drag.fireEvent('complete')\n\t\t\t\t}).delay(100, this);\n\t\t\t}).bind(this));\n\t\t\tthis.makeScrollBar();\n\t\t},\n\t\t\n\t\tscrollWheel : function(wheel) {\n\t\t\tif(this.enabled) {\n\t\t\t\tvar top = this.inner.getStyle('top').toInt() || 0;\n\t\t\t\tif(wheel > 0) {\n\t\t\t\t\ttop -= 20;\n\t\t\t\t\tif(top < this.drag.options.limit.y[0]) {\n\t\t\t\t\t\ttop = this.drag.options.limit.y[0]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if(wheel < 0) {\n\t\t\t\t\ttop += 20;\n\t\t\t\t\tif(top > this.drag.options.limit.y[1]) {\n\t\t\t\t\t\ttop = this.drag.options.limit.y[1];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.inner.setStyles({top: top});\n\t\t\t}\n\t\t},\n\t\t\n\t\tmakeScrollBar : function() {\n\t\t\tthis.scrollBar = new Element('div', {\n\t\t\t\t'class':'scroll-bar'\n\t\t\t}).inject(this.element);\n\t\t\tthis.scrollBar.fade('hide');\n\t\t\tthis.scrollKnob = new Element('div', {\n\t\t\t\t'class':'scroll-knob'\n\t\t\t}).inject(this.element);\n\t\t\tthis.scrollKnob.fade('hide');\n\t\t\tvar that = this;\n\t\t\tthis.drag.addEvent('start', function() {\n\t\t\t\tthat.scrollBar.fade('in');\n\t\t\t\tthat.scrollKnob.fade('in');\n\t\t\t});\n\t\t\tthis.drag.addEvent('drag', function() {\n\t\t\t\tvar height = that.element.getStyle('height').toInt();\n\t\t\t\tvar scroll = that.element.getScroll();\n\t\t\t\tvar sT = scroll.y + (0.05 * height);\n\t\t\t\tvar sH = height * 0.9;\n\t\t\t\tthat.scrollBar.setStyle('top', sT);\n\t\t\t\tthat.scrollKnob.setStyle('top', sT + (sH * (scroll.y / height)));\n\t\t\t\tthat.scrollBar.setStyle('right', 2 - scroll.x);\n\t\t\t\tthat.scrollKnob.setStyle('right', 2 - scroll.x);\n\t\t\t});\n\t\t\tthis.drag.addEvent('complete', function() {\n\t\t\t\tthat.scrollBar.fade('out');\n\t\t\t\tthat.scrollKnob.fade('out');\n\t\t\t});\n\t\t},\n\t\t\n\t\tscrollToElement: function(e, t) {\n\t\t\tthis.inner.setStyle('top', Math.max(-e.getPosition(this.inner).y, this.drag.options.limit.y[0]));\n\t\t},\n\t\t\n\t\trefresh : function() {\n\t\t\tvar elementSize = this.element.getSize();\n\t\t\tvar innerSize = this.inner.getSize();\n\t\t\tthis.drag.setOptions({\n\t\t\t\tlimit: {\n\t\t\t\t\ty: [-innerSize.y + elementSize.y, 0],\n\t\t\t\t\tx: [-innerSize.x + elementSize.x, 0]\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\t\n\t\tscrollToTop: function() {\n\t\t\tthis.inner.setStyle('top', 0);\n\t\t},\n\t\t\n\t\tisScrolling : function() {\n\t\t\treturn this.dragging;\n\t\t},\n\t\t\n\t\tsetEnabled: function(enabled) {\n\t\t\tthis.enabled = enabled;\n\t\t\tif(enabled) {\n\t\t\t\tthis.drag.attach();\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.drag.detach();\n\t\t\t}\n\t\t}\n\t}, 'scroll.iphone');\n\t\n\tappbuilder.app.scroll.gallery = new Class({\n\t\tExtends: appbuilder.app.scroll.iphone,\n\t\tmodifiers: {\n\t\t\tx: 'left',\n\t\t\ty: null\n\t\t},\n\t\tinitialize : function(element) {\n\t\t\tthis.parent(element);\n\t\t\tthis.drag.addEvent('complete', (function() {\n\t\t\t\tvar left = - this.inner.getStyle('left').toInt();\n\t\t\t\tvar width = this.element.getSize().x;\n\n\t\t\t\tvar x = Math.floor(left / width) * width;\n\n\t\t\t\tif((left % width) > (width / 2)) {\n\t\t\t\t\tx += width;\n\t\t\t\t}\n\n\t\t\t\tthis.inner.setStyles({left: - x});\n\t\t\t}).bind(this));\n\t\t},\n\t\t\n\t\tscrollWheel : function(wheel) {\n\t\t\tif(this.enabled) {\n\t\t\t\tvar left = this.inner.getStyle('left').toInt() || 0;\n\t\t\t\tif(wheel > 0) {\n\t\t\t\t\tleft -= 20;\n\t\t\t\t\tif(left < this.drag.options.limit.x[0]) {\n\t\t\t\t\t\tleft = this.drag.options.limit.x[0]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if(wheel < 0) {\n\t\t\t\t\tleft += 20;\n\t\t\t\t\tif(left > this.drag.options.limit.x[1]) {\n\t\t\t\t\t\tleft = this.drag.options.limit.x[1]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.inner.setStyles({left: left});\n\t\t\t}\n\t\t},\n\t\t\n\t\tscrollToTop: function() {\n\t\t\tthis.inner.setStyle('left', 0);\n\t\t},\n\t\t\n\t\tgotoPage : function(number) {\n\t\t\tthis.inner.setStyles({left: -number * this.element.getSize().x});\n\t\t},\n\n\t\tgetPage : function() {\n\t\t\tvar x = -this.inner.getStyle('left').toInt();\n\t\t\treturn Math.floor(x / this.element.getSize().x);\n\t\t},\n\n\t\tmakeScrollBar : function() {\n\n\t\t}\n\t}, 'scroll.gallery');\n\t\n\tappbuilder.app.scroll.appsscreen = new Class({\n\t\tExtends: appbuilder.app.scroll.gallery,\n\t\tinitialize : function(element, options) {\n\t\t\tthis.parent(element, options);\n\t\t\tvar dots = element.getElements('.home-dots .dot');\n\t\t\tvar currentPage = 1;\n\t\t\tvar homeUnderlay = element.getElement('.home-underlay');\n\t\t\tvar setopacity = function() {\n\t\t\t\tif(currentPage == 1 || currentPage == 0) {\n\t\t\t\t\tvar width = this.element.getSize().x;\n\t\t\t\t\tvar x = -this.inner.getStyle('left').toInt();\n\t\t\t\t\tx = Math.min(x, width);\n\t\t\t\t\tx = Math.max(x, 0);\n\t\t\t\t\tvar opacity = (1 - (x / width)) * 0.6;\n\t\t\t\t\thomeUnderlay.setStyle('opacity', opacity);\n\t\t\t\t}\n\t\t\t}.bind(this);\n\t\t\tthis.drag.addEvent('complete', (function() {\n\t\t\t\tdots.removeClass('curr');\n\t\t\t\tcurrentPage = this.getPage();\n\t\t\t\tdots[currentPage].addClass('curr');\n\t\t\t\tsetopacity();\n\t\t\t}).bind(this));\n\t\t\t\n\t\t\tthis.drag.addEvent('drag', function() {\n\t\t\t\tsetopacity();\n\t\t\t});\n\t\t\tthis.gotoPage(1);\n\t\t}\n\t}, 'scroll.apps');\n}\n","appbuilder = window.appbuilder || {};\nappbuilder.app = appbuilder.app || {};\n\n(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();\n})(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\nappbuilder.app.Analytics = {\n\t\n\tevents: true,\n\tpages: true,\n\t\n\tattach: function(phone) {\n\t\tappbuilder.app.debug('analytics', 'attach');\n\t\tphone.addEvent('app', function(id, app) {\n\t\t\tif(id != 1) {\n\t\t\t\tthis.currentAppName = app.get('data-name') || 'App #' + id;\n\t\t\t\tthis.currentAppId = id;\n\n\t\t\t\tthis.pushVar(1, id);\n\t\t\t\tthis.pushVar(2, 0);\n\t\t\t\tthis.pushEvent('appbuilder', 'app', this.currentAppName, id);\n\t\t\t\tthis.pushPageview('app/' + this.currentAppName + '-' + id);\n\t\t\t}\n\t\t}.bind(this));\n\t\t\n\t\tphone.addEvent('screen', function(id, screen) {\n\t\t\tif(id != 1) {\n\t\t\t\tvar t = screen.getElement('.header .title');\n\t\t\t\tvar screenName = t ? t.get('text') : 'Screen #' + id;\n\n\t\t\t\tthis.pushVar(2, id);\n\t\t\t\tthis.pushEvent('appbuilder', 'screen', this.currentAppName + ' - ' + screenName, id);\n\t\t\t\tthis.pushPageview('app/' + this.currentAppName + '-'+ this.currentAppId + '/' + screenName + '-' + id);\n\t\t\t}\n\t\t}.bind(this));\n\t\t\n\t\tthis.load();\n\t},\n\t\n\tsetAccount: function(a) {\n\t\tappbuilder.app.debug('analytics', 'setAccount', a);\n\t\tthis.account = true;\n\t\tthis.accountHandle = a;\n\t\tif(!appbuilder.app.hasGAPlugin) {\n ga('create', a, 'auto', {'name': 'custom'});\n\t\t}\n\t},\n\t\n\tpushEvent: function(cat, action, label, value) {\n\t\tappbuilder.app.debug('analytics', 'pushEvent', cat, action, label, value);\n\t\tif(this.events) {\n\t\t\tif(appbuilder.app.hasGAPlugin) {\n\t\t\t\tif(this.pluginReady) {\n\t\t\t\t\twindow.plugins.gaPlugin.trackEvent(function(){}, function(){}, cat, action, label, value);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n if(this.account) {\n\t\t\t\t\tga('custom.send', 'event', {\n 'eventCategory': cat,\n 'eventAction': action,\n 'eventLabel': label,\n 'eventValue': value\n });\n\t\t\t\t}\n\t\t\t\tga('send', 'event', {\n 'eventCategory': cat,\n 'eventAction': action,\n 'eventLabel': label,\n 'eventValue': value\n });\n\t\t\t}\n\t\t}\n\t},\n\t\n\t//mainonly is used by popup to push pageviews\n\tpushPageview: function(path, mainonly) {\n\t\tappbuilder.app.debug('analytics', 'pushPageview', path);\n\t\tif(this.pages) {\n\t\t\tif(appbuilder.app.hasGAPlugin) {\n\t\t\t\tif(this.pluginReady) {\n\t\t\t\t\twindow.plugins.gaPlugin.trackPage(function(){}, function(){}, \"phonegap.appshed.com\" + path);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif(this.account && !mainonly) {\n ga('custom.send', 'pageview', path);\n\t\t\t\t}\n\t\t\t\tga('send', 'pageview', path);\n\t\t\t}\n\t\t}\n\t},\n\t\n\tpushVar: function(index, value) {\n\t\tappbuilder.app.debug('analytics', 'pushVar', index, value);\n\t\tif(appbuilder.app.hasGAPlugin) {\n\t\t\tif(this.pluginReady) {\n\t\t\t\twindow.plugins.gaPlugin.setVariable(function(){}, function(){}, index, value);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif(this.account) {\n\t\t\t\tga('custom.set', 'dimension'+index, value);\n\t\t\t}\n\t\t\tga('set', 'dimension'+index, value);\n\t\t}\n\t},\n\t\n\tloaded: false,\n\t\n\tload: function() {\n\t\tif(!this.loaded) {\n\t\t\tif(appbuilder.app.hasGAPlugin) {\n\t\t\t\tappbuilder.app.debug('analytics', 'load', 'plugin');\n\t\t\t\tvar loaded = function(){\n\t\t\t\t\tthis.pluginReady = true;\n\t\t\t\t\tthis.pushVar(3, 1);\n\t\t\t\t}.bind(this);\n\t\t\t\tif(this.account) {\n\t\t\t\t\twindow.plugins.gaPlugin.init(loaded, function(){}, this.accountHandle, 10);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\twindow.plugins.gaPlugin.init(loaded, function(){}, 'UA-19920027-1', 10);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tappbuilder.app.debug('analytics', 'load', 'ga.js');\n ga('create', 'UA-19920027-1', 'auto');\n\t\t\t\tthis.pushVar(3, appbuilder.app.isPhoneGap ? 1 : 0);\n\t\t\t\t//When the phone is embeded in the editor ga.js could get loaded twice\n\t\t\t\tfunction injectScript() {\n\t\t\t\t\t(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\t\t\t\t\twindow.removeEventListener && window.removeEventListener('online', injectScript);\n\t\t\t\t}\n\t\t\t\tif(appbuilder.app.online()) {\n\t\t\t\t\tinjectScript();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t window.addEventListener && window.addEventListener('online', injectScript);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.loaded = true;\n\t\t}\n\t}\n};\n","appbuilder = window.appbuilder || {};\nappbuilder.app = appbuilder.app || {};\n\nappbuilder.app.BBM = {\n\tbbmSetup: false,\n\taccess: 'unknown',\n\tcbs: [],\n\t//Default dev uuid, apps create there own which is setup by the app object\n\tuuid: \"c2b3c8fc-54c5-4de4-a211-8b70eaa519d6\",\n\t\n\tcanBBM: Browser.Platform.BB10 || Browser.Platform.smartphone,\n\terrorMsg: 'This action is only avaible on BlackBerry devices',\n\t\n\tsetup: function() {\n\t\tif(!this.bbmSetup) {\n\t\t\tappbuilder.app.loadScript('local:///chrome/webworks.js', function() {\n\t\t\t\tif(blackberry.event) {\n\t\t\t\t\tdocument.addEventListener(\"webworksready\", function() {\n\t\t\t\t\t\tthis.bbmSetup = true;\n\t\t\t\t\t\tblackberry.event.addEventListener('onaccesschanged', this.accessChanged.bind(this));\n\t\t\t\t\t\tthis.postSetup();\n\t\t\t\t\t}.bind(this));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.bbmSetup = true;\n\t\t\t\t\tblackberry.bbm.platform.onaccesschanged = this.accessChanged.bind(this);\n\t\t\t\t\tthis.postSetup();\n\t\t\t\t}\n\t\t\t}.bind(this), function() {\n\t\t\t\tthis.bbmSetup = true;\n\t\t\t\tthis.canBBM = false;\n\t\t\t\tthis.processCbs();\n\t\t\t}.bind(this));\n\t\t}\n\t\telse {\n\t\t\tthis.postSetup();\n\t\t}\n\t},\n\t\n\tpostSetup: function() {\n\t\tif (this.access == \"allowed\") {\n\t\t\tthis.processCbs();\n\t\t}\n\t\telse {\n\t\t\tthis.register();\n\t\t}\n\t},\n\t\n\tregister: function() {\n\t\tappbuilder.app.debug('bbm', 'register');\n\t\ttry {\n\t\t\tblackberry.bbm.platform.register({\n\t\t\t\tuuid: this.uuid\n\t\t\t});\n\t\t}\n\t\tcatch(e) {\n\t\t\tappbuilder.app.alert('uuid error');\n\t\t}\n\t},\n\t\n\taccessChanged: function(accessible, status) {\n\t\tappbuilder.app.debug('bbm', 'access', status);\n\t\tthis.access = status;\n\t\tif (status == \"unregistered\") {\n\t\t\t//this.register();\n\t\t}\n\t\telse if (status == \"allowed\") {\n\t\t\tthis.processCbs();\n\t\t}\n\t\t// Listen for other status...\n\t},\n\t\n\tprocessCbs: function() {\n\t\tvar cbs = this.cbs;\n\t\tthis.cbs = [];\n\t\tcbs.each(function(cb) {\n\t\t\tcb(this.canBBM);\n\t\t}, this);\n\t},\n\t\n\t/**\n\t * Use this to make calls to BBM, via a callback.\n\t * It could be called immeditaly, or it might not be called until the user\n\t * has registed the app with BBM\n\t * The callback takes an argument `canBBM`, only if its true should the cb procced\n\t */\n\tcall: function(cb) {\n\t\tthis.cbs.push(cb);\n\t\tif(this.canBBM) {\n\t\t\tthis.setup();\n\t\t}\n\t\telse {\n\t\t\tthis.processCbs();\n\t\t}\n\t},\n\t\n\t/**\n\t * Share the app\n\t */\n\tshareApp: function(cb, context) {\n\t\tappbuilder.app.debug('bbm', 'share');\n\t\tthis.call(function(canBBM) {\n\t\t\tif(canBBM) {\n\t\t\t\tblackberry.bbm.platform.users.inviteToDownload();\n\t\t\t}\n\t\t\telse {\n\t\t\t\tappbuilder.app.alert(this.errorMsg, context);\n\t\t\t}\n\t\t\tcb();\n\t\t});\n\t}\n};\n","appbuilder = window.appbuilder || {};\nappbuilder.app = appbuilder.app || {};\nappbuilder.app.Phone = new Class({\n\tImplements: [Options, Events],\n\n\toptions: {\n\t\trequest: {\n\t\t\turl: 'index.php',\n\t\t\tdata: {\n\t\t\t\toption: 'com_appbuilder',\n\t\t\t\tcontroller: 'appserver'\n\t\t\t},\n\t\t\tmethod: 'get',\n\t\t\tconcurrent : 10,\n\t\t\ttimeout: 15000,\n\t\t\ttimeoutUpdate: 5000\n\t\t},\n\t\tfullscreen: false,\n\t\tbackground: true,\n\t\tstatusbar: true,\n\t\tstorage: false,\n\t\tfiles: false,\n\t\tupdate: false,\n\t\tupdateSingle: false,\n\t\tbrowserHistory: false,\n\t\tsplash: false,\n\t\tstyle: 'auto',\n\t\thomeButton: false,\n\t\thorizontal: false,\n\t\tfixed: false,\n masking: (function() {\n var prefixes = ['maskRepeat', 'webkitMaskRepeat', 'mozMaskRepeat', 'oMaskRepeat', 'msMaskRepeat'],\n d = document.createElement('div');\n for (var i = 0; i < prefixes.length; i++) {\n if (d.style[prefixes[i]] !== undefined) {\n return prefixes[i];\n }\n }\n return false;\n })(),\n currentIOS7: true\n\t},\n\n\tinitialize: function(options) {\n\t\tappbuilder.app.debug('phone', 'init');\n\t\tthis.setOptions(options);\n\t\t\n\t\tthis.temporaryStorage = appbuilder.app.Storage;\n\t\tthis.temporaryStorage.phone = this;\n\t\tif(this.options.storage) {\n\t\t\t//if(appbuilder.app.PhoneGapStorage) {\n\t\t\t//\tthis.storage = appbuilder.app.PhoneGapStorage;\n\t\t\t//}\n\t\t\tif(appbuilder.app.LocalStorage) {\n\t\t\t\tthis.storage = appbuilder.app.LocalStorage;\n\t\t\t\tthis.storage.phone = this;\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.history = new appbuilder.app.History(this);\n\t\tthis.loader = new appbuilder.app.Loader(this);\n\t\tthis.navigator = new appbuilder.app.Navigator(this);\n\t\t\n\t\tappbuilder.app.Analytics.attach(this);\n\t\t\n\t\tif(!appbuilder.app.current) {\n\t\t\tappbuilder.app.current = this;\n\t\t}\n\n this.addEvent('app', function() {\n if (this.options.currentMasking && document.id(this).hasClass('ios7style')) {\n this.navigator.applyTabMask();\n }\n }.bind(this));\n\t},\n\n\ttoElement: function() {\n\t\tif(!this.element) {\n\t\t\tthis.element = appbuilder.app.makeElement('phone');\n\n // usb cable\n var cable = new Element('div', {html: '', class: 'cable'});\n cable.inject(this.element);\n\t\t\t\n\t\t\t//Platform specific classes\n\t\t\tif(appbuilder.app.isPhoneGap) {\n\t\t\t\tthis.element.addClass('phonegap');\n\t\t\t}\n\t\t\tif(Browser.Platform.ios) {\n\t\t\t\tthis.element.addClass('ios');\n if (Browser.Platform.version >= 7) {\n this.element.addClass('ios7');\n }\n //Fix for ios7 ipad landscape height bug\n if (Browser.Platform.ipadIos7 && this.options.fullscreen && !window.navigator.standalone) {\n document.id(document.body).addClass('ios7-ipad-fix');\n }\n\t\t\t}\n\t\t\t\t\n\t\t\tif(Browser.Platform.android) {\n\t\t\t\tthis.element.addClass('android-os');\n\t\t\t}\n\n\t\t\tif(Browser.Platform.blackberry) {\n\t\t\t\tthis.element.addClass('blackberry-os');\n\t\t\t\tif(Browser.Platform.playBook) {\n\t\t\t\t\tthis.element.addClass('blackberry-os-playbook');\n\t\t\t\t}\n\t\t\t\telse if(Browser.Platform.smartphone) {\n\t\t\t\t\tthis.element.addClass('blackberry-os-smartphone');\n\t\t\t\t}\n\t\t\t\telse if(Browser.Platform.BB10) {\n\t\t\t\t\tthis.element.addClass('blackberry-os-bb10');\n\t\t\t\t}\n\t\t\t\t//Always used fixed position on bb= 7) {\n\t\t\t\t\t\t\t\tif(window.innerHeight > window.innerWidth){\n\t\t\t\t\t\t\t\t\tthis.element.setStyle('height', window.getSize().y);\n\t\t\t\t\t\t\t\t\tthis.element.removeClass('auto-height');\n\t\t\t\t\t\t\t\t}\n else {\n\t\t\t\t\t\t\t\t\tthis.element.removeProperty('height');\n\t\t\t\t\t\t\t\t\tthis.element.addClass('auto-height');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n else {\n this.element.setStyle('height', window.getSize().y + 60);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}.bind(this);\n\t\t\t\t\t\tthis.addEvent('resize', resize);\n\t\t\t\t\t\tresize();\n\t\t\t\t\t}\n\n\t\t\t\t\t//Stops the app from scrolling with touches\n\t\t\t\t\tvar resetPos = (function() {\n //Allow scrolling ios7 landscape\n if(!((Browser.Platform.ipodIos7 || Browser.Platform.iphoneIos7) && window.innerHeight < window.innerWidth && !window.navigator.standalone)) {\n window.scrollTo(0, 1);\n }\n });\n resetPos.delay(100);\n this.element.addEvent('touchstart', resetPos);\n\n this.element.addEvent('touchmove', function (e) {\n //Allow scrolling ios7 landscape\n if(!((Browser.Platform.ipodIos7 || Browser.Platform.iphoneIos7) && window.innerHeight < window.innerWidth && !window.navigator.standalone)) {\n e.preventDefault();\n }\n });\n\t\t\t\t}\n\t\t\t\t//relay to internal resize event\n\t\t\t\twindow.addEvent('resize', function(e) {\n\t\t\t\t\tthis.fireEvent('resize', [e]);\n\t\t\t\t}.bind(this));\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif(this.options.background == 'half') {\n\t\t\t\t\tthis.element.addClass('background half');\n\t\t\t\t}\n\t\t\t\telse if(this.options.background === true || this.options.background == 'full') {\n\t\t\t\t\tthis.element.addClass('background full');\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tthis.setStyle(this.options.style, true);\n\t\t\tthis.setHorizontal(this.options.horizontal, true);\n\t\t\tthis.setRealSize(this.options.realSize, true);\n\t\t\t\n\t\t\tvar inner = appbuilder.app.makeElement('phone-inner').inject(this.element);\n\t\t\t\n\t\t\tthis.status = appbuilder.app.makeElement('status-bar', {\n\t\t\t\t'html':new Date().format('%H:%M')\n\t\t\t}).inject(inner);\n\t\t\t\n\t\t\t(function() {\n\t\t\t\tthis.status.set('html', new Date().format('%H:%M'));\n\t\t\t}).periodical(60000, this);\n\t\t\t\n\t\t\tif(this.options.statusbar) {\n\t\t\t\tthis.element.addClass('status');\n\t\t\t}\n\t\t\t\n\t\t\tdocument.id(this.loader).inject(inner);\n\t\t\t\n\t\t\tdocument.id(this.navigator).inject(inner);\n\t\t\t\n\t\t\tif(this.options.homeButton) {\n\t\t\t\tappbuilder.app.makeElement('home-button', {\n\t\t\t\t\t'data-linktype': 'app',\n\t\t\t\t\t'data-href': 1,\n\t\t\t\t\t'data-no-glow': 'no-glow'\n\t\t\t\t}).inject(this.element);\n\t\t\t}\n\t\t\t\n\t\t\t//Start the app\n\t\t\tif(!this.history.checkHistory() && this.options.app != undefined) {\n\t\t\t\tthis.navigator.linktypes.app.apply(this.navigator, [this.options.app, true, this.options.screen ? function() {\n\t\t\t\t\tthis.navigator.linktypes.screen.apply(this.navigator, [this.options.screen, false]);\n\t\t\t\t}.bind(this) : null]);\n\t\t\t}\n\t\t}\n\t\treturn this.element;\n\t},\n\t\n\tsetStyle: function(style, noresize) {\n\t\tappbuilder.app.debug('phone', 'style', style);\n\t\tvar styles = ['iphone', 'iphone5', 'iphone5s', 'ipad', 'ipadair', 'android', 'androidsm', 'blackberry', 'blackberry10', 'playbook', 'nexus7', 'auto', 'ios7style'],\n\t\t\tm, v;\n\t\tif(styles.indexOf(style) != -1) {\n\t\t\tthis.options.style = style;\n\t\t\tif(style == 'auto') {\n\t\t\t\tif(Browser.Platform.android) {\n\t\t\t\t\tif(Browser.version < 4) {\n\t\t\t\t\t\tstyle = 'androidsm';\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tstyle = 'android';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if(Browser.Platform.blackberry) {\n\t\t\t\t\tif(Browser.Platform.playBook || Browser.Platform.BB10 || Browser.version >= 10) {\n\t\t\t\t\t\tstyle = 'blackberry10';\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tstyle = 'blackberry';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t//Default style on unknown platform\n if(Browser.version < 7) {\n style = 'iphone';\n }\n else {\n style = 'iphone5s'\n }\n\t\t\t\t}\n\t\t\t}\n if (!this.options.currentIOS7) {\n if (style == 'iphone5s') {\n style = 'iphone5';\n }\n if (style == 'ipadair') {\n style = 'ipad';\n }\n if (style == 'ios7style') {\n style = 'iphone';\n }\n }\n\t\t\tif(this.element) {\n\t\t\t\tstyles.each(function(style) {\n\t\t\t\t\tthis.element.removeClass(style);\n\t\t\t\t}, this);\n\t\t\t\tthis.element.addClass(style);\n\t\t\t\tif(style == 'nexus7') {\n\t\t\t\t\t//nexus7 style is based on android\n\t\t\t\t\tthis.element.addClass('android');\n\t\t\t\t}\n\t\t\t\telse if(style == 'playbook') {\n\t\t\t\t\t//playbook style is based on bb10\n\t\t\t\t\tthis.element.addClass('blackberry10');\n\t\t\t\t}\n else if(style == 'iphone5s') {\n //5s style is based on 5\n this.element.addClass('ios7style iphone5');\n }\n else if(style == 'ipadair') {\n //ipadair style is based on ipad\n this.element.addClass('ios7style ipad');\n }\n\t\t\t\tif(this.options.background) {\n\t\t\t\t\tif(this.options.background === 'half') {\n\t\t\t\t\t\tthis.element.addClass('half');\n\t\t\t\t\t}\n\t\t\t\t\tthis.element.addClass('background');\n\t\t\t\t}\n\n if (this.options.currentMasking && (style == 'ios7style' || style == 'iphone5s' || style == 'ipadair')) {\n this.navigator.applyTabMask();\n }\n else {\n this.navigator.removeTabMask();\n }\n\t\t\t\t!noresize && this.fireEvent('resize');\n\t\t\t}\n\t\t}\n\t},\n\t\n\tsetHorizontal: function(hor, noresize) {\n\t\tthis.options.horizontal = hor;\n\t\tif(this.element) {\n\t\t\tif(hor) {\n\t\t\t\tthis.element.addClass('horizontal');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.element.removeClass('horizontal');\n\t\t\t}\n\t\t\t!noresize && this.fireEvent('resize');\n\t\t}\n\t},\n\t\n\tsetRealSize: function(realSize, noresize) {\n\t\tthis.options.realSize = realSize;\n\t\tif(this.element) {\n\t\t\tif(realSize) {\n\t\t\t\tthis.element.addClass('realsize');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.element.removeClass('realsize');\n\t\t\t}\n\t\t\t!noresize && this.fireEvent('resize');\n\t\t}\n\t},\n\t\n\tupdateApp: function(id, cb, appUrl) {\n\t\tif(this.options.update && this.storage && appbuilder.app.online()) {\n\t\t\tappbuilder.app.debug('phone', 'update', 'starting');\n\t\t\tthis.loader.showLoading();\n\t\t\tthis.temporaryStorage.clear();\n\t\t\tthis.getLastUpdate(id, function(update) {\n\t\t\t\tvar loaded = function(data) {\n\t\t\t\t\tif(data) {\n\t\t\t\t\t\tappbuilder.app.debug('phone', 'update', 'updating');\n\t\t\t\t\t\tObject.each(data, function(data, type) {\n\t\t\t\t\t\t\tif(type == 'time') {\n\t\t\t\t\t\t\t\tthis.setLastUpdate(id, data);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tObject.each(data, function(obj, fetchId) {\n\t\t\t\t\t\t\t\t\tthis.loaded(obj);\n\t\t\t\t\t\t\t\t}, this);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this);\n\t\t\t\t\t\tthis.storage.flush();\n\t\t\t\t\t\tthis.loader.hideLoading();\n\t\t\t\t\t\tcb(true);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tappbuilder.app.debug('phone', 'update', 'nothing');\n\t\t\t\t\t\tthis.loader.hideLoading();\n\t\t\t\t\t\tcb(false);\n\t\t\t\t\t}\n\t\t\t\t}.bind(this),\n\t\t\t\terror = function(msg) {\n\t\t\t\t\tappbuilder.app.debug('phone', 'update', 'error', msg);\n\t\t\t\t\tthis.loader.hideLoading();\n\t\t\t\t\tcb(false);\n\t\t\t\t}.bind(this);\n\t\t\t\tthis.loader.request('update', id, update, loaded, error, null, this.options.request.timeoutUpdate);\n\t\t\t}.bind(this));\n\t\t}\n\t\telse {\n\t\t\tappbuilder.app.debug('phone', 'update', 'disabled');\n\t\t\tcb(false);\n\t\t}\n\t},\n\t\n\tgetLastUpdate: function(id, cb) {\n\t\tif(this.storage) {\n\t\t\tthis.storage.fetch('update', id, function(update) {\n\t\t\t\tif(!update) {\n\t\t\t\t\tthis.storage.store('update', id, {\n\t\t\t\t\t\tupdate: this.options.published\n\t\t\t\t\t});\n\t\t\t\t\tcb(this.options.published);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcb(update.update);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t}\n\t\telse {\n\t\t\tcb(this.options.published);\n\t\t}\n\t},\n\t\n\tsetLastUpdate: function(id, time) {\n\t\tif(this.storage) {\n\t\t\tthis.storage.store('update', id, {\n\t\t\t\tupdate: time\n\t\t\t});\n\t\t}\n\t},\n\t\n\tgetUniqueId: function() {\n\t\tif(this.uniqueId) {\n\t\t\treturn this.uniqueId;\n\t\t}\n\t\tif(appbuilder.app.isPhoneGap) {\n\t\t\treturn device.uuid;\n\t\t}\n\t\tif(this.storage) {\n\t\t\tthis.uniqueId = this.storage.fetch('device', 'unique');\n\t\t\tif(this.uniqueId) {\n\t\t\t\treturn this.uniqueId;\n\t\t\t}\n\t\t}\n\t\tvar d = new Date();\n\t\tthis.uniqueId = (d++).toString(36) + (new Date().getMilliseconds().toString(36));\n\t\tif(this.storage) {\n\t\t\tthis.storage.store('device', 'unique', this.uniqueId);\n\t\t}\n\t\treturn this.uniqueId;\n\t},\n\t\n\tfetch: function(type, id, cb, fetchId, fetchUrl, direct) {\n\t\tcb = this.loadingcb(cb);\n\t\t\n\t\tvar obj = this.temporaryStorage.fetch(type, id);\n\t\tif(obj) {\n\t\t\tcb(obj);\n\t\t\treturn;\n\t\t}\n\t\tif(this.storage) {\n\t\t\tobj = this.storage.fetch(type, id);\n\t\t\tif(obj) {\n\t\t\t\tthis.updateSingle(type, id, obj, cb, fetchId);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif(this.options.files && !fetchUrl) {\n\t\t\tappbuilder.app.FileLoader.fetch(type, id, function(obj) {\n\t\t\t\tif(obj) {\n\t\t\t\t\tthis.updateSingle(type, id, obj, cb, fetchId);\n\t\t\t\t}\n\t\t\t\telse if(appbuilder.app.online()) {\n\t\t\t\t\tthis.loader.fetch(type, id, cb, null, fetchId);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcb(false);\n\t\t\t\t}\n\t\t\t}.bind(this), fetchId, this);\n\t\t}\n\t\telse if(fetchUrl && appbuilder.app.online()) {\n\t\t\tthis.fetchLive(direct ? 'direct' : 'remote', fetchUrl, function(obj, fetchedObj) {\n\t\t\t\tif(fetchedObj && fetchedObj[type]) {\n\t\t\t\t\tcb(fetchedObj[type][id]);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcb(false);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t}\n\t\telse if(appbuilder.app.online()) {\n\t\t\tthis.loader.fetch(type, id, cb, null, fetchId);\n\t\t}\n\t\telse {\n\t\t\tcb(false);\n\t\t}\n\t},\n\t\n\tfetchLive: function(type, id, cb, postVars, alwaysLive) {\n\t\tif(!alwaysLive) {\n\t\t\tvar obj = this.temporaryStorage.fetch(type == 'direct' ? 'remote' : type, id);\n\t\t\tif(obj) {\n\t\t\t\tcb(obj);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(this.storage) {\n\t\t\t\tobj = this.storage.fetch(type == 'direct' ? 'remote' : type, id);\n\t\t\t\tif(obj) {\n\t\t\t\t\tcb(obj);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(appbuilder.app.online()) {\n\t\t\tthis.loader.fetch(type, id, function(obj, fetchedObj) {\n\t\t\t\tif(obj) {\n\t\t\t\t\tcb(obj, fetchedObj);\n\t\t\t\t}\n\t\t\t\telse if(!alwaysLive && this.options.files) {\n\t\t\t\t\tappbuilder.app.FileLoader.fetch(type == 'direct' ? 'remote' : type, id, cb, null, this);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcb(false);\n\t\t\t\t}\n\t\t\t}.bind(this), false, false, postVars);\n\t\t\treturn;\n\t\t}\n\t\telse if(!alwaysLive && this.options.files) {\n\t\t\tappbuilder.app.FileLoader.fetch(type == 'direct' ? 'remote' : type, id, cb, null, this);\n\t\t}\n\t\telse {\n\t\t\tcb(false);\n\t\t}\n\t},\n\t\n\tloadingcb: function(cb) {\n\t\tthis.loader.showLoading();\n\t\treturn function() {\n\t\t\tthis.loader.hideLoading();\n\t\t\tcb.apply(this, arguments);\n\t\t}.bind(this);\n\t},\n\t\n\tupdateSingle: function(type, id, obj, cb, fetchId) {\n\t\tif(appbuilder.app.online() && obj.updated && this.options.updateSingle) {\n\t\t\tappbuilder.app.debug('phone', 'updateSingle', 'starting');\n\t\t\tthis.loader.fetch(type, id, function(updatedObj) {\n\t\t\t\tif(!updatedObj) {\n\t\t\t\t\tappbuilder.app.debug('phone', 'updateSingle', 'nothing');\n\t\t\t\t\tthis.temporaryStorage.store(type, id, obj);\n\t\t\t\t\tcb(obj);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tappbuilder.app.debug('phone', 'updateSingle', 'updated');\n\t\t\t\t\tcb(updatedObj);\n\t\t\t\t}\n\t\t\t}.bind(this), obj.updated, fetchId);\n\t\t}\n\t\telse {\n\t\t\tappbuilder.app.debug('phone', 'updateSingle', 'disabled');\n\t\t\tthis.temporaryStorage.store(type, id, obj);\n\t\t\tcb(obj);\n\t\t}\n\t},\n\t\n\t/**\n\t * @param {refreshes} bool If true then refresh the current app/screen\n\t * @param {bool} files If true then never store in long term storage\n\t */\n\tloaded: function(obj, refreshes, files) {\n\t\tthis.temporaryStorage.storeObj(obj);\n\t\tif(this.storage && !files) {\n\t\t\tthis.storage.storeObj(obj);\n\t\t}\n\t\tif(refreshes) {\n\t\t\tthis.flushStorage();\n\t\t\tif(obj.app && obj.app[this.history.currentApp]) {\n\t\t\t\tthis.history.refresh();\n\t\t\t}\n\t\t\telse if(obj.screen && obj.screen[this.history.currentScreen()]) {\n\t\t\t\tthis.history.refreshScreen();\n\t\t\t}\n\t\t}\n\t},\n\t\n\tflushStorage: function() {\n\t\tappbuilder.app.debug('phone', 'flush');\n\t\tthis.temporaryStorage.flush();\n\t\tif(this.storage) {\n\t\t\tthis.storage.flush();\n\t\t}\n\t},\n\t\n\tclearStorage: function() {\n\t\tappbuilder.app.debug('phone', 'clear');\n\t\tthis.temporaryStorage.clear();\n\t\tif(this.storage) {\n\t\t\tthis.storage.clear();\n\t\t}\n\t}\n}, 'Phone');\n","appbuilder = window.appbuilder || {};\nappbuilder.app = appbuilder.app || {};\nappbuilder.app.Navigator = new Class({\n initialize: function (phone) {\n appbuilder.app.debug('navigator', 'initialize');\n this.phone = phone;\n this.afterSearch = false;\n this.appObj = false;\n this.searchword = null;\n this.jsAPI = new appbuilder.app.JSAPI(phone);\n this.events = new appbuilder.app.Events(this.jsAPI);\n },\n toElement: function () {\n if (!this.element) {\n this.element = appbuilder.app.makeElement('phone-navigator');\n SpinningWheel.container = this.element;\n appbuilder.app.link = function (type, id) {\n if (type === 'app') {\n this.linktypes.app.call(this, id, true, null, null, true);\n }\n else {\n this.linktypes[type].call(this, id);\n }\n }.bind(this);\n this.bind(this.phone.element);\n }\n return this.element;\n },\n bind: function (el) {\n appbuilder.app.debug('navigator', 'bind');\n el.addEvent((window.location.host === '' ? 'ontouchend' in document ? 'touchend' : 'click' : 'click') + ':relay([data-linktype])', this.click.bind(this));\n el.addEvent('click:relay(a[href])', this.linkCatcher.bind(this));\n },\n enabled: true,\n linkCatcher: function (e, t) {\n if (this.enabled !== true && Date.now() - this.enabled < 5000) {\n return;\n }\n t = document.id(t);\n if (!t.get('data-ignore')) {\n e.stop();\n appbuilder.app.debug('navigator', 'linkCatcher');\n this.linktypes.web.apply(this, [t.get('href'), true]);\n }\n },\n click: function (e, t) {\n if (this.enabled !== true && Date.now() - this.enabled < 5000) {\n return;\n }\n if (e) {\n e.stop();\n }\n\n this.enabled = Date.now();\n var linktype = t.get('data-linktype');\n var animate = true;\n\n this.moveAdsInToBody();\n\n if (t.hasClass('tab')) {\n this.element.getElements('.tab.selected').removeClass('selected');\n t.addClass('selected');\n if (this.tabBar) {\n this.tabBar.removeClass('bbShow');\n }\n\n animate = false;\n this.phone.history.clearHistory();\n this.phone.fireEvent('tab', [t.get('id').substr(3), t]);\n }\n else if (t.hasClass('back')) {\n if (this.tabBar) {\n this.tabBar.removeClass('bbShow');\n }\n t.addClass('glow-back');\n }\n else {\n var items = t.getParent('.items');\n if (items) {\n var scroll = items.retrieve('scroll');\n if (scroll) {\n if (scroll.isScrolling()) {\n return;\n }\n }\n }\n if (linktype == 'refresh') {\n t.addClass('glow-refresh');\n }\n else if (!t.get('data-no-glow')) {\n appbuilder.app.makeElement('glow').inject(t);\n }\n }\n var highlight = t.get('data-highlight');\n if (highlight) {\n this.afterSearch = true;\n this.searchword = highlight;\n }\n //Delay so the glow becomes visable\n if (this.linktypes[linktype]) {\n appbuilder.app.debug('navigator', 'click', 'delay', '#' + t.get('id') + ' ' + t.get('class'));\n\n var callEventHandler = function () {\n appbuilder.app.debug('navigator', 'click', linktype);\n this.linktypes[linktype].apply(this, [t, animate]);\n }.bind(this);\n\n if (linktype === 'web' || linktype === 'sound') {\n callEventHandler();\n } else {\n callEventHandler.delay(1);\n }\n }\n else {\n appbuilder.app.debug('navigator', 'click', 'unknown', linktype, '#' + t.get('id') + ' ' + t.get('class'));\n }\n },\n postLink: function () {\n appbuilder.app.debug('navigator', 'postLink');\n this.element.getElements('.glow').destroy();\n this.element.getElements('.glow-back').removeClass('glow-back');\n this.element.getElements('.glow-refresh').removeClass('glow-refresh');\n this.enabled = true;\n this.phone.flushStorage();\n },\n linktypes: {\n app: function (t, animate, after, appUrl, force) {\n var href = typeOf(t) == 'element' ? t.get('data-href') : t;\n appbuilder.app.debug('navigator', 'link', 'app', href);\n if (href == '1') {\n // when editinng where is disabled home button\n if (!force && document.id('disable-home-button')) {\n return;\n }\n }\n appbuilder.app.sound.stopAll();\n this.phone.history.currentApp = href;\n this.phone.history.currentAppUrl = appUrl;\n this.phone.history.clearHistory(true);\n this.phone.updateApp(href, function () {\n this.phone.fetch('app', href, function (html) {\n this.showApp(html, animate, after, href, false);\n }.bind(this), null, appUrl);\n }.bind(this), appUrl);\n },\n tab: function (t) {\n var href = typeOf(t) == 'element' ? t.get('data-href') : t;\n appbuilder.app.debug('navigator', 'link', 'tab', href);\n var tab = this.app.getElement('#tab' + href);\n if (tab) {\n this.enabled = true;\n this.click(null, tab);\n }\n else {\n this.postLink();\n }\n this.phone.history.currentTabId = href;\n\n },\n login: function (t, animate, back, historyChange, fetchId, fetchUrl) {\n var href, element;\n if (typeOf(t) == 'element') {\n href = t.get('data-href');\n element = t;\n }\n else {\n href = t;\n }\n appbuilder.app.debug('navigator', 'link', 'login', href);\n this.checkVariables(href, function (href) {\n var next = window.localStorage['loginto'];\n var error = function (msg) {\n this.enabled = true;\n this.postLink();\n appbuilder.app.makeConfirm(msg, null, null, null, false).inject(document.id(this));\n }.bind(this);\n new Request.JSON({\n url: href,\n data: {\n appid: this.phone.history.currentApp,\n screenid: next\n },\n method: this.phone.options.request.method,\n noCache: true,\n timeout: this.phone.options.request.timeout,\n onSuccess: function (data) {\n if (data.ok) {\n window.localStorage['login-' + next] = (new Date().getTime() / 1000) + data.session_time;\n this.phone.fetch('screen', next, function (html) {\n this.showScreen(html, next, animate, back, historyChange, null, element);\n }.bind(this));\n }\n else {\n error(data.error);\n }\n this.postLink();\n }.bind(this),\n onFailure: function () {\n error('Connection Failure');\n },\n onTimeout: function () {\n error('Timeout');\n }\n }).send();\n }.bind(this), true);\n },\n register: function () {\n this.linktypes.login.apply(this, arguments);\n },\n screen: function (t, animate, back, historyChange, fetchId, fetchUrl, direct) {\n animate = animate || animate == undefined || false;\n var href, element;\n if (typeOf(t) == 'element') {\n href = t.get('data-href');\n element = t.get('data-element');\n if (!fetchUrl && t.get('data-appshed') != 'appshed') {\n var screen = t.getParent('.screen');\n if (screen) {\n fetchUrl = screen.get('data-fetch-url');\n direct = screen.get('data-fetch-direct') == 'direct';\n }\n }\n }\n else {\n href = t;\n }\n appbuilder.app.debug('navigator', 'link', 'screen', href);\n this.phone.fetch('screen', href, function (html) {\n this.showScreen(html, href, animate, back, historyChange, null, element);\n }.bind(this), fetchId, fetchUrl, direct);\n this.phone.history.currentScreenId = href;\n\n },\n back: function (t) {\n var href = typeOf(t) == 'element' ? t.get('data-href') : t;\n appbuilder.app.debug('navigator', 'link', 'back', href);\n this.phone.history.popHistory(null, href);\n },\n web: function (t, typeX) {\n var type = typeOf(t) == 'element' ? t.get('data-weblinktype') : typeX;\n var href = typeOf(t) == 'element' ? t.get('data-href') : t;\n\n if ((type == 'iframe' || type == 'normal' ) && href.indexOf('http://') === 0 && window.location.href.indexOf('https://') === 0) {\n type = 'external';\n }\n\n if (this.weblinks.blackberry.apply(this, arguments)) {\n //ok\n }\n else if (type == 'external') {\n this.weblinks.confirm.apply(this, arguments);\n }\n else if (type == 'iframe') {\n this.weblinks.iframe.apply(this, arguments);\n }\n else if (type == 'confirm') {\n this.weblinks.confirm.apply(this, arguments);\n }\n else {\n if (appbuilder.app.isPhoneGap) {\n this.weblinks.inappbrowser.apply(this, arguments)\n }\n else if (window.navigator.standalone) {\n this.weblinks.confirm.apply(this, arguments);\n }\n else if (this.phone.options.fullscreen) {\n this.weblinks.confirm.apply(this, arguments);\n }\n else {\n this.weblinks.iframe.apply(this, arguments);\n }\n }\n },\n file: function (t, animate, back, historyChange) {\n var href = typeOf(t) == 'element' ? t.get('data-href') : t;\n appbuilder.app.debug('navigator', 'link', 'file', href);\n var slash = href.lastIndexOf('/');\n if (slash >= 0)\n slash++;\n else\n slash = 0;\n var dot = href.lastIndexOf('.'),\n filename = typeOf(t) == 'element' ? t.get('data-filename') : href.substring(slash, dot),\n type = dot >= 0 ? href.substr(dot + 1).toUpperCase() : '';\n\n if (href.indexOf('http') !== 0) {\n var strPath = String(window.location);\n var path = strPath.substr(0, strPath.lastIndexOf(\"/\"));\n href = path + '/' + href;\n }\n if (type == 'PDF' && appbuilder.app.isPhoneGap) {\n if (Browser.Platform.android) {\n if (typeof window.openPDF == 'function') {\n window.openPDF(href);\n } else {\n console.log('Missing android pdf plugin');\n }\n } else {\n console.log('you have installed \"cordova plugin add org.apache.cordova.inappbrowser\" ? ');\n window.open(href, '_blank', 'location=yes');\n }\n this.postLink();\n }\n else if (type == 'PDF' && (window.navigator.standalone || appbuilder.app.isPhoneGap)) {\n this.weblinks.confirm.apply(this, [href])\n }\n else {\n this.showScreen(appbuilder.app.createScreen('screen' + href, 'file', filename, '', true, false, null, null, 'file', true), href, animate, back, historyChange, function (screen) {\n var items = screen.getElement('.items .items-inner');\n if (type == 'PDF' && (this.pdfobject = new PDFObject({\n url: href,\n pdfOpenParams: {\n toolbar: 0,\n statusbar: 0,\n messages: 0,\n navpanes: 0,\n view: \"FitV\"\n }\n }).embed(items))) {\n }\n else if (type == 'PDF') {\n this.phone.history.popHistory();\n if (!window.open(href, '_blank')) {\n window.location = href;\n }\n }\n else {\n items.set('html', '
    ' + filename + '
    ' +\n 'Download'\n );\n }\n\n if (type == 'MP4' || type == 'MOV' || type == 'AVI' || type == 'M4V') {\n items.set('html', items.get('html') + '');\n } else if (type == 'MP3') {\n items.set('html', items.get('html') + '');\n }\n }.bind(this));\n }\n },\n sound: function (t) {\n var href = typeOf(t) == 'element' ? t.get('data-href') : t;\n appbuilder.app.debug('navigator', 'link', 'sound', href);\n var dot = href.lastIndexOf('.'),\n type = dot >= 0 ? href.substr(dot + 1).toUpperCase() : '';\n if (appbuilder.app.sound.support && appbuilder.app.sound.support[type.toLowerCase()]) {\n appbuilder.app.sound.play(href);\n this.postLink();\n }\n },\n youtube: function (t, animate, back, historyChange) {\n var href = typeOf(t) == 'element' ? t.get('data-href') : t;\n appbuilder.app.debug('navigator', 'link', 'youtube', href);\n\n if (this.weblinks.blackberry.apply(this, arguments)) {\n //if this is blackberry device\n } else if (Browser.Platform.android) {\n appbuilder.app.makeConfirm('Video will open as external link', href, null, 'OK').inject(document.id(this));\n this.postLink();\n }\n else {\n var m = href.match(/^(?:https?:\\/\\/(?:www\\.)?youtu\\.be\\/|https?:\\/\\/(?:www\\.)?youtube\\.com\\/watch\\?.*?v=|https?:\\/\\/(?:www\\.)?youtube\\.com\\/v\\/)(.+?)(?:&|\\?|$)/i);\n if (m && m[1]) {\n this.weblinks.iframe.apply(this, ['https://youtube.com/embed/' + m[1], animate, back, historyChange, 'youtube', href, this.findTitle(t, 'Youtube'), 'youtube']);\n //var content = '';\n //this.showScreen(appbuilder.app.createScreen('screenyoutube' + m[1], 'youtube', this.findTitle(t, 'Youtube'), content, true, false), 'youtube' + m[1], false, back, historyChange);\n }\n }\n },\n vimeo: function (t, animate, back, historyChange) {\n var href = typeOf(t) == 'element' ? t.get('data-href') : t;\n appbuilder.app.debug('navigator', 'link', 'vimeo', href);\n var m = href.match(/^https?:\\/\\/(?:www\\.)?vimeo\\.com\\/(?:couchmode\\/)?(?:channels\\/.+?(?:\\/|#))?(?:.+?\\/)?(.+?)(?:&|\\?|$)/i);\n\n if (m && m[1]) {\n\n var url = 'https://player.vimeo.com/video/' + m[1] + '?title=0&byline=0&portrait=0';\n if (this.weblinks.blackberry.apply(this, arguments)) {\n //ok\n } else {\n this.weblinks.iframe.apply(this, [url, animate, back, historyChange, 'vimeo', href, this.findTitle(t, 'Vimeo'), 'vimeo']);\n }\n }\n },\n twitter: function (t, animate, back, historyChange) {\n var href = typeOf(t) == 'element' ? t.get('data-href') : t,\n screenname = href.replace('@', '');\n appbuilder.app.debug('navigator', 'link', 'twitter', href);\n this.showScreen(appbuilder.app.createScreen('screen' + href, 'twitter', /*'@' + href*/' ', '', true, false, null, null, 'list twitter'), href, animate, back, historyChange, function (screen) {\n var items = screen.getElement('.items');\n (function () {\n var itemsInner = new Element('div',{'class':'items-inner'}).inject(items);\n new Element('a',{'class':'twitter-timeline','href':\"https://twitter.com/\"+screenname+\"?ref_src=twsrc%5Etfw\"}).inject(itemsInner);\n appbuilder.app.loadScript('https://platform.twitter.com/widgets.js', function () {\n itemsInner.setStyle('padding-top',0);\n console.log('script loaded');\n // (function () {\n if(window.twttr){\n twttr.widgets.load();\n }\n items.setStyle('overflow','scroll');\n// }).delay(500);\n this.postLink();\n }.bind(this), function () {\n appbuilder.app.alert('Twitter is currently unavailable', this);\n this.postLink();\n }.bind(this));\n console.log('screen loaded');\n }.bind(this)).delay(500);\n }.bind(this));\n },\n facebook: function (t, animate, back, historyChange) {\n var href = typeOf(t) == 'element' ? t.get('data-href') : t;\n appbuilder.app.debug('navigator', 'link', 'facebook', href);\n\n var face = 'https://www.facebook.com/plugins/likebox.php?href=' + encodeURIComponent(href) + '&width=100%&height=100%&colorscheme=light&show_faces=true&border_color=black&stream=true&header=false';//&appId=156047001092869';\n if (this.weblinks.blackberry.apply(face)) {\n //ok\n } else {\n this.showScreen(appbuilder.app.createScreen('screen' + href, 'facebook', /*href.substring(href.lastIndexOf('/') + 1)*/' ', '', true, false, null, null, 'list facebook'), href, animate, back, historyChange, function (screen) {\n var i = screen.getElement('.items'), size = i.getSize(), width = size.x, height = size.y;\n var face = 'https://www.facebook.com/plugins/likebox.php?href=' + encodeURIComponent(href) + '&width=' + width + '&height=' + height + '&colorscheme=light&show_faces=true&border_color=black&stream=true&header=false';//&appId=156047001092869';\n //var content = '';\n var content = '';\n i.set('html', content);\n });\n }\n },\n remote: function (t, animate, back, historyChange) {\n var href, direct;\n if (typeOf(t) == 'element') {\n href = t.get('data-href');\n direct = !!t.get('data-direct');\n }\n else {\n href = t;\n }\n appbuilder.app.debug('navigator', 'link', 'remote', href);\n this.phone.loader.showLoading();\n this.jsAPI.showRemoteScreen(href, direct, animate, back, historyChange);\n },\n refresh: function (t) {\n var screen;\n if (typeOf(t) == 'element' && (screen = t.getParent('.screen'))) {\n var fetchUrl = screen.get('data-fetch-url'),\n id = screen.get('id').replace('screen', '');\n this.phone.loader.showLoading();\n this.phone.fetchLive(screen.get('data-fetch-direct') || 'remote', fetchUrl, function (mainScreenId, fetchObj) {\n this.phone.loader.hideLoading();\n if (fetchObj && fetchObj.screen[id]) {\n this.showScreen(fetchObj.screen[id], id, false, false, true);\n }\n else {\n appbuilder.app.makeConfirm('This screen is currently unavailable', null, null, null, false).inject(document.id(this));\n this.postLink();\n }\n }.bind(this), null, true);\n return;\n }\n this.postLink();\n },\n jscode: function (t) {\n var href = typeOf(t) == 'element' ? t.get('data-href') : t;\n appbuilder.app.debug('navigator', 'link', 'jscode', href);\n if (this.screenObj && this.screenObj.javascripts[href]) {\n this.jsAPI.js(this.screenObj.javascripts[href], this.app);\n }\n this.postLink();\n },\n bbm: function () {\n appbuilder.app.debug('navigator', 'link', 'bbm');\n appbuilder.app.BBM.shareApp(this.postLink.bind(this), this);\n },\n iot: function (t, value) {\n var href = typeOf(t) == 'element' ? t.get('data-href') : t;\n var value = typeOf(t) == 'element' ? t.get('data-value') : value;\n this.jsAPI.iot(href, value);\n this.postLink();\n }\n },\n weblinks: {\n iframe: function (t, animate, back, historyChange, type, typeurl, title, cssClass) {\n var href = typeOf(t) == 'element' ? t.get('data-href') : t;\n appbuilder.app.debug('navigator', 'web', 'iframe', href);\n this.checkVariables(href, function (href) {\n var content = '';\n this.showScreen(appbuilder.app.createScreen('screen' + (typeurl || href), type || 'web', title || this.findTitle(t, 'Website'), content, true, false, null, null, 'web ' + cssClass), typeurl || href, animate, back, historyChange);\n }.bind(this));\n },\n blackberry: function (t) {\n var href = typeOf(t) == 'element' ? t.get('data-href') : t;\n\n if (window.blackberry && window.blackberry.invoke && Browser.Platform.blackberry && (Browser.version < 7.2)) {\n this.checkVariables(href, function (href) {\n blackberry.invoke.invoke(\n blackberry.invoke.APP_BROWSER,\n new blackberry.invoke.BrowserArguments(href)\n );\n this.postLink();\n }.bind(this));\n return true;\n }\n else {\n return false;\n }\n\n\n },\n external: function (t) {\n var href = typeOf(t) == 'element' ? t.get('data-href') : t;\n appbuilder.app.debug('navigator', 'web', 'external', href);\n this.checkVariables(href, function (href) {\n this.postLink();\n if (href.test(/^mailto/)) {\n href = href.replace(/\\+/g, '%20');\n }\n if (appbuilder.app.isPhoneGap) {\n window.open(href, '_system');\n }\n else {\n if (href.test(/^mailto/)) {\n window.location = href;\n }\n else {\n\n var a = document.createElement('a');\n a.setAttribute(\"href\", href);\n a.setAttribute(\"target\", \"_blank\");\n\n var dispatch = document.createEvent(\"HTMLEvents\");\n dispatch.initEvent(\"click\", true, true);\n a.dispatchEvent(dispatch);\n\n ///window.open(href, '_blank');\n }\n }\n }.bind(this));\n },\n inappbrowser: function (t) {\n var href = typeOf(t) == 'element' ? t.get('data-href') : t;\n appbuilder.app.debug('navigator', 'web', 'inappbrowser', href);\n if (Browser.Platform.android) {\n if (window.AndroidPdfPlugin) {\n if (href.lastIndexOf('.pdf') > 0) {\n if (href.indexOf('http://') === 0 || href.indexOf('https://') === 0) {\n AndroidPdfPlugin.openOnlinePDF(href);\n } else {\n AndroidPdfPlugin.openPDF(href);\n }\n return;\n }\n } else {\n console.log('need install AndroidPdfPlugin to show pdf files on android platform');\n }\n }\n\n this.checkVariables(href, function (href) {\n this.postLink();\n window.open(href, '_blank');\n }.bind(this));\n },\n confirm: function (t) {\n var href, mess, okbtn;\n appbuilder.app.debug('navigator', 'web', 'confirm');\n if (typeOf(t) == 'element') {\n href = t.get('data-href');\n mess = t.get('data-confirm-message') || 'This link will open in ' + (Browser.Platform.ios ? 'Safari' : 'your Browser');\n okbtn = t.get('data-okbtn') || 'OK';\n }\n else if (typeOf(t) == 'object') {\n href = t.href;\n mess = t.message || 'This link will open in ' + (Browser.Platform.ios ? 'Safari' : 'your Browser');\n okbtn = t.okbtn || 'OK';\n }\n else {\n href = t;\n mess = 'This link will open in ' + (Browser.Platform.ios ? 'Safari' : 'your Browser');\n }\n this.checkVariables(href, function (href) {\n appbuilder.app.makeConfirm(mess, href, null, okbtn).inject(document.id(this));\n this.postLink();\n }.bind(this));\n }\n },\n getTitle: function (el, defaultTitle) {\n var title;\n if (typeOf(el) == 'element') {\n var tEl = el.getElement('.title');\n if (tEl) {\n title = tEl.get('text');\n }\n else {\n title = el.get('text');\n }\n }\n return title || defaultTitle || 'Website';\n },\n showApp: function (html, animate, after, id, remote) {\n if (html) {\n appbuilder.app.debug('navigator', 'showApp', html);\n if (html.html) {\n this.appObj = html;\n }\n\n var thisEl = document.id(this);\n var s = thisEl.getElement('.screen');\n if (s) {\n s.fireEvent('destroy');\n }\n if (this.app) {\n this.app.fireEvent('destroy');\n }\n ;\n\n if (window.appbuilder.events) {\n window.appbuilder.events.iot.close();\n }\n ;\n\n if (html.iotConfig && html.pinMap && window.appbuilder.events) {\n window.appbuilder.events.iot.close();\n window.appbuilder.events.iot.init(html.iotConfig, html.pinMap);\n }\n ;\n\n this.events.initAppEvents(html.events);\n var t = this;\n var showapphtml = function () {\n thisEl.set('html', t.fixIEStyles((html.html || html), 'app'));\n this.app = document.id(this).getElement('.app');\n if (this.app) {\n if (this.app.get('data-disable-masking')) {\n document.id(this.phone).removeClass('masking');\n this.phone.options.currentMasking = false;\n }\n else if (this.phone.options.masking) {\n document.id(this.phone).addClass('masking');\n this.phone.options.currentMasking = true;\n }\n\n //Auto upgrade/downgrade\n this.phone.options.currentIOS7 = !this.app.get('data-disable-ios7');\n if (this.phone.options.currentIOS7) {\n if (this.phone.options.style == 'iphone5') {\n this.phone.setStyle('iphone5s');\n } else if (this.phone.options.style == 'ipad') {\n this.phone.setStyle('ipadair');\n }\n }\n else {\n if (this.phone.options.style == 'iphone5s') {\n this.phone.setStyle('iphone5');\n } else if (this.phone.options.style == 'ipadair') {\n this.phone.setStyle('ipad');\n }\n }\n\n this.phone.history.currentAppUrl = this.app.get('data-fetch-url');\n if (this.phone.options.app != 1 && id != this.phone.options.app) {\n appbuilder.app.makeElement('close-btn', {\n 'data-linktype': 'app',\n 'data-href': this.phone.options.app\n }).inject(this.app);\n }\n var appNavigatorInner = this.app.getElement('.app-navigator-inner'),\n sides = appNavigatorInner.getElements('.app-navigator-inner-sides'),\n innerA = sides[0],\n innerB = sides[1],\n back = false,\n running = false,\n chain = [],\n swapAB = function () {\n innerB.addClass('a');\n innerB.removeClass('b');\n\n innerA.addClass('b');\n innerA.removeClass('a');\n\n var tmp = innerB;\n innerB = innerA;\n innerA = tmp;\n }.bind(this),\n morpher = new Fx.Morph(appNavigatorInner, {\n unit: '%',\n onComplete: function () {\n if (!back) {\n swapAB();\n appNavigatorInner.setStyle('left', 0);\n }\n var s = innerB.getElement('.screen');\n if (s) {\n s.fireEvent('destroy');\n }\n innerB.set('html', '');\n appNavigatorInner.removeClass('ani');\n running = false;\n this.postLink();\n var n = chain.shift();\n if (n) {\n n();\n }\n }.bind(this)\n }),\n changeScreens = function () {\n if (back) {\n appNavigatorInner.setStyle('left', '-100%');\n swapAB();\n morpher.start({\n left: ['-100', 0]\n });\n }\n else {\n morpher.start({\n left: [0, '-100']\n });\n }\n };\n this.showScreenHTML = function (html, animate, backParam, setup) {\n if (running !== false && Date.now() - running < 5000) {\n chain.push(function () {\n this.showScreenHTML(html, backParam, animate, backParam, setup);\n }.bind(this));\n return;\n }\n running = Date.now();\n\n if (animate) {\n appNavigatorInner.addClass('ani');\n innerB.set('html', t.fixIEStyles((html.html || html), 'b'));\n if (setup) {\n setup(innerB);\n }\n back = backParam;\n changeScreens();\n }\n else {\n var s = innerA.getElement('.screen');\n if (s) {\n s.fireEvent('destroy');\n }\n innerA.set('html', t.fixIEStyles((html.html || html), 'a'));\n if (setup) {\n setup(innerA);\n }\n running = false;\n this.postLink();\n }\n };\n\n innerA.addClass('a');\n innerB.addClass('b');\n\n if (after) {\n after();\n this.postLink();\n }\n else {\n this.enabled = true;\n this.click(null, this.app.getElement('.tab'));\n this.postLink();\n }\n\n this.checkAds.delay(500, this);\n\n this.tabBar = this.app.getElement('.tab-bar');\n if (this.tabBar) {\n this.app.addEvent('click:relay(.screen .header)', function (e) {\n this.tabBar.toggleClass('bbShow');\n }.bind(this));\n }\n\n\n this.jsAPI.js(html.javascript, this.app);\n window.fireEvent('app', [appbuilder.app.api]);\n this.phone.fireEvent('app', [id, this.app, remote]);\n }\n else {\n this.app = false;\n }\n }.bind(this)\n\n if (animate && this.phone.options.splash && html.splashhtml) {\n thisEl.set('html', this.fixIEStyles(html.splashhtml, 'app'));\n thisEl.getElement('.splash').addEvent('click', function () {\n clearTimeout(delay);\n showapphtml();\n });\n var delay = showapphtml.delay(3000);\n }\n else {\n showapphtml();\n }\n }\n else {\n appbuilder.app.debug('navigator', 'showApp', 'no');\n appbuilder.app.alert('This app is currently unavailable', this);\n this.postLink();\n }\n },\n showScreen: function (html, id, animate, back, historyChange, inserted, element) {\n if (html.secured && this.appObj && (id != this.appObj.secure.login && id != this.appObj.secure.register)) {\n if (window.localStorage['login-' + id]) {\n var timeDiff = parseInt(window.localStorage['login-' + id]) - parseInt(new Date().getTime() / 1000);\n if (timeDiff < 0) {\n this.phone.fetch('screen', this.appObj.secure.login, function (html) {\n window.localStorage['loginto'] = id;\n this.showScreen(html, this.appObj.secure.login, animate, back, historyChange, null, element);\n }.bind(this));\n return;\n }\n }\n else {\n if (this.appObj.secure.login) {\n this.phone.fetch('screen', this.appObj.secure.login, function (html) {\n window.localStorage['loginto'] = id;\n this.showScreen(html, this.appObj.secure.login, animate, back, historyChange, null, element);\n }.bind(this));\n return;\n }\n }\n }\n else {\n this.appObj.loginLink = false;\n }\n\n if (html && this.app) {\n appbuilder.app.debug('navigator', 'showScreen', html);\n this.showScreenHTML(html, animate, back, function (el) {\n\n\n this.events.initScreenEvents(html.events);\n if (html.html) {\n this.screenObj = html;\n }\n if (this.afterSearch) {\n this.highlightSearchWords(el);\n }\n var screen = this.screen = el.getElement('.screen');\n if (screen) {\n var showTabs = screen.get('data-tabs');\n this.app.removeClass('hide-tabs');\n this.app.removeClass('float-tabs');\n if (showTabs == 'hide') {\n this.app.addClass('hide-tabs');\n }\n else if (showTabs == 'float') {\n this.app.addClass('float-tabs');\n }\n\n var statusType = screen.get('data-status');\n var phoneEl = document.id(this.phone);\n if (statusType == 'float') {\n phoneEl.addClass('float-status');\n phoneEl.removeClass('status-black');\n }\n else {\n phoneEl.removeClass('float-status');\n if (statusType == 'black') {\n phoneEl.addClass('status-black');\n }\n else {\n phoneEl.removeClass('status-black');\n }\n }\n\n var selectedTab = screen.get('data-tab');\n if (selectedTab) {\n var newTab = this.app.getElement('#tab' + selectedTab);\n if (newTab) {\n this.app.getElements('.tab.selected').removeClass('selected');\n newTab.addClass('selected');\n this.phone.fireEvent('tab', [selectedTab, newTab]);\n }\n }\n\n var headerEl = screen.getElement('.header');\n var backEl = screen.getElement('.back[data-linktype=back]');\n var titleEl = screen.getElement('.header .title');\n var titleSpan = screen.getElement('.header .title span');\n var titleText = titleSpan ? titleSpan.get('text') : '';\n var backWidth = 0;\n if (backEl) {\n var href = backEl.get('data-href');\n if (href && !historyChange) {\n this.phone.history.amendHistory({\n screen: href,\n app: this.phone.history.currentApp\n });\n }\n\n if (!this.phone.history.hasHistory(historyChange) && !href) {\n backEl.destroy();\n backEl = false;\n }\n else {\n headerEl.addClass('has-back');\n\n var t = backEl.get('text');\n backEl.set('text', '');\n appbuilder.app.makeElement('back-left', {\n 'html': ''\n + ''\n + ''\n + ''\n }).inject(backEl);\n\n var backCenter = appbuilder.app.makeElement('back-center', {\n text: t\n }).inject(backEl);\n\n var backRight = appbuilder.app.makeElement('back-right').inject(backEl);\n if (Browser.Platform.android) {\n backCenter.addClass('android');\n backRight.addClass('android');\n }\n else {\n backEl.addClass('iphone');\n }\n backWidth = backEl.getSize().x;\n }\n }\n\n if (titleSpan) {\n var resizeTitle = function () {\n var titleWidth = titleSpan.getDimensions().x;\n var headerWidth = headerEl.getDimensions().x;\n if (titleWidth + (backWidth * 2) <= headerWidth) {\n titleEl.removeClass('left');\n }\n else {\n titleEl.addClass('left');\n }\n }\n resizeTitle();\n this.phone.addEvent('resize', resizeTitle);\n screen.addEvent('destroy', function () {\n this.phone.removeEvent('resize', resizeTitle);\n }.bind(this));\n }\n\n if (!historyChange) {\n var type = screen.get('data-type');\n if (type) {\n this.phone.history.pushHistory({\n screen: id,\n linktype: type,\n app: this.phone.history.currentApp,\n appUrl: this.phone.history.currentAppUrl,\n title: titleText,\n fetchId: screen.get('data-fetch-id'),\n fetchUrl: screen.get('data-fetch-url'),\n direct: !!screen.get('data-fetch-direct')\n });\n }\n else {\n this.phone.history.pushHistory({\n screen: id,\n app: this.phone.history.currentApp,\n appUrl: this.phone.history.currentAppUrl,\n title: titleText,\n fetchId: screen.get('data-fetch-id'),\n fetchUrl: screen.get('data-fetch-url'),\n direct: !!screen.get('data-fetch-direct')\n });\n }\n }\n\n //Run screen setup function, setups for individual types\n Object.each(appbuilder.app.Navigator.screenSetups, function (func, name) {\n if (screen.hasClass(name)) {\n func.apply(this, [screen, html]);\n }\n }, this);\n\n //setup scrolling\n if (!this.phone.options.fixed) {\n var items = screen.getElement('.items');\n if (items && items.hasClass('scrolling')) {\n var scroll = items.retrieve('scroll');\n if (!scroll) {\n if (screen.hasClass('gallery')) {\n scroll = new appbuilder.app.scroll.gallery(items);\n }\n else if (screen.hasClass('appsscreen')) {\n scroll = new appbuilder.app.scroll.appsscreen(items);\n }\n else {\n scroll = new appbuilder.app.scroll.iphone(items);\n }\n items.store('scroll', scroll);\n }\n\n //wait until we are definitely in the screen\n (function () {\n scroll.refresh();\n }).delay(0);\n\n if (element) {\n var e = screen.getElement(element);\n if (e) {\n scroll.scrollToElement(e, 0);\n }\n }\n\n screen.getElements('img').addEvent('load', function () {\n scroll.refresh();\n });\n\n var resizeE = function () {\n scroll.refresh();\n };\n this.phone.addEvent('resize', resizeE);\n screen.addEvent('destroy', function () {\n this.phone.removeEvent('resize', resizeE);\n }.bind(this));\n\n if ((Browser.Platform.ipodIos7 || Browser.Platform.iphoneIos7) && !window.navigator.standalone) {\n var screenorientationchange = function () {\n if (window.orientation == 0) {\n scroll.enable()\n scroll.refresh();\n } else {\n scroll.disable();\n }\n }\n window.addEventListener(\"orientationchange\", screenorientationchange, false);\n screenorientationchange();\n screen.addEvent('destroy', function () {\n window.removeEvent('resize', screenorientationchange);\n }.bind(this));\n }\n\n }\n }\n\n if (inserted) {\n inserted(screen);\n }\n\n if (parseInt(id) !== 1) {\n this.moveAdsInToScreen(screen);\n }\n this.phone.fireEvent('screen', [id, screen, !!screen.get('data-fetch-url')]);\n }\n }.bind(this));\n\n }\n else {\n appbuilder.app.debug('navigator', 'showScreen', 'no');\n appbuilder.app.alert('This screen is currently unavailable', this);\n this.postLink();\n }\n },\n /**\n * Finds a title from an element\n * Used to make titles for youtube/vimeo/web pages\n **/\n findTitle: function (el, defaultTitle) {\n var title;\n if (typeOf(el) == 'element') {\n var tEl = el.getElement('.title');\n if (tEl) {\n title = tEl.get('text');\n }\n else {\n title = el.get('text');\n }\n }\n return title || defaultTitle || 'Website';\n },\n loadVar: function (varName) {\n var obj = this.phone.temporaryStorage.fetch('inputs', varName);\n if (!obj && this.phone.storage) {\n obj = this.phone.storage.fetch('inputs', varName);\n }\n //appbuilder.app.debug('navigator', 'loadVar', varName, obj);\n return obj;\n },\n\n hasAds: function () {\n return this.app.getElement('.app-navigator').hasClass('ads');\n },\n saveVar: function (varName, value, method, type) {\n var obj = {\n name: varName,\n value: value,\n type: type || 'text',\n method: method || 'get'\n };\n //appbuilder.app.debug('navigator', 'saveVar', varName, obj);\n this.phone.temporaryStorage.store('inputs', varName, obj);\n if (this.phone.storage) {\n this.phone.storage.store('inputs', varName, obj);\n }\n this.phone.fireEvent('varChange', [varName, value]);\n },\n checkVariables: function (href, cb, post) {\n appbuilder.app.decoy();\n var match, pattern = /\\{([\\w\\._]+?)\\}/g,\n count = 1,\n postVars = [],\n after = function () {\n if (--count == 0) {\n cb(href2, postVars);\n }\n },\n href2 = href;\n while ((match = pattern.exec(href)) != null) {\n count++;\n (function (match) {\n if (match[1] == 'device.longitude') {\n match[1] = 'device.location.longitude';\n }\n\n if (match[1] == 'device.latitude') {\n match[1] = 'device.location.latitude';\n }\n\n if (match[1] == 'device.accuracy') {\n match[1] = 'device.location.accuracy';\n }\n\n if (match[1] == 'device.udid') {\n href2 = href2.replace(match[0], encodeURIComponent(this.phone.getUniqueId()));\n after();\n }\n else if (match[1].indexOf('device.location') === 0) {\n var key = match[1].replace('device.location.', '');\n appbuilder.map.getPosition(function (p) {\n if (p && p.coords[key]) {\n href2 = href2.replace(match[0], encodeURIComponent(p.coords[key]));\n }\n else {\n href2 = href2.replace(match[0], '');\n }\n after();\n });\n }\n else {\n var inp = this.loadVar(match[1]);\n if (inp) {\n if (inp.method == 'post') {\n if (post) {\n postVars.push(inp);\n }\n href2 = href2.replace(match[0], '');\n }\n else {\n if (inp.type == 'date') {\n href2 = href2.replace(match[0], encodeURIComponent(new Date(inp.value).toLocaleDateString()));\n } else {\n href2 = href2.replace(match[0], encodeURIComponent(inp.value));\n }\n }\n console.log(href2);\n }\n else {\n href2 = href2.replace(match[0], '');\n }\n after();\n }\n }).call(this, match);\n }\n after();\n },\n checkAds: function () {\n\n if (!this.hasAds() || (document.getElement('ins') !== null && document.getElement('ins').getParent('.ad-holder') !== null)) {\n return;\n }\n\n var adsItems = document.getElements('.ad-holder');\n if (adsItems.length == 0) {\n adsItems.push(new Element('div', {'class': 'ad-holder'}).inject(document.body));\n }\n\n adsItems.each(function (holder) {\n\n var gads = document.id('gads')\n , gad = gads && gads.getElement('ins')\n , timeout\n , showAd = gads ? function (obj) {\n if (obj.gads) {\n gad.inject(holder);\n (window.adsbygoogle = window.adsbygoogle || []).push({});\n }\n else {\n gad.inject(gads);\n holder.set('html', obj.ad);\n timeout = setTimeout(getAd, 60000);\n }\n } : function (obj) {\n holder.set('html', obj.ad);\n timeout = setTimeout(getAd, 60000);\n }\n , getAd = function () {\n new (appbuilder.app.hasCORS ? Request.JSON : Request.JSONP)({\n url: 'https://ads2.appshed.com/',\n data: {\n device: this.phone.getUniqueId(),\n app: this.phone.history.currentApp,\n editor: this.phone.options.request.data.editor\n },\n noCache: true,\n onSuccess: showAd,\n onFailure: function (xhr) {\n appbuilder.app.debug('navigator', 'ads', 'fail', xhr);\n },\n method: 'get'\n }).send();\n }.bind(this);\n\n getAd();\n this.app.addEvent('destroy', function () {\n clearTimeout(timeout);\n });\n }, this);\n },\n\n moveAdsInToScreen: function (screen) {\n if (!this.hasAds()) return;\n var ads = document.getElement('.ad-holder');\n if (ads) {\n if (screen.getElement('.items-inner')) {\n ads.inject(screen.getElement('.items-inner'), 'top');\n } else if (screen.getElement('.items')) {\n ads.inject(screen.getElement('.items'), 'top');\n }\n ads.show();\n }\n },\n moveAdsInToBody: function () {\n var ads = document.getElement('.ad-holder');\n if (ads) {\n ads.inject(document.getElement('body'));\n ads.hide();\n }\n },\n\n\n highlightSearchWords: function (screenEl) {\n this.afterSearch = false;\n var bodyText = screenEl.innerHTML;\n var highlightStartTag = \"\";\n var highlightEndTag = \"\";\n\n var newText = \"\";\n var i = -1;\n var lcBodyText = bodyText.toLowerCase();\n\n while (bodyText.length > 0) {\n i = lcBodyText.indexOf(this.searchword, i + 1);\n if (i < 0) {\n newText += bodyText;\n bodyText = \"\";\n } else {\n if (bodyText.lastIndexOf(\">\", i) >= bodyText.lastIndexOf(\"<\", i)) {\n if (lcBodyText.lastIndexOf(\"/script>\", i) >= lcBodyText.lastIndexOf(\")([\\s\\S]*)/i);\n if (pageData) {\n var style = pageData[1].match(/([\\s\\S]*?)<\\/style>/i);\n if (style[1]) {\n var styleElement = document.getElementById('ie-style-' + type);\n if (styleElement) {\n document.id(styleElement).destroy();\n }\n styleElement = document.createElement('style');\n styleElement.setAttribute('type', 'text/css');\n styleElement.setAttribute('id', 'ie-style-' + type);\n styleElement.styleSheet.cssText = style[1];\n headerElement.appendChild(styleElement);\n }\n return pageData[2];\n }\n return html;\n } : function (html) {\n return html;\n },\n applyTabMask: function () {\n if (this.tabBar) {\n this.tabBar.getElements('.tab .icon').each(function (img) {\n if (!img.get('data-src')) {\n var src = img.get('src'),\n mask = 'url(\\'' + src + '\\') top left / contain no-repeat';\n img.setStyles({\n 'mask': mask,\n '-webkit-mask': mask,\n '-o-mask': mask,\n '-ms-mask': mask\n });\n img.set('data-src', src);\n //ios doesnt remove the image if i just remove the src attribute - this is 1 transparent pixel\n img.set('src', 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7');\n }\n });\n }\n },\n removeTabMask: function () {\n if (this.tabBar) {\n this.tabBar.getElements('.tab .icon').each(function (img) {\n if (img.get('data-src')) {\n img.setStyles({\n '-webkit-mask': null,\n '-o-mask': null,\n '-ms-mask': null,\n 'mask': null\n });\n img.set('src', img.get('data-src'));\n img.removeProperty('data-src');\n }\n });\n }\n }\n}, 'Navigator');\n","appbuilder.app.Navigator.screenSetups = appbuilder.app.Navigator.screenSetups || {};\nappbuilder.app.Navigator.screenSetups.appsscreen = function(screen, html) {\n\tvar resize = screen.retrieve('resize');\n\tif(!resize) {\n\t\tvar\titems = screen.getElements('.apps'),\n\t\tinner = screen.getElement('.items-inner');\n\t\tresize = function() {\n\t\t\tappbuilder.app.debug('apps', 'resize');\n\t\t\tvar s = screen.getSize();\n\t\t\titems.setStyles({\n\t\t\t\twidth: s.x\n\t\t\t});\n\t\t\tinner.setStyles({\n\t\t\t\twidth: s.x * items.length\n\t\t\t});\n var scroll = screen.getElement('.items').retrieve('scroll');\n if (scroll) {\n setTimeout(function() {\n scroll.gotoPage(scroll.getPage());\n }, 0)\n }\n\t\t};\n\t\tthis.phone.addEvent('resize', resize);\n\t\tscreen.store('resize', resize);\n\t\t\n\t\titems.each(function(apps) {\n\t\t\tvar title = apps.getElement('.apps-title');\n\t\t\tif(title) {\n\t\t\t\tvar otext = title.get('text'),\n\t\t\t\t\ttimeout;\n\t\t\t\tapps.addEvent('mouseover:relay(.item.icon)', function(e) {\n\t\t\t\t\ttitle.set('text', this.getElement('.title').get('text'));\n\t\t\t\t\tclearTimeout(timeout);\n\t\t\t\t\ttimeout = setTimeout(function() {\n\t\t\t\t\t\ttitle.set('text', otext);\n\t\t\t\t\t}, 1000);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t\n\t\tvar apps = screen.getElements('.item.icon');\n\t\t\n\t\tvar searchBox = screen.getElement('.search-box');\n\t\tvar searchResults = screen.getElement('.search-results');\n\t\tfunction change() {\n\t\t\tvar val = searchBox.get('value');\n\t\t\tsearchResults.empty();\n\t\t\tif(val) {\n\t\t\t\tval = val.toLowerCase();\n\t\t\t\tvar count = 0;\n\t\t\t\tapps.every(function(app) {\n\t\t\t\t\tif(app.getElement('.title').get('text').toLowerCase().contains(val)) {\n\t\t\t\t\t\tapp.clone().inject(searchResults);\n\t\t\t\t\t}\n\t\t\t\t\treturn count++ < 5;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tsearchBox.addEvent('keyup', change);\n\t\tsearchBox.onwebkitspeechchange = change;\n\t\t\n\t\tdocument.id(this.phone).addClass('apps-screen');\n\t\t\n\t\tscreen.addEvent('destroy', function() {\n\t\t\tappbuilder.app.debug('apps', 'destroy');\n\t\t\tthis.phone.removeEvent('resize', resize);\n\t\t\tscreen.store('resize', false);\n\t\t\t\n\t\t\tdocument.id(this.phone).removeClass('apps-screen');\n\t\t}.bind(this));\n\t}\n\tresize();\n};\n","appbuilder.app.Navigator.screenSetups = appbuilder.app.Navigator.screenSetups || {};\nappbuilder.app.Navigator.screenSetups.gallery = function(screen) {\n\tvar resize = screen.retrieve('resize');\n\tif(!resize) {\n\t\tvar itemsEl = screen.getElement('.items'),\n\t\titems = screen.getElements('.item.gallery'),\n\t\tinner = itemsEl.getElement('.items-inner');\n\t\tresize = function() {\n\t\t\tappbuilder.app.debug('gallery', 'resize');\n\t\t\tvar s = itemsEl.getSize();\n\t\t\titems.setStyles({\n\t\t\t\twidth: s.x + 'px',\n\t\t\t\theight: s.y + 'px'\n\t\t\t});\n\t\t\tinner.setStyles({\n\t\t\t\twidth: (s.x * items.length) + 'px',\n\t\t\t\theight: s.y + 'px'\n\t\t\t});\n\t\t}\n\t\tthis.phone.addEvent('resize', resize);\n\t\tscreen.addEvent('destroy', function() {\n\t\t\tappbuilder.app.debug('gallery', 'destroy');\n\t\t\tthis.phone.removeEvent('resize', resize);\n\t\t}.bind(this));\n\t}\n\tresize();\n};\n","appbuilder.app.Navigator.screenSetups = appbuilder.app.Navigator.screenSetups || {};\nappbuilder.app.Navigator.screenSetups.list = function(screen, html) {\n\tif(!appbuilder.app.isIE){\n\tscreen.getElements('select').each(function(selectEl) {\n\t\tappbuilder.app.debug('list', 'select');\n\t\tvar options = [], val = selectEl.get('value') , name = selectEl.get('name');\n\t\tselectEl.getElements('option').each(function(opEl) {\n\t\t\tvar v = opEl.get('value');\n\t\t\toptions.push({\n\t\t\t\t'value': v, \n\t\t\t\t'title': opEl.get('text'), \n\t\t\t\t'selected':val == v\n\t\t\t});\n\t\t});\n\t\tvar p = selectEl.getParent();\n\t\tselectEl.destroy();\n\t\tselectEl = appbuilder.app.makeElement('selected', {}, 'span').inject(p);\n\n\t\tif(typeOf(options) == 'array' && options.length > 0) {\n\t\t\tvar done, cancel, oset = selectEl.set, oget = selectEl.get, i;\n\t\t\tvar spinnerOptions = {};\n\t\t\toptions.each(function(op) {\n\t\t\t\tspinnerOptions[op.value] = op.title;\n\t\t\t});\n\n\t\t\tselectEl.set = function(what, value) {\n\t\t\t\tif(what == 'value') {\n\t\t\t\t\tthis.set('data-value', value.value || value);\n\t\t\t\t\tthis.set('data-variable', name );\n\t\t\t\t\tthis.set('text', value.title || spinnerOptions[value] || value);\n\t\t\t\t\tselectEl.fireEvent('change');\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\toset.apply(this, arguments);\n\t\t\t\t}\n\t\t\t};\n\t\t\tselectEl.get = function(what) {\n\t\t\t\tif(what == 'value') {\n\t\t\t\t\treturn this.get('data-value');\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn oget.apply(this, arguments);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tif(!options.some(function(option) {\n\t\t\t\tif(option.selected) {\n\t\t\t\t\tselectEl.set('value', option);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t})) {\n\n\t\t\t\tselectEl.set('value', options[0]);\n\t\t\t}\n\n\t\t\tselectEl.addEvent('click', function(e) {\n\t\t\t\tif(!SpinningWheel.swWrapper) {\n\t\t\t\t\te.stop();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tappbuilder.app.decoy();\n\t\t\t\t\tSpinningWheel.addSlot(spinnerOptions, '', selectEl.get('value'));\n\t\t\t\t\tSpinningWheel.setCancelAction(cancel);\n\t\t\t\t\tSpinningWheel.setDoneAction(done);\n\n\t\t\t\t\tSpinningWheel.open();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tdone = function() {\n\t\t\t\tvar results = SpinningWheel.getSelectedValues();\n\t\t\t\tselectEl.set('value', results.keys[0]);\n\t\t\t};\n\n\t\t\tcancel = function() {};\n\t\t}\n\t});\n\t}\n\tscreen.getElements('[data-picker-type]').each(function(pickerEl) {\n\t\tappbuilder.app.debug('list', 'picker');\n\t\tvar type = pickerEl.get('data-picker-type');\n\t\t//if(appbuilder.app.isMobile) {\n\t\tvar now = new Date(), done, cancel, oset = pickerEl.set, oget = pickerEl.get, i;\n\t\tif(type == 'date') {\n\t\t\tvar months = {\n\t\t\t\t\"0\":\"January\",\n\t\t\t\t\"1\":\"Feburary\",\n\t\t\t\t\"2\":\"March\",\n\t\t\t\t\"3\":\"April\",\n\t\t\t\t\"4\":\"May\",\n\t\t\t\t\"5\":\"June\",\n\t\t\t\t\"6\":\"July\",\n\t\t\t\t\"7\":\"August\",\n\t\t\t\t\"8\":\"September\",\n\t\t\t\t\"9\":\"October\",\n\t\t\t\t\"10\":\"November\",\n\t\t\t\t\"11\":\"December\"\n\t\t\t};\n\t\t\tvar days = {\n\t\t\t\t\"1\":\"1\",\n\t\t\t\t\"2\":\"2\",\n\t\t\t\t\"3\":\"3\",\n\t\t\t\t\"4\":\"4\",\n\t\t\t\t\"5\":\"5\",\n\t\t\t\t\"6\":\"6\",\n\t\t\t\t\"7\":\"7\",\n\t\t\t\t\"8\":\"8\",\n\t\t\t\t\"9\":\"9\",\n\t\t\t\t\"10\":\"10\",\n\t\t\t\t\"11\":\"11\",\n\t\t\t\t\"12\":\"12\",\n\t\t\t\t\"13\":\"13\",\n\t\t\t\t\"14\":\"14\",\n\t\t\t\t\"15\":\"15\",\n\t\t\t\t\"16\":\"16\",\n\t\t\t\t\"17\":\"17\",\n\t\t\t\t\"18\":\"18\",\n\t\t\t\t\"19\":\"19\",\n\t\t\t\t\"20\":\"20\",\n\t\t\t\t\"21\":\"21\",\n\t\t\t\t\"22\":\"22\",\n\t\t\t\t\"23\":\"23\",\n\t\t\t\t\"24\":\"24\",\n\t\t\t\t\"25\":\"25\",\n\t\t\t\t\"26\":\"26\",\n\t\t\t\t\"27\":\"27\",\n\t\t\t\t\"28\":\"28\",\n\t\t\t\t\"29\":\"29\",\n\t\t\t\t\"30\":\"30\",\n\t\t\t\t\"31\":\"31\"\n\t\t\t};\n\t\t\tvar years = {};\n\t\t\tvar thisYear = now.getFullYear();\n\t\t\tvar yearRange = parseInt(pickerEl.get('data-year-range') || 200);\n\t\t\tfor(i = thisYear - yearRange;i < thisYear + yearRange;i++) {\n\t\t\t\tyears[i] = '' + i;\n\t\t\t}\n\n\t\t\tpickerEl.set = function(what, value) {\n\t\t\t\tif(what == 'value') {\n\t\t\t\t\tif(typeOf(value) != 'date') {\n\t\t\t\t\t\tvalue = new Date(parseInt(value));\n\t\t\t\t\t}\n\t\t\t\t\tif(isNaN(value)) {\n\t\t\t\t\t\tvalue = new Date();\n\t\t\t\t\t}\n\t\t\t\t\tthis.set('data-value', value.getTime());\n\t\t\t\t\tthis.set('text', value.toLocaleDateString());\n\t\t\t\t\tpickerEl.fireEvent('change');\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\toset.apply(this, arguments);\n\t\t\t\t}\n\t\t\t};\n\t\t\tpickerEl.get = function(what) {\n\t\t\t\tif(what == 'value') {\n\t\t\t\t\treturn parseInt(this.get('data-value') || new Date().getTime());\n\t\t\t\t}else if(what == 'type') {\n\t\t\t\t\treturn type;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn oget.apply(this, arguments);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tpickerEl.set('value', pickerEl.get('data-value') || new Date());\n\n\t\t\tpickerEl.addEvent('click', function(e) {\n\t\t\t\tif(appbuilder.app.isIE) {\n\t\t\t\t\t// disable ie <= 8\n\t\t\t\t\tappbuild.app.alert('This feature is not supported on the browser you are using (Internet Explorer 8). Please try again using IE9, Firefox or Chrome.');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif(!SpinningWheel.swWrapper) {\n\t\t\t\t\te.stop();\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tappbuilder.app.decoy();\n\n\t\t\t\t\tvar val = new Date(pickerEl.get('value'));\n\n\t\t\t\t\tSpinningWheel.addSlot(days, 'right', val.getDate());\n\t\t\t\t\tSpinningWheel.addSlot(months, '', val.getMonth());\n\t\t\t\t\tSpinningWheel.addSlot(years, '', val.getFullYear());\n\n\t\t\t\t\tSpinningWheel.setCancelAction(cancel);\n\t\t\t\t\tSpinningWheel.setDoneAction(done);\n\n\t\t\t\t\tSpinningWheel.open();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tdone = function() {\n\t\t\t\tvar results = SpinningWheel.getSelectedValues();\n\t\t\t\tvar val = new Date(results.keys[2], results.keys[1], results.keys[0]);\n\t\t\t\tpickerEl.set('value', val.getTime());\n\t\t\t};\n\n\t\t\tcancel = function() {};\n\t\t}\n\t\telse if(type == 'time') {\n\t\t\tvar hours = {\n\t\t\t\t\"1\":\"1\",\n\t\t\t\t\"2\":\"2\",\n\t\t\t\t\"3\":\"3\",\n\t\t\t\t\"4\":\"4\",\n\t\t\t\t\"5\":\"5\",\n\t\t\t\t\"6\":\"6\",\n\t\t\t\t\"7\":\"7\",\n\t\t\t\t\"8\":\"8\",\n\t\t\t\t\"9\":\"9\",\n\t\t\t\t\"10\":\"10\",\n\t\t\t\t\"11\":\"11\",\n\t\t\t\t\"12\":\"12\"\n\t\t\t};\n\t\t\tvar mins = {\n\t\t\t\t\"0\":\"00\",\n\t\t\t\t\"5\":\"05\",\n\t\t\t\t\"10\":\"10\",\n\t\t\t\t\"15\":\"15\",\n\t\t\t\t\"20\":\"20\",\n\t\t\t\t\"25\":\"25\",\n\t\t\t\t\"30\":\"30\",\n\t\t\t\t\"35\":\"35\",\n\t\t\t\t\"40\":\"40\",\n\t\t\t\t\"45\":\"45\",\n\t\t\t\t\"50\":\"50\",\n\t\t\t\t\"55\":\"55\"\n\t\t\t};\n\t\t\tvar ampm = {\n\t\t\t\t\"am\":\"am\", \n\t\t\t\t\"pm\":\"pm\"\n\t\t\t};\n\n\t\t\tpickerEl.set = function(what, value) {\n\t\t\t\tif(what == 'value') {\n\t\t\t\t\tthis.set('data-value', value);\n\n\t\t\t\t\tvar val = pickerEl.get('value').split(':');\n\t\t\t\t\tif(val.length == 1) {\n\t\t\t\t\t\tvar d = new Date(pickerEl.get('value'));\n\t\t\t\t\t\tif(isNaN(d)) {\n\t\t\t\t\t\t\td = new Date();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tval = [d.getHours(), d.getMinutes()];\n\t\t\t\t\t}\n\n\t\t\t\t\tvar am = 'am';\n\t\t\t\t\tvar h = parseInt(val[0]);\n\n\t\t\t\t\tif(h == 0) {\n\t\t\t\t\t\th = 12;\n\t\t\t\t\t}\n\t\t\t\t\telse if(h > 12) {\n\t\t\t\t\t\th -= 12;\n\t\t\t\t\t\tam = 'pm';\n\t\t\t\t\t}\n\t\t\t\t\telse if(h == 12) {\n\t\t\t\t\t\tam = 'pm';\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.set('text', h + ':' + ('' + val[1]).pad(2, '0', 'l') + ' ' + am);\n\t\t\t\t\tpickerEl.fireEvent('change');\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\toset.apply(this, arguments);\n\t\t\t\t}\n\t\t\t};\n\t\t\tpickerEl.get = function(what) {\n\t\t\t\tif(what == 'value') {\n\t\t\t\t\treturn this.get('data-value') || new Date().format('%H:%M');\n\t\t\t\t}else if(what == 'type') {\n\t\t\t\t\treturn type;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn oget.apply(this, arguments);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tpickerEl.set('value', pickerEl.get('data-value') || new Date().format('%H:%M'));\n\n\t\t\tpickerEl.addEvent('click', function(e) {\n\t\t\t\tif(appbuilder.app.isIE) {\n\t\t\t\t\t// disable ie <= 8\n\t\t\t\t\tappbuild.app.alert('This feature is not supported on the browser you are using (Internet Explorer 8). Please try again using IE9, Firefox or Chrome.');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(!SpinningWheel.swWrapper) {\n\t\t\t\t\te.stop();\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tappbuilder.app.decoy();\n\n\t\t\t\t\tvar val = pickerEl.get('value').split(':');\n\n\t\t\t\t\tvar am = 'am';\n\t\t\t\t\tvar h = val[0];\n\n\t\t\t\t\tif(h == 0) {\n\t\t\t\t\t\th = 12;\n\t\t\t\t\t}\n\t\t\t\t\telse if(h > 12) {\n\t\t\t\t\t\th -= 12;\n\t\t\t\t\t\tam = 'pm';\n\t\t\t\t\t}\n\t\t\t\t\telse if(h == 12) {\n\t\t\t\t\t\tam = 'pm';\n\t\t\t\t\t}\n\n\t\t\t\t\tSpinningWheel.addSlot(hours, 'right', h);\n\t\t\t\t\tSpinningWheel.addSlot(mins, '', val[1]);\n\t\t\t\t\tSpinningWheel.addSlot(ampm, '', am);\n\n\t\t\t\t\tSpinningWheel.setCancelAction(cancel);\n\t\t\t\t\tSpinningWheel.setDoneAction(done);\n\n\t\t\t\t\tSpinningWheel.open();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tdone = function() {\n\t\t\t\tvar results = SpinningWheel.getSelectedValues();\n\t\t\t\tvar h = parseInt(results.keys[0]);\n\t\t\t\tif(h == 12) {\n\t\t\t\t\th = 0;\n\t\t\t\t}\n\t\t\t\tif(results.keys[2] == 'pm') {\n\t\t\t\t\th += 12;\n\t\t\t\t}\n\n\t\t\t\tpickerEl.set('value', h + ':' + results.keys[1]);\n\t\t\t};\n\n\t\t\tcancel = function() {};\n\t\t}\n\t});\n\n\tscreen.getElements('input[type=text][data-autocomplete-url]:not([data-autocomplete-url=\"\"])').each(function(autocompleteEl) {\n\t\tappbuilder.app.debug('list', 'autocomplete');\n\t\tvar url = autocompleteEl.get('data-autocomplete-url');\n\t\tvar varName = autocompleteEl.get('data-autocomplete-variable') || autocompleteEl.get('data-variable') || autocompleteEl.get('name');\n\t\tvar minLength = parseInt(autocompleteEl.get('data-autocomplete-min-length')) || 1;\n\t\tvar completionsEl = appbuilder.app.makeElement('autocomplete').inject(autocompleteEl, 'after');\n\t\tvar completionsInner = appbuilder.app.makeElement('autocomplete-inner').inject(completionsEl);\n\t\tvar scroller = new appbuilder.app.scroll.iphone(completionsEl, {\n\t\t\tonBeforeScrollStart: function (e) {\n\t\t\t\tif(e.target.tagName != 'INPUT'\n\t\t\t\t\t&& e.target.tagName != 'SELECT'\n\t\t\t\t\t&& e.target.tagName != 'TEXTAREA') {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tvar showCompletions = function(options) {\n\t\t\tcompletionsInner.empty();\n\t\t\tif(typeOf(options) == 'array' && options.length > 0) {\n\t\t\t\toptions.each(function(op) {\n\t\t\t\t\tvar e = appbuilder.app.makeElement('completion', {\n\t\t\t\t\t\t'html':op\n\t\t\t\t\t}).inject(completionsInner);\n\t\t\t\t\te.addEvent('click', function() {\n\t\t\t\t\t\tautocompleteEl.set('value', op);\n\t\t\t\t\t\tautocompleteEl.fireEvent('change');\n\t\t\t\t\t\tcompletionsEl.setStyle('display', 'none');\n\t\t\t\t\t\tappbuilder.app.decoy();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tcompletionsEl.setStyle('height', options.length < 5 ? options.length * 25 : 125);\n\t\t\t\tcompletionsEl.setStyle('display', 'block');\n\t\t\t\tscroller.refresh();\n\t\t\t}\n\t\t\telse {\n\t\t\t\tcompletionsEl.setStyle('display', 'none');\n\t\t\t}\n\t\t}.bind(this);\n\n\t\tvar getCompletions = function(val) {\n\t\t\tthis.checkVariables(url, function(url) {\n\t\t\t\turl = url.toURI().setData(varName, val).toString();\n\t\t\t\tthis.phone.loader.request('autocomplete', url, null, showCompletions);\n\t\t\t}.bind(this));\n\t\t}.bind(this);\n\n\t\tautocompleteEl.addEvent('keyup', function() {\n\t\t\tvar val = autocompleteEl.get('value');\n\t\t\tif(val.length >= minLength) {\n\t\t\t\tgetCompletions(val);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tcompletionsEl.setStyle('display', 'none');\n\t\t\t}\n\t\t}.bind(this));\n\n\t\t//formEl.addEvent('blur', function() {\n\t\t//\tcompletionsEl.setStyle('display', 'none');\n\t\t//});\n\n\t\tautocompleteEl.set('autocorrect', 'off');\n\t\tautocompleteEl.set('autocomplete', 'off');\n\t\tautocompleteEl.set('autocapitalize', 'off');\n\t}, this);\n\n\tvar localSearchBoxes = screen.getElements('input.textbox.localsearch');\n\tif(localSearchBoxes.length > 0) {\n\t\tthis.phone.fetch('searchdata', this.phone.history.currentApp, function(searchData) {\n\t\t\tvar screenId = screen.get('id').replace('screen' , '');\n\t\t\tlocalSearchBoxes.each(function(localSearchBox) {\n\t\t\t\tvar results = new Element('div');\n\t\t\t\tresults.inject(localSearchBox.getParent('.item.textbox'), 'after');\n\t\t\t\tlocalSearchBox.addEvent('keyup',function() {\n\t\t\t\t\tresults.set('html', '');\n\t\t\t\t\tvar resultsArray = [],\n\t\t\t\t\t\tmatchesCount = 0,\n\t\t\t\t\t\tsearchTerm = localSearchBox.get('value').toLowerCase();\n\t\t\t\t\tif(searchTerm.length > 1) {\n\t\t\t\t\t\tObject.each(searchData.words, function(screenIds, key) {\n\t\t\t\t\t\t\tif(key.indexOf(searchTerm) === 0) {\n\t\t\t\t\t\t\t\tscreenIds.each(function(id) {\n\t\t\t\t\t\t\t\t\tmatchesCount++;\n\t\t\t\t\t\t\t\t\tvar resultElement = new Element('div', {\n\t\t\t\t\t\t\t\t\t\t'class': 'item plain link',\n\t\t\t\t\t\t\t\t\t\t'data-linktype': 'screen',\n\t\t\t\t\t\t\t\t\t\t'data-href': id,\n\t\t\t\t\t\t\t\t\t\t'data-highlight': searchTerm,\n\t\t\t\t\t\t\t\t\t\thtml: '
    ' + searchData.screens[id].substr(searchData.screens[id].toLowerCase().indexOf(searchTerm),35).replace(/(^\\s+)|(\\s+$)/g, \"\").replace(searchTerm , ''+searchTerm+'')+'...
    '\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\tif(matchesCount < 4) {\n\t\t\t\t\t\t\t\t\t\tresultElement.inject(results);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tresultsArray.push(resultElement);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif(matchesCount > 3) {\n\t\t\t\t\t\t\tvar more = new Element('div', {\n\t\t\t\t\t\t\t\t'class': 'item plain link',\n\t\t\t\t\t\t\t\thtml: '
    See all ' + resultsArray.length + ' results...
    '\n\t\t\t\t\t\t\t}).inject(results);\n\t\t\t\t\t\t\tmore.addEvent('click', function(e) {\n\t\t\t\t\t\t\t\te.stop();\n\t\t\t\t\t\t\t\tvar container = new Element('div');\n\t\t\t\t\t\t\t\tresultsArray.each(function(i) {\n\t\t\t\t\t\t\t\t\ti.inject(container);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tthis.showScreen(\n\t\t\t\t\t\t\t\t\tappbuilder.app.createScreen('screensearch' + searchTerm, 'screen', 'Results for '+searchTerm, container.get('html'), true, true, screenId, false, 'list'),\n\t\t\t\t\t\t\t\t\t'search' + searchTerm, true, false, false\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}.bind(this));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}.bind(this));\n\t\t\t}, this);\n\t\t}.bind(this));\n\t}\n\t// get screen variables\n\tscreen.getElements('[data-variable]').each(function(formEl) {\n\t\tappbuilder.app.debug('list', 'variable');\n\t\tvar id = formEl.get('id'), varName = formEl.get('data-variable') , varTagName = formEl.get('tag'), varType = formEl.get('type') ;\n\t\tif(formEl.get('data-save-value') != 'no') {\n\t\t\tvar obj = this.loadVar(varName);\n\t\t\tif(obj) {\n\t\t\t\tif(formEl.get('type') == 'checkbox') {\n\t\t\t\t\tformEl.set('checked', formEl.get('value') == obj.value);\n\t\t\t\t}\n else if (formEl.get('type') == 'radio') {\n if (formEl.get('value') == obj.value) {\n formEl.set('checked', true);\n }\n }\n\t\t\t\telse {\n\t\t\t\t\tformEl.set('value', obj.value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n var change = function() {\n if(formEl.get('type') == 'checkbox') {\n this.saveVar(varName, formEl.get('checked') ? formEl.get('value') : '', null, varType);\n }\n else if (formEl.get('type') == 'radio') {\n if (formEl.get('checked')) {\n this.saveVar(varName, formEl.get('value'), null, varType);\n }\n }\n else {\n this.saveVar(varName, formEl.get('value'), null, varType);\n }\n }.bind(this);\n\n\t\tif(!appbuilder.app.isMobile) {\n switch(varTagName) {\n\t\t\t\tcase 'input':\n\t\t\t\tcase 'textarea':\n\t\t\t\t\tformEl.addEvent('keyup', change);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tformEl.addEvent('change', change);\n change();\n\t}, this);\n\n\tscreen.getElements('.item.capture').each(function(captureEl) {\n\t\tvar type = captureEl.get('data-capturetype');\n\t\tvar on = captureEl.getElement('.on');\n\t\tvar off = captureEl.getElement('.off');\n\t\tvar varName = captureEl.get('data-name');\n\n\t\tvar canCapture = appbuilder.app.info.canCapture && appbuilder.app.info.canCapture.contains(type);\n\t\tvar canChoose = appbuilder.app.info.canChoose && appbuilder.app.info.canChoose.contains(type);\n\n\t\tif(canCapture || canChoose) {\n\t\t\toff.destroy();\n\t\t\tvar capturebtn = captureEl.getElement('.capture');\n\t\t\tvar choosebtn = captureEl.getElement('.choose');\n\t\t\tvar icon = captureEl.getElement('.image');\n\n\t\t\tvar captured = function(mediaFiles) {\n\t\t\t\tsetURL('file://' + mediaFiles[0].fullPath);\n\t\t\t};\n\n\t\t\tvar scrollRefresh = function() {\n\t\t\t\tvar items = screen.getElement('.items.scrolling');\n\t\t\t\tif(items) {\n\t\t\t\t\tvar s = items.retrieve('scroll');\n\t\t\t\t\tif(s) {\n\t\t\t\t\t\ts.refresh();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar setURL = function(url) {\n\t\t\t\tthis.phone.history.disableRefresh = false;\n\t\t\t\tvar newicon;\n\t\t\t\tthis.saveVar(varName, url, 'post', type);\n\t\t\t\tif(type == 'audio') {\n\t\t\t\t\tnewicon = new Element('div', {\n\t\t\t\t\t\t'class':'image'\n\t\t\t\t\t});\n\t\t\t\t\tvar audio = new Element('audio', {\n\t\t\t\t\t\t'src':url\n\t\t\t\t\t});\n\t\t\t\t\tvar playing = false;\n\t\t\t\t\tnewicon.addClass('play');\n\t\t\t\t\tnewicon.addEvent('click', function() {\n\t\t\t\t\t\tif(playing) {\n\t\t\t\t\t\t\taudio.pause();\n\t\t\t\t\t\t\tnewicon.addClass('play');\n\t\t\t\t\t\t\tnewicon.removeClass('pause');\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\taudio.play();\n\t\t\t\t\t\t\tnewicon.removeClass('play');\n\t\t\t\t\t\t\tnewicon.addClass('pause');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tplaying = !playing;\n\t\t\t\t\t});\n\t\t\t\t\tnewicon.replaces(icon);\n\t\t\t\t\ticon = newicon;\n\t\t\t\t}\n\t\t\t\telse if(type == 'video') {\n\t\t\t\t\tnewicon = new Element('video', {\n\t\t\t\t\t\t'class':'image', \n\t\t\t\t\t\t'src':url,\n\t\t\t\t\t\t'onLoad': scrollRefresh\n\t\t\t\t\t});\n\t\t\t\t\tnewicon.replaces(icon);\n\t\t\t\t\ticon = newicon;\n\t\t\t\t}\n\t\t\t\telse if(type == 'photo') {\n\t\t\t\t\tnewicon = new Element('img', {\n\t\t\t\t\t\t'class':'image', \n\t\t\t\t\t\t'src':url,\n\t\t\t\t\t\t'onLoad': scrollRefresh\n\t\t\t\t\t});\n\t\t\t\t\tnewicon.replaces(icon);\n\t\t\t\t\ticon = newicon;\n\t\t\t\t}\n\t\t\t}.bind(this);\n\n\t\t\tvar failed = function() {\n\t\t\t\tthis.phone.history.disableRefresh = false;\n\t\t\t\tappbuilder.app.debug('navigator.screen.list', arguments);\n\t\t\t}.bind(this);\n\n\t\t\tif(!canCapture) {\n\t\t\t\tcapturebtn.destroy();\n\t\t\t}\n\t\t\telse {\n\t\t\t\tcapturebtn.addEvent('click', function() {\n\t\t\t\t\tappbuilder.app.decoy();\n\n\t\t\t\t\tif(type == 'photo') {\n\t\t\t\t\t\tthis.phone.history.disableRefresh = true;\n\t\t\t\t\t\tnavigator.device.capture.captureImage(captured, failed, {\n\t\t\t\t\t\t\tlimit: 1\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse if(type == 'video') {\n\t\t\t\t\t\tthis.phone.history.disableRefresh = true;\n\t\t\t\t\t\tnavigator.device.capture.captureVideo(captured, failed, {\n\t\t\t\t\t\t\tlimit: 1\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse if(type == 'audio') {\n\t\t\t\t\t\tthis.phone.history.disableRefresh = true;\n\t\t\t\t\t\tnavigator.device.capture.captureAudio(captured, failed, {\n\t\t\t\t\t\t\tlimit: 1\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}.bind(this));\n\t\t\t}\n\t\t\tif(!canChoose) {\n\t\t\t\tchoosebtn.destroy();\n\t\t\t}\n\t\t\telse {\n\t\t\t\tchoosebtn.addEvent('click', function() {\n\t\t\t\t\tappbuilder.app.decoy();\n\n\t\t\t\t\tif(type == 'photo') {\n\t\t\t\t\t\tthis.phone.history.disableRefresh = true;\n\t\t\t\t\t\tnavigator.camera.getPicture(setURL, failed, {\n\t\t\t\t\t\t\tquality: 50,\n\t\t\t\t\t\t\tdestinationType: navigator.camera.DestinationType.FILE_URI,\n\t\t\t\t\t\t\tsourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY,\n mediaType: navigator.camera.MediaType.PICTURE,\n\t\t\t\t\t\t\tallowEdit: false\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse if(type == 'video') {\n\t\t\t\t\t\tthis.phone.history.disableRefresh = true;\n\t\t\t\t\t\tnavigator.camera.getPicture(setURL, failed, {\n\t\t\t\t\t\t\tquality: 50,\n\t\t\t\t\t\t\tdestinationType: navigator.camera.DestinationType.FILE_URI,\n\t\t\t\t\t\t\tsourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY,\n mediaType: navigator.camera.MediaType.VIDEO,\n\t\t\t\t\t\t\tallowEdit: true\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse if(type == 'audio') {\n\t\t\t\t\t\tthis.phone.history.disableRefresh = true;\n\t\t\t\t\t\tnavigator.camera.getPicture(setURL, failed, {\n\t\t\t\t\t\t\tquality: 50,\n\t\t\t\t\t\t\tdestinationType: navigator.camera.DestinationType.FILE_URI,\n\t\t\t\t\t\t\tsourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY,\n mediaType: navigator.camera.MediaType.ALLMEDIA,\n\t\t\t\t\t\t\tallowEdit: true\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}.bind(this));\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\ton.destroy();\n\t\t}\n\n\t}, this);\n\t\n\tscreen.getElements('.item.marker').each(function(markerEl) {\n\t\tappbuilder.app.debug('list', 'marker');\n\t\tvar lon = markerEl.get('data-longitude');\n\t\tvar lat = markerEl.get('data-latitude');\n\t\tvar width = (markerEl.getSize().x - 20);\n\t\tvar height = 100;\n\t\tnew Element('img', {\n\t\t\tsrc: 'https://maps.googleapis.com/maps/api/staticmap?sensor=false&zoom=13¢er=' + lat + ',' + lon + '&size=' + width + 'x' + height + '&markers=' + lat + ',' + lon,\n\t\t\twidth: width,\n\t\t\theight: height\n\t\t}).inject(markerEl);\n\t}, this);\n};\n","appbuilder.app.Navigator.screenSetups = appbuilder.app.Navigator.screenSetups || {};\nappbuilder.app.Navigator.screenSetups.map = function(screen, html) {\n\n\tvar items = screen.getElement('.items'),\n\tmapHolder = appbuilder.app.makeElement('map-holder').inject(items),\n\tmapsLoading = new appbuilder.app.Loader(null, 'Loading Google Maps'),\n\thiddenItems = new Element('div', {\n\t\t'class':'hidden'\n\t}).inject(screen);\n\n\tdocument.id(mapsLoading).inject(items);\n\tmapsLoading.showLoading();\n\tvar data = JSON.decode(screen.getElement('script').get('html'), true);\n\t//The elements are put into a hidden element in the screen so that they get\n\t//picked up and made editable, they are not in the items element as it gets\n\t//cleared by 'new google.maps.Map' before they are made editable\n\tdata.each(function(point) {\n\t\tvar element = new Element('div').inject(hiddenItems);\n\t\telement.set('html', point.html);\n\t\telement.set('html', element.get('text'));\n\t\tpoint.element = element;\n\t});\n\tvar phone = this.phone;\n\n\tphone.navigator.moveAdsInToScreen(screen);\n\n\tappbuilder.map.include(function(loaded) {\n\t\tif(loaded) {\n\t\t\tappbuilder.app.debug('maps', 'load', 'loaded');\n\t\t\tmapsLoading.hideLoading();\n\t\t\tdocument.id(mapsLoading).destroy();\n\n\t\t\tvar map = L.map(mapHolder).setView([0, 0], 5);\n\t\t\tL.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {\n\t\t\t\t\tmaxZoom: 19\n\t\t\t}).addTo(map);\n\t\t\tmap.zoomControl.setPosition('topleft')\n\t\t\tvar bounds = L.latLngBounds();\n\t\t\tvar p;\n\t\t\tdata.each(function(point) {\n\t\t\t\tappbuilder.app.debug('maps', 'makePoint', point);\n\t\t\t\tp = L.latLng(point.latitude, point.longitude);\n var markerIcon = L.icon({\n iconUrl: appbuilder.app.mapMarker,\n iconSize: [31, 40], // size of the icon\n iconAnchor: [7,37], // point of the icon which will correspond to marker's location\n popupAnchor: [0, -42] // point from which the popup should open relative to the iconAnchor\n });\n\n var marker = L.marker([point.latitude, point.longitude], {icon: markerIcon}).addTo(map);\n\t\t\t\tmarker.bindPopup(point.element);\n\t\t\t\tmarker.on('click', function() {\n marker.openPopup();\n\t\t\t\t});\n\t\t\t\tbounds.extend(marker.getLatLng());\n\t\t\t});\n\n\n\t\t\tif(data.length == 0) {\n\t\t\t\tappbuilder.app.debug('maps', 'make', 'noPoints');\n\t\t\t\tmap.panTo(new L.LatLng(0, 0));\n\t\t\t\tmap.setZoom(0);\n\t\t\t}\n\t\t\telse if(data.length == 1) {\n\t\t\t\tappbuilder.app.debug('maps', 'make', 'onePoint');\n map.panTo(p);\n map.setZoom(parseInt(screen.get('data-zoom')) || 12);\n }\n\t\t\telse {\n\t\t\t\tmap.fitBounds(bounds);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tappbuilder.app.debug('maps', 'load', 'failed');\n\t\t\tmapsLoading.setMessage('Failed to load Google Maps');\n\t\t\tmapsLoading.hideLoadingAni();\n\t\t}\n\t});\n};\n","appbuilder = window.appbuilder || {};\nappbuilder.app = appbuilder.app || {};\nappbuilder.app.JSAPI = new Class({\n\tinitialize: function(phone) {\n\t\tthis.phone = phone;\n appbuilder.app.api = this;\n\t},\n\n\tisPhoneGap: appbuilder.app.isPhoneGap,\n\tisMobile: appbuilder.app.isMobile,\n\n\tshowApp: function(id) { //ACTION_APP\n\t\tappbuilder.app.debug('api', 'showApp', id);\n\t\tthis.phone.navigator.linktypes['app'].call(this.phone.navigator, \"\"+id);\n\t},\n\n\tshowTab: function(id) {//ACTION_TAB\n\t\tappbuilder.app.debug('api', 'showTab', id);\n\t\tthis.phone.navigator.linktypes['tab'].call(this.phone.navigator, \"\"+id);\n\t},\n\n\tshowScreen: function(id,animate) {//ACTION_SCREEN\n\t\tappbuilder.app.debug('api', 'showScreen', id);\n\t\tthis.phone.navigator.linktypes['screen'].call(this.phone.navigator, \"\"+id,animate);\n\t},\n showWeb: function(url, type) {//ACTION_WEB\n\t\tappbuilder.app.debug('api', 'showWeb', url);\n\t\tthis.phone.navigator.linktypes['web'].call(this.phone.navigator, url, type);\n\t},\n\n\tshowFile: function(url) {//ACTION_FILE, ACTION_VIDEO\n\t\tappbuilder.app.debug('api', \"showFile\", url);\n\t\tthis.phone.navigator.linktypes['file'].call(this.phone.navigator, url);\n\t},\n\n\tshowYoutube: function(url) {//ACTION_YOUTUBE\n\t\tappbuilder.app.debug('api', 'showYoutube', url);\n\t\tthis.phone.navigator.linktypes['youtube'].call(this.phone.navigator, url);\n\t},\n\n\tshowVimeo: function(url) {//ACTION_VIMEO\n\t\tappbuilder.app.debug('api', 'showVimeo', url);\n\t\tthis.phone.navigator.linktypes['vimeo'].call(this.phone.navigator, url);\n\t},\n\n\tshowTwitter: function(username) {//ACTION_TWITTER\n\t\tappbuilder.app.debug('api', 'showTwitter', username);\n\t\tthis.phone.navigator.linktypes['twitter'].call(this.phone.navigator, username);\n\t},\n\n\tshowFacebook: function(url) {//ACTION_FACEBOOK\n\t\tappbuilder.app.debug('api', 'showFacebook', url);\n\t\tthis.phone.navigator.linktypes['facebook'].call(this.phone.navigator, url);\n\t},\n\n\tshowBBM: function() {// ACTION_BBM\n\t\tappbuilder.app.debug('api', 'showBBM');\n\t\tthis.phone.navigator.linktypes['bbm'].call(this.phone.navigator);\n\t},\n\n\tplaySound: function(url) {//ACTION_SOUND\n\t\treturn appbuilder.app.sound.play(url);\n\t},\n\n\tstopSound: function(a) {\n\t\tappbuilder.app.sound.stop(a);\n\t},\n\n\tback: function() {//ACTION_BACK\n\t\tappbuilder.app.debug('api', 'back');\n\t\tthis.phone.navigator.linktypes['back'].call(this.phone.navigator);\n\t},\n\n showRemoteScreen: function(href, direct, animate, back, historyChange) {//ACTION_REMOTE_JSON, ACTION_EXTENSION, ACTION_RSS\n\n this.phone.navigator.checkVariables(href, function (href, postVars) {\n this.phone.fetchLive(direct ? 'direct' : 'remote', href, function (screenId, fetchObj) {\n this.phone.loader.hideLoading();\n if (screenId && fetchObj) {\n if (fetchObj.settings.maintype == 'app') {\n this.phone.history.clearHistory();\n this.phone.history.currentApp = screenId;\n this.phone.history.currentAppUrl = href;\n this.showApp(fetchObj.app[screenId], animate, null, screenId, true);\n }\n else {\n this.showScreen(fetchObj.screen[screenId], screenId, animate, back, historyChange);\n }\n }\n else if (screenId) {\n this.phone.fetch('screen', screenId, function (obj) {\n if (obj) {\n this.showScreen(obj, screenId, animate, back, historyChange);\n }\n else {\n appbuilder.app.alert('This screen is currently unavailable', this);\n this.postLink();\n }\n }.bind(this), screenId);\n }\n else {\n this.postLink();\n }\n }.bind(this), postVars);\n }.bind(this.phone.navigator), true);\n appbuilder.app.debug('api', 'showRemoteScreen', href);\n },\n\n tel: function(tel) {//ACTION_PHONE\n appbuilder.app.debug('api', 'phone', tel);\n var url = 'tel:'+tel;\n this.phone.navigator.linktypes['web'].call(this.phone.navigator, url, 'confirm');\n },\n\n email: function(to,subject, body) {//ACTION_EMAIL\n appbuilder.app.debug('api', 'email', to);\n var url = 'mailto:'+to+'?subject='+encodeURIComponent(subject)+'&body='+encodeURIComponent(body);\n this.phone.navigator.linktypes['web'].call(this.phone.navigator, url, 'confirm');\n },\n\n js: function(code,t) {//ACTION_CUSTOM_JAVASCRIPT\n appbuilder.app.debug('api', 'code', code);\n\n if (code) {\n try {\n new Function('app', code).call(t, appbuilder.app.api);\n }\n catch (e) {\n appbuilder.app.debug('navigator', 'Error with custom js action', e);\n }\n }\n\n },\n\n iot: function (name, value) {//ACTION_IOT\n appbuilder.app.debug('api', 'iot', name, value);\n if (window.appbuilder.events) {\n if (value === 'toggle') {\n window.appbuilder.events.iot.togglePinValue(name);\n } else {\n window.appbuilder.events.iot.setPin(name, value);\n }\n }\n },\n\n getVariable: function(name) {\n\t\tappbuilder.app.debug('api', 'getVariable', name);\n\t\tvar formField = this.phone.navigator.loadVar(name);\n\t\tif(formField) {\n\t\t\treturn formField.value;\n\t\t}\n\t\treturn null;\n\t},\n\n\tsetVariable: function(name, value,method,type) {\n\t\tappbuilder.app.debug('api', 'setVariable', name, value);\n\t\tthis.phone.navigator.saveVar(name, value,method,type);\n\t\tvar item = document.getElement('[data-variable='+name+']');\n\t\tif(item) {\n\t\t\titem.set('value', value);\n\t\t}\n\t},\n\n\taddTabEvent: function(id, func) {\n\t\tvar f = function(eid, tab) {\n\t\t\tif(id == eid) {\n\t\t\t\tappbuilder.app.debug('api', 'tabEvent', id);\n\t\t\t\ttry {\n\t\t\t\t\tfunc.call(tab, this);\n\t\t\t\t}\n\t\t\t\tcatch(e) {\n\t\t\t\t\tappbuilder.app.debug('api', 'Error with custom js on tab event', e);\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(this);\n\t\tthis.phone.addEvent('tab', f);\n\t\treturn f;\n\t},\n\n\tremoveTabEvent: function(identifier) {\n\t\tthis.phone.removeEvent('tab', identifier);\n\t},\n\n\taddScreenEvent: function(id, func) {\n\t\tvar f = function(eid, screen) {\n\t\t\tif(id == eid) {\n\t\t\t\tappbuilder.app.debug('api', 'screenEvent', id);\n\t\t\t\ttry {\n\t\t\t\t\tfunc.call(screen, this);\n\t\t\t\t}\n\t\t\t\tcatch(e) {\n\t\t\t\t\tappbuilder.app.debug('api', 'Error with custom js on screen event', e);\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(this);\n\t\tthis.phone.addEvent('screen', f);\n\t},\n\n\tremoveScreenEvent: function(identifier) {\n\t\tthis.phone.removeEvent('screen', identifier);\n\t},\n\n\taddVariableEvent: function(name, func) {\n\t\tvar f = function(eName, value) {\n\t\t\tif(name == eName) {\n\t\t\t\tappbuilder.app.debug('api', 'variableEvent', name);\n\t\t\t\ttry {\n\t\t\t\t\tfunc.call(window, value, this);\n\t\t\t\t}\n\t\t\t\tcatch(e) {\n\t\t\t\t\tappbuilder.app.debug('api', 'Error with custom js on variable event', e);\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(this);\n\t\tthis.phone.addEvent('varChange', f);\n\t\treturn f;\n\t},\n\n\tremoveVariableEvent: function(identifier) {\n\t\tthis.phone.removeEvent('varChange', identifier);\n\t},\n\n\trunOnce: function(id, func) {\n\t\tif(typeof id === 'function') {\n\t\t\tfunc = id;\n\t\t\tid = this.phone.history.currentApp;\n\t\t}\n\t\tif(!appbuilder.app.JSAPI.runonce[id]) {\n\t\t\tappbuilder.app.JSAPI.runonce[id] = true;\n\t\t\ttry {\n\t\t\t\tfunc.call(window, this);\n\t\t\t}\n\t\t\tcatch(e) {\n\t\t\t\tappbuilder.app.debug('api', 'Error with custom js on variable event', e);\n\t\t\t}\n\t\t}\n\t},\n\n getAppId: function(id) {\n return id;\n },\n\n getTabId: function(id) {\n return id;\n },\n\n getScreenId: function(id) {\n return id;\n },\n\n getItemId: function(id) {\n return id;\n },\n\n getCurrentAppId: function() {\n return appbuilder.app.current.history.currentApp;\n },\n\n getCurrentTabId: function() {\n return appbuilder.app.current.history.currentTabId;\n },\n\n getCurrentScreenId: function() {\n return appbuilder.app.current.history.currentScreenId;\n },\n\n closeConfirm:function(){\n var confirms = appbuilder.app.current.element.getElements('.confirm');\n if(confirms){\n confirms.destroy();\n }\n },\n\n /**\n *\n * @param variable\n * @param period how often to call this url\n * @param method equal, notequal, lessthan, greaterthan, lessthanorequalto, greaterthanorequalto\n * @param value the value to compare with\n * @param url\n * @param range the range of values to allow\n * @param callback\n * @returns {eventDescriptor} use this to remove the event\n */\n addApiEvent: function(variable, period, method, url, range, value, callback) {\n return this.phone.navigator.events.addEvent({\n type: 'url',\n variable: variable,\n url: url,\n period: period,\n method: method,\n value: value,\n range: range,\n callback: callback\n });\n },\n\n /**\n * @param eventDescriptor\n */\n removeEvent: function(eventDescriptor) {\n this.phone.navigator.events.removeEvent(eventDescriptor);\n },\n\n /**\n * @param variable\n * @param value\n * @param range\n * @param method\n * @param callback\n * @returns {eventDescriptor} use this to remove the event\n */\n addIotEvent: function (variable, value, range, method, callback) {\n return this.phone.navigator.events.addEvent({\n type: 'iot',\n variable: variable,\n value: value,\n range: range,\n method: method,\n callback: callback\n });\n },\n\n /**\n * @param callback\n * @returns {eventDescriptor} use this to remove the event\n */\n addShakeEvent: function (callback) {\n return this.phone.navigator.events.addEvent({\n type: 'shake',\n callback: callback\n });\n },\n\n /**\n *\n * @param value\n * @param range\n * @param callback\n * @returns {eventDescriptor}\n */\n addCompassEvent: function (value, range, callback) {\n return this.phone.navigator.events.addEvent({\n type: 'compass',\n value: value,\n range: range,\n callback: callback\n });\n },\n\n /**\n *\n * @param lat\n * @param lng\n * @param range\n * @param method\n * @param callback\n * @returns {eventDescriptor}\n */\n addLocationEvent: function (lat, lng, range, method, callback) {\n return this.phone.navigator.events.addEvent({\n type: 'location',\n lat: lat,\n lng: lng,\n range: range,\n method: method,\n callback: callback\n });\n },\n\n setPin: function (pinName, val) {\n window.appbuilder.events.iot.setPin(pinName, val);\n },\n\n getPinValue: function (pinName) {\n return window.appbuilder.events.iot.getPinValue(pinName);\n },\n\n togglePinValue: function (pinName) {\n window.appbuilder.events.iot.togglePinValue(pinName);\n },\n\n ajaxRequest: function (url, httpMethod, responseType, parameters, successCb, failCb) {\n var req,\n params = {\n url: url,\n data: parameters,\n method: httpMethod == 'jsonp' ? 'get' : httpMethod,\n onSuccess: function (response) {\n successCb(response)\n },\n onFailure: function () {\n failCb('Sorry, your request failed :(');\n }\n };\n\n if (httpMethod == 'jsonp') {\n req = new Request.JSONP(params);\n\n } else if (responseType == 'json') {\n req = new Request.JSON(params);\n }\n else {\n req = new Request(params);\n }\n\n req.send();\n }\n\n});\n","appbuilder = window.appbuilder || {};\nappbuilder.app = appbuilder.app || {};\n\nappbuilder.app.History = new Class({\n\thistory: [],\n\tdisableRefresh: false,\n\t\n\tinitialize: function(phone) {\n\t\tthis.phone = phone;\n\t\tif(this.phone.options.browserHistory) {\n\t\t\tthis.browserHistory = appbuilder.app.BrowserHistory;\n\t\t}\n\t\tif(this.browserHistory) {\n\t\t\tthis.browserHistory.register(this);\n\t\t}\n\t\tif(appbuilder.app.isPhoneGap && Browser.Platform.android) {\n\t\t\tdocument.addEventListener('backbutton', this.popHistory.bind(this), false);\n\t\t}\n\t\tif(phone.storage) {\n\t\t\tphone.storage.fetch('history', 0, function(history) {\n\t\t\t\tif(history) {\n\t\t\t\t\tthis.history = history;\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t}\n\t\tif(appbuilder.app.isPhoneGap) {\n\t\t\tvar resumeListener = function() {\n\t\t\t\t//used on android to disable when entering and coming back from camera\n\t\t\t\tif(!this.disableRefresh) {\n\t\t\t\t\t(function() {\n\t\t\t\t\t\t//no need to call update here as the navigator does it within linktype.app\n\t\t\t\t\t\t//this.phone.updateApp(id, function() {\n\t\t\t\t\t\t\tthis.refresh();\n\t\t\t\t\t\t//}.bind(this));\n\t\t\t\t\t}).delay(0, this);\n\t\t\t\t}\n\t\t\t\tthis.disableRefresh = false;\n\t\t\t}.bind(this);\n\t\t\t//mootools event for testing\n\t\t\t//document.addEvent('resume', resumeListener);\n\t\t\t//real phone gap event\n\t\t\tdocument.addEventListener('resume', resumeListener, false);\n\t\t}\n\t},\n\t\n\tpushHistory: function(state) {\n\t\tappbuilder.app.debug('history', 'push', state);\n\t\tthis.history.push(state);\n\t\tif(this.phone.storage) {\n\t\t\tthis.phone.storage.store('history', 0, this.history);\n\t\t}\n\t\tif(this.browserHistory) {\n\t\t\tthis.browserHistory.pushHistory(this, state);\n\t\t}\n\t},\n\t\n\tamendHistory: function(state) {\n\t\tappbuilder.app.debug('history', 'amend', state);\n\t\tif(this.history.length > 0) {\n\t\t\tObject.merge(this.history[this.history.length - 1], state);\n\t\t}\n\t\telse {\n\t\t\tthis.history.push(state);\n\t\t}\n\t\tif(this.phone.storage) {\n\t\t\tthis.phone.storage.store('history', 0, this.history);\n\t\t}\n\t\tif(this.browserHistory) {\n\t\t\tthis.browserHistory.amendHistory(this, state);\n\t\t}\n\t},\n\t\n\t/**\n\t * e is so that the event is ignored\n\t * href is from the screen element if it has a back-href specified\n\t */\n\tpopHistory: function(e, href) {\n\t\tappbuilder.app.debug('history', 'pop');\n\t\tif(this.hasHistory()) {\n\t\t\tif(this.browserHistory) {\n\t\t\t\tthis.browserHistory.popHistory(this, true);\n\t\t\t}\n\t\t\tthis.history.pop();\n\t\t\tif(this.phone.storage) {\n\t\t\t\tthis.phone.storage.store('history', 0, this.history);\n\t\t\t}\n\t\t\tthis.handleHistory(this.history[this.history.length - 1]);\n\t\t}\n\t\telse if(href) {\n\t\t\tthis.handleHistory({screen: href, app: this.currentApp});\n\t\t}else if(appbuilder.app.isPhoneGap){\n navigator.app.exitApp();\n }\n\t},\n\t\n\tcheckHistory: function() {\n\t\tif(this.browserHistory) {\n\t\t\treturn this.browserHistory.checkHistory(this);\n\t\t}\n\t\treturn false;\n\t},\n\t\n\thandleHistory: function(state, disableAnimation) {\n\t\tappbuilder.app.debug('history', 'handle', state);\n\t\tif(state && state.screen) {\n\t\t\tif(state.app != this.currentApp || state.appUrl != this.currentAppUrl) {\n\t\t\t\tthis.phone.navigator.linktypes.app.apply(this.phone.navigator, [state.app, !disableAnimation, function() {\n\t\t\t\t\tthis.phone.navigator.linktypes[state.linktype || 'screen'].apply(this.phone.navigator, [state.screen, false, false, this.hasHistory(), state.fetchId, state.fetchUrl, state.direct]);\n\t\t\t\t}.bind(this)], state.appUrl);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.phone.navigator.linktypes[state.linktype || 'screen'].apply(this.phone.navigator, [state.screen, !disableAnimation, true, true, state.fetchId, state.fetchUrl, state.direct]);\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\t\n\tclearHistory: function(appChange) {\n\t\tappbuilder.app.debug('history', 'clear');\n\t\tif(!appChange || !this.hasHistory() || this.history[this.history.length - 1].app != this.currentApp) {\n\t\t\tthis.history = [];\n\t\t\tif(this.phone.storage) {\n\t\t\t\tthis.phone.storage.store('history', 0, this.history);\n\t\t\t}\n\t\t}\n\t},\n\t\n\thasHistory: function(historyChange) {\n\t\treturn this.history.length > (historyChange ? 1 : 0);\n\t},\n\t\n\trefresh: function() {\n\t\tappbuilder.app.debug('history', 'refresh');\n\t\tif(this.hasHistory()) {\n\t\t\tthis.currentApp = null;\n\t\t\tthis.handleHistory(this.history[this.history.length - 1], true);\n\t\t}\n\t},\n\t\n\trefreshScreen: function() {\n\t\tif(this.hasHistory()) {\n\t\t\tthis.handleHistory(this.history[this.history.length - 1], true);\n\t\t}\n\t},\n\t\n\tcurrentScreen: function() {\n\t\tif(this.hasHistory()) {\n\t\t\treturn this.history[this.history.length - 1].screen;\n\t\t}\n\t\treturn null;\n\t}\n});\n\nappbuilder.app.BrowserHistory = {\n\tregistered: false,\n\thistoryIgnore: false,\n\thandler: null,\n\n\tregister: function(h) {\n\t\tif(!this.registered && !this.handler) {\n\t\t\tappbuilder.app.debug('history', 'register');\n\t\t\twindow.addEvent('hashchange', this.handlePopHistory.bind(this));\n\t\t\tthis.registered = true;\n\t\t\tthis.handler = h;\n\t\t}\n\t},\n\n\tpushHistory: function(handler, state) {\n\t\tif(this.registered && this.handler == handler) {\n\t\t\tthis.historyIgnore = true;\n\t\t\twindow.location.hash = this.encodeHistoryHash(state);\n\t\t}\n\t},\n\n\tamendHistory: function(handler, state) {\n\t\tthis.pushHistory(handler, state);\n\t},\n\n\tpopHistory: function(handler, ignore) {\n\t\tif(this.registered && this.handler == handler) {\n\t\t\tthis.historyIgnore = ignore;\n\t\t\twindow.history.back();\n\t\t}\n\t},\n\n\tcheckHistory: function(handler) {\n\t\tif(this.registered && this.handler == handler) {\n\t\t\tvar state = this.decodeHistoryHash(window.location.hash);\n\t\t\tif(state.app) {\n\t\t\t\treturn this.handler.handleHistory(state, true);\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\n\tclearHistory: function(handler) {\n\t\tif(this.registered && this.handler == handler) {\n\t\t\tthis.historyIgnore = true;\n\t\t\twindow.location.hash = '';\n\t\t}\n\t},\n\n\tencodeHistoryHash: function(state) {\n\t\tvar hash = '#' + encodeURIComponent(state.app)\n\t\t\t\t + '/' + encodeURIComponent(state.screen);\n\t\tif(state.linktype || state.fetchId || state.fetchUrl || state.appUrl) {\n\t\t\thash += '/' + encodeURIComponent(state.linktype || 'screen')\n\t\t\t\t + '/' + encodeURIComponent(state.fetchId || '')\n\t\t\t\t + '/' + encodeURIComponent(state.fetchUrl || '')\n\t\t\t\t + '/' + encodeURIComponent(state.direct ? 'direct' : 'remote')\n\t\t\t\t + '/' + encodeURIComponent(state.appUrl || '')\n\t\t}\n\t\treturn hash;\n\t},\n\n\tdecodeHistoryHash: function(hash) {\n\t\tvar state = {};\n\t\tvar parts = window.location.hash.split('/');\n\t\tif(parts.length > 1 && parts[0].length > 1) {\n\t\t\tstate.app = decodeURIComponent(parts[0].substr(1));//remove #\n\t\t\tstate.screen = decodeURIComponent(parts[1]);\n\t\t\tif(parts.length > 5) {\n\t\t\t\tstate.linktype = decodeURIComponent(parts[2]);\n\t\t\t\tstate.fetchId = decodeURIComponent(parts[3]);\n\t\t\t\tstate.fetchUrl = decodeURIComponent(parts[4]);\n\t\t\t\tstate.direct = decodeURIComponent(parts[5]) == 'direct';\n\t\t\t\tstate.appUrl = decodeURIComponent(parts[6]);\n\t\t\t}\n\t\t}\n\t\treturn state;\n\t},\n\n\thandlePopHistory: function() {\n\t\tappbuilder.app.debug('history', 'change');\n\t\tif(!this.historyIgnore && this.handler) {\n\t\t\tvar state = this.decodeHistoryHash(window.location.hash);\n\t\t\tif(state.app) {\n\t\t\t\tthis.handler.handleHistory(state);\n\t\t\t}\n\t\t}\n\t\tthis.historyIgnore = false;\n\t}\n};\n\n/*\n---\ndescription: Added the onhashchange event\n\nlicense: MIT-style\n\nauthors: \n- sdf1981cgn\n- Greggory Hernandez\n\nrequires: \n- core/1.2.4: '*'\n\nprovides: [Element.Events.hashchange]\n\n...\n*/\nElement.Events.hashchange = {\n onAdd: function () {\n var hash = location.hash;\n\n var hashchange = function () {\n if (hash == location.hash) return;\n else hash = location.hash;\n\n var value = (hash.indexOf('#') == 0 ? hash.substr(1) : hash);\n window.fireEvent('hashchange', value);\n document.fireEvent('hashchange', value);\n };\n\n if ((\"onhashchange\" in window) && ((document.documentMode != 5) && (document.documentMode != 7))) {\n window.onhashchange = hashchange;\n }\n else {\n hashchange.periodical(50);\n }\n }\n};\n","appbuilder = window.appbuilder || {};\nappbuilder.app = appbuilder.app || {};\nappbuilder.app.Loader = new Class({\n\t\n\tinitialize: function(phone, message) {\n\t\tthis.phone = phone;\n\t\tthis.message = message || 'Loading...';\n\t},\n\t\n\ttoElement: function() {\n\t\tif(!this.element) {\n\t\t\tthis.element = appbuilder.app.makeElement('loader');\n\t\t\tvar inner = appbuilder.app.makeElement('inner').inject(this.element);\n\t\t\tthis.messageEl = appbuilder.app.makeElement('text', {text: this.message}).inject(inner);\n\t\t\t//this.loadingAni = appbuilder.app.makeElement('loading-ani').inject(inner);\n\t\t\tthis.loadingAni = appbuilder.app.spinner().inject(inner);\n\t\t\tthis.hideLoading();\n\t\t}\n\t\treturn this.element;\n\t},\n\t\n\tsetMessage: function(message) {\n\t\tthis.message = message;\n\t\tif(this.messageEl) {\n\t\t\tthis.messageEl.set('text', message);\n\t\t}\n\t},\n\t\n\tshowTimeout: false,\n\t\n\tshowLoading: function() {\n\t\tthis.showTimeout = (function() {\n\t\t\tdocument.id(this);\n\t\t\tthis.element.setStyle('display', 'block');\n\t\t\tthis.showTimeout = false;\n\t\t}).delay(100, this);\n\t},\n\t\n\thideLoading: function() {\n\t\tif(this.showTimeout) {\n\t\t\tclearTimeout(this.showTimeout);\n\t\t\tthis.showTimeout = false;\n\t\t}\n\t\tdocument.id(this);\n\t\tthis.element.setStyle('display', 'none');\n\t},\n\t\n\tshowLoadingAni: function() {\n\t\tthis.loadingAni.setStyle('display', 'block');\n\t},\n\t\n\thideLoadingAni: function() {\n\t\tthis.loadingAni.setStyle('display', 'none');\n\t},\n\t\n\tfetch: function(type, id, cb, update, fetchId, postVars) {\n\t\tvar fetchedType = type == 'direct' ? 'remote' : type,\n\t\t\tloaded = function(obj) {\n\t\t\t\tif(obj[fetchedType] && obj[fetchedType][id]) {\n\t\t\t\t\tappbuilder.app.debug('loader', 'fetched', 'loaded');\n\t\t\t\t\tthis.phone.loaded(obj);\n\t\t\t\t\tcb(obj[fetchedType][id], obj);\n\t\t\t\t}\n\t\t\t\telse if(!update) {\n\t\t\t\t\tappbuilder.app.error('loader', 'fetched', 'incorrect');\n\t\t\t\t\terror('Incorrect data fetched');\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tappbuilder.app.debug('loader', 'fetched', 'nothing');\n\t\t\t\t\tcb(false);\n\t\t\t\t}\n\t\t\t}.bind(this),\n\t\t\terror = function(msg) {\n\t\t\t\tappbuilder.app.error('loader', 'Fetch Error: ' + msg + ' type:' + type + ' id:' + id);\n\t\t\t\tcb(false);\n\t\t\t\tcb = function() {};//prevent second call, eg timeout then error\n\t\t\t};\n\t\tappbuilder.app.debug('loader', 'fetch', type, id);\n\t\tthis.request(type, fetchId || id, update, loaded, error, postVars);\n\t},\n\t\n\trequest: function(type, id, update, loaded, error, postVars, timeout) {\n\t\tvar first = true, requestKey, request, r;\n\t\terror = error || function() {};\n\t\tif(appbuilder.app.isPhoneGap && postVars && postVars.length > 0) {\n\t\t\tpostVars.each(function(inp) {\n\t\t\t\tvar uri, data, options = new FileUploadOptions();\n\t\t\t\toptions.fileKey = inp.name;\n\t\t\t\toptions.fileName = inp.value.substr(inp.value.lastIndexOf('/')+1);\n\t\t\t\toptions.mimeType = inp.mimeType;\n\t\t\t\toptions.param = {};\n\n\t\t\t\tif(type == 'direct') {\n\t\t\t\t\turi = new URI(id);\n\t\t\t\t\tdata = uri.getData();\n\t\t\t\t\tObject.merge({\n\t\t\t\t\t\tfetchURL: id\n\t\t\t\t\t}, data, appbuilder.app.info);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\turi = new URI(this.phone.options.request.url);\n\t\t\t\t\tdata = uri.getData();\n\t\t\t\t\tObject.merge(data, appbuilder.app.info, this.phone.options.request.data, {\n\t\t\t\t\t\ttype: type,\n\t\t\t\t\t\tid: id,\n\t\t\t\t\t\tlastupdate: update\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\turi.setData(data);\n\n\t\t\t\tvar ft = new FileTransfer();\n\t\t\t\tft.upload(inp.value, uri.toString(), function(res) {\n\t\t\t\t\tif(first) {\n\t\t\t\t\t\tfirst = false;\n\t\t\t\t\t\tif(res && res.response) {\n\t\t\t\t\t\t\tloaded(JSON.decode.attempt(decodeURIComponent(response), true));\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\terror('file transfer error');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, function() {\n\t\t\t\t\tif(first) {\n\t\t\t\t\t\tfirst = false;\n\t\t\t\t\t\terror('file transfer error');\n\t\t\t\t\t}\n\t\t\t\t}, options);\n\t\t\t}, this);\n\t\t}\n\t\telse {\n\t\t\trequestKey = type.toString() + id.toString(),\n\t\t\tr = this.getRequestQueue().requests[requestKey];\n\n\t\t\tif (r && r.running) {\n\t\t\t\tr.addEvent('onSuccess', loaded);\n\t\t\t\tr.addEvent('onFailure', function() {error('Connection Failure');});\n\t\t\t\tr.addEvent('onTimeout', function() {error('Timeout');});\n\t\t\t}\n\t\t\telse {//Otherwise make a new one\n\t\t\t\trequest = new (appbuilder.app.hasCORS ? Request.JSON : Request.JSONP)(Object.merge(type == 'direct' ? {\n\t\t\t\t\turl: id,\n\t\t\t\t\tdata: Object.merge({\n\t\t\t\t\t\tfetchURL: id\n\t\t\t\t\t}, appbuilder.app.info)\n\t\t\t\t} : {\n\t\t\t\t\turl: this.phone.options.request.url,\n\t\t\t\t\tdata: Object.merge({}, appbuilder.app.info, this.phone.options.request.data, {\n\t\t\t\t\t\ttype: type,\n\t\t\t\t\t\tid: id,\n\t\t\t\t\t\tlastupdate: update\n\t\t\t\t\t}, (appbuilder.app.hasCORS ? {} : {\n rand: (new Date()).getTime()\n }))\n\t\t\t\t}, {\n\t\t\t\t\tmethod: this.phone.options.request.method,\n\t\t\t\t\tnoCache : true,\n\t\t\t\t\ttimeout: timeout || this.phone.options.request.timeout,\n\t\t\t\t\tonSuccess: loaded,\n\t\t\t\t\tonFailure: function() {error('Connection Failure');},\n\t\t\t\t\tonTimeout: function() {error('Timeout');}\n\t\t\t\t}));\n\t\t\t\tthis.getRequestQueue().addRequest(requestKey, request);\n\t\t\t\trequest.send();\n\t\t\t}\n\t\t}\n\t},\n\t\n\tgetRequestQueue : function() {\n\t\tif(!this.requestQueue) {\n\t\t\tthis.requestQueue = new Request.Queue({\n\t\t\t\tconcurrent : this.phone.options.request.concurrent,\n\t\t\t\tstopOnFailure : false\n\t\t\t});\n\t\t}\n\t\treturn this.requestQueue;\n\t}\n}, 'Loader');\n","appbuilder = window.appbuilder || {};\nappbuilder.app = appbuilder.app || {};\n\nappbuilder.app.FileLoader = {\n\tdelay: false,\n\tcb: false,\n\t\n\tfetch: function(type, id, cb, fetchId, phone) {\n\t\tappbuilder.app.debug('fileLoader', 'fetch', type, id);\n\t\tthis.cb = cb;\n\t\tthis.type = type;\n\t\tthis.id = id;\n\t\tthis.phone = phone;\n\t\tif(type == 'remote') {\n\t\t\tid = SHA1(id);\n\t\t}\n\t\tthis.scriptEl = new Element('script', {\n\t\t\tsrc: (fetchId || id) + '.' + type + '.js',\n\t\t\ttype: 'text/javascript',\n\t\t\tasync: true,\n\t\t\tonError: this.failed.bind(this)\n\t\t});\n\t\tthis.scriptEl.inject(document.id(document.body));\n\t\tthis.delay = this.failed.delay(500, this);\n\t},\n\t\n\tfetched: function(obj) {\n\t\tappbuilder.app.debug('fileLoader', 'fetched');\n\t\tif(this.delay) {\n\t\t\tclearTimeout(this.delay);\n\t\t}\n\t\tthis.delay = false;\n\t\tthis.scriptEl.destroy();\n\t\t\n\t\tif(obj && obj[this.type] && obj[this.type][this.id]) {\n\t\t\tif(this.phone) {\n\t\t\t\tthis.phone.loaded(obj, false, true);\n\t\t\t}\n\t\t\tthis.cb(obj[this.type][this.id], obj);\n\t\t}\n\t\telse {\n\t\t\tappbuilder.app.debug('fileloader', 'wrong data', obj);\n\t\t\tthis.cb(false);\n\t\t}\n\t},\n\t\n\tfailed: function() {\n\t\tappbuilder.app.debug('fileLoader', 'failed');\n\t\tif(this.delay) {\n\t\t\tclearTimeout(this.delay);\n\t\t}\n\t\tthis.delay = false;\n\t\tthis.scriptEl.destroy();\n\t\tthis.cb(false);\n\t}\n};\n","appbuilder = window.appbuilder || {};\nappbuilder.app = appbuilder.app || {};\n\nappbuilder.app.Storage = {\n\tdb: {},\n\tremotedbs: {},\n\t\n\tkeyStacks: {},\n\tkeyStackLimits: {\n\t\tapp: 5,\n\t\tscreen: 20,\n\t\timage: 100,\n\t\tremote: 5,\n inputs: 100\n\t},\n\t\n\tpushKey: function(type, key) {\n\t\tvar keyStack = this.keyStacks[type] || (this.keyStacks[type] = []);\n\n if (!keyStack.indexOf(key)) {\n keyStack.push(key);\n if (keyStack.length > (this.keyStackLimits[type] || 5)) {\n delete this.db[keyStack.shift()];\n }\n }\n\t},\n\t\n\tstore: function(type, id, value) {\n\t\tthis.internalStore(type, id, value);\n\t},\n\t\n\tinternalStore: function(type, id, value, db) {\n\t\tvar key = this.getKey(type, id);\n\t\tif(!db) {\n\t\t\tthis.pushKey(type, key);\n\t\t\tthis.db[key] = value;\n\t\t}\n\t\telse {\n\t\t\tdb[key] = value;\n\t\t}\n\t},\n\n\tfetch: function(type, id) {\n\t\tvar key = this.getKey(type, id);\n\t\tvar db = this.db;\n\t\tvar value = db[key];\n\t\tif(!value) {\n\t\t\tObject.some(this.remotedbs, function(rdb) {\n\t\t\t\tif(type == 'remote' && db.limit > 0 && new Date().getTime() > rdb.limit) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn Object.some(rdb, function(v, k) {\n\t\t\t\t\tif(k == key) {\n\t\t\t\t\t\tdb = rdb;\n\t\t\t\t\t\tvalue = v;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn value;\n\t},\n\t\n\tinternalFetch: function(type, id, db) {\n\t\tvar key = this.getKey(type, id);\n\t\treturn (db || this.db)[key];\n\t},\n\t\n\tclear: function() {\n\t\tthis.db = {};\n\t},\n\t\n\tstoreQueue: [],\n\t\n\tflush: function() {\n\t\tthis.storeQueue.each(function(f) {\n\t\t\tf();\n\t\t});\n\t\tthis.storeQueue = [];\n\t},\n\t\n\tstoreObj: function(obj, work) {\n\t\tif(!work) {\n\t\t\tthis.storeQueue.push(function() {this.storeObj(obj, true)}.bind(this));\n\t\t\treturn;\n\t\t}\n\t\tif(obj.remote) {\n\t\t\tvar key = obj.remote.url;\n\t\t\tvar keyStack = this.keyStacks.remote || (this.keyStacks.remote = []);\n\t\t\tkeyStack.push(key);\n\t\t\tif(keyStack.length > appbuilder.app.Storage.keyStackLimits.remote) {\n\t\t\t\tdelete this.remotedbs[keyStack.shift()];\n\t\t\t}\n\t\t\tthis.remotedbs[key] = {};\n\t\t\tif(obj.remote.refreshAfter > 0) {\n\t\t\t\tthis.remotedbs[key].limit = new Date().getTime() + (obj.remote.refreshAfter * 1000);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.remotedbs[key].limit = 0;\n\t\t\t}\n\t\t\tObject.each(obj, function(v, type) {\n\t\t\t\tif(type == 'app' || type == 'screen') {\n\t\t\t\t\tObject.each(v, function(value, id) {\n\t\t\t\t\t\tthis.internalStore(type, id, value, this.remotedbs[key]);\n\t\t\t\t\t}, this);\n\t\t\t\t}\n\t\t\t\telse if(type == 'remote' && (v.refreshAfter > 0 || v.refreshAfter == 'cache')) {\n\t\t\t\t\tObject.each(v, function(value, id) {\n\t\t\t\t\t\tthis.internalStore(type, id, value, this.remotedbs[key]);\n\t\t\t\t\t}, this);\n\t\t\t\t}\n\t\t\t}, this);\n\t\t}\n\t\telse {\n\t\t\tObject.each(obj, function(v, k) {\n\t\t\t\tif(k == 'app' || k == 'screen') {\n\t\t\t\t\tObject.each(v, function(value, id) {\n\t\t\t\t\t\tthis.internalStore(k, id, value);\n\t\t\t\t\t}, this);\n\t\t\t\t}\n\t\t\t\tif(k == 'searchdata') {\n\t\t\t\t\tObject.each(v, function(value, id) {\n\t\t\t\t\t\tthis.internalStore('searchdata', id,value);\n\t\t\t\t\t}, this);\n\t\t\t\t}\n\t\t\t}, this);\n\t\t}\n\t},\n\t\n\tgetKey: function(type, id) {\n\t\treturn type + '_' + id;\n\t}\n};\n\n\n\nif(window.localStorage) {\n\tappbuilder.app.LocalStorage = {\n\t\tstore: function(type, id, value, cb) {\n\t\t\tvar ret;\n\t\t\tif(type == 'app' || type == 'screen') {\n\t\t\t\tret = this.storeAppScreen(type, id, value);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tret = this.internalStore(type, id, value);\n\t\t\t}\n\t\t\tcb && cb(ret);\n\t\t\treturn ret;\n\t\t},\n\t\t\n\t\tinternalStore: function(type, id, value, time) {\n\t\t\tlscache.set(this.getKey(type, id), value, time || -1);\n\t\t\treturn true;\n\t\t},\n\t\t\n\t\tfetch: function(type, id, cb) {\n\t\t\tvar value = this.internalFetch(type, id);\n\t\t\tif(value && (type == 'app' || type == 'screen')) {\n\t\t\t\tvalue = this.fetchAppScreen(value);\n\t\t\t}\n\t\t\tif(cb) {\n\t\t\t\tcb(value);\n\t\t\t}\n\t\t\treturn value;\n\t\t},\n\t\t\n\t\tclear: function() {\n\t\t\tlocalStorage.clear();\n\t\t},\n\n\t\t\n\t\tinternalFetch: function(type, id) {\n\t\t\tvar value = lscache.get(this.getKey(type, id));\n\t\t\treturn value;\n\t\t},\n\t\t\n\t\tstoreQueue: [],\n\t\n\t\tflush: function() {\n\t\t\tthis.storeQueue.each(function(f) {\n\t\t\t\tf();\n\t\t\t});\n\t\t\tthis.storeQueue = [];\n\t\t},\n\n\t\tstoreObj: function(obj, work) {\n\t\t\tif(!work) {\n\t\t\t\tthis.storeQueue.push(function() {this.storeObj(obj, true)}.bind(this));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tObject.each(obj, function(v, k) {\n\t\t\t\tif(k == 'app' || k == 'screen') {\n\t\t\t\t\tObject.each(v, function(value, id) {\n\t\t\t\t\t\tthis.storeAppScreen(k, id, value);\n\t\t\t\t\t}, this);\n\t\t\t\t}\n\t\t\t\telse if(k == 'remote' && v.refreshAfter > 0) {\n\t\t\t\t\tObject.each(v, function(value, id) {\n\t\t\t\t\t\tthis.internalStore(k, id, value, v.refreshAfter);\n\t\t\t\t\t}, this);\n\t\t\t\t}\n\t\t\t\telse if(k == 'searchdata') {\n\t\t\t\t\tObject.each(v, function(value, id) {\n\t\t\t\t\t\tthis.internalStore('searchdata', id,value);\n\t\t\t\t\t}, this);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}, this);\n\t\t},\n\t\t\n\t\tstoreAppScreen: function(type, id, obj, db) {\n\t\t\tvar objCopy = {};\n\t\t\tObject.each(obj, function(v, k) {\n\t\t\t\tobjCopy[k] = v;\n\t\t\t});\n\n\t\t\tvar pattern = /img([^>]+?)src=(\"|')(http.+?)\\2/g, pattern2 = /url\\((\"|'|)(http.+?)\\1\\)/g;\n\t\t\tvar handleUrl = function(url) {\n\t\t\t\tif(this.fetch('image', url)) {\n\t\t\t\t\treturn url;\n\t\t\t\t}\n\t\t\t\telse if(appbuilder.app.canGetImageData) {\n\t\t\t\t\tvar uri = new URI(url),\n\t\t\t\t\t\tname = uri.get('file');\n\t\t\t\t\tvar storeImg = function() {\n\t\t\t\t\t\tappbuilder.app.getImageDataURL(url, function(data) {\n\t\t\t\t\t\t\tif(data) {\n\t\t\t\t\t\t\t\tthis.internalStore('image', url, data, db);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}.bind(this));\n\t\t\t\t\t}.bind(this);\n\t\t\t\t\t//Phonegap export first checks to see if the image is locally available\n\t\t\t\t\tif((this.phone && this.phone.options.files) || appbuilder.app.isPhoneGap) {\n\t\t\t\t\t\tvar im = new Image();\n\t\t\t\t\t\tim.onload = function() {\n\t\t\t\t\t\t\tthis.internalStore('image', url, name, db);\n\t\t\t\t\t\t}.bind(this);\n\t\t\t\t\t\tim.onerror = im.onabort = function() {\n\t\t\t\t\t\t\tstoreImg();\n\t\t\t\t\t\t};\n\t\t\t\t\t\tim.src = name;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tstoreImg();\n\t\t\t\t\t}\n\t\t\t\t\treturn 'appbuilder:' + url;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}.bind(this);\n\n\t\t\tobjCopy.html = obj.html.replace(pattern, function(match, extra, quote, url) {\n\t\t\t\tvar rep = handleUrl(url);\n\t\t\t\tif(rep) {\n\t\t\t\t\treturn 'img' + extra + 'src=' + quote + rep + quote;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t}).replace(pattern2, function(match, quote, url) {\n\t\t\t\tvar rep = handleUrl(url);\n\t\t\t\tif(rep) {\n\t\t\t\t\treturn 'url(' + quote + rep + quote + ')';\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\tthis.internalStore(type, id, objCopy, db);\n\t\t},\n\n\t\tfetchAppScreen: function(obj, db) {\n\t\t\tvar objCopy = {};\n\t\t\tObject.each(obj, function(v, k) {\n\t\t\t\tobjCopy[k] = v;\n\t\t\t});\n\n\t\t\tvar pattern = /img([^>]+?)src=(\"|')appbuilder:(.+?)\\2/g, pattern2 = /url\\((\"|'|)appbuilder:(.+?)\\1\\)/g;\n\t\t\tobjCopy.html = objCopy.html.replace(pattern, function(match, extra, quote, name) {\n\t\t\t\tvar data = this.internalFetch('image', name, db);\n\t\t\t\treturn 'img' + extra + 'src=' + quote + (data || name) + quote;\n\t\t\t}.bind(this)).replace(pattern2, function(match, quote, name) {\n\t\t\t\tvar data = this.internalFetch('image', name, db);\n\t\t\t\treturn 'url(' + quote + (data || name) + quote + ')';\n\t\t\t}.bind(this));\n\n\t\t\treturn objCopy;\n\t\t}\n\t};\n\t\n\tappbuilder.app.LocalStorage.getKey = appbuilder.app.Storage.getKey;\n}\n","appbuilder = window.appbuilder || {};\nappbuilder.app = appbuilder.app || {};\n\nappbuilder.app.Events = new Class({\n appEvents: [],\n screenEvents: [],\n initialize: function (jsApi) {\n appbuilder.app.ActionHandler.init(jsApi);\n window.appbuilder.EventsList = {\n 'screen': this.screenEvents,\n 'app': this.appEvents\n }\n },\n appEvents: [],\n screenEvents: [],\n\n compare: function (actual, needed, method, range) {\n\n if (method == 'equal') { // =\n if (actual == needed || ( ((needed - range) <= actual) && (actual <= (needed + range)))) {\n return true;\n }\n }\n else if (method == 'notequal') { //!=\n if ((range && ((actual < (needed - range)) || ((needed + range) < actual ))) || (!range && (needed != actual))) {\n return true;\n }\n }\n else if (method == 'lessthan') { //<\n if (actual < needed) {\n return true;\n }\n }\n else if (method == 'greaterthan') { //>\n if (actual > needed) {\n return true;\n }\n }\n else if (method == 'lessthanorequalto') { //<=\n if (actual <= needed) {\n return true;\n }\n }\n else if (method == 'greaterthanorequalto') {\n if (actual >= needed) {\n return true;\n }\n }\n return false;\n },\n\n\n addEvent: function (event) {\n\n var cb = function (value) {\n\n if((event.type == 'location' || event.type == 'compass') && value) {\n if (event.callback) {\n event.callback();\n } else {\n appbuilder.app.ActionHandler.fireAction(event.action);\n }\n } else if (value && event.type == 'url' || event.type == 'api') {\n if (this.compare(value, event.value, event.method, event.range)) {\n if (event.callback) {\n event.callback();\n } else {\n appbuilder.app.ActionHandler.fireAction(event.action);\n }\n }\n } else if (event.type == 'iot') {\n if (this.compare(value, event.value, event.method, event.range)) {\n if (event.callback) {\n event.callback();\n } else {\n appbuilder.app.ActionHandler.fireAction(event.action);\n }\n }\n } else if (event.type == 'shake') {\n if (event.callback) {\n event.callback();\n } else {\n appbuilder.app.ActionHandler.fireAction(event.action);\n }\n }\n }.bind(this);\n\n if (event.type == 'url' || event.type == 'api') {\n appbuilder.events.api.addEvent(cb, event.url, event.variable, event.period);\n }\n else if (event.type == 'iot') {\n appbuilder.events.iot.addEvent(cb, event.variable, event.value, event.range);\n }\n else if (event.type == 'compass') {\n appbuilder.events.device.addCompassEvent(cb, event.value, event.range);\n }\n else if (event.type == 'shake') {\n appbuilder.events.device.addShakeEvent(cb);\n }\n else if (event.type == 'location') {\n appbuilder.events.device.addLocationEvent(cb, event.lat, event.lng ,event.method,event.value,event.range);\n }\n return {\n 'event': event,\n 'cb': cb\n };\n },\n\n removeEvent: function (eventDescriptor) {\n\n if (eventDescriptor.event.type == 'url' || eventDescriptor.event.type == 'api') {\n appbuilder.events.api.removeEvent(eventDescriptor.cb, eventDescriptor.event.url, eventDescriptor.event.variable, eventDescriptor.event.period);\n }\n else if (eventDescriptor.event.type == 'iot') {\n appbuilder.events.iot.removeEvent(eventDescriptor.cb, eventDescriptor.event.variable, eventDescriptor.event.value, eventDescriptor.event.range);\n }\n else if (eventDescriptor.event.type == 'compass') {\n appbuilder.events.device.removeCompassEvent(eventDescriptor.cb, eventDescriptor.event.value, eventDescriptor.event.range);\n }\n else if (eventDescriptor.event.type == 'shake') {\n appbuilder.events.device.removeShakeEvent(eventDescriptor.cb);\n }\n else if (eventDescriptor.event.type == 'location') {\n appbuilder.events.device.removeLocationEvent(eventDescriptor.cb, eventDescriptor.event.lat, eventDescriptor.event.lng, eventDescriptor.event.method, eventDescriptor.event.value, eventDescriptor.event.range);\n }\n },\n\n initAppEvents: function (events) {\n if (appbuilder.events && (appbuilder.events.device || appbuilder.events.api || appbuilder.events.iot) && events) {\n this.cleanEvents('app');\n console.log('init app events', events);\n //this.appEvents = [];\n events.each(function (event) {\n this.appEvents.push(this.addEvent(event));\n }.bind(this));\n }\n },\n\n initScreenEvents: function (events) {\n this.cleanEvents('screen');\n if (appbuilder.events && (appbuilder.events.device || appbuilder.events.api || appbuilder.events.iot) && events) {\n console.log('init screen events', events);\n //this.screenEvents = [];\n events.each(function (event) {\n this.screenEvents.push(this.addEvent(event));\n }.bind(this));\n }\n },\n\n cleanEvents: function (type) {\n if (type == 'app') {\n this.appEvents.each(function (event) {\n this.removeEvent(event);\n }.bind(this));\n this.appEvents.length = 0;\n } else {\n this.screenEvents.each(function (event) {\n this.removeEvent(event);\n }.bind(this));\n this.screenEvents.length = 0;\n }\n }\n\n\n});\n\n","appbuilder = window.appbuilder || {};\nappbuilder.app = appbuilder.app || {};\nappbuilder.app.ActionHandler = {\n\n init:function(jsApi){\n\n this.jsApi = jsApi;\n },\n\n\n fireAction: function (action) {\n\n\n if (action.linkType == 'screen') {\n this.jsApi.showScreen(action.screen);\n }\n else if (action.linkType == 'web') {\n this.jsApi.showWeb(action.href, action.webType);\n }\n else if (action.linkType == 'file') {\n this.jsApi.showFile(action.href);\n }\n else if (action.linkType == 'tab') {\n this.jsApi.showTab(action.tab);\n }\n else if (action.linkType == 'rss') {\n this.jsApi.showRemoteScreen(action.href,action.remoteDirect);\n }\n else if (action.linkType == 'youtube') {\n this.jsApi.showYoutube(action.href);\n }\n else if (action.linkType == 'phone') {\n this.jsApi.tel(action.phone);\n }\n else if (action.linkType == 'email') {\n this.jsApi.email(action.emailTo, action.emailSubject, action.emailBody);\n }\n else if (action.linkType == 'extension') {\n this.jsApi.showRemoteScreen(action.href,action.remoteDirect);\n }\n else if (action.linkType == 'remotexml') {\n this.jsApi.showRemoteScreen(action.href,action.remoteDirect);\n }\n else if (action.linkType == 'facebook') {\n this.jsApi.showFacebook(action.href);\n }\n else if (action.linkType == 'twitter') {\n this.jsApi.showTwitter(action.twitterUsername);\n }\n else if (action.linkType == 'back') {\n this.jsApi.back();\n }\n else if (action.linkType == 'code') {\n if(action.codeType=='js'){\n this.jsApi.js(action.js);\n }else{\n this.jsApi.js(action.blocklyJs);\n }\n }\n else if (action.linkType == 'bbm') {\n this.jsApi.bbm();\n }\n else if (action.linkType == 'sound') {\n this.jsApi.playSound(action.href);\n }\n else if (action.linkType == 'iot') {\n this.jsApi.iot(action.iotVariable, action.iotValue);\n }\n else if (action.linkType == 'video') {\n this.jsApi.showFile(action.href);\n }\n else if (action.linkType == 'vimeo') {\n this.jsApi.showVimeo(action.href);\n }\n }\n\n}\n","appbuilder = window.appbuilder || {};\nappbuilder.app = appbuilder.app || {};\nappbuilder.app.sound = (function() {\n\t/* Dection code thanks to Modernizr 2.6.2 (Custom Build) | MIT & BSD\n\t* Build: http://modernizr.com/download/#-audio\n\t*/\n\tvar support = function() {\n var elem = document.createElement('audio'),\n bool = false;\n\n try {\n if ( bool = !!elem.canPlayType ) {\n bool = new Boolean(bool);\n bool.ogg = elem.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/,'');\n bool.mp3 = elem.canPlayType('audio/mpeg;') .replace(/^no$/,'');\n\n bool.wav = elem.canPlayType('audio/wav; codecs=\"1\"') .replace(/^no$/,'');\n bool.m4a = ( elem.canPlayType('audio/x-m4a;') ||\n elem.canPlayType('audio/aac;')) .replace(/^no$/,'');\n }\n } catch(e) { }\n\n return bool;\n }();\n\tif(support) {\n\t\tvar audios = [];\n\t\treturn {\n\t\t\tsupport: support,\n\t\t\tplay: function(url) {\n\t\t\t\tvar a = new Audio(url);\n\t\t\t\taudios.push(a);\n\t\t\t\ta.addEventListener('ended', function() {\n\t\t\t\t\taudios.erase(a);\n\t\t\t\t});\n\t\t\t\ta.play();\n\t\t\t\treturn a;\n\t\t\t},\n\t\t\tstop: function(a) {\n\t\t\t\ta.pause();\n\t\t\t\ta.src = '';\n\t\t\t\taudios.erase(a);\n\t\t\t},\n\t\t\tstopAll: function() {\n\t\t\t\taudios.each(function(a) {\n\t\t\t\t\ta.pause();\n\t\t\t\t\ta.src = '';\n\t\t\t\t});\n\t\t\t\taudios = [];\n\t\t\t}\n\t\t};\n\t}\n\telse {\n\t\treturn {\n\t\t\tsupport: false,\n\t\t\tplay: function() {\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tstop: function() {},\n\t\t\tstopAll: function() {}\n\t\t};\n\t}\n})();\n","/* @preserve\n * Leaflet 1.4.0, a JS library for interactive maps. http://leafletjs.com\n * (c) 2010-2018 Vladimir Agafonkin, (c) 2010-2011 CloudMade\n */\n!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?i(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],i):i(t.L={})}(this,function(t){\"use strict\";function i(t){var i,e,n,o;for(e=1,n=arguments.length;e=0}function A(t,i,e,n){return\"touchstart\"===i?O(t,e,n):\"touchmove\"===i?W(t,e,n):\"touchend\"===i&&H(t,e,n),this}function I(t,i,e){var n=t[\"_leaflet_\"+i+e];return\"touchstart\"===i?t.removeEventListener(te,n,!1):\"touchmove\"===i?t.removeEventListener(ie,n,!1):\"touchend\"===i&&(t.removeEventListener(ee,n,!1),t.removeEventListener(ne,n,!1)),this}function O(t,i,n){var o=e(function(t){if(\"mouse\"!==t.pointerType&&t.MSPOINTER_TYPE_MOUSE&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE){if(!(oe.indexOf(t.target.tagName)<0))return;Pt(t)}j(t,i)});t[\"_leaflet_touchstart\"+n]=o,t.addEventListener(te,o,!1),re||(document.documentElement.addEventListener(te,R,!0),document.documentElement.addEventListener(ie,N,!0),document.documentElement.addEventListener(ee,D,!0),document.documentElement.addEventListener(ne,D,!0),re=!0)}function R(t){se[t.pointerId]=t,ae++}function N(t){se[t.pointerId]&&(se[t.pointerId]=t)}function D(t){delete se[t.pointerId],ae--}function j(t,i){t.touches=[];for(var e in se)t.touches.push(se[e]);t.changedTouches=[t],i(t)}function W(t,i,e){var n=function(t){(t.pointerType!==t.MSPOINTER_TYPE_MOUSE&&\"mouse\"!==t.pointerType||0!==t.buttons)&&j(t,i)};t[\"_leaflet_touchmove\"+e]=n,t.addEventListener(ie,n,!1)}function H(t,i,e){var n=function(t){j(t,i)};t[\"_leaflet_touchend\"+e]=n,t.addEventListener(ee,n,!1),t.addEventListener(ne,n,!1)}function F(t,i,e){function n(t){var i;if(Vi){if(!bi||\"mouse\"===t.pointerType)return;i=ae}else i=t.touches.length;if(!(i>1)){var e=Date.now(),n=e-(s||e);r=t.touches?t.touches[0]:t,a=n>0&&n<=h,s=e}}function o(t){if(a&&!r.cancelBubble){if(Vi){if(!bi||\"mouse\"===t.pointerType)return;var e,n,o={};for(n in r)e=r[n],o[n]=e&&e.bind?e.bind(r):e;r=o}r.type=\"dblclick\",i(r),s=null}}var s,r,a=!1,h=250;return t[le+he+e]=n,t[le+ue+e]=o,t[le+\"dblclick\"+e]=i,t.addEventListener(he,n,!1),t.addEventListener(ue,o,!1),t.addEventListener(\"dblclick\",i,!1),this}function U(t,i){var e=t[le+he+i],n=t[le+ue+i],o=t[le+\"dblclick\"+i];return t.removeEventListener(he,e,!1),t.removeEventListener(ue,n,!1),bi||t.removeEventListener(\"dblclick\",o,!1),this}function V(t){return\"string\"==typeof t?document.getElementById(t):t}function q(t,i){var e=t.style[i]||t.currentStyle&&t.currentStyle[i];if((!e||\"auto\"===e)&&document.defaultView){var n=document.defaultView.getComputedStyle(t,null);e=n?n[i]:null}return\"auto\"===e?null:e}function G(t,i,e){var n=document.createElement(t);return n.className=i||\"\",e&&e.appendChild(n),n}function K(t){var i=t.parentNode;i&&i.removeChild(t)}function Y(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function X(t){var i=t.parentNode;i&&i.lastChild!==t&&i.appendChild(t)}function J(t){var i=t.parentNode;i&&i.firstChild!==t&&i.insertBefore(t,i.firstChild)}function $(t,i){if(void 0!==t.classList)return t.classList.contains(i);var e=et(t);return e.length>0&&new RegExp(\"(^|\\\\s)\"+i+\"(\\\\s|$)\").test(e)}function Q(t,i){if(void 0!==t.classList)for(var e=u(i),n=0,o=e.length;n100&&n<500||t.target._simulatedClick&&!t._simulated?Lt(t):(ge=e,i(t))}function Zt(t,i){if(!i||!t.length)return t.slice();var e=i*i;return t=At(t,e),t=kt(t,e)}function Et(t,i,e){return Math.sqrt(Dt(t,i,e,!0))}function kt(t,i){var e=t.length,n=new(typeof Uint8Array!=void 0+\"\"?Uint8Array:Array)(e);n[0]=n[e-1]=1,Bt(t,n,i,0,e-1);var o,s=[];for(o=0;oh&&(s=r,h=a);h>e&&(i[s]=1,Bt(t,i,e,n,s),Bt(t,i,e,s,o))}function At(t,i){for(var e=[t[0]],n=1,o=0,s=t.length;ni&&(e.push(t[n]),o=n);return oi.max.x&&(e|=2),t.yi.max.y&&(e|=8),e}function Nt(t,i){var e=i.x-t.x,n=i.y-t.y;return e*e+n*n}function Dt(t,i,e,n){var o,s=i.x,r=i.y,a=e.x-s,h=e.y-r,u=a*a+h*h;return u>0&&((o=((t.x-s)*a+(t.y-r)*h)/u)>1?(s=e.x,r=e.y):o>0&&(s+=a*o,r+=h*o)),a=t.x-s,h=t.y-r,n?a*a+h*h:new x(s,r)}function jt(t){return!oi(t[0])||\"object\"!=typeof t[0][0]&&void 0!==t[0][0]}function Wt(t){return console.warn(\"Deprecated use of _flat, please use L.LineUtil.isFlat instead.\"),jt(t)}function Ht(t,i,e){var n,o,s,r,a,h,u,l,c,_=[1,4,2,8];for(o=0,u=t.length;o0?Math.floor(t):Math.ceil(t)};x.prototype={clone:function(){return new x(this.x,this.y)},add:function(t){return this.clone()._add(w(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(w(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},scaleBy:function(t){return new x(this.x*t.x,this.y*t.y)},unscaleBy:function(t){return new x(this.x/t.x,this.y/t.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=_i(this.x),this.y=_i(this.y),this},distanceTo:function(t){var i=(t=w(t)).x-this.x,e=t.y-this.y;return Math.sqrt(i*i+e*e)},equals:function(t){return(t=w(t)).x===this.x&&t.y===this.y},contains:function(t){return t=w(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return\"Point(\"+a(this.x)+\", \"+a(this.y)+\")\"}},P.prototype={extend:function(t){return t=w(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new x((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new x(this.min.x,this.max.y)},getTopRight:function(){return new x(this.max.x,this.min.y)},getTopLeft:function(){return this.min},getBottomRight:function(){return this.max},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var i,e;return(t=\"number\"==typeof t[0]||t instanceof x?w(t):b(t))instanceof P?(i=t.min,e=t.max):i=e=t,i.x>=this.min.x&&e.x<=this.max.x&&i.y>=this.min.y&&e.y<=this.max.y},intersects:function(t){t=b(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>=i.x&&n.x<=e.x,r=o.y>=i.y&&n.y<=e.y;return s&&r},overlaps:function(t){t=b(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>i.x&&n.xi.y&&n.y=n.lat&&e.lat<=o.lat&&i.lng>=n.lng&&e.lng<=o.lng},intersects:function(t){t=z(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>=i.lat&&n.lat<=e.lat,r=o.lng>=i.lng&&n.lng<=e.lng;return s&&r},overlaps:function(t){t=z(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>i.lat&&n.lati.lng&&n.lng1,Xi=!!document.createElement(\"canvas\").getContext,Ji=!(!document.createElementNS||!E(\"svg\").createSVGRect),$i=!Ji&&function(){try{var t=document.createElement(\"div\");t.innerHTML='';var i=t.firstChild;return i.style.behavior=\"url(#default#VML)\",i&&\"object\"==typeof i.adj}catch(t){return!1}}(),Qi=(Object.freeze||Object)({ie:Pi,ielt9:Li,edge:bi,webkit:Ti,android:zi,android23:Mi,androidStock:Si,opera:Zi,chrome:Ei,gecko:ki,safari:Bi,phantom:Ai,opera12:Ii,win:Oi,ie3d:Ri,webkit3d:Ni,gecko3d:Di,any3d:ji,mobile:Wi,mobileWebkit:Hi,mobileWebkit3d:Fi,msPointer:Ui,pointer:Vi,touch:qi,mobileOpera:Gi,mobileGecko:Ki,retina:Yi,canvas:Xi,svg:Ji,vml:$i}),te=Ui?\"MSPointerDown\":\"pointerdown\",ie=Ui?\"MSPointerMove\":\"pointermove\",ee=Ui?\"MSPointerUp\":\"pointerup\",ne=Ui?\"MSPointerCancel\":\"pointercancel\",oe=[\"INPUT\",\"SELECT\",\"OPTION\"],se={},re=!1,ae=0,he=Ui?\"MSPointerDown\":Vi?\"pointerdown\":\"touchstart\",ue=Ui?\"MSPointerUp\":Vi?\"pointerup\":\"touchend\",le=\"_leaflet_\",ce=st([\"transform\",\"webkitTransform\",\"OTransform\",\"MozTransform\",\"msTransform\"]),_e=st([\"webkitTransition\",\"transition\",\"OTransition\",\"MozTransition\",\"msTransition\"]),de=\"webkitTransition\"===_e||\"OTransition\"===_e?_e+\"End\":\"transitionend\";if(\"onselectstart\"in document)fi=function(){mt(window,\"selectstart\",Pt)},gi=function(){ft(window,\"selectstart\",Pt)};else{var pe=st([\"userSelect\",\"WebkitUserSelect\",\"OUserSelect\",\"MozUserSelect\",\"msUserSelect\"]);fi=function(){if(pe){var t=document.documentElement.style;vi=t[pe],t[pe]=\"none\"}},gi=function(){pe&&(document.documentElement.style[pe]=vi,vi=void 0)}}var me,fe,ge,ve=(Object.freeze||Object)({TRANSFORM:ce,TRANSITION:_e,TRANSITION_END:de,get:V,getStyle:q,create:G,remove:K,empty:Y,toFront:X,toBack:J,hasClass:$,addClass:Q,removeClass:tt,setClass:it,getClass:et,setOpacity:nt,testProp:st,setTransform:rt,setPosition:at,getPosition:ht,disableTextSelection:fi,enableTextSelection:gi,disableImageDrag:ut,enableImageDrag:lt,preventOutline:ct,restoreOutline:_t,getSizedParentNode:dt,getScale:pt}),ye=\"_leaflet_events\",xe=Oi&&Ei?2*window.devicePixelRatio:ki?window.devicePixelRatio:1,we={},Pe=(Object.freeze||Object)({on:mt,off:ft,stopPropagation:yt,disableScrollPropagation:xt,disableClickPropagation:wt,preventDefault:Pt,stop:Lt,getMousePosition:bt,getWheelDelta:Tt,fakeStop:zt,skipped:Mt,isExternalTarget:Ct,addListener:mt,removeListener:ft}),Le=ci.extend({run:function(t,i,e,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=e||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=ht(t),this._offset=i.subtract(this._startPos),this._startTime=+new Date,this.fire(\"start\"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=f(this._animate,this),this._step()},_step:function(t){var i=+new Date-this._startTime,e=1e3*this._duration;ithis.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,i){this._enforcingBounds=!0;var e=this.getCenter(),n=this._limitCenter(e,this._zoom,z(t));return e.equals(n)||this.panTo(n,i),this._enforcingBounds=!1,this},panInside:function(t,i){var e=w((i=i||{}).paddingTopLeft||i.padding||[0,0]),n=w(i.paddingBottomRight||i.padding||[0,0]),o=this.getCenter(),s=this.project(o),r=this.project(t),a=this.getPixelBounds(),h=a.getSize().divideBy(2),u=b([a.min.add(e),a.max.subtract(n)]);if(!u.contains(r)){this._enforcingBounds=!0;var l=s.subtract(r),c=w(r.x+l.x,r.y+l.y);(r.xu.max.x)&&(c.x=s.x-l.x,l.x>0?c.x+=h.x-e.x:c.x-=h.x-n.x),(r.yu.max.y)&&(c.y=s.y-l.y,l.y>0?c.y+=h.y-e.y:c.y-=h.y-n.y),this.panTo(this.unproject(c),i),this._enforcingBounds=!1}return this},invalidateSize:function(t){if(!this._loaded)return this;t=i({animate:!1,pan:!0},!0===t?{animate:!0}:t);var n=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var o=this.getSize(),s=n.divideBy(2).round(),r=o.divideBy(2).round(),a=s.subtract(r);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire(\"move\"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(e(this.fire,this,\"moveend\"),200)):this.fire(\"moveend\")),this.fire(\"resize\",{oldSize:n,newSize:o})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire(\"viewreset\"),this._stop()},locate:function(t){if(t=this._locateOptions=i({timeout:1e4,watch:!1},t),!(\"geolocation\"in navigator))return this._handleGeolocationError({code:0,message:\"Geolocation not supported.\"}),this;var n=e(this._handleGeolocationResponse,this),o=e(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(n,o,t):navigator.geolocation.getCurrentPosition(n,o,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var i=t.code,e=t.message||(1===i?\"permission denied\":2===i?\"position unavailable\":\"timeout\");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire(\"locationerror\",{code:i,message:\"Geolocation error: \"+e+\".\"})},_handleGeolocationResponse:function(t){var i=new M(t.coords.latitude,t.coords.longitude),e=i.toBounds(2*t.coords.accuracy),n=this._locateOptions;if(n.setView){var o=this.getBoundsZoom(e);this.setView(i,n.maxZoom?Math.min(o,n.maxZoom):o)}var s={latlng:i,bounds:e,timestamp:t.timestamp};for(var r in t.coords)\"number\"==typeof t.coords[r]&&(s[r]=t.coords[r]);this.fire(\"locationfound\",s)},addHandler:function(t,i){if(!i)return this;var e=this[t]=new i(this);return this._handlers.push(e),this.options[t]&&e.enable(),this},remove:function(){if(this._initEvents(!0),this._containerId!==this._container._leaflet_id)throw new Error(\"Map container is being reused by another instance\");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),K(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(g(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire(\"unload\");var t;for(t in this._layers)this._layers[t].remove();for(t in this._panes)K(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,i){var e=G(\"div\",\"leaflet-pane\"+(t?\" leaflet-\"+t.replace(\"Pane\",\"\")+\"-pane\":\"\"),i||this._mapPane);return t&&(this._panes[t]=e),e},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new T(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,i,e){t=z(t),e=w(e||[0,0]);var n=this.getZoom()||0,o=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),a=t.getSouthEast(),h=this.getSize().subtract(e),u=b(this.project(a,n),this.project(r,n)).getSize(),l=ji?this.options.zoomSnap:1,c=h.x/u.x,_=h.y/u.y,d=i?Math.max(c,_):Math.min(c,_);return n=this.getScaleZoom(d,n),l&&(n=Math.round(n/(l/100))*(l/100),n=i?Math.ceil(n/l)*l:Math.floor(n/l)*l),Math.max(o,Math.min(s,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new x(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,i){var e=this._getTopLeftPoint(t,i);return new P(e,e.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return\"string\"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,i){var e=this.options.crs;return i=void 0===i?this._zoom:i,e.scale(t)/e.scale(i)},getScaleZoom:function(t,i){var e=this.options.crs;i=void 0===i?this._zoom:i;var n=e.zoom(t*e.scale(i));return isNaN(n)?1/0:n},project:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.latLngToPoint(C(t),i)},unproject:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.pointToLatLng(w(t),i)},layerPointToLatLng:function(t){var i=w(t).add(this.getPixelOrigin());return this.unproject(i)},latLngToLayerPoint:function(t){return this.project(C(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(C(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(z(t))},distance:function(t,i){return this.options.crs.distance(C(t),C(i))},containerPointToLayerPoint:function(t){return w(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return w(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var i=this.containerPointToLayerPoint(w(t));return this.layerPointToLatLng(i)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(C(t)))},mouseEventToContainerPoint:function(t){return bt(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var i=this._container=V(t);if(!i)throw new Error(\"Map container not found.\");if(i._leaflet_id)throw new Error(\"Map container is already initialized.\");mt(i,\"scroll\",this._onScroll,this),this._containerId=n(i)},_initLayout:function(){var t=this._container;this._fadeAnimated=this.options.fadeAnimation&&ji,Q(t,\"leaflet-container\"+(qi?\" leaflet-touch\":\"\")+(Yi?\" leaflet-retina\":\"\")+(Li?\" leaflet-oldie\":\"\")+(Bi?\" leaflet-safari\":\"\")+(this._fadeAnimated?\" leaflet-fade-anim\":\"\"));var i=q(t,\"position\");\"absolute\"!==i&&\"relative\"!==i&&\"fixed\"!==i&&(t.style.position=\"relative\"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane(\"mapPane\",this._container),at(this._mapPane,new x(0,0)),this.createPane(\"tilePane\"),this.createPane(\"shadowPane\"),this.createPane(\"overlayPane\"),this.createPane(\"markerPane\"),this.createPane(\"tooltipPane\"),this.createPane(\"popupPane\"),this.options.markerZoomAnimation||(Q(t.markerPane,\"leaflet-zoom-hide\"),Q(t.shadowPane,\"leaflet-zoom-hide\"))},_resetView:function(t,i){at(this._mapPane,new x(0,0));var e=!this._loaded;this._loaded=!0,i=this._limitZoom(i),this.fire(\"viewprereset\");var n=this._zoom!==i;this._moveStart(n,!1)._move(t,i)._moveEnd(n),this.fire(\"viewreset\"),e&&this.fire(\"load\")},_moveStart:function(t,i){return t&&this.fire(\"zoomstart\"),i||this.fire(\"movestart\"),this},_move:function(t,i,e){void 0===i&&(i=this._zoom);var n=this._zoom!==i;return this._zoom=i,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),(n||e&&e.pinch)&&this.fire(\"zoom\",e),this.fire(\"move\",e)},_moveEnd:function(t){return t&&this.fire(\"zoomend\"),this.fire(\"moveend\")},_stop:function(){return g(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){at(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error(\"Set map center and zoom first.\")},_initEvents:function(t){this._targets={},this._targets[n(this._container)]=this;var i=t?ft:mt;i(this._container,\"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress\",this._handleDOMEvent,this),this.options.trackResize&&i(window,\"resize\",this._onResize,this),ji&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,\"moveend\",this._onMoveEnd)},_onResize:function(){g(this._resizeRequest),this._resizeRequest=f(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,i){for(var e,o=[],s=\"mouseout\"===i||\"mouseover\"===i,r=t.target||t.srcElement,a=!1;r;){if((e=this._targets[n(r)])&&(\"click\"===i||\"preclick\"===i)&&!t._simulated&&this._draggableMoved(e)){a=!0;break}if(e&&e.listens(i,!0)){if(s&&!Ct(r,t))break;if(o.push(e),s)break}if(r===this._container)break;r=r.parentNode}return o.length||a||s||!Ct(r,t)||(o=[this]),o},_handleDOMEvent:function(t){if(this._loaded&&!Mt(t)){var i=t.type;\"mousedown\"!==i&&\"keypress\"!==i||ct(t.target||t.srcElement),this._fireDOMEvent(t,i)}},_mouseEvents:[\"click\",\"dblclick\",\"mouseover\",\"mouseout\",\"contextmenu\"],_fireDOMEvent:function(t,e,n){if(\"click\"===t.type){var o=i({},t);o.type=\"preclick\",this._fireDOMEvent(o,o.type,n)}if(!t._stopped&&(n=(n||[]).concat(this._findEventTargets(t,e))).length){var s=n[0];\"contextmenu\"===e&&s.listens(e,!0)&&Pt(t);var r={originalEvent:t};if(\"keypress\"!==t.type){var a=s.getLatLng&&(!s._radius||s._radius<=10);r.containerPoint=a?this.latLngToContainerPoint(s.getLatLng()):this.mouseEventToContainerPoint(t),r.layerPoint=this.containerPointToLayerPoint(r.containerPoint),r.latlng=a?s.getLatLng():this.layerPointToLatLng(r.layerPoint)}for(var h=0;h0?Math.round(t-i)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(i))},_limitZoom:function(t){var i=this.getMinZoom(),e=this.getMaxZoom(),n=ji?this.options.zoomSnap:1;return n&&(t=Math.round(t/n)*n),Math.max(i,Math.min(e,t))},_onPanTransitionStep:function(){this.fire(\"move\")},_onPanTransitionEnd:function(){tt(this._mapPane,\"leaflet-pan-anim\"),this.fire(\"moveend\")},_tryAnimatedPan:function(t,i){var e=this._getCenterOffset(t)._trunc();return!(!0!==(i&&i.animate)&&!this.getSize().contains(e))&&(this.panBy(e,i),!0)},_createAnimProxy:function(){var t=this._proxy=G(\"div\",\"leaflet-proxy leaflet-zoom-animated\");this._panes.mapPane.appendChild(t),this.on(\"zoomanim\",function(t){var i=ce,e=this._proxy.style[i];rt(this._proxy,this.project(t.center,t.zoom),this.getZoomScale(t.zoom,1)),e===this._proxy.style[i]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on(\"load moveend\",function(){var t=this.getCenter(),i=this.getZoom();rt(this._proxy,this.project(t,i),this.getZoomScale(i,1))},this),this._on(\"unload\",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){K(this._proxy),delete this._proxy},_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf(\"transform\")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName(\"leaflet-zoom-animated\").length},_tryAnimatedZoom:function(t,i,e){if(this._animatingZoom)return!0;if(e=e||{},!this._zoomAnimated||!1===e.animate||this._nothingToAnimate()||Math.abs(i-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(i),o=this._getCenterOffset(t)._divideBy(1-1/n);return!(!0!==e.animate&&!this.getSize().contains(o))&&(f(function(){this._moveStart(!0,!1)._animateZoom(t,i,!0)},this),!0)},_animateZoom:function(t,i,n,o){this._mapPane&&(n&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=i,Q(this._mapPane,\"leaflet-zoom-anim\")),this.fire(\"zoomanim\",{center:t,zoom:i,noUpdate:o}),setTimeout(e(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&tt(this._mapPane,\"leaflet-zoom-anim\"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom),f(function(){this._moveEnd(!0)},this))}}),Te=v.extend({options:{position:\"topright\"},initialize:function(t){l(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var i=this._map;return i&&i.removeControl(this),this.options.position=t,i&&i.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var i=this._container=this.onAdd(t),e=this.getPosition(),n=t._controlCorners[e];return Q(i,\"leaflet-control\"),-1!==e.indexOf(\"bottom\")?n.insertBefore(i,n.firstChild):n.appendChild(i),this},remove:function(){return this._map?(K(this._container),this.onRemove&&this.onRemove(this._map),this._map=null,this):this},_refocusOnMap:function(t){this._map&&t&&t.screenX>0&&t.screenY>0&&this._map.getContainer().focus()}}),ze=function(t){return new Te(t)};be.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.remove(),this},_initControlPos:function(){function t(t,o){var s=e+t+\" \"+e+o;i[t+o]=G(\"div\",s,n)}var i=this._controlCorners={},e=\"leaflet-\",n=this._controlContainer=G(\"div\",e+\"control-container\",this._container);t(\"top\",\"left\"),t(\"top\",\"right\"),t(\"bottom\",\"left\"),t(\"bottom\",\"right\")},_clearControlPos:function(){for(var t in this._controlCorners)K(this._controlCorners[t]);K(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var Me=Te.extend({options:{collapsed:!0,position:\"topright\",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(t,i,e,n){return e1,this._baseLayersList.style.display=t?\"\":\"none\"),this._separator.style.display=i&&t?\"\":\"none\",this},_onLayerChange:function(t){this._handlingClick||this._update();var i=this._getLayer(n(t.target)),e=i.overlay?\"add\"===t.type?\"overlayadd\":\"overlayremove\":\"add\"===t.type?\"baselayerchange\":null;e&&this._map.fire(e,i)},_createRadioElement:function(t,i){var e='\",n=document.createElement(\"div\");return n.innerHTML=e,n.firstChild},_addItem:function(t){var i,e=document.createElement(\"label\"),o=this._map.hasLayer(t.layer);t.overlay?((i=document.createElement(\"input\")).type=\"checkbox\",i.className=\"leaflet-control-layers-selector\",i.defaultChecked=o):i=this._createRadioElement(\"leaflet-base-layers\",o),this._layerControlInputs.push(i),i.layerId=n(t.layer),mt(i,\"click\",this._onInputClick,this);var s=document.createElement(\"span\");s.innerHTML=\" \"+t.name;var r=document.createElement(\"div\");return e.appendChild(r),r.appendChild(i),r.appendChild(s),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(e),this._checkDisabledLayers(),e},_onInputClick:function(){var t,i,e=this._layerControlInputs,n=[],o=[];this._handlingClick=!0;for(var s=e.length-1;s>=0;s--)t=e[s],i=this._getLayer(t.layerId).layer,t.checked?n.push(i):t.checked||o.push(i);for(s=0;s=0;o--)t=e[o],i=this._getLayer(t.layerId).layer,t.disabled=void 0!==i.options.minZoom&&ni.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expand:function(){return this.expand()},_collapse:function(){return this.collapse()}}),Ce=Te.extend({options:{position:\"topleft\",zoomInText:\"+\",zoomInTitle:\"Zoom in\",zoomOutText:\"−\",zoomOutTitle:\"Zoom out\"},onAdd:function(t){var i=\"leaflet-control-zoom\",e=G(\"div\",i+\" leaflet-bar\"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,i+\"-in\",e,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,i+\"-out\",e,this._zoomOut),this._updateDisabled(),t.on(\"zoomend zoomlevelschange\",this._updateDisabled,this),e},onRemove:function(t){t.off(\"zoomend zoomlevelschange\",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoomthis._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,i,e,n,o){var s=G(\"a\",e,n);return s.innerHTML=t,s.href=\"#\",s.title=i,s.setAttribute(\"role\",\"button\"),s.setAttribute(\"aria-label\",i),wt(s),mt(s,\"click\",Lt),mt(s,\"click\",o,this),mt(s,\"click\",this._refocusOnMap,this),s},_updateDisabled:function(){var t=this._map,i=\"leaflet-disabled\";tt(this._zoomInButton,i),tt(this._zoomOutButton,i),(this._disabled||t._zoom===t.getMinZoom())&&Q(this._zoomOutButton,i),(this._disabled||t._zoom===t.getMaxZoom())&&Q(this._zoomInButton,i)}});be.mergeOptions({zoomControl:!0}),be.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new Ce,this.addControl(this.zoomControl))});var Se=Te.extend({options:{position:\"bottomleft\",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var i=G(\"div\",\"leaflet-control-scale\"),e=this.options;return this._addScales(e,\"leaflet-control-scale-line\",i),t.on(e.updateWhenIdle?\"moveend\":\"move\",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?\"moveend\":\"move\",this._update,this)},_addScales:function(t,i,e){t.metric&&(this._mScale=G(\"div\",i,e)),t.imperial&&(this._iScale=G(\"div\",i,e))},_update:function(){var t=this._map,i=t.getSize().y/2,e=t.distance(t.containerPointToLatLng([0,i]),t.containerPointToLatLng([this.options.maxWidth,i]));this._updateScales(e)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var i=this._getRoundNum(t),e=i<1e3?i+\" m\":i/1e3+\" km\";this._updateScale(this._mScale,e,i/t)},_updateImperial:function(t){var i,e,n,o=3.2808399*t;o>5280?(i=o/5280,e=this._getRoundNum(i),this._updateScale(this._iScale,e+\" mi\",e/i)):(n=this._getRoundNum(o),this._updateScale(this._iScale,n+\" ft\",n/o))},_updateScale:function(t,i,e){t.style.width=Math.round(this.options.maxWidth*e)+\"px\",t.innerHTML=i},_getRoundNum:function(t){var i=Math.pow(10,(Math.floor(t)+\"\").length-1),e=t/i;return e=e>=10?10:e>=5?5:e>=3?3:e>=2?2:1,i*e}}),Ze=Te.extend({options:{position:\"bottomright\",prefix:'Leaflet'},initialize:function(t){l(this,t),this._attributions={}},onAdd:function(t){t.attributionControl=this,this._container=G(\"div\",\"leaflet-control-attribution\"),wt(this._container);for(var i in t._layers)t._layers[i].getAttribution&&this.addAttribution(t._layers[i].getAttribution());return this._update(),this._container},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):this},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):this},_update:function(){if(this._map){var t=[];for(var i in this._attributions)this._attributions[i]&&t.push(i);var e=[];this.options.prefix&&e.push(this.options.prefix),t.length&&e.push(t.join(\", \")),this._container.innerHTML=e.join(\" | \")}}});be.mergeOptions({attributionControl:!0}),be.addInitHook(function(){this.options.attributionControl&&(new Ze).addTo(this)});Te.Layers=Me,Te.Zoom=Ce,Te.Scale=Se,Te.Attribution=Ze,ze.layers=function(t,i,e){return new Me(t,i,e)},ze.zoom=function(t){return new Ce(t)},ze.scale=function(t){return new Se(t)},ze.attribution=function(t){return new Ze(t)};var Ee=v.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled?this:(this._enabled=!0,this.addHooks(),this)},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});Ee.addTo=function(t,i){return t.addHandler(i,this),this};var ke,Be={Events:li},Ae=qi?\"touchstart mousedown\":\"mousedown\",Ie={mousedown:\"mouseup\",touchstart:\"touchend\",pointerdown:\"touchend\",MSPointerDown:\"touchend\"},Oe={mousedown:\"mousemove\",touchstart:\"touchmove\",pointerdown:\"touchmove\",MSPointerDown:\"touchmove\"},Re=ci.extend({options:{clickTolerance:3},initialize:function(t,i,e,n){l(this,n),this._element=t,this._dragStartTarget=i||t,this._preventOutline=e},enable:function(){this._enabled||(mt(this._dragStartTarget,Ae,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Re._dragging===this&&this.finishDrag(),ft(this._dragStartTarget,Ae,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){if(!t._simulated&&this._enabled&&(this._moved=!1,!$(this._element,\"leaflet-zoom-anim\")&&!(Re._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||(Re._dragging=this,this._preventOutline&&ct(this._element),ut(),fi(),this._moving)))){this.fire(\"down\");var i=t.touches?t.touches[0]:t,e=dt(this._element);this._startPoint=new x(i.clientX,i.clientY),this._parentScale=pt(e),mt(document,Oe[t.type],this._onMove,this),mt(document,Ie[t.type],this._onUp,this)}},_onMove:function(t){if(!t._simulated&&this._enabled)if(t.touches&&t.touches.length>1)this._moved=!0;else{var i=t.touches&&1===t.touches.length?t.touches[0]:t,e=new x(i.clientX,i.clientY)._subtract(this._startPoint);(e.x||e.y)&&(Math.abs(e.x)+Math.abs(e.y)1e-7;h++)i=s*Math.sin(a),i=Math.pow((1-i)/(1+i),s/2),a+=u=Math.PI/2-2*Math.atan(r*i)-a;return new M(a*e,t.x*e/n)}},He=(Object.freeze||Object)({LonLat:je,Mercator:We,SphericalMercator:mi}),Fe=i({},pi,{code:\"EPSG:3395\",projection:We,transformation:function(){var t=.5/(Math.PI*We.R);return Z(t,.5,-t,.5)}()}),Ue=i({},pi,{code:\"EPSG:4326\",projection:je,transformation:Z(1/180,1,-1/180,.5)}),Ve=i({},di,{projection:je,transformation:Z(1,0,-1,0),scale:function(t){return Math.pow(2,t)},zoom:function(t){return Math.log(t)/Math.LN2},distance:function(t,i){var e=i.lng-t.lng,n=i.lat-t.lat;return Math.sqrt(e*e+n*n)},infinite:!0});di.Earth=pi,di.EPSG3395=Fe,di.EPSG3857=yi,di.EPSG900913=xi,di.EPSG4326=Ue,di.Simple=Ve;var qe=ci.extend({options:{pane:\"overlayPane\",attribution:null,bubblingMouseEvents:!0},addTo:function(t){return t.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(t){return t&&t.removeLayer(this),this},getPane:function(t){return this._map.getPane(t?this.options[t]||t:this.options.pane)},addInteractiveTarget:function(t){return this._map._targets[n(t)]=this,this},removeInteractiveTarget:function(t){return delete this._map._targets[n(t)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(t){var i=t.target;if(i.hasLayer(this)){if(this._map=i,this._zoomAnimated=i._zoomAnimated,this.getEvents){var e=this.getEvents();i.on(e,this),this.once(\"remove\",function(){i.off(e,this)},this)}this.onAdd(i),this.getAttribution&&i.attributionControl&&i.attributionControl.addAttribution(this.getAttribution()),this.fire(\"add\"),i.fire(\"layeradd\",{layer:this})}}});be.include({addLayer:function(t){if(!t._layerAdd)throw new Error(\"The provided object is not a Layer.\");var i=n(t);return this._layers[i]?this:(this._layers[i]=t,t._mapToAdd=this,t.beforeAdd&&t.beforeAdd(this),this.whenReady(t._layerAdd,t),this)},removeLayer:function(t){var i=n(t);return this._layers[i]?(this._loaded&&t.onRemove(this),t.getAttribution&&this.attributionControl&&this.attributionControl.removeAttribution(t.getAttribution()),delete this._layers[i],this._loaded&&(this.fire(\"layerremove\",{layer:t}),t.fire(\"remove\")),t._map=t._mapToAdd=null,this):this},hasLayer:function(t){return!!t&&n(t)in this._layers},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},_addLayers:function(t){for(var i=0,e=(t=t?oi(t)?t:[t]:[]).length;ithis._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()i)return r=(n-i)/e,this._map.layerPointToLatLng([s.x-r*(s.x-o.x),s.y-r*(s.y-o.y)])},getBounds:function(){return this._bounds},addLatLng:function(t,i){return i=i||this._defaultShape(),t=C(t),i.push(t),this._bounds.extend(t),this.redraw()},_setLatLngs:function(t){this._bounds=new T,this._latlngs=this._convertLatLngs(t)},_defaultShape:function(){return jt(this._latlngs)?this._latlngs:this._latlngs[0]},_convertLatLngs:function(t){for(var i=[],e=jt(t),n=0,o=t.length;n=2&&i[0]instanceof M&&i[0].equals(i[e-1])&&i.pop(),i},_setLatLngs:function(t){nn.prototype._setLatLngs.call(this,t),jt(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return jt(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var t=this._renderer._bounds,i=this.options.weight,e=new x(i,i);if(t=new P(t.min.subtract(e),t.max.add(e)),this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else for(var n,o=0,s=this._rings.length;ot.y!=n.y>t.y&&t.x<(n.x-e.x)*(t.y-e.y)/(n.y-e.y)+e.x&&(u=!u);return u||nn.prototype._containsPoint.call(this,t,!0)}}),sn=Ke.extend({initialize:function(t,i){l(this,i),this._layers={},t&&this.addData(t)},addData:function(t){var i,e,n,o=oi(t)?t:t.features;if(o){for(i=0,e=o.length;i0?o:[i.src]}else{oi(this._url)||(this._url=[this._url]),i.autoplay=!!this.options.autoplay,i.loop=!!this.options.loop;for(var a=0;ao?(i.height=o+\"px\",Q(t,\"leaflet-popup-scrolled\")):tt(t,\"leaflet-popup-scrolled\"),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),e=this._getAnchor();at(this._container,i.add(e))},_adjustPan:function(){if(this.options.autoPan){this._map._panAnim&&this._map._panAnim.stop();var t=this._map,i=parseInt(q(this._container,\"marginBottom\"),10)||0,e=this._container.offsetHeight+i,n=this._containerWidth,o=new x(this._containerLeft,-e-this._containerBottom);o._add(ht(this._container));var s=t.layerPointToContainerPoint(o),r=w(this.options.autoPanPadding),a=w(this.options.autoPanPaddingTopLeft||r),h=w(this.options.autoPanPaddingBottomRight||r),u=t.getSize(),l=0,c=0;s.x+n+h.x>u.x&&(l=s.x+n-u.x+h.x),s.x-l-a.x<0&&(l=s.x-a.x),s.y+e+h.y>u.y&&(c=s.y+e-u.y+h.y),s.y-c-a.y<0&&(c=s.y-a.y),(l||c)&&t.fire(\"autopanstart\").panBy([l,c])}},_onCloseButtonClick:function(t){this._close(),Lt(t)},_getAnchor:function(){return w(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}});be.mergeOptions({closePopupOnClick:!0}),be.include({openPopup:function(t,i,e){return t instanceof cn||(t=new cn(e).setContent(t)),i&&t.setLatLng(i),this.hasLayer(t)?this:(this._popup&&this._popup.options.autoClose&&this.closePopup(),this._popup=t,this.addLayer(t))},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&this.removeLayer(t),this}}),qe.include({bindPopup:function(t,i){return t instanceof cn?(l(t,i),this._popup=t,t._source=this):(this._popup&&!i||(this._popup=new cn(i,this)),this._popup.setContent(t)),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t,i){if(t instanceof qe||(i=t,t=this),t instanceof Ke)for(var e in this._layers){t=this._layers[e];break}return i||(i=t.getCenter?t.getCenter():t.getLatLng()),this._popup&&this._map&&(this._popup._source=t,this._popup.update(),this._map.openPopup(this._popup,i)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(t){return this._popup&&(this._popup._map?this.closePopup():this.openPopup(t)),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var i=t.layer||t.target;this._popup&&this._map&&(Lt(t),i instanceof Qe?this.openPopup(t.layer||t.target,t.latlng):this._map.hasLayer(this._popup)&&this._popup._source===i?this.closePopup():this.openPopup(i,t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}});var _n=ln.extend({options:{pane:\"tooltipPane\",offset:[0,0],direction:\"auto\",permanent:!1,sticky:!1,interactive:!1,opacity:.9},onAdd:function(t){ln.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire(\"tooltipopen\",{tooltip:this}),this._source&&this._source.fire(\"tooltipopen\",{tooltip:this},!0)},onRemove:function(t){ln.prototype.onRemove.call(this,t),t.fire(\"tooltipclose\",{tooltip:this}),this._source&&this._source.fire(\"tooltipclose\",{tooltip:this},!0)},getEvents:function(){var t=ln.prototype.getEvents.call(this);return qi&&!this.options.permanent&&(t.preclick=this._close),t},_close:function(){this._map&&this._map.closeTooltip(this)},_initLayout:function(){var t=\"leaflet-tooltip \"+(this.options.className||\"\")+\" leaflet-zoom-\"+(this._zoomAnimated?\"animated\":\"hide\");this._contentNode=this._container=G(\"div\",t)},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var i=this._map,e=this._container,n=i.latLngToContainerPoint(i.getCenter()),o=i.layerPointToContainerPoint(t),s=this.options.direction,r=e.offsetWidth,a=e.offsetHeight,h=w(this.options.offset),u=this._getAnchor();\"top\"===s?t=t.add(w(-r/2+h.x,-a+h.y+u.y,!0)):\"bottom\"===s?t=t.subtract(w(r/2-h.x,-h.y,!0)):\"center\"===s?t=t.subtract(w(r/2+h.x,a/2-u.y+h.y,!0)):\"right\"===s||\"auto\"===s&&o.xthis.options.maxZoom||en&&this._retainParent(o,s,r,n))},_retainChildren:function(t,i,e,n){for(var o=2*t;o<2*t+2;o++)for(var s=2*i;s<2*i+2;s++){var r=new x(o,s);r.z=e+1;var a=this._tileCoordsToKey(r),h=this._tiles[a];h&&h.active?h.retain=!0:(h&&h.loaded&&(h.retain=!0),e+1this.options.maxZoom||void 0!==this.options.minZoom&&o1)this._setView(t,e);else{for(var c=o.min.y;c<=o.max.y;c++)for(var _=o.min.x;_<=o.max.x;_++){var d=new x(_,c);if(d.z=this._tileZoom,this._isValidTile(d)){var p=this._tiles[this._tileCoordsToKey(d)];p?p.current=!0:r.push(d)}}if(r.sort(function(t,i){return t.distanceTo(s)-i.distanceTo(s)}),0!==r.length){this._loading||(this._loading=!0,this.fire(\"loading\"));var m=document.createDocumentFragment();for(_=0;_e.max.x)||!i.wrapLat&&(t.ye.max.y))return!1}if(!this.options.bounds)return!0;var n=this._tileCoordsToBounds(t);return z(this.options.bounds).overlaps(n)},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var i=this._map,e=this.getTileSize(),n=t.scaleBy(e),o=n.add(e);return[i.unproject(n,t.z),i.unproject(o,t.z)]},_tileCoordsToBounds:function(t){var i=this._tileCoordsToNwSe(t),e=new T(i[0],i[1]);return this.options.noWrap||(e=this._map.wrapLatLngBounds(e)),e},_tileCoordsToKey:function(t){return t.x+\":\"+t.y+\":\"+t.z},_keyToTileCoords:function(t){var i=t.split(\":\"),e=new x(+i[0],+i[1]);return e.z=+i[2],e},_removeTile:function(t){var i=this._tiles[t];i&&(K(i.el),delete this._tiles[t],this.fire(\"tileunload\",{tile:i.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){Q(t,\"leaflet-tile\");var i=this.getTileSize();t.style.width=i.x+\"px\",t.style.height=i.y+\"px\",t.onselectstart=r,t.onmousemove=r,Li&&this.options.opacity<1&&nt(t,this.options.opacity),zi&&!Mi&&(t.style.WebkitBackfaceVisibility=\"hidden\")},_addTile:function(t,i){var n=this._getTilePos(t),o=this._tileCoordsToKey(t),s=this.createTile(this._wrapCoords(t),e(this._tileReady,this,t));this._initTile(s),this.createTile.length<2&&f(e(this._tileReady,this,t,null,s)),at(s,n),this._tiles[o]={el:s,coords:t,current:!0},i.appendChild(s),this.fire(\"tileloadstart\",{tile:s,coords:t})},_tileReady:function(t,i,n){i&&this.fire(\"tileerror\",{error:i,tile:n,coords:t});var o=this._tileCoordsToKey(t);(n=this._tiles[o])&&(n.loaded=+new Date,this._map._fadeAnimated?(nt(n.el,0),g(this._fadeFrame),this._fadeFrame=f(this._updateOpacity,this)):(n.active=!0,this._pruneTiles()),i||(Q(n.el,\"leaflet-tile-loaded\"),this.fire(\"tileload\",{tile:n.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire(\"load\"),Li||!this._map._fadeAnimated?f(this._pruneTiles,this):setTimeout(e(this._pruneTiles,this),250)))},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var i=new x(this._wrapX?s(t.x,this._wrapX):t.x,this._wrapY?s(t.y,this._wrapY):t.y);return i.z=t.z,i},_pxBoundsToTileRange:function(t){var i=this.getTileSize();return new P(t.min.unscaleBy(i).floor(),t.max.unscaleBy(i).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}}),mn=pn.extend({options:{minZoom:0,maxZoom:18,subdomains:\"abc\",errorTileUrl:\"\",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1},initialize:function(t,i){this._url=t,(i=l(this,i)).detectRetina&&Yi&&i.maxZoom>0&&(i.tileSize=Math.floor(i.tileSize/2),i.zoomReverse?(i.zoomOffset--,i.minZoom++):(i.zoomOffset++,i.maxZoom--),i.minZoom=Math.max(0,i.minZoom)),\"string\"==typeof i.subdomains&&(i.subdomains=i.subdomains.split(\"\")),zi||this.on(\"tileunload\",this._onTileRemove)},setUrl:function(t,i){return this._url===t&&void 0===i&&(i=!0),this._url=t,i||this.redraw(),this},createTile:function(t,i){var n=document.createElement(\"img\");return mt(n,\"load\",e(this._tileOnLoad,this,i,n)),mt(n,\"error\",e(this._tileOnError,this,i,n)),(this.options.crossOrigin||\"\"===this.options.crossOrigin)&&(n.crossOrigin=!0===this.options.crossOrigin?\"\":this.options.crossOrigin),n.alt=\"\",n.setAttribute(\"role\",\"presentation\"),n.src=this.getTileUrl(t),n},getTileUrl:function(t){var e={r:Yi?\"@2x\":\"\",s:this._getSubdomain(t),x:t.x,y:t.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var n=this._globalTileRange.max.y-t.y;this.options.tms&&(e.y=n),e[\"-y\"]=n}return _(this._url,i(e,this.options))},_tileOnLoad:function(t,i){Li?setTimeout(e(t,this,null,i),0):t(null,i)},_tileOnError:function(t,i,e){var n=this.options.errorTileUrl;n&&i.getAttribute(\"src\")!==n&&(i.src=n),t(e,i)},_onTileRemove:function(t){t.tile.onload=null},_getZoomForUrl:function(){var t=this._tileZoom,i=this.options.maxZoom,e=this.options.zoomReverse,n=this.options.zoomOffset;return e&&(t=i-t),t+n},_getSubdomain:function(t){var i=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[i]},_abortLoading:function(){var t,i;for(t in this._tiles)this._tiles[t].coords.z!==this._tileZoom&&((i=this._tiles[t].el).onload=r,i.onerror=r,i.complete||(i.src=si,K(i),delete this._tiles[t]))},_removeTile:function(t){var i=this._tiles[t];if(i)return Si||i.el.setAttribute(\"src\",si),pn.prototype._removeTile.call(this,t)},_tileReady:function(t,i,e){if(this._map&&(!e||e.getAttribute(\"src\")!==si))return pn.prototype._tileReady.call(this,t,i,e)}}),fn=mn.extend({defaultWmsParams:{service:\"WMS\",request:\"GetMap\",layers:\"\",styles:\"\",format:\"image/jpeg\",transparent:!1,version:\"1.1.1\"},options:{crs:null,uppercase:!1},initialize:function(t,e){this._url=t;var n=i({},this.defaultWmsParams);for(var o in e)o in this.options||(n[o]=e[o]);var s=(e=l(this,e)).detectRetina&&Yi?2:1,r=this.getTileSize();n.width=r.x*s,n.height=r.y*s,this.wmsParams=n},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var i=this._wmsVersion>=1.3?\"crs\":\"srs\";this.wmsParams[i]=this._crs.code,mn.prototype.onAdd.call(this,t)},getTileUrl:function(t){var i=this._tileCoordsToNwSe(t),e=this._crs,n=b(e.project(i[0]),e.project(i[1])),o=n.min,s=n.max,r=(this._wmsVersion>=1.3&&this._crs===Ue?[o.y,o.x,s.y,s.x]:[o.x,o.y,s.x,s.y]).join(\",\"),a=mn.prototype.getTileUrl.call(this,t);return a+c(this.wmsParams,a,this.options.uppercase)+(this.options.uppercase?\"&BBOX=\":\"&bbox=\")+r},setParams:function(t,e){return i(this.wmsParams,t),e||this.redraw(),this}});mn.WMS=fn,Jt.wms=function(t,i){return new fn(t,i)};var gn=qe.extend({options:{padding:.1,tolerance:0},initialize:function(t){l(this,t),n(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),this._zoomAnimated&&Q(this._container,\"leaflet-zoom-animated\")),this.getPane().appendChild(this._container),this._update(),this.on(\"update\",this._updatePaths,this)},onRemove:function(){this.off(\"update\",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var t={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(t.zoomanim=this._onAnimZoom),t},_onAnimZoom:function(t){this._updateTransform(t.center,t.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(t,i){var e=this._map.getZoomScale(i,this._zoom),n=ht(this._container),o=this._map.getSize().multiplyBy(.5+this.options.padding),s=this._map.project(this._center,i),r=this._map.project(t,i).subtract(s),a=o.multiplyBy(-e).add(n).add(o).subtract(r);ji?rt(this._container,a,e):at(this._container,a)},_reset:function(){this._update(),this._updateTransform(this._center,this._zoom);for(var t in this._layers)this._layers[t]._reset()},_onZoomEnd:function(){for(var t in this._layers)this._layers[t]._project()},_updatePaths:function(){for(var t in this._layers)this._layers[t]._update()},_update:function(){var t=this.options.padding,i=this._map.getSize(),e=this._map.containerPointToLayerPoint(i.multiplyBy(-t)).round();this._bounds=new P(e,e.add(i.multiplyBy(1+2*t)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),vn=gn.extend({getEvents:function(){var t=gn.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){gn.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var t=this._container=document.createElement(\"canvas\");mt(t,\"mousemove\",o(this._onMouseMove,32,this),this),mt(t,\"click dblclick mousedown mouseup contextmenu\",this._onClick,this),mt(t,\"mouseout\",this._handleMouseOut,this),this._ctx=t.getContext(\"2d\")},_destroyContainer:function(){g(this._redrawRequest),delete this._ctx,K(this._container),ft(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){this._redrawBounds=null;for(var t in this._layers)this._layers[t]._update();this._redraw()}},_update:function(){if(!this._map._animatingZoom||!this._bounds){gn.prototype._update.call(this);var t=this._bounds,i=this._container,e=t.getSize(),n=Yi?2:1;at(i,t.min),i.width=n*e.x,i.height=n*e.y,i.style.width=e.x+\"px\",i.style.height=e.y+\"px\",Yi&&this._ctx.scale(2,2),this._ctx.translate(-t.min.x,-t.min.y),this.fire(\"update\")}},_reset:function(){gn.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t),this._layers[n(t)]=t;var i=t._order={layer:t,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=i),this._drawLast=i,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(t){this._requestRedraw(t)},_removePath:function(t){var i=t._order,e=i.next,o=i.prev;e?e.prev=o:this._drawLast=o,o?o.next=e:this._drawFirst=e,delete t._order,delete this._layers[n(t)],this._requestRedraw(t)},_updatePath:function(t){this._extendRedrawBounds(t),t._project(),t._update(),this._requestRedraw(t)},_updateStyle:function(t){this._updateDashArray(t),this._requestRedraw(t)},_updateDashArray:function(t){if(\"string\"==typeof t.options.dashArray){var i,e,n=t.options.dashArray.split(/[, ]+/),o=[];for(e=0;e')}}catch(t){return function(t){return document.createElement(\"<\"+t+' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"lvml\">')}}}(),xn={_initContainer:function(){this._container=G(\"div\",\"leaflet-vml-container\")},_update:function(){this._map._animatingZoom||(gn.prototype._update.call(this),this.fire(\"update\"))},_initPath:function(t){var i=t._container=yn(\"shape\");Q(i,\"leaflet-vml-shape \"+(this.options.className||\"\")),i.coordsize=\"1 1\",t._path=yn(\"path\"),i.appendChild(t._path),this._updateStyle(t),this._layers[n(t)]=t},_addPath:function(t){var i=t._container;this._container.appendChild(i),t.options.interactive&&t.addInteractiveTarget(i)},_removePath:function(t){var i=t._container;K(i),t.removeInteractiveTarget(i),delete this._layers[n(t)]},_updateStyle:function(t){var i=t._stroke,e=t._fill,n=t.options,o=t._container;o.stroked=!!n.stroke,o.filled=!!n.fill,n.stroke?(i||(i=t._stroke=yn(\"stroke\")),o.appendChild(i),i.weight=n.weight+\"px\",i.color=n.color,i.opacity=n.opacity,n.dashArray?i.dashStyle=oi(n.dashArray)?n.dashArray.join(\" \"):n.dashArray.replace(/( *, *)/g,\" \"):i.dashStyle=\"\",i.endcap=n.lineCap.replace(\"butt\",\"flat\"),i.joinstyle=n.lineJoin):i&&(o.removeChild(i),t._stroke=null),n.fill?(e||(e=t._fill=yn(\"fill\")),o.appendChild(e),e.color=n.fillColor||n.color,e.opacity=n.fillOpacity):e&&(o.removeChild(e),t._fill=null)},_updateCircle:function(t){var i=t._point.round(),e=Math.round(t._radius),n=Math.round(t._radiusY||e);this._setPath(t,t._empty()?\"M0 0\":\"AL \"+i.x+\",\"+i.y+\" \"+e+\",\"+n+\" 0,23592600\")},_setPath:function(t,i){t._path.v=i},_bringToFront:function(t){X(t._container)},_bringToBack:function(t){J(t._container)}},wn=$i?yn:E,Pn=gn.extend({getEvents:function(){var t=gn.prototype.getEvents.call(this);return t.zoomstart=this._onZoomStart,t},_initContainer:function(){this._container=wn(\"svg\"),this._container.setAttribute(\"pointer-events\",\"none\"),this._rootGroup=wn(\"g\"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){K(this._container),ft(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_onZoomStart:function(){this._update()},_update:function(){if(!this._map._animatingZoom||!this._bounds){gn.prototype._update.call(this);var t=this._bounds,i=t.getSize(),e=this._container;this._svgSize&&this._svgSize.equals(i)||(this._svgSize=i,e.setAttribute(\"width\",i.x),e.setAttribute(\"height\",i.y)),at(e,t.min),e.setAttribute(\"viewBox\",[t.min.x,t.min.y,i.x,i.y].join(\" \")),this.fire(\"update\")}},_initPath:function(t){var i=t._path=wn(\"path\");t.options.className&&Q(i,t.options.className),t.options.interactive&&Q(i,\"leaflet-interactive\"),this._updateStyle(t),this._layers[n(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){K(t._path),t.removeInteractiveTarget(t._path),delete this._layers[n(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var i=t._path,e=t.options;i&&(e.stroke?(i.setAttribute(\"stroke\",e.color),i.setAttribute(\"stroke-opacity\",e.opacity),i.setAttribute(\"stroke-width\",e.weight),i.setAttribute(\"stroke-linecap\",e.lineCap),i.setAttribute(\"stroke-linejoin\",e.lineJoin),e.dashArray?i.setAttribute(\"stroke-dasharray\",e.dashArray):i.removeAttribute(\"stroke-dasharray\"),e.dashOffset?i.setAttribute(\"stroke-dashoffset\",e.dashOffset):i.removeAttribute(\"stroke-dashoffset\")):i.setAttribute(\"stroke\",\"none\"),e.fill?(i.setAttribute(\"fill\",e.fillColor||e.color),i.setAttribute(\"fill-opacity\",e.fillOpacity),i.setAttribute(\"fill-rule\",e.fillRule||\"evenodd\")):i.setAttribute(\"fill\",\"none\"))},_updatePoly:function(t,i){this._setPath(t,k(t._parts,i))},_updateCircle:function(t){var i=t._point,e=Math.max(Math.round(t._radius),1),n=\"a\"+e+\",\"+(Math.max(Math.round(t._radiusY),1)||e)+\" 0 1,0 \",o=t._empty()?\"M0 0\":\"M\"+(i.x-e)+\",\"+i.y+n+2*e+\",0 \"+n+2*-e+\",0 \";this._setPath(t,o)},_setPath:function(t,i){t._path.setAttribute(\"d\",i)},_bringToFront:function(t){X(t._path)},_bringToBack:function(t){J(t._path)}});$i&&Pn.include(xn),be.include({getRenderer:function(t){var i=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer;return i||(i=this._renderer=this._createRenderer()),this.hasLayer(i)||this.addLayer(i),i},_getPaneRenderer:function(t){if(\"overlayPane\"===t||void 0===t)return!1;var i=this._paneRenderers[t];return void 0===i&&(i=this._createRenderer({pane:t}),this._paneRenderers[t]=i),i},_createRenderer:function(t){return this.options.preferCanvas&&$t(t)||Qt(t)}});var Ln=on.extend({initialize:function(t,i){on.prototype.initialize.call(this,this._boundsToLatLngs(t),i)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return t=z(t),[t.getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});Pn.create=wn,Pn.pointsToPath=k,sn.geometryToLayer=Ft,sn.coordsToLatLng=Ut,sn.coordsToLatLngs=Vt,sn.latLngToCoords=qt,sn.latLngsToCoords=Gt,sn.getFeature=Kt,sn.asFeature=Yt,be.mergeOptions({boxZoom:!0});var bn=Ee.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on(\"unload\",this._destroy,this)},addHooks:function(){mt(this._container,\"mousedown\",this._onMouseDown,this)},removeHooks:function(){ft(this._container,\"mousedown\",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){K(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),fi(),ut(),this._startPoint=this._map.mouseEventToContainerPoint(t),mt(document,{contextmenu:Lt,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=G(\"div\",\"leaflet-zoom-box\",this._container),Q(this._container,\"leaflet-crosshair\"),this._map.fire(\"boxzoomstart\")),this._point=this._map.mouseEventToContainerPoint(t);var i=new P(this._point,this._startPoint),e=i.getSize();at(this._box,i.min),this._box.style.width=e.x+\"px\",this._box.style.height=e.y+\"px\"},_finish:function(){this._moved&&(K(this._box),tt(this._container,\"leaflet-crosshair\")),gi(),lt(),ft(document,{contextmenu:Lt,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){if((1===t.which||1===t.button)&&(this._finish(),this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(e(this._resetState,this),0);var i=new T(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(i).fire(\"boxzoomend\",{boxZoomBounds:i})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}});be.addInitHook(\"addHandler\",\"boxZoom\",bn),be.mergeOptions({doubleClickZoom:!0});var Tn=Ee.extend({addHooks:function(){this._map.on(\"dblclick\",this._onDoubleClick,this)},removeHooks:function(){this._map.off(\"dblclick\",this._onDoubleClick,this)},_onDoubleClick:function(t){var i=this._map,e=i.getZoom(),n=i.options.zoomDelta,o=t.originalEvent.shiftKey?e-n:e+n;\"center\"===i.options.doubleClickZoom?i.setZoom(o):i.setZoomAround(t.containerPoint,o)}});be.addInitHook(\"addHandler\",\"doubleClickZoom\",Tn),be.mergeOptions({dragging:!0,inertia:!Mi,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var zn=Ee.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new Re(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on(\"predrag\",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on(\"predrag\",this._onPreDragWrap,this),t.on(\"zoomend\",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))}Q(this._map._container,\"leaflet-grab leaflet-touch-drag\"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){tt(this._map._container,\"leaflet-grab\"),tt(this._map._container,\"leaflet-touch-drag\"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t=this._map;if(t._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var i=z(this._map.options.maxBounds);this._offsetLimit=b(this._map.latLngToContainerPoint(i.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(i.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;t.fire(\"movestart\").fire(\"dragstart\"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){if(this._map.options.inertia){var i=this._lastTime=+new Date,e=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(e),this._times.push(i),this._prunePositions(i)}this._map.fire(\"move\",t).fire(\"drag\",t)},_prunePositions:function(t){for(;this._positions.length>1&&t-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var t=this._map.getSize().divideBy(2),i=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=i.subtract(t).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(t,i){return t-(t-i)*this._viscosity},_onPreDragLimit:function(){if(this._viscosity&&this._offsetLimit){var t=this._draggable._newPos.subtract(this._draggable._startPos),i=this._offsetLimit;t.xi.max.x&&(t.x=this._viscousLimit(t.x,i.max.x)),t.y>i.max.y&&(t.y=this._viscousLimit(t.y,i.max.y)),this._draggable._newPos=this._draggable._startPos.add(t)}},_onPreDragWrap:function(){var t=this._worldWidth,i=Math.round(t/2),e=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-i+e)%t+i-e,s=(n+i+e)%t-i-e,r=Math.abs(o+e)0?s:-s))-i;this._delta=0,this._startTime=null,r&&(\"center\"===t.options.scrollWheelZoom?t.setZoom(i+r):t.setZoomAround(this._lastMousePos,i+r))}});be.addInitHook(\"addHandler\",\"scrollWheelZoom\",Cn),be.mergeOptions({tap:!0,tapTolerance:15});var Sn=Ee.extend({addHooks:function(){mt(this._map._container,\"touchstart\",this._onDown,this)},removeHooks:function(){ft(this._map._container,\"touchstart\",this._onDown,this)},_onDown:function(t){if(t.touches){if(Pt(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var i=t.touches[0],n=i.target;this._startPos=this._newPos=new x(i.clientX,i.clientY),n.tagName&&\"a\"===n.tagName.toLowerCase()&&Q(n,\"leaflet-active\"),this._holdTimeout=setTimeout(e(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent(\"contextmenu\",i))},this),1e3),this._simulateEvent(\"mousedown\",i),mt(document,{touchmove:this._onMove,touchend:this._onUp},this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),ft(document,{touchmove:this._onMove,touchend:this._onUp},this),this._fireClick&&t&&t.changedTouches){var i=t.changedTouches[0],e=i.target;e&&e.tagName&&\"a\"===e.tagName.toLowerCase()&&tt(e,\"leaflet-active\"),this._simulateEvent(\"mouseup\",i),this._isTapValid()&&this._simulateEvent(\"click\",i)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var i=t.touches[0];this._newPos=new x(i.clientX,i.clientY),this._simulateEvent(\"mousemove\",i)},_simulateEvent:function(t,i){var e=document.createEvent(\"MouseEvents\");e._simulated=!0,i.target._simulatedClick=!0,e.initMouseEvent(t,!0,!0,window,1,i.screenX,i.screenY,i.clientX,i.clientY,!1,!1,!1,!1,0,null),i.target.dispatchEvent(e)}});qi&&!Vi&&be.addInitHook(\"addHandler\",\"tap\",Sn),be.mergeOptions({touchZoom:qi&&!Mi,bounceAtZoomLimits:!0});var Zn=Ee.extend({addHooks:function(){Q(this._map._container,\"leaflet-touch-zoom\"),mt(this._map._container,\"touchstart\",this._onTouchStart,this)},removeHooks:function(){tt(this._map._container,\"leaflet-touch-zoom\"),ft(this._map._container,\"touchstart\",this._onTouchStart,this)},_onTouchStart:function(t){var i=this._map;if(t.touches&&2===t.touches.length&&!i._animatingZoom&&!this._zooming){var e=i.mouseEventToContainerPoint(t.touches[0]),n=i.mouseEventToContainerPoint(t.touches[1]);this._centerPoint=i.getSize()._divideBy(2),this._startLatLng=i.containerPointToLatLng(this._centerPoint),\"center\"!==i.options.touchZoom&&(this._pinchStartLatLng=i.containerPointToLatLng(e.add(n)._divideBy(2))),this._startDist=e.distanceTo(n),this._startZoom=i.getZoom(),this._moved=!1,this._zooming=!0,i._stop(),mt(document,\"touchmove\",this._onTouchMove,this),mt(document,\"touchend\",this._onTouchEnd,this),Pt(t)}},_onTouchMove:function(t){if(t.touches&&2===t.touches.length&&this._zooming){var i=this._map,n=i.mouseEventToContainerPoint(t.touches[0]),o=i.mouseEventToContainerPoint(t.touches[1]),s=n.distanceTo(o)/this._startDist;if(this._zoom=i.getScaleZoom(s,this._startZoom),!i.options.bounceAtZoomLimits&&(this._zoomi.getMaxZoom()&&s>1)&&(this._zoom=i._limitZoom(this._zoom)),\"center\"===i.options.touchZoom){if(this._center=this._startLatLng,1===s)return}else{var r=n._add(o)._divideBy(2)._subtract(this._centerPoint);if(1===s&&0===r.x&&0===r.y)return;this._center=i.unproject(i.project(this._pinchStartLatLng,this._zoom).subtract(r),this._zoom)}this._moved||(i._moveStart(!0,!1),this._moved=!0),g(this._animRequest);var a=e(i._move,i,this._center,this._zoom,{pinch:!0,round:!1});this._animRequest=f(a,this,!0),Pt(t)}},_onTouchEnd:function(){this._moved&&this._zooming?(this._zooming=!1,g(this._animRequest),ft(document,\"touchmove\",this._onTouchMove),ft(document,\"touchend\",this._onTouchEnd),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))):this._zooming=!1}});be.addInitHook(\"addHandler\",\"touchZoom\",Zn),be.BoxZoom=bn,be.DoubleClickZoom=Tn,be.Drag=zn,be.Keyboard=Mn,be.ScrollWheelZoom=Cn,be.Tap=Sn,be.TouchZoom=Zn,Object.freeze=ti,t.version=\"1.4.0\",t.Control=Te,t.control=ze,t.Browser=Qi,t.Evented=ci,t.Mixin=Be,t.Util=ui,t.Class=v,t.Handler=Ee,t.extend=i,t.bind=e,t.stamp=n,t.setOptions=l,t.DomEvent=Pe,t.DomUtil=ve,t.PosAnimation=Le,t.Draggable=Re,t.LineUtil=Ne,t.PolyUtil=De,t.Point=x,t.point=w,t.Bounds=P,t.bounds=b,t.Transformation=S,t.transformation=Z,t.Projection=He,t.LatLng=M,t.latLng=C,t.LatLngBounds=T,t.latLngBounds=z,t.CRS=di,t.GeoJSON=sn,t.geoJSON=Xt,t.geoJson=an,t.Layer=qe,t.LayerGroup=Ge,t.layerGroup=function(t,i){return new Ge(t,i)},t.FeatureGroup=Ke,t.featureGroup=function(t){return new Ke(t)},t.ImageOverlay=hn,t.imageOverlay=function(t,i,e){return new hn(t,i,e)},t.VideoOverlay=un,t.videoOverlay=function(t,i,e){return new un(t,i,e)},t.DivOverlay=ln,t.Popup=cn,t.popup=function(t,i){return new cn(t,i)},t.Tooltip=_n,t.tooltip=function(t,i){return new _n(t,i)},t.Icon=Ye,t.icon=function(t){return new Ye(t)},t.DivIcon=dn,t.divIcon=function(t){return new dn(t)},t.Marker=$e,t.marker=function(t,i){return new $e(t,i)},t.TileLayer=mn,t.tileLayer=Jt,t.GridLayer=pn,t.gridLayer=function(t){return new pn(t)},t.SVG=Pn,t.svg=Qt,t.Renderer=gn,t.Canvas=vn,t.canvas=$t,t.Path=Qe,t.CircleMarker=tn,t.circleMarker=function(t,i){return new tn(t,i)},t.Circle=en,t.circle=function(t,i,e){return new en(t,i,e)},t.Polyline=nn,t.polyline=function(t,i){return new nn(t,i)},t.Polygon=on,t.polygon=function(t,i){return new on(t,i)},t.Rectangle=Ln,t.rectangle=function(t,i){return new Ln(t,i)},t.Map=be,t.map=function(t,i){return new be(t,i)};var En=window.L;t.noConflict=function(){return window.L=En,this},window.L=t});","/*!\n * Add to Homescreen v2.0.11 ~ Copyright (c) 2013 Matteo Spinelli, http://cubiq.org\n * Released under MIT license, http://cubiq.org/license\n */\nvar addToHome = (function (w) {\n\tvar nav = w.navigator,\n\t\tisIDevice = 'platform' in nav && (/iphone|ipod|ipad/gi).test(nav.platform),\n\t\tisIPad,\n\t\tisRetina,\n\t\tisSafari,\n\t\tisStandalone,\n\t\tOSVersion,\n\t\tstartX = 0,\n\t\tstartY = 0,\n\t\tlastVisit = 0,\n\t\tisExpired,\n\t\tisSessionActive,\n\t\tisReturningVisitor,\n\t\tballoon,\n\t\toverrideChecks,\n\n\t\tpositionInterval,\n\t\tcloseTimeout,\n\n\t\toptions = {\n\t\t\tautostart: true,\t\t\t// Automatically open the balloon\n\t\t\treturningVisitor: true,\t// Show the balloon to returning visitors only (setting this to true is highly recommended)\n\t\t\tanimationIn: 'drop',\t\t// drop || bubble || fade\n\t\t\tanimationOut: 'fade',\t\t// drop || bubble || fade\n\t\t\tstartDelay: 2000,\t\t\t// 2 seconds from page load before the balloon appears\n\t\t\tlifespan: 15000,\t\t\t// 15 seconds before it is automatically destroyed\n\t\t\tbottomOffset: 14,\t\t\t// Distance of the balloon from bottom\n\t\t\texpire: 10080,\t\t\t\t\t// Minutes to wait before showing the popup again (0 = always displayed)\n\t\t\tmessage: '',\t\t\t\t// Customize your message or force a language ('' = automatic)\n\t\t\ttouchIcon: true,\t\t\t// Display the touch icon\n\t\t\tarrow: true,\t\t\t\t// Display the balloon arrow\n\t\t\thookOnLoad: true,\t\t\t// Should we hook to onload event? (really advanced usage)\n\t\t\tcloseButton: true,\t\t\t// Let the user close the balloon\n\t\t\titerations: 100\t\t\t\t// Internal/debug use\n\t\t},\n\n\t\tintl = {\n\t\t\tar: 'قم بتثبيت هذا التطبيق على %device:انقر%icon ،ثم اضفه الى الشاشة الرئيسية.',\n\t\t\tca_es: 'Per instal·lar aquesta aplicació al vostre %device premeu %icon i llavors Afegir a pantalla d\\'inici.',\n\t\t\tcs_cz: 'Pro instalaci aplikace na Váš %device, stiskněte %icon a v nabídce Přidat na plochu.',\n\t\t\tda_dk: 'Tilføj denne side til din %device: tryk på %icon og derefter Føj til hjemmeskærm.',\n\t\t\tde_de: 'Installieren Sie diese App auf Ihrem %device: %icon antippen und dann Zum Home-Bildschirm.',\n\t\t\tel_gr: 'Εγκαταστήσετε αυτήν την Εφαρμογή στήν συσκευή σας %device: %icon μετά πατάτε Προσθήκη σε Αφετηρία.',\n\t\t\ten_us: 'Install this web app on your %device: tap %icon and then Add to Home Screen.',\n\t\t\tes_es: 'Para instalar esta app en su %device, pulse %icon y seleccione Añadir a pantalla de inicio.',\n\t\t\tfi_fi: 'Asenna tämä web-sovellus laitteeseesi %device: paina %icon ja sen jälkeen valitse Lisää Koti-valikkoon.',\n\t\t\tfr_fr: 'Ajoutez cette application sur votre %device en cliquant sur %icon, puis Sur l\\'écran d\\'accueil.',\n\t\t\the_il: 'התקן אפליקציה זו על ה-%device שלך: הקש %icon ואז הוסף למסך הבית.',\n\t\t\thr_hr: 'Instaliraj ovu aplikaciju na svoj %device: klikni na %icon i odaberi Dodaj u početni zaslon.',\n\t\t\thu_hu: 'Telepítse ezt a web-alkalmazást az Ön %device-jára: nyomjon a %icon-ra majd a Főképernyőhöz adás gombra.',\n\t\t\tit_it: 'Installa questa applicazione sul tuo %device: premi su %icon e poi Aggiungi a Home.',\n\t\t\tja_jp: 'このウェブアプリをあなたの%deviceにインストールするには%iconをタップしてホーム画面に追加を選んでください。',\n\t\t\tko_kr: '%device에 웹앱을 설치하려면 %icon을 터치 후 \"홈화면에 추가\"를 선택하세요',\n\t\t\tnb_no: 'Installer denne appen på din %device: trykk på %icon og deretter Legg til på Hjem-skjerm',\n\t\t\tnl_nl: 'Installeer deze webapp op uw %device: tik %icon en dan Voeg toe aan beginscherm.',\n\t\t\tpl_pl: 'Aby zainstalować tę aplikacje na %device: naciśnij %icon a następnie Dodaj jako ikonę.',\n\t\t\tpt_br: 'Instale este aplicativo em seu %device: aperte %icon e selecione Adicionar à Tela Inicio.',\n\t\t\tpt_pt: 'Para instalar esta aplicação no seu %device, prima o %icon e depois em Adicionar ao ecrã principal.',\n\t\t\tru_ru: 'Установите это веб-приложение на ваш %device: нажмите %icon, затем Добавить в «Домой».',\n\t\t\tsv_se: 'Lägg till denna webbapplikation på din %device: tryck på %icon och därefter Lägg till på hemskärmen.',\n\t\t\tth_th: 'ติดตั้งเว็บแอพฯ นี้บน %device ของคุณ: แตะ %icon และ เพิ่มที่หน้าจอโฮม',\n\t\t\ttr_tr: 'Bu uygulamayı %device\\'a eklemek için %icon simgesine sonrasında Ana Ekrana Ekle düğmesine basın.',\n\t\t\tuk_ua: 'Встановіть цей веб сайт на Ваш %device: натисніть %icon, а потім На початковий екран.',\n\t\t\tzh_cn: '您可以将此应用安装到您的 %device 上。请按 %icon 然后选择添加至主屏幕。',\n\t\t\tzh_tw: '您可以將此應用程式安裝到您的 %device 上。請按 %icon 然後點選加入主畫面螢幕。'\n\t\t};\n\n\tfunction init () {\n\t\t// Preliminary check, all further checks are performed on iDevices only\n\t\tif ( !isIDevice ) return;\n\n\t\tvar now = Date.now(),\n\t\t\ti;\n\n\t\t// Merge local with global options\n\t\tif ( w.addToHomeConfig ) {\n\t\t\tfor ( i in w.addToHomeConfig ) {\n\t\t\t\toptions[i] = w.addToHomeConfig[i];\n\t\t\t}\n\t\t}\n\t\tif ( !options.autostart ) options.hookOnLoad = false;\n\n\t\tisIPad = (/ipad/gi).test(nav.platform);\n\t\tisRetina = w.devicePixelRatio && w.devicePixelRatio > 1;\n\t\tisSafari = (/Safari/i).test(nav.appVersion) && !(/CriOS/i).test(nav.appVersion);\n\t\tisStandalone = nav.standalone;\n\t\tOSVersion = nav.appVersion.match(/OS (\\d+_\\d+)/i);\n\t\tOSVersion = OSVersion && OSVersion[1] ? +OSVersion[1].replace('_', '.') : 0;\n\n\t\tlastVisit = +w.localStorage.getItem('addToHome');\n\n\t\tisSessionActive = w.sessionStorage.getItem('addToHomeSession');\n\t\tisReturningVisitor = options.returningVisitor ? lastVisit && lastVisit + 28*24*60*60*1000 > now : true;\n\n\t\tif ( !lastVisit ) lastVisit = now;\n\n\t\t// If it is expired we need to reissue a new balloon\n\t\tisExpired = isReturningVisitor && lastVisit <= now;\n\n\t\tif ( options.hookOnLoad ) w.addEventListener('load', loaded, false);\n\t\telse if ( !options.hookOnLoad && options.autostart ) loaded();\n\t}\n\n\tfunction loaded () {\n\t\tw.removeEventListener('load', loaded, false);\n\n\t\tif ( !isReturningVisitor ) w.localStorage.setItem('addToHome', Date.now());\n\t\telse if ( options.expire && isExpired ) w.localStorage.setItem('addToHome', Date.now() + options.expire * 60000);\n\n\t\tif ( !overrideChecks && ( !isSafari || !isExpired || isSessionActive || isStandalone || !isReturningVisitor ) ) return;\n\n\t\tvar touchIcon = '',\n\t\t\tplatform = nav.platform.split(' ')[0],\n\t\t\tlanguage = nav.language.replace('-', '_');\n\n\t\tballoon = document.createElement('div');\n\t\tballoon.id = 'addToHomeScreen';\n\t\tballoon.style.cssText += 'left:-9999px;-webkit-transition-property:-webkit-transform,opacity;-webkit-transition-duration:0;-webkit-transform:translate3d(0,0,0);position:' + (OSVersion < 5 ? 'absolute' : 'fixed');\n\n\t\t// Localize message\n\t\tif ( options.message in intl ) {\t\t// You may force a language despite the user's locale\n\t\t\tlanguage = options.message;\n\t\t\toptions.message = '';\n\t\t}\n\t\tif ( options.message === '' ) {\t\t\t// We look for a suitable language (defaulted to en_us)\n\t\t\toptions.message = language in intl ? intl[language] : intl['en_us'];\n\t\t}\n\n\t\tif ( options.touchIcon ) {\n\t\t\ttouchIcon = isRetina ?\n\t\t\t\tdocument.querySelector('head link[rel^=apple-touch-icon][sizes=\"114x114\"],head link[rel^=apple-touch-icon][sizes=\"144x144\"],head link[rel^=apple-touch-icon]') :\n\t\t\t\tdocument.querySelector('head link[rel^=apple-touch-icon][sizes=\"57x57\"],head link[rel^=apple-touch-icon]');\n\n\t\t\tif ( touchIcon ) {\n\t\t\t\ttouchIcon = '';\n\t\t\t}\n\t\t}\n\n\t\tballoon.className = (OSVersion >=7 ? 'addToHomeIOS7 ' : '') + (isIPad ? 'addToHomeIpad' : 'addToHomeIphone') + (touchIcon ? ' addToHomeWide' : '');\n\t\tballoon.innerHTML = touchIcon +\n\t\t\toptions.message.replace('%device', platform).replace('%icon', OSVersion >= 4.2 ? '' : '+') +\n\t\t\t(options.arrow ? '= 7 && isIPad && touchIcon ? ' style=\"margin-left:-32px\"' : '') + '>' : '') +\n\t\t\t(options.closeButton ? '\\u00D7' : '');\n\n\t\tdocument.body.appendChild(balloon);\n\n\t\t// Add the close action\n\t\tif ( options.closeButton ) balloon.addEventListener('click', clicked, false);\n\n\t\tif ( !isIPad && OSVersion >= 6 ) window.addEventListener('orientationchange', orientationCheck, false);\n\n\t\tsetTimeout(show, options.startDelay);\n\t}\n\n\tfunction show () {\n\t\tvar duration,\n\t\t\tiPadXShift = 208;\n\n\t\t// Set the initial position\n\t\tif ( isIPad ) {\n\t\t\tif ( OSVersion < 5 ) {\n\t\t\t\tstartY = w.scrollY;\n\t\t\t\tstartX = w.scrollX;\n\t\t\t} else if ( OSVersion < 6 ) {\n\t\t\t\tiPadXShift = 160;\n\t\t\t} else if ( OSVersion >= 7 ) {\n\t\t\t\tiPadXShift = 143;\n\t\t\t}\n\n\t\t\tballoon.style.top = startY + options.bottomOffset + 'px';\n\t\t\tballoon.style.left = Math.max(startX + iPadXShift - Math.round(balloon.offsetWidth / 2), 9) + 'px';\n\n\t\t\tswitch ( options.animationIn ) {\n\t\t\t\tcase 'drop':\n\t\t\t\t\tduration = '0.6s';\n\t\t\t\t\tballoon.style.webkitTransform = 'translate3d(0,' + -(w.scrollY + options.bottomOffset + balloon.offsetHeight) + 'px,0)';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'bubble':\n\t\t\t\t\tduration = '0.6s';\n\t\t\t\t\tballoon.style.opacity = '0';\n\t\t\t\t\tballoon.style.webkitTransform = 'translate3d(0,' + (startY + 50) + 'px,0)';\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tduration = '1s';\n\t\t\t\t\tballoon.style.opacity = '0';\n\t\t\t}\n\t\t} else {\n\t\t\tstartY = w.innerHeight + w.scrollY;\n\n\t\t\tif ( OSVersion < 5 ) {\n\t\t\t\tstartX = Math.round((w.innerWidth - balloon.offsetWidth) / 2) + w.scrollX;\n\t\t\t\tballoon.style.left = startX + 'px';\n\t\t\t\tballoon.style.top = startY - balloon.offsetHeight - options.bottomOffset + 'px';\n\t\t\t} else {\n\t\t\t\tballoon.style.left = '50%';\n\t\t\t\tballoon.style.marginLeft = -Math.round(balloon.offsetWidth / 2) - ( w.orientation%180 && OSVersion >= 6 && OSVersion < 7 ? 40 : 0 ) + 'px';\n\t\t\t\tballoon.style.bottom = options.bottomOffset + 'px';\n\t\t\t}\n\n\t\t\tswitch (options.animationIn) {\n\t\t\t\tcase 'drop':\n\t\t\t\t\tduration = '1s';\n\t\t\t\t\tballoon.style.webkitTransform = 'translate3d(0,' + -(startY + options.bottomOffset) + 'px,0)';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'bubble':\n\t\t\t\t\tduration = '0.6s';\n\t\t\t\t\tballoon.style.webkitTransform = 'translate3d(0,' + (balloon.offsetHeight + options.bottomOffset + 50) + 'px,0)';\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tduration = '1s';\n\t\t\t\t\tballoon.style.opacity = '0';\n\t\t\t}\n\t\t}\n\n\t\tballoon.offsetHeight;\t// repaint trick\n\t\tballoon.style.webkitTransitionDuration = duration;\n\t\tballoon.style.opacity = '1';\n\t\tballoon.style.webkitTransform = 'translate3d(0,0,0)';\n\t\tballoon.addEventListener('webkitTransitionEnd', transitionEnd, false);\n\n\t\tcloseTimeout = setTimeout(close, options.lifespan);\n\t}\n\n\tfunction manualShow (override) {\n\t\tif ( !isIDevice || balloon ) return;\n\n\t\toverrideChecks = override;\n\t\tloaded();\n\t}\n\n\tfunction close () {\n\t\tclearInterval( positionInterval );\n\t\tclearTimeout( closeTimeout );\n\t\tcloseTimeout = null;\n\n\t\t// check if the popup is displayed and prevent errors\n\t\tif ( !balloon ) return;\n\n\t\tvar posY = 0,\n\t\t\tposX = 0,\n\t\t\topacity = '1',\n\t\t\tduration = '0';\n\n\t\tif ( options.closeButton ) balloon.removeEventListener('click', clicked, false);\n\t\tif ( !isIPad && OSVersion >= 6 ) window.removeEventListener('orientationchange', orientationCheck, false);\n\n\t\tif ( OSVersion < 5 ) {\n\t\t\tposY = isIPad ? w.scrollY - startY : w.scrollY + w.innerHeight - startY;\n\t\t\tposX = isIPad ? w.scrollX - startX : w.scrollX + Math.round((w.innerWidth - balloon.offsetWidth)/2) - startX;\n\t\t}\n\n\t\tballoon.style.webkitTransitionProperty = '-webkit-transform,opacity';\n\n\t\tswitch ( options.animationOut ) {\n\t\t\tcase 'drop':\n\t\t\t\tif ( isIPad ) {\n\t\t\t\t\tduration = '0.4s';\n\t\t\t\t\topacity = '0';\n\t\t\t\t\tposY += 50;\n\t\t\t\t} else {\n\t\t\t\t\tduration = '0.6s';\n\t\t\t\t\tposY += balloon.offsetHeight + options.bottomOffset + 50;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'bubble':\n\t\t\t\tif ( isIPad ) {\n\t\t\t\t\tduration = '0.8s';\n\t\t\t\t\tposY -= balloon.offsetHeight + options.bottomOffset + 50;\n\t\t\t\t} else {\n\t\t\t\t\tduration = '0.4s';\n\t\t\t\t\topacity = '0';\n\t\t\t\t\tposY -= 50;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tduration = '0.8s';\n\t\t\t\topacity = '0';\n\t\t}\n\n\t\tballoon.addEventListener('webkitTransitionEnd', transitionEnd, false);\n\t\tballoon.style.opacity = opacity;\n\t\tballoon.style.webkitTransitionDuration = duration;\n\t\tballoon.style.webkitTransform = 'translate3d(' + posX + 'px,' + posY + 'px,0)';\n\t}\n\n\n\tfunction clicked () {\n\t\tw.sessionStorage.setItem('addToHomeSession', '1');\n\t\tisSessionActive = true;\n\t\tclose();\n\t}\n\n\tfunction transitionEnd () {\n\t\tballoon.removeEventListener('webkitTransitionEnd', transitionEnd, false);\n\n\t\tballoon.style.webkitTransitionProperty = '-webkit-transform';\n\t\tballoon.style.webkitTransitionDuration = '0.2s';\n\n\t\t// We reached the end!\n\t\tif ( !closeTimeout ) {\n\t\t\tballoon.parentNode.removeChild(balloon);\n\t\t\tballoon = null;\n\t\t\treturn;\n\t\t}\n\n\t\t// On iOS 4 we start checking the element position\n\t\tif ( OSVersion < 5 && closeTimeout ) positionInterval = setInterval(setPosition, options.iterations);\n\t}\n\n\tfunction setPosition () {\n\t\tvar matrix = new WebKitCSSMatrix(w.getComputedStyle(balloon, null).webkitTransform),\n\t\t\tposY = isIPad ? w.scrollY - startY : w.scrollY + w.innerHeight - startY,\n\t\t\tposX = isIPad ? w.scrollX - startX : w.scrollX + Math.round((w.innerWidth - balloon.offsetWidth) / 2) - startX;\n\n\t\t// Screen didn't move\n\t\tif ( posY == matrix.m42 && posX == matrix.m41 ) return;\n\n\t\tballoon.style.webkitTransform = 'translate3d(' + posX + 'px,' + posY + 'px,0)';\n\t}\n\n\t// Clear local and session storages (this is useful primarily in development)\n\tfunction reset () {\n\t\tw.localStorage.removeItem('addToHome');\n\t\tw.sessionStorage.removeItem('addToHomeSession');\n\t}\n\n\tfunction orientationCheck () {\n\t\tballoon.style.marginLeft = -Math.round(balloon.offsetWidth / 2) - ( w.orientation%180 && OSVersion >= 6 && OSVersion < 7 ? 40 : 0 ) + 'px';\n\t}\n\n\t// Bootstrap!\n\tinit();\n\n\treturn {\n\t\tshow: manualShow,\n\t\tclose: close,\n\t\treset: reset\n\t};\n})(window);\n","if (window.applicationCache) {\n window.addEvent('domready', function() {\n var updateEl = new Element('div', {'id': 'phone-cache-progress'}), startUpdate, diff;\n \n\t\twindow.applicationCache.addEventListener('updateready', function(e) {\n\t\t\tappbuilder.app.debug('cache', 'update', e);\n\t\t\tif (window.applicationCache.status == window.applicationCache.UPDATEREADY) {\n\t\t\t\t// Browser downloaded a new app cache.\n\t\t\t\t// Swap it in and reload the page to get the new hotness.\n\t\t\t\ttry {\n\t\t\t\t\twindow.applicationCache.swapCache();\n\t\t\t\t}\n\t\t\t\tcatch(err) {\n\t\t\t\t\tappbuilder.app.debug('cache', 'swap', err);\n\t\t\t\t}\n setTimeout(function() {\n appbuilder.app.confirm('New version of the app is available. Update the app?', function(c) {\n if(c) {\n window.location.reload();\n }\n });\n }, (diff = new Date() - (startUpdate || new Date())) > 15000 ? 0 : 15000 - diff);\n\t\t\t} else {\n\t\t\t// Manifest didn't changed. Nothing new to server.\n\t\t\t}\n\t\t}, false);\n\t\twindow.applicationCache.addEventListener('downloading', function() {\n updateEl.inject(document.body);\n\t\t\tappbuilder.app.debug('cache', 'downloading');\n\t\t\tappbuilder.app.alert('Downloading updates to app');\n startUpdate = new Date();\n\t\t}, false);\n\t\twindow.applicationCache.addEventListener('noupdate', function() {\n\t\t\tappbuilder.app.debug('cache', 'noupdate');\n\t\t}, false);\n\t\twindow.applicationCache.addEventListener('progress', function(e) {\n var progress = (e.loaded / e.total) * 100;\n updateEl.setStyles({width: progress + '%'});\n\t\t\tappbuilder.app.debug('cache', 'progress', progress, e);\n\t\t}, false);\n\t\twindow.applicationCache.addEventListener('cached', function() {\n\t\t\tupdateEl.remove();\n appbuilder.app.debug('cache', 'cached');\n\t\t\tappbuilder.app.alert('App is now available offline');\n\t\t}, false);\n\t\twindow.applicationCache.addEventListener('error', function(e) {\n updateEl.remove();\n\t\t\tappbuilder.app.debug('cache', 'error', e);\n\t\t}, false);\n\t});\n}","appbuilder = window.appbuilder || {};\nvar Popup = new Class({\n Implements: [Events, Options],\n options: {\n request: {\n url: null,\n data: {},\n method: 'get'\n },\n closeable: true,\n defaultCloseAction: {\n action: 'none'\n },\n size: {\n width: 400,\n height: 400\n },\n embed: true,\n closeall: true,\n stretch: false,\n popupclass: 'upload-picker'\n },\n initialize: function(options) {\n //All Popup events happen only once! and in a new loop\n var fe = this.fireEvent.bind(this);\n this.fireEvent = function(e, args) {\n if (e == 'close' || e == 'clear') {\n fe(e, args);\n if (e == 'close' || e == 'clear') {\n this.removeEvents(e);\n }\n }\n else {\n (function() {\n fe(e, args);\n }).delay(0, this);\n }\n };\n\n this.addEvent('refresh', this.load.bind(this));\n this.addEvent('url', this.url.bind(this));\n this.addEvent('popup', this.popup.bind(this));\n this.addEvent('content', this.setContent.bind(this));\n this.addEvent('close', this.close.bind(this));\n\n this.setOptions(options);\n Popup.popups.push(this);\n\n if (this.options.request.url) {\n this.load();\n }\n },\n url: function(options) {\n this.options.request.url = null;\n this.options.request.data = {};\n this.setOptions(options);\n\n if (this.options.request.url) {\n this.load();\n }\n },\n popup: function(options) {\n new Popup(options);\n },\n /*\n * Load this popup using current options\n */\n load: function() {\n this.showLoading();\n var data;\n if (appbuilder.app && appbuilder.app.info) {\n data = Object.merge({}, appbuilder.app.info, this.options.request.data);\n }\n else {\n data = this.options.request.data;\n }\n new Request.JSON({\n url: this.options.request.url,\n data: data,\n method: this.options.request.method,\n noCache: true,\n timeout: 30000,\n onSuccess: this.action.bind(this),\n onFailure: this.failedLoading.bind(this),\n onTimeout: this.failedLoading.bind(this)\n }).send();\n if (appbuilder.app && appbuilder.app.Analytics) {\n //Merge the url and data, and push a page view\n var uri = new URI(this.options.request.url);\n uri.setData(data, true);\n var d = uri.getData();\n if (d.controller) {\n appbuilder.app.Analytics.pushPageview('popup/' + d.controller + '/' + d.task, true);\n }\n else {\n var parts = this.options.request.url.match(/\\/appbuilder\\/(.+?)\\/(.+?)(?:$|\\?)/);\n if (parts) {\n appbuilder.app.Analytics.pushPageview('popup/' + parts[1] + '/' + parts[2], true);\n }\n else {\n appbuilder.app.Analytics.pushPageview('popup/' + uri.toString(), true);\n }\n }\n }\n },\n action: function(json) {\n if (!json || !json.action) {\n this.failedLoading();\n }\n if (json.retValue) {\n this.fireEvent('retValue', [json.retValue]);\n }\n if (typeOf(json.action) == 'array') {\n json.action.each(function(action) {\n this.handleAction(action, json);\n }, this);\n }\n else {\n this.handleAction(json.action, json);\n }\n },\n handleAction: function(action, json) {\n\n var closeAll = function(){\n var popup;\n while ((popup = Popup.popups.pop())) {\n if (popup.options.closeall)\n popup.fireEvent('close');\n }\n }\n\n switch (action) {\n case 'page_refresh':\n window.location.reload(true);\n break;\n case 'phone_refresh':\n if (appbuilder.app && appbuilder.app.current) {\n appbuilder.eventsManager.closeEvents();\n appbuilder.app.Storage.clear();\n appbuilder.app.current.history.refresh();\n }\n break;\n case 'phone_item_refresh':\n if (appbuilder.app && appbuilder.app.current) {\n appbuilder.eventsManager.closeEvents();\n appbuilder.app.current.loaded(json.phone_item_refresh, true);\n }\n break;\n case 'phone_item_navigate':\n if (appbuilder.app && appbuilder.app.current) {\n appbuilder.eventsManager.closeEvents();\n appbuilder.app.current.loaded(json.phone_item_navigate);\n appbuilder.app.current.flushStorage();\n appbuilder.app.link(json.phone_item_navigate.app ? 'app' : 'screen', json.phone_item_navigate.settings.main);\n }\n break;\n case 'phone_navigate':\n if (appbuilder.app && appbuilder.app.current) {\n appbuilder.eventsManager.closeEvents();\n appbuilder.app.link(json.phone_navigate.type, json.phone_navigate.id);\n }\n break;\n case 'phone_edit':\n if (appbuilder.app && appbuilder.app.current) {\n appbuilder.eventsManager.closeEvents();\n var el = document.id(appbuilder.app.current).getElement(json.phone_edit);\n el && el.fireEvent('edit', [null, this]);\n }\n break;\n case 'page_url':\n new URI(json.page_url).go();\n break;\n case 'refresh':\n this.fireEvent('refresh');\n break;\n case 'url':\n this.fireEvent('url', {request: {url: json.url}});\n break;\n case 'popup':\n this.fireEvent('popup', json.popup);\n break;\n case 'content':\n this.fireEvent('content', json.content);\n break;\n case 'close':\n this.fireEvent('close');\n break;\n case 'close_last':\n popup = Popup.popups.pop();\n if(popup){\n popup.fireEvent('close');\n }\n break;\n case 'close_all':\n closeAll();\n break;\n case 'parent_refresh':\n this.fireEvent('close');\n var popup = Popup.get();\n if(popup){\n popup.fireEvent('refresh');\n }\n break;\n case 'events_refresh':\n appbuilder.eventsManager.load();\n break;\n }\n },\n showLoading: function() {\n document.id(this);\n this.fireEvent('clear');\n this.loaded.empty();\n new Element('div', {\n html: '
    '\n + ''\n + '
    '\n + '
    '\n }).inject(this.loaded);\n Popup.make(this.loaded, this);\n this.resize();\n },\n failedLoading: function() {\n document.id(this);\n this.fireEvent('clear');\n this.loaded.empty();\n new Element('div', {'html':\n '
    '\n + ''\n + '
    '\n + '

    Oops

    '\n + '

    This is taking longer than expected, you might try closing this window and trying again.

    '\n + '

    Alternatively you could wait and it might load shortly.

    '\n + '
    '\n }).inject(this.loaded);\n Popup.make(this.loaded, this);\n this.resize();\n },\n setContent: function(html) {\n this.fireEvent('clear');\n document.id(this);\n this.loaded.empty();\n if (typeOf(html) == 'string') {\n this.loaded.set('html', html);\n }\n else {\n this.loaded.adopt(html);\n }\n\n this.content = this.loaded.getElement('.popup-content');\n\n if (this.content) {\n this.setOptions(this.content.getOptionsFromClass('popup-options'));\n\n if (this.content.hasClass('refresh-on-close')) {\n this.addEvent('close', function() {\n window.location.reload(true);\n });\n }\n\n //Prevent scrolling in the popup where it will just scroll the page\n if (!this.options.embed) {\n this.content.addEvent('mousewheel', function(e) {\n var scrolling = e.target.getScrollingParent(this.content);\n var s = scrolling.getScroll();\n var smax = scrolling.getScrollSize();\n var size = scrolling.getSize();\n smax.x -= size.x;\n smax.y -= size.y;\n if ((s.y == smax.y && e.wheel < 0) || (s.y == 0 && e.wheel > 0)) {\n //e.preventDefault();\n }\n }.bind(this));\n }\n }\n\n\n if ('current' in appbuilder.app){\n appbuilder.app.current.navigator.checkAds();\n }\n this.resize();\n Popup.checkChoosers(this.loaded, this, appbuilder.values );\n\n this.fireEvent('contentLoaded', [this.loaded]);\n },\n toElement: function() {\n if (!this.element) {\n if (!this.options.embed) {\n Popup.showUnderlay();\n }\n this.element = new Element('div', {'class': this.options.embed ? 'popup-embed' : 'popup-window'});\n if (!this.options.embed) {\n Popup.zIndex++;\n this.element.setStyle('z-index', Popup.zIndex);\n }\n this.loaded = new Element('div').addClass('popup-loaded').inject(this.element);\n\n if (this.options.embed) {\n var container = this.options.container || document.id(Popup.container) || document.id(document.body);\n var slider = container.hasClass('slider');\n if (!slider) {\n this.element.fade('hide');\n container.set('html','');\n\n }\n else {\n this.element.addClass('sliding');\n this.element.addClass('hidden-right');\n this.loaded.addClass('sliding-inner');\n }\n\n this.element.inject(container);\n if (slider) {\n setTimeout((function() {\n container.getChildren('.sliding:not(.hidden-right, .hidden-left)').addClass('hidden-left');\n this.element.removeClass('hidden-right');\n }).bind(this), 0);\n }\n else {\n this.element.fade('in');\n }\n }\n else {\n this.element.fade('hide');\n this.element.inject(document.id(document.body));\n this.element.fade('in');\n }\n\n }\n return this.element;\n },\n hide: function() {\n var e = document.id(this);\n if (this.options.embed && e.hasClass('sliding')) {\n e.addClass('hidden-right');\n var p = e.getPrevious('.sliding.hidden-left');\n if (p)\n p.removeClass('hidden-left');\n setTimeout(function() {\n e.destroy();\n }, 500);\n }\n else {\n e.set('tween', {\n onComplete: function() {\n setTimeout(function() {\n e.destroy();\n }, 0);\n }.bind(this)\n });\n e.fade('out');\n if (!this.options.embed) {\n Popup.zIndex--;\n Popup.hideUnderlay();\n }\n }\n },\n resize: function() {\n if (!this.options.embed) {\n var contentHeight = this.options.size.height;\n var contentWidth = this.options.size.width;\n\n var windowHeight = contentHeight + 30 + 30;\n if (this.loaded.getElement('.popup-buttons')) {\n windowHeight += 55;\n }\n var windowWidth = contentWidth;\n var tt = this.loaded.getElement('.popup-tip-target');\n if (tt) {\n windowWidth += 290;\n }\n var c, h;\n var e = document.id(this);\n \n if (!this.options.stretch) {\n e.setStyles({'width': windowWidth, 'height': windowHeight});\n } else {\n e.addClass(this.options.popupclass);\n e.setStyles({'width': null, 'height': null});\n }\n c = this.loaded.getElement('div.popup-content');\n if (c && !this.options.stretch) {\n c.setStyles({'width': contentWidth, 'height': contentHeight});\n }\n \n h = this.loaded.getElement('h2');\n if (h) {\n h.setStyles({'width': contentWidth - 10});\n }\n if (tt) {\n tt.setStyles({'height': contentHeight + 20});\n }\n \n if (this.options.stretch) {\n var screenWidth = document.getSize().x;\n e.setStyles({'left': (screenWidth / 2) - contentWidth / 2, top: null, position: null});\n }\n else {\n var docS = document.getSize(), t = (docS.y / 2) - contentHeight / 2;\n t = t+window.pageYOffset;\n e.setStyles({'left': (docS.x / 2) - contentWidth / 2, top: t > 90 ? t : 90, position: null});\n }\n }\n },\n close: function() {\n this.action(this.options.defaultCloseAction);\n this.fireEvent('clear');\n this.hide();\n Popup.popups.erase(this);\n }\n});\n\nPopup.container = 'popup-container';\n\nPopup.popups = [];\n/*\n * Get the top most popup\n */\nPopup.get = function() {\n return Popup.popups[Popup.popups.length - 1];\n};\n\n/*\n * Makes all the links popup links in el\n * Data is referenced and set in all popups that have popup-values class\n */\nPopup.make = function(root, popup, data) {\n root.getElementsOnce('.popup, [data-popup]').each(function(el) {\n el.store('enabled', true);\n el.addEvent('click', function(e) {\n e.stop();\n if (Dropdown && Dropdown.hideAll) {\n Dropdown.hideAll();\n }\n el.popup(root, popup, data);\n });\n });\n};\n\nElement.implement({\n popup: function(root, popup, data) {\n var poptions = (this.get('data-popup') || this.get('class') || '').split(' ');\n var enabled = this.retrieve('enabled');\n if (enabled || enabled == null) {\n if (popup && (poptions.contains('close') || poptions.contains('pclose'))) {\n popup.fireEvent('close');\n }\n else {\n var options = {};\n options.request = {};\n options.request.url = this.getURL();\n if (options.request.url && options.request.url != '') {\n options.validate = !(poptions.contains('no-validate') || poptions.contains('back'));\n options.embed = !((popup && !popup.options.embed) || poptions.contains('no-embed'));\n if(this.get('data-popup-container')){\n options.container = root.getElement('#'+this.get('data-popup-container'));\n }\n options.request.data = {};\n if (data && poptions.contains('values')) {\n Object.merge(options.request.data, data);\n }\n if (poptions.contains('post') || this.get('tag') == 'form') {\n var form = this.getForm(root);\n options.request.method = 'post';\n\n if (form && options.validate) {\n if (!form.validate()) {\n var failed = form.get('validator').fields.filter('.validation-failed');\n if (!failed.some(function(inp) {\n var tParent = inp.getParent('.tab-pane');\n return !tParent || tParent.hasClass('active');\n })) {\n failed.some(function(inp) {\n var tParent = inp.getParent('.tab-pane');\n if (tParent) {\n document.getElement('[data-toggle=\"tab\"][data-target=\"' + tParent.get('id') + '\"]').fireEvent('click');\n return true;\n }\n });\n }\n return;\n }\n }\n if (form) {\n Object.merge(options.request.data, form.toObject());\n }\n if ((this.get('tag') == 'button' || this.get('tag') == 'input' && this.get('type') == 'submit') && this.get('name')) {\n options.request.data[this.get('name')] = this.get('value');\n }\n }\n\n if (popup && (poptions.contains('in') || poptions.contains('post') || this.get('tag') == 'form')) {\n popup.fireEvent('url', options);\n }\n else {\n var p = new Popup(options);\n if (popup && poptions.contains('pass')) {\n p.addEvent('retValue', function(val) {\n popup.fireEvent('retValue', [val]);\n popup.fireEvent('close');\n });\n }\n if (popup && poptions.contains('refresh-on-close')) {\n p.addEvent('close', function() {\n popup.fireEvent('refresh');\n });\n }\n }\n }\n }\n }\n },\n getInlineValidator: function() {\n var validator = this.retrieve('validator-inline', null);\n if (!validator) {\n validator = new Form.Validator.Inline(this, {\n ignoreHidden: false,\n errorPrefix: ''\n });\n\n validator.addEvent('onShowAdvice', function() {\n //console.log('onShowAdvice', arguments);\n });\n //For some reason they dont quite go for the ignore hidden thing\n validator.addEvent('elementFail', function(el) {\n el.getParent('.control-group').addClass('error');\n });\n validator.addEvent('elementPass', function(el) {\n el.getParent('.control-group').removeClass('error');\n });\n\n this.store('validator-inline', validator);\n }\n return validator;\n },\n validate: function() {\n return this.getInlineValidator().validate();\n }\n});\n\nPopup.underlayCount = 0;\nPopup.underlay = null;\nPopup.zIndex = 100;\nPopup.showUnderlay = function() {\n if (Popup.underlay == null) {\n Popup.underlay = new Element('div');\n Popup.underlay.addClass('popup-underlay');\n //Popup.underlay.fade('hide');\n Popup.underlay.inject(document.id(document.body));\n Popup.underlay.tween('opacity', 0, 0.5);\n }\n Popup.underlayCount++;\n Popup.underlay.setStyle('z-index', ++Popup.zIndex);\n};\nPopup.hideUnderlay = function() {\n Popup.underlayCount--;\n Popup.zIndex--;\n Popup.underlay.setStyle('z-index', Popup.zIndex - 1);\n if (Popup.underlayCount == 0) {\n Popup.underlay.set('tween', {\n onComplete: function() {\n setTimeout(function() {\n Popup.underlay.destroy();\n Popup.underlay = null;\n }, 0);\n }\n });\n Popup.underlay.fade('out');\n }\n};\n\nPopup.choosers = [\n Popup.make,\n function(root) {\n root.getElementsOnce('.phone-container').each(function(div) {\n var options = div.getOptionsFromClass('phone-options');\n var phone = new appbuilder.app.Phone(options);\n div.store('phone', phone);\n document.id(phone).inject(div);\n });\n },\n function(root) {\n root.getElementsOnce('.switches').each(function(accordian) {\n var switches = accordian.getChildren('.switch');\n var switchables = accordian.getChildren('.switchable');\n var selected = switches.indexOf(accordian.getElement('[checked] ! .switch, .selected ! .switch, .switch.selected'));\n //! is reverse, ie selects .switchable which is parent of .selected\n var a = new Fx.Accordion(switches, switchables, {\n display: selected || -1,\n alwaysHide: true,\n onActive: function(toggler, element) {\n toggler.addClass('openBox');\n },\n onBackground: function(toggler, element) {\n toggler.removeClass('openBox');\n }\n });\n accordian.store('accordion', a);\n });\n }\n];\n\nif (!(\"placeholder\" in document.createElement(\"input\"))) {\n Popup.choosers.push(function(root) {\n var inps = root.getElementsOnce('input[placeholder]');\n inps.each(function(i) {\n var p = i.getParent('.control-group') || i.getParent();\n if (p.getElements('label').length == 0) {\n (new Element('label', {text: i.get('placeholder')}))\n .inject(p, 'top');\n }\n });\n });\n}\n\nPopup.addChooser = function(func) {\n Popup.choosers.push(func);\n};\n\nPopup.checkChoosers = function(root, popup, data) {\n Popup.choosers.each(function(func) {\n func(root, popup, data);\n });\n};\n\nPopup.showSimple = function(title, subtitle, content, options) {\n var popup = new Popup({\n size: {\n 'width': 450,\n 'height': 100\n }\n });\n if (options) {\n popup.setOptions(options);\n }\n var c = new Element('div', {\n 'class': ''\n });\n new Element('h1', {\n html: title\n }).inject(c);\n\n if (typeOf(content) == 'string') {\n new Element('div', {'html': content}).inject(c);\n }\n else {\n c.adopt(content);\n }\n\n popup.fireEvent('content', [c]);\n return popup;\n};\n","var Select = new Class({\n\tImplements : Events,\n\t\n\tinitialize : function(ul, scroll) {\n\t\tthis.ul = ul;\n\t\tthis.scroll = ul.retrieve('scroller');\n\t\tif(this.scroll == null)\n\t\t\tthis.scroll = scroll;\n\t\tvar accordion;\n\t\tif(this.ul.hasClass('switches')) {\n\t\t\taccordion = this.ul.retrieve('accordion');\n\t\t\tvar switches = this.ul.getElements('.switch');\n\t\t\tswitches.setStyle('border-top', 'none');\n\t\t}\n\t\t\n\t\tthis.ul.getElements('div.option').each(function(li) {\n\t\t\tvar inp = li.getElement('input');\n\t\t\tinp.setStyle('display', 'none');\n\t\t\tif(inp.get('checked')) {\n\t\t\t\tthis.selectedLi = li;\n\t\t\t\tli.addClass('selected');\n\t\t\t\tif(this.scroll != null)\n\t\t\t\t\t(function() { this.scroll.toElement(li); }).bind(this)();\n\t\t\t\tif(accordion) {\n\t\t\t\t\taccordion.display(li.getParent('.switchable'));\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar t = this;\n\t\t\t\t\n\t\t\tvar select = function() {\n\t\t\t\tinp.set('checked', 'checked');\n\t\t\t\tif(t.selectedLi != null) {\n\t\t\t\t\tt.selectedLi.removeClass('selected');\n\t\t\t\t}\n\t\t\t\tt.selectedLi = li;\n\t\t\t\tli.addClass('selected');\n\t\t\t\tt.fireEvent('select', li);\n\t\t\t}\n\t\t\t\n\t\t\tli.store('select', select);\n\t\t\t\n\t\t\tli.addEvent('click', select);\n\t\t}, this);\n\t\t\n\t\t\n\t\t\n\t\tul.store('select', this);\n\t}\n});\nSelect.make = function(root) {\n\tvar saveBtn = root.getElement('.save');\n\tvar nextBtn = root.getElement('.next');\n\tvar btns = null;\n\tif(saveBtn != null && nextBtn != null) {\n\t\tbtns = function(li) {\n\t\t\tif(li.hasClass('savable')) {\n\t\t\t\tsaveBtn.setStyle('display', 'block');\n\t\t\t\tnextBtn.setStyle('display', 'none');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tnextBtn.setStyle('display', 'block');\n\t\t\t\tsaveBtn.setStyle('display', 'none');\n\t\t\t}\n\t\t};\n\t}\n\tvar scroll = root.retrieve('fxscroll');\n\troot.getElementsOnce('div.select').each(function(select) {\n\t\tvar s = new Select(select, scroll);\n\t\tif(btns != null) {\n\t\t\ts.addEvent('select', btns);\n\t\t\tbtns(s.selectedLi);\n\t\t}\n\t});\n};\nif(window.Popup) {\n\tPopup.addChooser(Select.make);\n}\n","var Tabs2 = function(root) {\n\troot.getElementsOnce('.nav.nav-tabs').each(function(tabsBar) {\n\t\tvar tabs = tabsBar.getElements('[data-toggle=\"tab\"]');\n\t\tvar lis = tabsBar.getElements('li');\n\t\tvar panes = tabsBar.getNext('.tab-content').getChildren('.tab-pane');\n\t\ttabs.addEvent('click', function() {\n\t\t\tlis.removeClass('active');\n\t\t\tpanes.removeClass('active');\n\t\t\t\n\t\t\tthis.getParent('li').addClass('active');\n\t\t\tvar tabToOpen = document.id(this.get('data-target'));\n\t\t\ttabToOpen.addClass('active');\n\t\t\ttabToOpen.getElements('.css-editor,.javascript-editor').each(function(area) {\n\t\t\t\tvar editor = area.retrieve('editor');\n\t\t\t\tif(editor) {\n\t\t\t\t\teditor.refresh();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t});\n}\n\nif(window.Popup) {\n\tPopup.addChooser(Tabs2);\n}","var Toggle = function(root) {\n\troot.getElementsOnce('[data-toggle=\"buttons-radio\"]').each(function(buttonGroup) {\n\t\tvar buttons = buttonGroup.getElements('button'),\n\t\t\tname = buttonGroup.get('data-name'),\n\t\t\tinput;\n\t\tif(name) {\n\t\t\tinput = root.getElement('[name=\"' + name +'\"]');\n\t\t}\n\t\tbuttons.addEvent('click', function() {\n\t\t\tbuttons.removeClass('active');\n\t\t\tthis.addClass('active');\n\t\t\tif(input) {\n\t\t\t\tinput.set('value', this.get('data-value'));\n\t\t\t\tinput.fireEvent('change');\n\t\t\t}\n\t\t});\n\t});\n}\n\nif(window.Popup) {\n\tPopup.addChooser(Toggle);\n}\n","var EditSelect = function(root) {\n\tvar table = root.getElement('#table');\n\t\n\tvar deleteRow = function(row, inp) {\n\t\trow.setStyle('display', 'none');\n\t\tinp.set('value', 1);\n\t};\n\t\n\tvar newRow = function(e) {\n\t\tif(e != null) e.stop();\n\t\tvar tr = new Element('tr');\n\t\tvar c1 = new Element('td').inject(tr);\n\t\tvar idEl = new Element('input', {'type':'hidden', 'name':'item_option_ids[]', 'value':0}).inject(c1);\n\t\tvar delEl = new Element('input', {'type':'hidden', 'name':'item_option_deleteds[]', 'value':0}).inject(c1);\n\t\tvar nameEl = new Element('input', {'type':'text', 'name':'item_option_names[]', 'value':''}).inject(c1);\n\t\tvar c2 = new Element('td').inject(tr);\n\t\tvar valEl = new Element('input', {'type':'text', 'name':'item_option_values[]', 'value':''}).inject(c2);\n\t\tvar c3 = new Element('td').inject(tr);\n\t\tvar delBtn = new Element('button', {'html':'Delete', 'type':'button'}).inject(c3);\n\t\tdelBtn.addEvent('click', function(e) {\n\t\t\te.stop();\n\t\t\tdeleteRow(tr, delEl);\n\t\t});\n\t\ttr.inject(table);\n\t};\n\n\troot.getElement('#add').addEvent('click', newRow);\n\t\n\ttable.getElements('tr').each(function(tr) {\n\t\ttr.getElement('button').addEvent('click', function(e) {\n\t\t\te.stop();\n\t\t\tdeleteRow(tr, tr.getElement('input[name=\"item_option_deleteds[]\"]'));\n\t\t});\n\t});\n};\nEditSelect.make = function(root) {\n\troot.getElementsOnce('.edit-select').each(function(el) {\n\t\tEditSelect(el);\n\t});\n};\nif(window.Popup) {\n\tPopup.addChooser(EditSelect.make);\n}\n","var VariableChooser = new Class({\n\tImplements : Options,\n\toptions : {\n\t\tlinktype:'none',\n\t\tlink:0,\n\t\tname:'variable_data',\n\t\trequest : {\n\t\t\turl : 'index.php',\n\t\t\tdata : {\n\t\t\t\toption : 'com_appbuilder',\n\t\t\t\tcontroller : 'variables',\n\t\t\t\ttask : 'edit'\n\t\t\t}\n\t\t},\n\t\tvariables : []\n\t},\n\n\tinitialize : function(options) {\n\t\tthis.setOptions(options);\n\t},\n\n\ttoElement : function() {\n\t\tif(!this.element) {\n\t\t\tthis.element = new Element('button', {\n\t\t\t\t'class':'popup-button-choose btn',\n\t\t\t\t'html':'Variables',\n\t\t\t\t'type':'button'\n\t\t\t});\n\t\t\tthis.element.addEvent('click', this.buttonClick.bind(this));\n\t\t\tthis.hidden = new Element('input', {\n\t\t\t\t'type':'hidden',\n\t\t\t\t'name':this.options.name,\n\t\t\t\t'value':JSON.encode(this.options.variables)\n\t\t\t}).inject(this.element);\n\t\t}\n\t\treturn this.element;\n\t},\n\n\tbuttonClick : function(e) {\n\t\tif(e) {\n\t\t\te.stop();\n\t\t}\n\t\tvar popup = new Popup({\n\t\t\trequest : {\n\t\t\t\t'url' : this.options.request.url,\n\t\t\t\t'data' : Object.merge({}, this.options.request.data, {\n\t\t\t\t\t'linktype':this.options.linktype,\n\t\t\t\t\t'link':this.options.link,\n\t\t\t\t\t'variables' : JSON.encode(this.options.variables)\n\t\t\t\t})\n\t\t\t}\n\t\t});\n\t\tpopup.addEvent('retValue', function(value) {\n\t\t\tthis.hidden.set('value', JSON.encode(value));\n\t\t\tthis.options.variables = value;\n\t\t}.bind(this));\n\t}\n});\nVariableChooser.make = function(root) {\n\troot.getElementsOnce('.variable-chooser').each(function(el) {\n\t\tvar options = el.getOptionsFromClass('variable-chooser-options');\n\t\tvar chooser = new VariableChooser(options);\n\t\tdocument.id(chooser).inject(el);\n\t});\n};\nif(window.Popup) {\n\tPopup.addChooser(VariableChooser.make);\n}\n","if(window.Popup) {\n\tPopup.addChooser(function(root, popup) {\n\t\t//var actionTarget = root.getElement('.action-target');\n\t\tvar targetP;\n\t\troot.getElementsOnce('.action-selector').each(function(selector) {\n\t\t\tvar open = false;\n\t\t\tvar actions = selector.getElements('.action');\n\t\t\t//var titles = selector.getElements('.action-title');\n\t\t\tvar hidden = selector.getElement('input[type=hidden]');\n\t\t\tvar replaces = selector.hasClass('replace');\n\t\t\tvar actionTargetId = selector.get('data-action-target');\n\t\t\tif(actionTargetId) {\n var actionTarget = document.id(actionTargetId);\n\t\t\t}\n\t\t\tvar extensionBtnId = selector.get('data-extension-edit-button');\n\t\t\tif(extensionBtnId) {\n var extensionBtn = document.id(extensionBtnId);\n\t\t\t}\n\t\t\tvar actionsTabId = selector.get('data-actions-tab');\n\t\t\tif(actionsTabId) {\n var actionsTab = document.id(actionsTabId);\n\t\t\t}\n\t\t\tif(!actions.filter('.selected').length && actions.length) {\n actions[0].addClass('selected');\n\t\t\t}\n\t\t\tactions.addEvent('click', function(e) {\n\t\t\t\tif(open) {\n\t\t\t\t\tvar that = this;\n\t\t\t\t\tfunction change() {\n\t\t\t\t\t\thidden.set('value', that.get('data-value'));\n\t\t\t\t\t\tactions.removeClass('selected');\n\t\t\t\t\t\tthat.addClass('selected');\n\t\t\t\t\t\tselector.removeClass('open focus');\n\t\t\t\t\t\topen = false;\n\t\t\t\t\t\tif(actionTarget) {\n\t\t\t\t\t\t\tvar requestData = {};\n\t\t\t\t\t\t\tObject.merge(requestData/*, popup.options.request.data*/);\n\t\t\t\t\t\t\tdelete requestData.task;\n\t\t\t\t\t\t\trequestData[hidden.get('name')] = hidden.get('value');\n\t\t\t\t\t\t\tif(replaces) {\n\t\t\t\t\t\t\t\tObject.merge(requestData, selector.getParent('form').toObject());\n\t\t\t\t\t\t\t\tvar options = {\n\t\t\t\t\t\t\t\t\trequest: {\n\t\t\t\t\t\t\t\t\t\turl: selector.get('data-action'),\n\t\t\t\t\t\t\t\t\t\tdata: requestData\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tpopup.fireEvent('url', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tif(targetP) {\n\t\t\t\t\t\t\t\t\ttargetP.fireEvent('close');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tactionTarget.empty();//remove something that was intially here\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttargetP = new Popup({\n\t\t\t\t\t\t\t\t\trequest: {\n\t\t\t\t\t\t\t\t\t\turl: selector.get('data-action'),\n\t\t\t\t\t\t\t\t\t\tdata: requestData\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tcontainer: actionTarget,\n\t\t\t\t\t\t\t\t\tcloseable: false\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(extensionBtn) {\n\t\t\t\t\t\t\tvar url = new URI(extensionBtn.get('data-url'));\n\t\t\t\t\t\t\turl.setData('extension_id', that.get('data-value'));\n\t\t\t\t\t\t\textensionBtn.set('data-url', url.toString());\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar con = actions.filter('.selected')[0].get('data-confirm');\n\t\t\t\t\tif(con) {\n\t\t\t\t\t\tvar confirmPopup = Popup.showSimple('Are you sure?', null, [\n\t\t\t\t\t\t\tnew Element('div', {\n\t\t\t\t\t\t\t\t'class': 'content',\n\t\t\t\t\t\t\t\thtml: con\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tnew Element('div', {\n\t\t\t\t\t\t\t\t'class': 'content'\n\t\t\t\t\t\t\t}).adopt(\n\t\t\t\t\t\t\t\tnew Element('button', {\n\t\t\t\t\t\t\t\t\thtml: ' Yes',\n\t\t\t\t\t\t\t\t\t'class': 'btn btn-success'\n\t\t\t\t\t\t\t\t}).addEvent('click', function(e){\n\t\t\t\t\t\t\t\t\te.stop();\n\t\t\t\t\t\t\t\t\tconfirmPopup.fireEvent('close');\n\t\t\t\t\t\t\t\t\tchange();\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\tnew Element('span', {html: ' '}),\n\t\t\t\t\t\t\t\tnew Element('button', {\n\t\t\t\t\t\t\t\t\thtml: ' No',\n\t\t\t\t\t\t\t\t\t'class': 'btn',\n\t\t\t\t\t\t\t\t\t'data-popup': 'close'\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tchange();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tselector.addClass('open focus');\n\t\t\t\t\topen = true;\n\t\t\t\t\tdocument.id(document.body).addEvent('click', documentclick);\n\t\t\t\t\te.stop();\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tvar documentclick = function() {\n\t\t\t\tselector.removeClass('open focus');\n\t\t\t\topen = false;\n\t\t\t\tdocument.id(document.body).removeEvent('click', documentclick);\n\t\t\t};\n\t\t});\n\t});\n}\n","if (window.Popup) {\n Popup.addChooser(function (root, popup) {\n //var actionTarget = root.getElement('.action-target');\n var targetP;\n\n root.getElementsOnce('.action-selector2').each(function (selector) {\n var open = false;\n var actions = selector.getElements('.action');\n var hidden = selector.getElement('input[type=hidden]');\n var replaces = selector.hasClass('replace');\n var actionTargetId = selector.get('data-action-target');\n if (actionTargetId) {\n var actionTarget = document.id(actionTargetId);\n }\n var tabParent = selector.getParent('.tab-pane');\n var actionsTabId = selector.get('data-actions-tab');\n if (actionsTabId) {\n var actionsTab = document.id(actionsTabId);\n var actionsTabActions = actionsTab.getElements('.action');\n }\n var triggerId = selector.get('data-action-trigger');\n if (triggerId) {\n var trigger = document.id(triggerId);\n }\n\n\n var actionsTabActionsClick = function (e) {\n var that = this;\n\n function change() {\n var val = that.get('data-value');\n var screenType,codeType;\n var requestData = {};\n\n hidden.set('value', val);\n actions.removeClass('selected');\n actionsTabActions.removeClass('selected');\n\n if(val=='screen'){\n screenType = that.get('data-screentype');\n selector.getElement('.action[data-screentype=\"' + screenType + '\"]').addClass('selected');\n\n }else if(val=='code'){\n codeType = that.get('data-codetype');\n selector.getElement('.action[data-codetype=\"' + codeType + '\"]').addClass('selected');\n }else{\n selector.getElement('.action[data-value=\"' + val + '\"]').addClass('selected');\n }\n\n that.addClass('selected');\n\n tabParent.removeClass('active');\n actionsTab.addClass('active');\n open = false;\n\n if (actionTarget) {\n //Object.merge(requestData/*, popup.options.request.data*/);\n delete requestData.task;\n\n if(val==\"iot\"){\n requestData['action_iot_icon'] = that.get('data-iconId');\n requestData['action_iot_variable'] = that.get('data-variable');\n requestData['action_iot_type'] = that.get('data-type');\n requestData['action_iot_title'] = that.get('data-title');\n }\n\n if(val==\"code\"){\n requestData['action_code_type'] = that.get('data-codetype');\n }\n\n if(val==\"screen\"){\n requestData['action_screen_is_jump'] = screenType == 'jump';\n requestData['action_screen_type'] = screenType ;\n }\n\n// requestData['action_screen_is_jump'] = screenType == 'jump';\n\n requestData['action_linktype'] = val;\n showSomething(requestData);\n }\n }\n\n\n var con = false;\n if (actions.filter('.selected').length && (con = actions.filter('.selected')[0].get('data-confirm'))) {\n var confirmPopup = Popup.showSimple('Are you sure?', null, [\n new Element('div', {\n 'class': 'content',\n html: con\n }),\n new Element('div', {\n 'class': 'content'\n }).adopt(\n new Element('button', {\n html: ' Yes',\n 'class': 'btn btn-success'\n }).addEvent('click', function (e) {\n e.stop();\n confirmPopup.fireEvent('close');\n change();\n }),\n new Element('span', {html: ' '}),\n new Element('button', {\n html: ' No',\n 'class': 'btn',\n 'data-popup': 'close'\n })\n )\n ]);\n }\n else {\n change();\n }\n }\n\n actionsTabActions.addEvent('click', actionsTabActionsClick);\n\n function showSomething(requestData) {\n if (requestData['action_linktype'] && requestData['action_linktype'] == \"screen\") {\n actionTarget.empty();//remove something that was intially here\n }\n\n requestData['app_id'] = appbuilder.app.current.history.currentApp;\n\n if (replaces) {\n Object.merge(requestData, selector.getParent('form').toObject());\n var options = {\n parentPopup: popup,\n request: {\n url: selector.get('data-action'),\n data: requestData\n }\n };\n\n popup.fireEvent('url', options);\n }\n else {\n if (targetP) {\n targetP.fireEvent('close');\n }\n else {\n actionTarget.empty();//remove something that was intially here\n popup.addEvent('close', function () {\n targetP.fireEvent('close');\n });\n }\n targetP = new Popup({\n request: {\n url: selector.get('data-action'),\n data: requestData\n },\n container: actionTarget,\n closeable: false,\n parentPopup: popup\n });\n }\n }\n\n selector.store('showSomething', showSomething);\n trigger.addEvent('click', function (e) {\n tabParent.removeClass('active');\n actionsTab.addClass('active');\n open = true;\n document.id(document.body).addEvent('click', documentclick);\n e.stop();\n });\n\n var documentclick = function () {\n tabParent.addClass('active');\n actionsTab.removeClass('active');\n open = false;\n document.id(document.body).removeEvent('click', documentclick);\n };\n\n var itemAction = root.getElement('[name=\"action_linktype\"]');\n if (itemAction && itemAction.get('value') == 'screen') {\n (function () {\n var a = document.getElement('.action-selector2-tab div.action.selected');\n a.fireEvent('click');\n var b = document.getElement('.form-horizontal [data-target=\"edit_item\"]');\n b.fireEvent('click');\n }).delay(500);\n }\n\n var outputsEl = root.getElement('.title.iot');\n if (outputsEl) {\n\n var iotEl =root.getElement('[data-value=\"iot\"]');\n\n var request = new Request.JSON({\n url: outputsEl.get('data-ioturl'),\n withCredentials: true,\n onSuccess: function (outputs) {\n outputs.each(function (output) {\n var action = new Element('div', {\n 'class': 'action',\n 'data-iconId': output.icon,\n 'data-value': 'iot',\n 'data-type': output.type,\n 'data-title': output.title,\n 'data-variable': output.variable\n }).inject(outputsEl, 'after');\n\n action.addEvent('click',actionsTabActionsClick);\n action.addEvent('click',function(e){\n\n iotEl.set('data-type', output.type);\n iotEl.set('data-iconId', output.icon);\n iotEl.set('data-title', output.title);\n iotEl.set('data-variable', output.variable);\n iotEl.getElement('h3').set('html',output.title);\n iotEl.getElement('.description').set('html','IoT '+output.type+' output ('+output.variable+')');\n iotEl.getElement('img').set('src',output.iconUrl);\n\n });\n\n new Element('img', {'class': 'tool','src':output.iconUrl}).inject(action);\n new Element('h3', {'html': output.title}).inject(action);\n new Element('div', {\n 'class': 'description',\n 'html': 'Iot output action'\n }).inject(action);\n\n });\n },\n onFailure: function () {\n outputsEl.set('html', 'Session error');\n }\n\n }).get();\n }\n\n });\n\n\n\n\n });\n} ","var Discount = new Class({\n\tImplements: Options,\n\t\n\toptions : {\n\t\tpayment_id : 0,\n\t\tpayment_amount : 0,\n\t\tdiscount_amount : 0,\n\t\tbtn : null,\n\t\tinp : null,\n\t\trequest : {\n\t\t\turl : 'index.php',\n\t\t\tdata : {\n\t\t\t\t'option' : 'com_appbuilder',\n\t\t\t\t'controller' : 'discounts',\n\t\t\t\t'task' : 'validate'\n\t\t\t}\n\t\t}\n\t},\n\t\n\tinitialize : function(options) {\n\t\tthis.setOptions(options);\n\t},\n\t\n\ttoElement : function() {\n\t\tif(!this.element) {\n\t\t\tthis.element = new Element('div', {\n\t\t\t\t'class':'discount-element'\n\t\t\t});\n\t\t\tthis.info = new Element('div').inject(this.element);\n\t\t\tthis.setInfo();\n\t\t\tif(this.options.btn && this.options.inp) {\n\t\t\t\tthis.options.btn.addEvent('click', this.submit.bind(this));\n\t\t\t\tthis.options.inp.addEvent('keydown', function(e) {\n\t\t\t\t\tif(e.key == 'enter') {\n\t\t\t\t\t\te.stop();\n\t\t\t\t\t\tthis.submit();\n\t\t\t\t\t}\n\t\t\t\t}.bind(this));\n\t\t\t}\n\t\t}\n\t\treturn this.element;\n\t},\n\t\n\tsubmit : function(e) {\n\t\tif(e) {\n\t\t\te.stop();\n\t\t}\n\t\tnew Request.JSON({\n\t\t\turl : this.options.request.url,\n\t\t\tdata : Object.merge({\n\t\t\t\t'discount_code':this.options.inp.get('value'),\n\t\t\t\t'payment_id':this.options.payment_id\n\t\t\t\t}, this.options.request.data),\n\t\t\tonSuccess: function(ret) {\n\t\t\t\tif(ret) {\n\t\t\t\t\tthis.options.discount_amount = ret.retValue;\n\t\t\t\t\tthis.setInfo();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.options.discount_amount = 0;\n\t\t\t\t}\n\t\t\t}.bind(this)\n\t\t}).send();\n\t},\n\t\n\tsetInfo : function() {\n\t\tvar message = '£' + (this.options.payment_amount / 100).toFixed(2);\n\t\tif(this.options.discount_amount > 0) {\n\t\t\tmessage += ' - £' + (this.options.discount_amount / 100).toFixed(2) + ' = £' + ((this.options.payment_amount - this.options.discount_amount) / 100).toFixed(2);\n\t\t}\n\t\tthis.info.set('html', message);\n\t}\n});\n\nvar DiscountRecur = new Class({\n\tImplements: Options,\n\t\n\toptions : {\n\t\trecur : null,\n\t\tbtn : null,\n\t\tinp : null,\n\t\trequest : {\n\t\t\turl : 'index.php',\n\t\t\tdata : {\n\t\t\t\t'option' : 'com_appbuilder',\n\t\t\t\t'controller' : 'discounts',\n\t\t\t\t'task' : 'validateRecur'\n\t\t\t}\n\t\t}\n\t},\n\t\n\tinitialize : function(options) {\n\t\tthis.setOptions(options);\n\t},\n\t\n\ttoElement : function() {\n\t\tif(!this.element) {\n\t\t\tthis.element = new Element('div', {\n\t\t\t\t'class':'discount-recur-element'\n\t\t\t});\n\t\t\tthis.info = new Element('div').inject(this.element);\n\t\t\tthis.setInfo();\n\t\t\tif(this.options.btn && this.options.inp) {\n\t\t\t\tthis.options.btn.addEvent('click', this.submit.bind(this));\n\t\t\t\tthis.options.inp.addEvent('keydown', function(e) {\n\t\t\t\t\tif(e.key == 'enter') {\n\t\t\t\t\t\tthis.submit();\n\t\t\t\t\t\te.stop();\n\t\t\t\t\t}\n\t\t\t\t}.bind(this));\n\t\t\t}\n\t\t}\n\t\treturn this.element;\n\t},\n\t\n\tsubmit : function(e) {\n\t\tif(e) {\n\t\t\te.stop();\n\t\t}\n\t\tnew Request.JSON({\n\t\t\turl : this.options.request.url,\n\t\t\tdata : Object.merge({\n\t\t\t\t'discount_code':this.options.inp.get('value'),\n\t\t\t\t'payment_recur_id':this.options.recur.id\n\t\t\t\t}, this.options.request.data),\n\t\t\tonSuccess: function(ret) {\n\t\t\t\tif(ret) {\n\t\t\t\t\tthis.options.recur = ret.retValue;\n\t\t\t\t\tthis.setInfo();\n\t\t\t\t}\n\t\t\t}.bind(this)\n\t\t}).send();\n\t},\n\t\n\tsetInfo : function() {\n\t\tvar message = this.options.recur.description + ' ' + this.options.recur.period + ' payments of £' + (this.options.recur.ongoing_amount / 100).toFixed(2);\n\t\tif(this.options.recur.first_amount) {\n\t\t\tmessage += \"\\n\" + this.options.recur.first_amount_times + \" time(s) discounted to £\" + (this.options.recur.first_amount / 100).toFixed(2);\n\t\t}\n\t\tthis.info.set('html', message);\n\t}\n});\n\nDiscount.make = function(root) {\n\tvar btn = root.getElement('.discount_check_button');\n\tvar inp = root.getElement('.discount_code');\n\tif(btn && inp) {\n\t\troot.getElementsOnce('.discount').each(function(el) {\n\t\t\tvar options = el.getOptionsFromClass('discount-options');\n\t\t\toptions.btn = btn;\n\t\t\toptions.inp = inp;\n\t\t\tvar discount = new Discount(options);\n\t\t\tdocument.id(discount).inject(el);\n\t\t});\n\t\troot.getElementsOnce('.discount-recur').each(function(el) {\n\t\t\tvar options = el.getOptionsFromClass('discount-recur-options');\n\t\t\toptions.btn = btn;\n\t\t\toptions.inp = inp;\n\t\t\tvar discount = new DiscountRecur(options);\n\t\t\tdocument.id(discount).inject(el);\n\t\t});\n\t}\n};\nif(window.Popup) {\n\tPopup.addChooser(Discount.make);\n}\n","/**\n * Words for form validator\n */\nLocale.define('en-US', 'FormValidator', {\n\n\trequired: 'This field is required.',\n\tminLength: 'Please enter at least {minLength} characters.',\n\tmaxLength: 'Please enter no more than {maxLength} characters.',\n\tinteger: 'Please enter an integer in this field. Numbers with decimals (e.g. 1.25) are not permitted.',\n\tnumeric: 'Please enter only numeric values in this field (i.e. \"1\" or \"1.1\" or \"-1\" or \"-1.1\").',\n\tdigits: 'Please use numbers and punctuation only in this field (for example, a phone number with dashes or dots is permitted).',\n\talpha: 'Please use only letters (a-z) within this field. No spaces or other characters are allowed.',\n\talphanum: 'Please use only letters (a-z) or numbers (0-9) in this field. No spaces or other characters are allowed.',\n\tdateSuchAs: 'Please enter a valid date such as {date}',\n\tdateInFormatMDY: 'Please enter a valid date such as MM/DD/YYYY (i.e. \"12/31/1999\")',\n\temail: 'Please enter a valid email address.',\n\turl: 'Please enter a valid URL such as http://www.google.com.',\n\tcurrencyDollar: 'Please enter a valid $ amount. For example $100.00 .',\n\toneRequired: 'Please enter something for at least one of these inputs.',\n\terrorPrefix: 'Error: ',\n\twarningPrefix: 'Warning: ',\n\n\t// Form.Validator.Extras\n\tnoSpace: 'There can be no spaces in this input.',\n\treqChkByNode: 'No items are selected.',\n\trequiredChk: 'This field is required.',\n\treqChkByName: 'Please select a {label}.',\n\tmatch: 'This field needs to match the {matchName} field',\n\tstartDate: 'the start date',\n\tendDate: 'the end date',\n\tcurrendDate: 'the current date',\n\tafterDate: 'The date should be the same or after {label}.',\n\tbeforeDate: 'The date should be the same or before {label}.',\n\tstartMonth: 'Please select a start month',\n\tsameMonth: 'These two dates must be in the same month - you must change one or the other.',\n\tcreditcard: 'The credit card number entered is invalid. Please check the number and try again. {length} digits entered.'\n\n});","Object.setFormVariable = function(obj, name, value) {\n\tif(name.endsWith(\"[]\")) {\n\t\tname = name.substr(0, name.length-2);\n\t\tif(obj[name] == null) {\n\t\t\tobj[name] = [value];\n\t\t}\n\t\telse {\n\t\t\tobj[name].push(value);\n\t\t}\n\t}\n\telse {\n\t\tobj[name] = value;\n\t}\n};\n\nElement.implement({\n\tgetOptionsFromClass : function(c) {\n\t\tvar classes = this.get('class');\n\t\tvar open = classes.indexOf(c + ':{');\n\t\tif(open == -1) {\n\t\t\treturn {};\n\t\t}\n\t\topen += c.length + 1;\n\t\tvar i = open;\n\t\twhile(classes.charAt(i) != ' ' && i < classes.length) {\n\t\t\ti++;\n\t\t}\n\t\tvar str = classes.substr(open, i - open);\n\t\tvar o = Function.attempt(JSON.decode.pass(str));\n\t\tif(o == null) {\n\t\t\twindow.console && console.log(\"Error decoding json class \\\"\" + c + \"\\\" from string \\\"\" + str + \"\\\"\");\n\t\t\to = {};\n\t\t}\n\t\treturn o;\n\t},\n\t\n\tisScrollable : function() {\n\t\tvar size = this.getSize();\n\t\tvar smax = this.getScrollSize();\n\t\tsmax.x -= size.x;\n\t\tsmax.y -= size.y;\n\t\treturn (smax.y > 0);\n\t},\n\t\n\tgetScrollingParent : function(limitEl) {\n\t\tif(this.isScrollable()) {\n\t\t\treturn this;\n\t\t}\n\t\telse if(this != limitEl) {\n\t\t\tvar p = this.getParent();\n\t\t\tif(p) {\n\t\t\t\treturn p.getScrollingParent(limitEl);\n\t\t\t}\n\t\t}\n\t\treturn limitEl;\n\t},\n\t\n\tgetForm : function(limitEl) {\n\t\tif(this.get('tag') == 'form') {\n\t\t\treturn this;\n\t\t}\n\t\telse if(this != limitEl) {\n\t\t\tvar p = this.getParent();\n\t\t\tif(p) {\n\t\t\t\treturn p.getForm(limitEl);\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t},\n\t\n\ttoObject : function() {\n\t\tvar out = {};\n\n\t\tthis.getElements('input').each(function(input) {\n\t\t\tif(input.get('type') != 'submit' && input.get('name') && ((input.get('type') != 'radio' && input.get('type') != 'checkbox') || input.get('checked'))) {\n\t\t\t\tObject.setFormVariable(out, input.get('name'), input.get('value'));\n\t\t\t}\n\t\t});\n\n\t\tthis.getElements('textarea').each(function(area) {\n\t\t\tif(area.get('name')) {\n\t\t\t\tvar editor = area.retrieve('editor');\n\t\t\t\tif(editor) {\n\t\t\t\t\teditor.toTextArea();\n\t\t\t\t\tarea.store('editor', null);\n\t\t\t\t}\n\t\t\t\tObject.setFormVariable(out, area.get('name'), area.get('value'));\n\t\t\t}\n\t\t});\n\n\t\tthis.getElements('select').each(function(select) {\n\t\t\tif(select.get('name')) {\n\t\t\t\tselect.getElements('option').each(function(option) {\n\t\t\t\t\tif(option.get('value') && option.get('selected')) {\n\t\t\t\t\t\tObject.setFormVariable(out, select.get('name'), option.get('value'));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n this.getElements('[data-blockly]').each(function(editor) {\n var Blockly = editor.retrieve('blockly');\n if(Blockly) {\n var xml = Blockly.Xml.workspaceToDom(Blockly.mainWorkspace);\n Object.setFormVariable(out, editor.get('data-blockly-name'), Blockly.Xml.domToText(xml));\n if(editor.get('data-blockly-code-name')) {\n Object.setFormVariable(out, editor.get('data-blockly-code-name'), Blockly.JavaScript.workspaceToCode());\n }\n }\n });\n\n\t\treturn out;\n\t},\n\t\n\tgetURL : function() {\n\t\tvar url;\n\t\tif(this.get('tag') == 'a') {\n\t\t\turl = this.get('data-href') || this.get('href');\n\t\t}\n\t\telse if(this.get('tag') == 'form') {\n\t\t\turl = this.get('action');\n\t\t}\n\t\telse {\n\t\t\turl = this.get('data-url') || this.get('data-href');\n\t\t}\n\t\tif(!url || url == '' || url == '#') {\n\t\t\tvar form = this.getForm();\n\t\t\tif(form) {\n\t\t\t\turl = form.get('action');\n\t\t\t}\n\t\t}\n\t\treturn url;\n\t},\n\t\n\tgetElementsOnce : function(c) {\n\t\treturn this.getElements(c).filter(function(el) {\n\t\t\tif(!el.retrieve('once' + c)) {\n\t\t\t\tel.store('once' + c, true);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\t},\n\t\n\tcopyCSS : function(source) {\n\t\tvar dom = $(source);\n\t\tvar style;\n\t\tvar dest = {};\n\t\tif(window.getComputedStyle){\n\t\t\tvar camelize = function(a,b){\n\t\t\t\treturn b.toUpperCase();\n\t\t\t}\n\t\t\tstyle = window.getComputedStyle(dom, null);\n\t\t\tfor(var i = 0, l = style.length; i < l; i++){\n\t\t\t\tvar prop = style[i];\n\t\t\t\tvar camel = prop.replace(/\\-([a-z])/g, camelize);\n\t\t\t\tvar val = style.getPropertyValue(prop);\n\t\t\t\tdest[camel] = val;\n\t\t\t}\n\t\t\treturn this.setStyles(dest);\n\t\t}\n\t\tif(style = dom.currentStyle){\n\t\t\tfor(var prop in style){\n\t\t\t\ttry {\n\t\t\t\t\tthis.style[prop] = style[prop];\n\t\t\t\t} catch(e){};\n\t\t\t}\n\t\t\tvar size = source.getSize();\n\t\t\tthis.style.width = size.x;\n\t\t\tthis.style.height = size.y;\n\t\t\treturn this;\n\t\t}\n\t\tif(style = dom.style){\n\t\t\tfor(var prop in style){\n\t\t\t\tif(typeof style[prop] != 'function'){\n\t\t\t\t\tdest[prop] = style[prop];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this.setStyles(dest);\n\t}\n});\n\nString.implement({\n\tformatDate : function() {\n\t\tvar d = Date.parse(this);\n\t\tif(d) {\n\t\t\treturn d.format('%m/%d/%Y');\n\t\t}\n\t\treturn this;\n\t},\n\tformatMoney : function() {\n\t\treturn (this / 100).toFixed(2);\n\t},\n\tendsWith : function(str) {\n\t\tvar lastIndex = this.lastIndexOf(str);\n\t\treturn (lastIndex != -1) && (lastIndex + str.length == this.length);\n\t}\n});\n\nNumber.implement({\n\tformatMoney : function() {\n\t\treturn (this / 100).toFixed(2);\n\t}\n});\n\nString.prototype.ucFirst = function() {\n\tvar str = this;\n\tif(str.length) {\n\t\tstr = str.charAt(0).toUpperCase() + str.slice(1);\n\t}\n\treturn str;\n};\n","var HintBox = new Class({\n\tImplements : Events,\n\t\n\tupdate:function(){\n\t\tnew Request({\n\t\t\t'url':'index.php?option=com_appbuilder&controller=login&task=setUserParam¶mname='+this.boxTag+'¶mvalue='+this.boxState\n\t\t}).get();\n\t},\n\t\n\tinitialize : function(boxElement) {\n\t\tvar content = boxElement.getElement('.appshed-hint-box-content');\n\t\tthis.boxState = boxElement.get('data-hintstate') == 'true';\n\t\tthis.boxTag = boxElement.get('data-boxtag');\n\t\t\n\t\tvar button = boxElement.getElement('.appshed-hint-box-button');\n\t\tbutton.addEvent('click',function(){\n\t\t\tthis.boxState = !this.boxState;\n\t\t\tif(this.boxState==true){\n\t\t\t\tbutton.removeClass('icon-comment-alt');\n\t\t\t\tbutton.addClass('icon-remove');\n\t\t\t\tbutton.set('html','');\n\t\t\t\t\n\t\t\t\tcontent.removeClass('hintbox-closed');\n\t\t\t\t\n\t\t\t\t(function(){\n\t\t\t\t\tcontent.removeClass('hintbox-hidden');\n\t\t\t\t}).delay(500)\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tbutton.removeClass('icon-remove');\n\t\t\t\tbutton.addClass('icon-comment-alt');\n\t\t\t\tbutton.set('html',' Help');\n\t\t\t\tcontent.addClass('hintbox-hidden');\n\t\t\t\t\n\t\t\t\t(function(){\n\t\t\t\t\tcontent.addClass('hintbox-closed');\n\t\t\t\t}).delay(500)\n\t\t\t}\n\t\t\tthis.update();\n\t\t\t\n\t\t}.bind(this));\n\t}\n});\nHintBox.make = function(root) {\n\troot.getElementsOnce('[data-hintbox]').each(function(element) {\n\t\tnew HintBox(element);\n\t});\n};\nif(window.Popup) {\n\tPopup.addChooser(HintBox.make);\n}\n","var Export = function(root, popup) {\n\troot.getElementsOnce('[data-export]').addEvent('click', function() {\n\t\tif(Export.updater) {\n\t\t\tclearTimeout(Export.updater);\n\t\t\tExport.updater = null;\n\t\t}\n\t\tif(Export.request) {\n\t\t\tExport.request.cancel();\n\t\t\tExport.request = null;\n\t\t}\n\t\tvar type = this.get('data-export'),\n\t\t\tappId = this.get('data-export-app'),\n\t\t\tstatusEl = root.getElement('[data-export-status]'),\n\t\t\tprogressEl = root.getElement('[data-export-progress]'),\n\t\t\tprogressElBar = progressEl.getElement('.bar'),\n\t\t\tdownloadEl = root.getElement('[data-export-download]'),\n\t\t\tdownloadUrl = downloadEl && downloadEl.get('href'),\n\t\t\tform = root.getElement('form'),\n\t\t\tformData = form && form.toObject();\n\t\t\t\n\t\tform && form.hide();\n\t\tdownloadEl && downloadEl.hide();\n\t\tdocument.id(this).hide();\n\t\t\n\t\tpopup.addEvent('close', function() {\n\t\t\tstatusEl = null;\n\t\t});\n\t\t\n\t\tfunction handleState(state) {\n console.log('Publish state', state.state, state);\n\t\t\tExport.request = null;\n\t\t\tprogressEl.removeClass('hide');\n\t\t\tswitch(state.state) {\n\t\t\t\tcase 'wait':\n\t\t\t\t\tif(statusEl) {\n\t\t\t\t\t\tstatusEl.set('html', 'Waiting to begin...');\n\t\t\t\t\t\tprogressEl.addClass('active');\n\t\t\t\t\t\tprogressElBar.setStyle('width', '0%');\n\t\t\t\t\t}\n\t\t\t\t\tgetState();\n\t\t\t\t\tbreak;\n case 'check-words':\n if(statusEl) {\n statusEl.set('html', 'Checking for inappropriate words');\n progressEl.addClass('active');\n progressElBar.setStyle('width', '5%');\n }\n getState();\n break;\n case 'check-search':\n if(statusEl) {\n statusEl.set('html', 'Checking for search');\n progressEl.addClass('active');\n progressElBar.setStyle('width', '5%');\n }\n getState();\n break;\n\t\t\t\tcase 'publish':\n\t\t\t\t\tif(statusEl) {\n\t\t\t\t\t\tstatusEl.set('html', 'Publishing...');\n\t\t\t\t\t\tprogressEl.addClass('active');\n\t\t\t\t\t\tprogressElBar.setStyle('width', '10%');\n\t\t\t\t\t}\n\t\t\t\t\tgetState();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'publish-done':\n\t\t\t\t\tif(statusEl) {\n statusEl.set('html', 'Published...');\n progressEl.addClass('active');\n progressElBar.setStyle('width', '20%');\n }\n getState();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'export':\n if(statusEl) {\n statusEl.set('html', 'Exporting...');\n progressEl.addClass('active');\n if(state.screens > 0 && state.readyScreens > 0) {\n progressElBar.setStyle('width', (((state.readyScreens / (state.screens * state.count)) * 60) + 30) + '%');\n }\n else {\n progressElBar.setStyle('width', '30%');\n }\n }\n getState();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'zip':\n\t\t\t\t\tif(statusEl) {\n statusEl.set('html', 'Zipping...');\n progressEl.addClass('active');\n }\n getState();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'upload':\n\t\t\t\t\tif(statusEl) {\n statusEl.set('html', 'Uploading...');\n progressEl.addClass('active');\n }\n getState();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'export-done':\n if(statusEl) {\n statusEl.set('html', 'Exported');\n progressEl.addClass('active');\n progressElBar.setStyle('width', '95%');\n }\n getState();\n break;\n\t\t\t\tcase 'done':\n\t\t\t\t\tcheckStatusEl();\n statusEl.set('html', 'Exported');\n downloadEl && downloadEl.show();\n new Element('div', {\n 'class': 'complete',\n 'html': ''\n }).replaces(progressEl);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'error':\n\t\t\t\t\tcheckStatusEl();\n\t\t\t\t\tstatusEl.set('html', state.message);\n\t\t\t\t\tPopup.checkChoosers(statusEl, popup);\n\t\t\t\t\tnew Element('div', {\n\t\t\t\t\t\t'class': 'complete',\n\t\t\t\t\t\t'html': ''\n\t\t\t\t\t}).replaces(progressEl);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction failState() {\n\t\t\tprogressEl.addClass('hide');\n\t\t\tstatusEl.set('html', 'Error checking status');\n\t\t}\n\t\t\n\t\tfunction checkStatusEl() {\n\t\t\tif(!statusEl) {\n\t\t\t\tvar content = new Element('div'),\n\t\t\t\t\tcontrols = new Element('div', {\n\t\t\t\t\t\thtml: ' '\n\t\t\t\t\t}).inject(content);\n\t\t\t\tif(type === 'export') {\n\t\t\t\t\tdownloadEl = new Element('a', {\n\t\t\t\t\t\t'class': 'btn',\n\t\t\t\t\t\thref: downloadUrl,\n\t\t\t\t\t\thtml: ' Download Zip'\n\t\t\t\t\t}).inject(controls);\n\t\t\t\t}\n\t\t\t\tstatusEl = new Element('div');\n\t\t\t\tstatusEl.inject(content, 'top');\n\t\t\t\tprogressEl = new Element('div', {'class':'progress progress-striped active hide'});\n\t\t\t\tprogressEl.inject(statusEl, 'after');\n\t\t\t\tprogressElBar = new Element('div', {'class': 'bar'}).inject(progressEl);\n\t\t\t\tPopup.showSimple(type.capitalize() + ' finished', null, content, {\n\t\t\t\t\tembed: false\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t\n\t\tstatusEl.set('html', 'Requesting...');\n\t\tprogressEl.removeClass('hide');\n\t\tprogressEl.addClass('active');\n\t\tprogressElBar.setStyle('width', '0%');\n\t\t\n\t\tExport.request = new Request.JSON({\n\t\t\turl: 'index.php',\n\t\t\tdata: Object.merge({\n\t\t\t\toption: 'com_appbuilder',\n\t\t\t\tcontroller: 'export',\n\t\t\t\ttask: 'postQueueExport',\n\t\t\t\ttypeexport: type,\n\t\t\t\tapp_id: appId\n\t\t\t}, formData || {}),\n\t\t\tnoCache: true,\n\t\t\tonSuccess: handleState,\n\t\t\tonFailure: failState\n\t\t}).post();\n\t\t\n\t\tfunction getState() {\n\t\t\tif(Export.updater) {\n\t\t\t\tclearTimeout(Export.updater);\n\t\t\t}\n\t\t\tExport.updater = setTimeout(function() {\n\t\t\t\tExport.request = new Request.JSON({\n\t\t\t\t\turl: 'index.php',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\toption: 'com_appbuilder',\n\t\t\t\t\t\tcontroller: 'export',\n\t\t\t\t\t\ttask: 'exportStatus',\n\t\t\t\t\t\tapp_id: appId\n\t\t\t\t\t},\n\t\t\t\t\tnoCache: true,\n\t\t\t\t\tonSuccess: handleState,\n\t\t\t\t\tonFailure: failState\n\t\t\t\t}).get();\n\t\t\t\tExport.updater = null;\n\t\t\t}, 1000);\n\t\t}\n\t});\t\n};\nif(window.Popup) {\n\tPopup.addChooser(Export);\n}\n","if(window.Popup) {\n (function() {\n var id = 0;\n Popup.addChooser(function(root, popup) {\n root.getElementsOnce('[data-blockly]').each(function(container) {\n var blocklyId = id++,\n output = root.getElement('[name=blocky_output]'),\n expand,\n expanded = false,\n row = root.getParent('.row');\n\n window['appshedBlocklyReady' + blocklyId] = function(Blockly, workspace) {\n var xml_text = container.get('data-blockly');\n if(xml_text) {\n try {\n var xml = Blockly.Xml.textToDom(xml_text);\n Blockly.Xml.domToWorkspace(xml, workspace );\n }\n catch(e) {\n console.log(e);\n }\n }\n\n if(output) {\n function showCode() {\n var code = Blockly.JavaScript.workspaceToCode(workspace),\n editor = output.retrieve('editor');\n if(editor) {\n editor.setValue(code);\n }\n else {\n output.set('value', code);\n }\n }\n workspace.addChangeListener(showCode);\n //make sure the code is shown \n setTimeout(showCode, 500);\n setTimeout(showCode, 1500);\n }\n\n container.store('blockly', Blockly);\n window['appshedBlocklyReady' + blocklyId] = null;\n };\n\n popup.addEvent('clear', function() {\n window['appshedBlocklyReady' + blocklyId] = null;\n row.removeClass('toolbox-only');\n });\n\n expand = new Element('button', {\n 'class': 'btn expand',\n html: ' Expand',\n type: 'button'\n }).inject(container);\n\n expand.addEvent('click', function() {\n if(expanded) {\n row.removeClass('toolbox-only');\n expand.set('html', ' Expand');\n popup.options.parentPopup && popup.options.parentPopup.fireEvent('deexpand');\n }\n else {\n row.addClass('toolbox-only');\n expand.set('html', ' Shrink');\n popup.options.parentPopup && popup.options.parentPopup.fireEvent('expand');\n }\n expanded = !expanded;\n });\n\n new Element('iframe', {\n 'src': 'index.php?option=com_appbuilder&controller=blockly&blockly=' + blocklyId\n + '&blocklyType=' + container.get('data-blockly-type')\n + '&blocklyId=' + container.get('data-blockly-id')\n }).inject(container);\n });\n });\n })();\n}\n","var RangePicker = function(el){\n\n var currentValue = el.getElement('.current-value');\n var symbol = currentValue.get('data-symbol');\n\n var srcInput = el.getElement('[type=\"range\"]');\n\n var update = function(){\n currentValue.set('value',srcInput.value+symbol);\n\n }\n\n srcInput.addEvent('change',update);\n\n}\nRangePicker.make = function(root) {\n root.getElementsOnce('.controls.range').each(function(el) {\n new RangePicker(el);\n });\n};\nif(window.Popup) {\n Popup.addChooser(RangePicker.make);\n}\n","/**\r\n * drag.ghost.js - Ghosting draggable extension for Drag.Move\r\n * @version 1.01\r\n * \r\n * by MonkeyPhysics.com\r\n *\r\n * Source/Documentation available at:\r\n * http://www.monkeyphysics.com/mootools/script/1/dragghost\r\n * \r\n * Some Rights Reserved\r\n * http://creativecommons.org/licenses/by-sa/3.0/\r\n * \r\n */\r\n\r\nDrag.Ghost = new Class({\r\n\t\r\n\tExtends: Drag.Move,\r\n\t\r\n\toptions: { opacity: 0.65 },\r\n\t\r\n\tinitialize: function(){\r\n\t\tthis.parent.apply(this, arguments)\r\n\t\tthis.addEvent('start', this.ghost.bind(this));\r\n\t\tthis.addEvent('stop', this.deghost.bind(this));\r\n\t\tthis.addEvent('complete', this.deghost.bind(this));\r\n\t},\r\n\t\t\r\n\tghost: function(el, event) {\r\n\t\tvar o = this.element,\r\n\t\t\tcs = this.element.getCoordinates();\r\n\t\tthis.element = this.element.clone()\r\n\t\t\t.setStyles({\r\n\t\t\t\t'opacity': this.options.opacity,\r\n\t\t\t\t'position': 'absolute',\r\n\t\t\t\t'top': cs.top,\r\n\t\t\t\t'left': cs.left\r\n\t\t\t})\r\n\t\t\t.inject(document.body)\r\n\t\t\t.store('parent', this.element);\r\n\t\t\t\r\n\t\tvar options = this.options;\r\n\t\tthis.mouse.start = event.page;\r\n\r\n\t\tvar limit = options.limit;\r\n\t\tthis.limit = {x: [], y: []};\r\n\r\n\t\tvar z, coordinates;\r\n\t\tfor (z in options.modifiers){\r\n\t\t\tif (!options.modifiers[z]) continue;\r\n\r\n\t\t\tvar style = this.element.getStyle(options.modifiers[z]);\r\n\r\n\t\t\t// Some browsers (IE and Opera) don't always return pixels.\r\n\t\t\tif (style && !style.match(/px$/)){\r\n\t\t\t\tif (!coordinates) coordinates = this.element.getCoordinates(this.element.getOffsetParent());\r\n\t\t\t\tstyle = coordinates[options.modifiers[z]];\r\n\t\t\t}\r\n\r\n\t\t\tif (options.style) this.value.now[z] = (style || 0).toInt();\r\n\t\t\telse this.value.now[z] = this.element[options.modifiers[z]];\r\n\r\n\t\t\tif (options.invert) this.value.now[z] *= -1;\r\n\r\n\t\t\tthis.mouse.pos[z] = event.page[z] - this.value.now[z];\r\n\r\n\t\t\tif (limit && limit[z]){\r\n\t\t\t\tvar i = 2;\r\n\t\t\t\twhile (i--){\r\n\t\t\t\t\tvar limitZI = limit[z][i];\r\n\t\t\t\t\tif (limitZI || limitZI === 0) this.limit[z][i] = (typeof limitZI == 'function') ? limitZI() : limitZI;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t\r\n\tdeghost: function() {\r\n\t\tvar e = this.element.retrieve('parent');\r\n\t\tthis.element.destroy();\r\n\t\tthis.element = e;\r\n\t}\r\n});\r\n\r\nElement.implement({\r\n\tmakeGhostDraggable: function(options) {\r\n\t\treturn new Drag.Ghost(this, options);\r\n\t}\r\n});","/**\n * http://github.com/mcfedr/file-uploader\n * \n * Multiple file upload component with progress-bar, drag-and-drop. \n * Parts © 2010 Andrew Valums ( andrew(at)valums.com ) \n * Parts © 2011 Fred Cox ( mcfedr(at)gmail.com ) \n * \n * Licensed under GNU GPL 3 or later\n */ \n\n//\n// Helper functions\n//\n\nvar qq = qq || {};\n\n/**\n * Adds all missing properties from second obj to first obj\n */ \nqq.extend = function(first, second){\n for (var prop in second){\n first[prop] = second[prop];\n }\n}; \n\n/**\n * Searches for a given element in the array, returns -1 if it is not present.\n * @param {Number} [from] The index at which to begin the search\n */\nqq.indexOf = function(arr, elt, from){\n if (arr.indexOf) return arr.indexOf(elt, from);\n \n from = from || 0;\n var len = arr.length; \n \n if (from < 0) from += len; \n\n for (; from < len; from++){ \n if (from in arr && arr[from] === elt){ \n return from;\n }\n } \n return -1; \n}; \n \nqq.getUniqueId = (function(){\n var id = 0;\n return function(){ return id++; };\n})();\n\n//\n// Events\n\nqq.attach = function(element, type, fn){\n if (element.addEventListener){\n element.addEventListener(type, fn, false);\n } else if (element.attachEvent){\n element.attachEvent('on' + type, fn);\n }\n};\nqq.detach = function(element, type, fn){\n if (element.removeEventListener){\n element.removeEventListener(type, fn, false);\n } else if (element.attachEvent){\n element.detachEvent('on' + type, fn);\n }\n};\n\nqq.preventDefault = function(e){\n if (e.preventDefault){\n e.preventDefault();\n } else{\n e.returnValue = false;\n }\n};\n\n//\n// Node manipulations\n\n/**\n * Insert node a before node b.\n */\nqq.insertBefore = function(a, b){\n b.parentNode.insertBefore(a, b);\n};\nqq.remove = function(element){\n element.parentNode.removeChild(element);\n};\n\nqq.contains = function(parent, descendant){ \n // compareposition returns false in this case\n if (parent == descendant) return true;\n \n if (parent.contains){\n return parent.contains(descendant);\n } else {\n return !!(descendant.compareDocumentPosition(parent) & 8);\n }\n};\n\n/**\n * Creates and returns element from html string\n * Uses innerHTML to create an element\n */\nqq.toElement = (function(){\n var div = document.createElement('div');\n return function(html){\n div.innerHTML = html;\n var element = div.firstChild;\n div.removeChild(element);\n return element;\n };\n})();\n\n//\n// Node properties and attributes\n\n/**\n * Sets styles for an element.\n * Fixes opacity in IE6-8.\n */\nqq.css = function(element, styles){\n if (styles.opacity != null){\n if (typeof element.style.opacity != 'string' && typeof(element.filters) != 'undefined'){\n styles.filter = 'alpha(opacity=' + Math.round(100 * styles.opacity) + ')';\n }\n }\n qq.extend(element.style, styles);\n};\nqq.hasClass = function(element, name){\n var re = new RegExp('(^| )' + name + '( |$)');\n return re.test(element.className);\n};\nqq.addClass = function(element, name){\n if (!qq.hasClass(element, name)){\n element.className += ' ' + name;\n }\n};\nqq.removeClass = function(element, name){\n var re = new RegExp('(^| )' + name + '( |$)');\n element.className = element.className.replace(re, ' ').replace(/^\\s+|\\s+$/g, \"\");\n};\nqq.setText = function(element, text){\n element.innerText = text;\n element.textContent = text;\n};\n\n//\n// Selecting elements\n\nqq.children = function(element){\n var children = [],\n child = element.firstChild;\n\n while (child){\n if (child.nodeType == 1){\n children.push(child);\n }\n child = child.nextSibling;\n }\n\n return children;\n};\n\nqq.getByClass = function(element, className){\n if (element.querySelectorAll){\n return element.querySelectorAll('.' + className);\n }\n\n var result = [];\n var candidates = element.getElementsByTagName(\"*\");\n var len = candidates.length;\n\n for (var i = 0; i < len; i++){\n if (qq.hasClass(candidates[i], className)){\n result.push(candidates[i]);\n }\n }\n return result;\n};\n\n/**\n * obj2url() takes a json-object as argument and generates\n * a querystring. pretty much like jQuery.param()\n * \n * how to use:\n *\n * `qq.obj2url({a:'b',c:'d'},'http://any.url/upload?otherParam=value');`\n *\n * will result in:\n *\n * `http://any.url/upload?otherParam=value&a=b&c=d`\n *\n * @param Object JSON-Object\n * @param String current querystring-part\n * @return String encoded querystring\n */\nqq.obj2url = function(obj, temp, prefixDone){\n var uristrings = [],\n prefix = '&',\n add = function(nextObj, i){\n var nextTemp = temp \n ? (/\\[\\]$/.test(temp)) // prevent double-encoding\n ? temp\n : temp+'['+i+']'\n : i;\n if ((nextTemp != 'undefined') && (i != 'undefined')) { \n uristrings.push(\n (typeof nextObj === 'object') \n ? qq.obj2url(nextObj, nextTemp, true)\n : (Object.prototype.toString.call(nextObj) === '[object Function]')\n ? encodeURIComponent(nextTemp) + '=' + encodeURIComponent(nextObj())\n : encodeURIComponent(nextTemp) + '=' + encodeURIComponent(nextObj) \n );\n }\n }; \n\n if (!prefixDone && temp) {\n prefix = (/\\?/.test(temp)) ? (/\\?$/.test(temp)) ? '' : '&' : '?';\n uristrings.push(temp);\n uristrings.push(qq.obj2url(obj));\n } else if ((Object.prototype.toString.call(obj) === '[object Array]') && (typeof obj != 'undefined') ) {\n // we wont use a for-in-loop on an array (performance)\n for (var i = 0, len = obj.length; i < len; ++i){\n add(obj[i], i);\n }\n } else if ((typeof obj != 'undefined') && (obj !== null) && (typeof obj === \"object\")){\n // for anything else but a scalar, we will use for-in-loop\n for (var i in obj){\n add(obj[i], i);\n }\n } else {\n uristrings.push(encodeURIComponent(temp) + '=' + encodeURIComponent(obj));\n }\n\n return uristrings.join(prefix)\n .replace(/^&/, '')\n .replace(/%20/g, '+'); \n};\n\n//\n//\n// Uploader Classes\n//\n//\n\nvar qq = qq || {};\n \n/**\n * Creates upload button, validates upload, but doesn't create file list or dd. \n */\nqq.FileUploaderBasic = function(o){\n this._options = {\n // set to true to see the server response\n debug: false,\n action: '/server/upload',\n params: {},\n button: null,\n multiple: true,\n maxConnections: 3,\n // validation \n allowedExtensions: [], \n sizeLimit: 0, \n minSizeLimit: 0, \n // events\n // return false to cancel submit\n onSubmit: function(id, fileName){},\n onProgress: function(id, fileName, loaded, total){},\n onComplete: function(id, fileName, responseJSON){},\n onCancel: function(id, fileName){},\n // messages \n messages: {\n typeError: \"{file} has invalid extension. Only {extensions} are allowed.\",\n sizeError: \"{file} is too large, maximum file size is {sizeLimit}.\",\n minSizeError: \"{file} is too small, minimum file size is {minSizeLimit}.\",\n emptyError: \"{file} is empty, please select files again without it.\",\n onLeave: \"The files are being uploaded, if you leave now the upload will be cancelled.\" \n },\n showMessage: function(message){\n alert(message);\n } \n };\n qq.extend(this._options, o);\n \n // number of files being uploaded\n this._filesInProgress = 0;\n this._handler = this._createUploadHandler(); \n \n if (this._options.button){ \n this._button = this._createUploadButton(this._options.button);\n }\n \n this._preventLeaveInProgress(); \n};\n \nqq.FileUploaderBasic.prototype = {\n setParams: function(params){\n this._options.params = params;\n },\n getInProgress: function(){\n return this._filesInProgress; \n },\n _createUploadButton: function(element){\n var self = this;\n \n return new qq.UploadButton({\n element: element,\n multiple: this._options.multiple && qq.UploadHandlerXhr.isSupported(),\n onChange: function(input){\n self._onInputChange(input);\n } \n }); \n }, \n _createUploadHandler: function(){\n var self = this,\n handlerClass; \n \n if(qq.UploadHandlerXhr.isSupported()){ \n handlerClass = 'UploadHandlerXhr'; \n } else {\n handlerClass = 'UploadHandlerForm';\n }\n\n var handler = new qq[handlerClass]({\n debug: this._options.debug,\n action: this._options.action, \n maxConnections: this._options.maxConnections, \n onProgress: function(id, fileName, loaded, total){ \n self._onProgress(id, fileName, loaded, total);\n self._options.onProgress(id, fileName, loaded, total); \n }, \n onComplete: function(id, fileName, result){\n self._onComplete(id, fileName, result);\n self._options.onComplete(id, fileName, result);\n },\n onCancel: function(id, fileName){\n self._onCancel(id, fileName);\n self._options.onCancel(id, fileName);\n }\n });\n\n return handler;\n }, \n _preventLeaveInProgress: function(){\n var self = this;\n \n qq.attach(window, 'beforeunload', function(e){\n if (!self._filesInProgress){return;}\n \n var e = e || window.event;\n // for ie, ff\n e.returnValue = self._options.messages.onLeave;\n // for webkit\n return self._options.messages.onLeave; \n }); \n }, \n _onSubmit: function(id, fileName){\n this._filesInProgress++; \n },\n _onProgress: function(id, fileName, loaded, total){ \n },\n _onComplete: function(id, fileName, result){\n this._filesInProgress--; \n if (result.error){\n this._options.showMessage(result.error);\n } \n },\n _onCancel: function(id, fileName){\n this._filesInProgress--; \n },\n _onInputChange: function(input){\n if (this._handler instanceof qq.UploadHandlerXhr){ \n this._uploadFileList(input.files); \n } else { \n if (this._validateFile(input)){ \n this._uploadFile(input); \n } \n } \n this._button.reset(); \n }, \n _uploadFileList: function(files){\n for (var i=0; i this._options.sizeLimit){ \n this._error('sizeError', name);\n return false;\n \n } else if (size && size < this._options.minSizeLimit){\n this._error('minSizeError', name);\n return false; \n }\n \n return true; \n },\n _error: function(code, fileName){\n var message = this._options.messages[code]; \n function r(name, replacement){ message = message.replace(name, replacement); }\n \n r('{file}', this._formatFileName(fileName)); \n r('{extensions}', this._options.allowedExtensions.join(', '));\n r('{sizeLimit}', this._formatSize(this._options.sizeLimit));\n r('{minSizeLimit}', this._formatSize(this._options.minSizeLimit));\n \n this._options.showMessage(message); \n },\n _formatFileName: function(name){\n if (name.length > 33){\n name = name.slice(0, 19) + '...' + name.slice(-13); \n }\n return name;\n },\n _isAllowedExtension: function(fileName){\n var allowed = this._options.allowedExtensions;\n var lcaseFn = fileName.toLowerCase();\n \n if (!allowed.length){return true;} \n \n for (var i=0; i 99);\n \n return Math.max(bytes, 0.1).toFixed(1) + ['kB', 'MB', 'GB', 'TB', 'PB', 'EB'][i]; \n }\n};\n \n \n/**\n * Class that creates upload widget with drag-and-drop and file list\n * @inherits qq.FileUploaderBasic\n */\nqq.FileUploader = function(o){\n // call parent constructor\n qq.FileUploaderBasic.apply(this, arguments);\n \n // additional options \n qq.extend(this._options, {\n element: null,\n // if set, will be used instead of qq-upload-list in template\n listElement: null,\n \n template: '
    ' + \n '
    Drop files here to upload
    ' +\n '
    Upload a file
    ' +\n '
      ' + \n '
      ',\n\n // template for one item in file list\n fileTemplate: '
    • ' +\n '' +\n '' +\n '' +\n 'Cancel' +\n 'Failed' +\n '
    • ', \n \n classes: {\n // used to get elements from templates\n button: 'qq-upload-button',\n drop: 'qq-upload-drop-area',\n dropActive: 'qq-upload-drop-area-active',\n list: 'qq-upload-list',\n \n file: 'qq-upload-file',\n spinner: 'qq-upload-spinner',\n size: 'qq-upload-size',\n cancel: 'qq-upload-cancel',\n\n // added to list item when upload completes\n // used in css to hide progress spinner\n success: 'qq-upload-success',\n fail: 'qq-upload-fail'\n }\n });\n // overwrite options with user supplied \n qq.extend(this._options, o); \n\n this._element = this._options.element;\n this._element.innerHTML = this._options.template; \n this._listElement = this._options.listElement || this._find(this._element, 'list');\n \n this._classes = this._options.classes;\n \n this._button = this._createUploadButton(this._find(this._element, 'button')); \n \n this._bindCancelEvent();\n this._setupDragDrop();\n};\n\n// inherit from Basic Uploader\nqq.extend(qq.FileUploader.prototype, qq.FileUploaderBasic.prototype);\n\nqq.extend(qq.FileUploader.prototype, {\n /**\n * Gets one of the elements listed in this._options.classes\n **/\n _find: function(parent, type){ \n var element = qq.getByClass(parent, this._options.classes[type])[0]; \n if (!element){\n throw new Error('element not found ' + type);\n }\n \n return element;\n },\n _setupDragDrop: function(){\n var self = this,\n dropArea = this._find(this._element, 'drop'); \n\n var dz = new qq.UploadDropZone({\n element: dropArea,\n onEnter: function(e){\n qq.addClass(dropArea, self._classes.dropActive);\n e.stopPropagation();\n },\n onLeave: function(e){\n e.stopPropagation();\n },\n onLeaveNotDescendants: function(e){\n qq.removeClass(dropArea, self._classes.dropActive); \n },\n onDrop: function(e){\n dropArea.style.display = 'none';\n qq.removeClass(dropArea, self._classes.dropActive);\n self._uploadFileList(e.dataTransfer.files); \n }\n });\n \n dropArea.style.display = 'none';\n\n qq.attach(document, 'dragenter', function(e){ \n if (!dz._isValidFileDrag(e)) return; \n \n dropArea.style.display = 'block'; \n }); \n qq.attach(document, 'dragleave', function(e){\n if (!dz._isValidFileDrag(e)) return; \n \n var relatedTarget = document.elementFromPoint(e.clientX, e.clientY);\n // only fire when leaving document out\n if ( ! relatedTarget || relatedTarget.nodeName == \"HTML\"){ \n dropArea.style.display = 'none'; \n }\n }); \n },\n _onSubmit: function(id, fileName){\n qq.FileUploaderBasic.prototype._onSubmit.apply(this, arguments);\n this._addToList(id, fileName); \n },\n _onProgress: function(id, fileName, loaded, total){\n qq.FileUploaderBasic.prototype._onProgress.apply(this, arguments);\n\n var item = this._getItemByFileId(id);\n var size = this._find(item, 'size');\n size.style.display = 'inline';\n \n var text; \n if (loaded != total){\n text = Math.round(loaded / total * 100) + '% from ' + this._formatSize(total);\n } else { \n text = this._formatSize(total);\n } \n \n qq.setText(size, text); \n },\n _onComplete: function(id, fileName, result){\n qq.FileUploaderBasic.prototype._onComplete.apply(this, arguments);\n\n // mark completed\n var item = this._getItemByFileId(id); \n qq.remove(this._find(item, 'cancel'));\n qq.remove(this._find(item, 'spinner'));\n \n if (result.success){\n qq.addClass(item, this._classes.success); \n } else {\n qq.addClass(item, this._classes.fail);\n } \n },\n _addToList: function(id, fileName){\n var item = qq.toElement(this._options.fileTemplate); \n item.qqFileId = id;\n\n var fileElement = this._find(item, 'file'); \n qq.setText(fileElement, this._formatFileName(fileName));\n this._find(item, 'size').style.display = 'none'; \n\n this._listElement.appendChild(item);\n },\n _getItemByFileId: function(id){\n var item = this._listElement.firstChild; \n \n // there can't be txt nodes in dynamically created list\n // and we can use nextSibling\n while (item){ \n if (item.qqFileId == id) return item; \n item = item.nextSibling;\n } \n },\n /**\n * delegate click event for cancel link \n **/\n _bindCancelEvent: function(){\n var self = this,\n list = this._listElement; \n \n qq.attach(list, 'click', function(e){ \n e = e || window.event;\n var target = e.target || e.srcElement;\n \n if (qq.hasClass(target, self._classes.cancel)){ \n qq.preventDefault(e);\n \n var item = target.parentNode;\n self._handler.cancel(item.qqFileId);\n qq.remove(item);\n }\n });\n } \n});\n \nqq.UploadDropZone = function(o){\n this._options = {\n element: null, \n onEnter: function(e){},\n onLeave: function(e){}, \n // is not fired when leaving element by hovering descendants \n onLeaveNotDescendants: function(e){}, \n onDrop: function(e){} \n };\n qq.extend(this._options, o); \n \n this._element = this._options.element;\n \n this._disableDropOutside();\n this._attachEvents(); \n};\n\nqq.UploadDropZone.prototype = {\n _disableDropOutside: function(e){\n // run only once for all instances\n if (!qq.UploadDropZone.dropOutsideDisabled ){\n\n qq.attach(document, 'dragover', function(e){\n if (e.dataTransfer){\n e.dataTransfer.dropEffect = 'none';\n e.preventDefault(); \n } \n });\n \n qq.UploadDropZone.dropOutsideDisabled = true; \n } \n },\n _attachEvents: function(){\n var self = this; \n \n qq.attach(self._element, 'dragover', function(e){\n if (!self._isValidFileDrag(e)) return;\n \n var effect = e.dataTransfer.effectAllowed;\n if (effect == 'move' || effect == 'linkMove'){\n e.dataTransfer.dropEffect = 'move'; // for FF (only move allowed) \n } else { \n e.dataTransfer.dropEffect = 'copy'; // for Chrome\n }\n \n e.stopPropagation();\n e.preventDefault(); \n });\n \n qq.attach(self._element, 'dragenter', function(e){\n if (!self._isValidFileDrag(e)) return;\n \n self._options.onEnter(e);\n });\n \n qq.attach(self._element, 'dragleave', function(e){\n if (!self._isValidFileDrag(e)) return;\n \n self._options.onLeave(e);\n \n var relatedTarget = document.elementFromPoint(e.clientX, e.clientY); \n // do not fire when moving a mouse over a descendant\n if (qq.contains(this, relatedTarget)) return;\n \n self._options.onLeaveNotDescendants(e); \n });\n \n qq.attach(self._element, 'drop', function(e){\n if (!self._isValidFileDrag(e)) return;\n \n e.preventDefault();\n self._options.onDrop(e);\n }); \n },\n _isValidFileDrag: function(e){\n var dt = e.dataTransfer,\n // do not check dt.types.contains in webkit, because it crashes safari 4 \n isWebkit = navigator.userAgent.indexOf(\"AppleWebKit\") > -1; \n\n // dt.effectAllowed is none in Safari 5\n // dt.types.contains check is for firefox \n return dt && dt.effectAllowed != 'none' && \n (dt.files || (!isWebkit && dt.types.contains && dt.types.contains('Files')));\n \n } \n}; \n\nqq.UploadButton = function(o){\n this._options = {\n element: null, \n // if set to true adds multiple attribute to file input \n multiple: false,\n // name attribute of file input\n name: 'file',\n onChange: function(input){},\n hoverClass: 'qq-upload-button-hover',\n focusClass: 'qq-upload-button-focus' \n };\n \n qq.extend(this._options, o);\n \n this._element = this._options.element;\n \n // make button suitable container for input\n qq.css(this._element, {\n position: 'relative',\n overflow: 'hidden',\n // Make sure browse button is in the right side\n // in Internet Explorer\n direction: 'ltr'\n }); \n \n this._input = this._createInput();\n};\n\nqq.UploadButton.prototype = {\n /* returns file input element */ \n getInput: function(){\n return this._input;\n },\n /* cleans/recreates the file input */\n reset: function(){\n if (this._input.parentNode){\n qq.remove(this._input); \n } \n \n qq.removeClass(this._element, this._options.focusClass);\n this._input = this._createInput();\n }, \n _createInput: function(){ \n var input = document.createElement(\"input\");\n \n if (this._options.multiple){\n input.setAttribute(\"multiple\", \"multiple\");\n }\n \n input.setAttribute(\"type\", \"file\");\n input.setAttribute(\"name\", this._options.name);\n \n qq.css(input, {\n position: 'absolute',\n // in Opera only 'browse' button\n // is clickable and it is located at\n // the right side of the input\n right: 0,\n top: 0,\n fontFamily: 'Arial',\n // 4 persons reported this, the max values that worked for them were 243, 236, 236, 118\n fontSize: '118px',\n margin: 0,\n padding: 0,\n cursor: 'pointer',\n opacity: 0\n });\n \n this._element.appendChild(input);\n\n var self = this;\n qq.attach(input, 'change', function(){\n self._options.onChange(input);\n });\n \n qq.attach(input, 'mouseover', function(){\n qq.addClass(self._element, self._options.hoverClass);\n });\n qq.attach(input, 'mouseout', function(){\n qq.removeClass(self._element, self._options.hoverClass);\n });\n qq.attach(input, 'focus', function(){\n qq.addClass(self._element, self._options.focusClass);\n });\n qq.attach(input, 'blur', function(){\n qq.removeClass(self._element, self._options.focusClass);\n });\n\n // IE and Opera, unfortunately have 2 tab stops on file input\n // which is unacceptable in our case, disable keyboard access\n if (window.attachEvent){\n // it is IE or Opera\n input.setAttribute('tabIndex', \"-1\");\n }\n\n return input; \n } \n};\n\n/**\n * Class for uploading files, uploading itself is handled by child classes\n */\nqq.UploadHandlerAbstract = function(o){\n this._options = {\n debug: false,\n action: '/upload.php',\n // maximum number of concurrent uploads \n maxConnections: 999,\n onProgress: function(id, fileName, loaded, total){},\n onComplete: function(id, fileName, response){},\n onCancel: function(id, fileName){}\n };\n qq.extend(this._options, o); \n \n this._queue = [];\n // params for files in queue\n this._params = [];\n};\nqq.UploadHandlerAbstract.prototype = {\n log: function(str){\n if (this._options.debug && window.console) console.log('[uploader] ' + str); \n },\n /**\n * Adds file or file input to the queue\n * @returns id\n **/ \n add: function(file){},\n /**\n * Sends the file identified by id and additional query params to the server\n */\n upload: function(id, params){\n var len = this._queue.push(id);\n\n var copy = {}; \n qq.extend(copy, params);\n this._params[id] = copy; \n \n // if too many active uploads, wait...\n if (len <= this._options.maxConnections){ \n this._upload(id, this._params[id]);\n }\n },\n /**\n * Cancels file upload by id\n */\n cancel: function(id){\n this._cancel(id);\n this._dequeue(id);\n },\n /**\n * Cancells all uploads\n */\n cancelAll: function(){\n for (var i=0; i= max && i < max){\n var nextId = this._queue[max-1];\n this._upload(nextId, this._params[nextId]);\n }\n } \n};\n\n/**\n * Class for uploading files using form and iframe\n * @inherits qq.UploadHandlerAbstract\n */\nqq.UploadHandlerForm = function(o){\n qq.UploadHandlerAbstract.apply(this, arguments);\n \n this._inputs = {};\n};\n// @inherits qq.UploadHandlerAbstract\nqq.extend(qq.UploadHandlerForm.prototype, qq.UploadHandlerAbstract.prototype);\n\nqq.extend(qq.UploadHandlerForm.prototype, {\n add: function(fileInput){\n fileInput.setAttribute('name', 'qqfile');\n var id = 'qq-upload-handler-iframe' + qq.getUniqueId(); \n \n this._inputs[id] = fileInput;\n \n // remove file input from DOM\n if (fileInput.parentNode){\n qq.remove(fileInput);\n }\n \n return id;\n },\n getName: function(id){\n // get input value and remove path to normalize\n return this._inputs[id].value.replace(/.*(\\/|\\\\)/, \"\");\n }, \n _cancel: function(id){\n this._options.onCancel(id, this.getName(id));\n \n delete this._inputs[id]; \n\n var iframe = document.getElementById(id);\n if (iframe){\n // to cancel request set src to something else\n // we use src=\"javascript:false;\" because it doesn't\n // trigger ie6 prompt on https\n iframe.setAttribute('src', 'javascript:false;');\n\n qq.remove(iframe);\n }\n }, \n _upload: function(id, params){ \n var input = this._inputs[id];\n \n if (!input){\n throw new Error('file with passed id was not added, or already uploaded or cancelled');\n } \n\n var fileName = this.getName(id);\n \n var iframe = this._createIframe(id);\n var form = this._createForm(iframe, params);\n form.appendChild(input);\n\n var self = this;\n this._attachLoadEvent(iframe, function(){ \n self.log('iframe loaded');\n \n var response = self._getIframeContentJSON(iframe);\n\n self._options.onComplete(id, fileName, response);\n self._dequeue(id);\n \n delete self._inputs[id];\n // timeout added to fix busy state in FF3.6\n setTimeout(function(){\n qq.remove(iframe);\n }, 1);\n });\n\n form.submit(); \n qq.remove(form); \n \n return id;\n }, \n _attachLoadEvent: function(iframe, callback){\n qq.attach(iframe, 'load', function(){\n // when we remove iframe from dom\n // the request stops, but in IE load\n // event fires\n if (!iframe.parentNode){\n return;\n }\n\n // fixing Opera 10.53\n if (iframe.contentDocument &&\n iframe.contentDocument.body &&\n iframe.contentDocument.body.innerHTML == \"false\"){\n // In Opera event is fired second time\n // when body.innerHTML changed from false\n // to server response approx. after 1 sec\n // when we upload file with iframe\n return;\n }\n\n callback();\n });\n },\n /**\n * Returns json object received by iframe from server.\n */\n _getIframeContentJSON: function(iframe){\n // iframe.contentWindow.document - for IE<7\n var doc = iframe.contentDocument ? iframe.contentDocument: iframe.contentWindow.document,\n response;\n \n this.log(\"converting iframe's innerHTML to JSON\");\n this.log(\"innerHTML = \" + doc.body.innerHTML);\n \n try {\n response = JSON.decode(doc.body.innerHTML);// eval(\"(\" + doc.body.innerHTML + \")\");\n } catch(err){\n response = false;\n } \n\n return response;\n },\n /**\n * Creates iframe with unique name\n */\n _createIframe: function(id){\n // We can't use following code as the name attribute\n // won't be properly registered in IE6, and new window\n // on form submit will open\n // var iframe = document.createElement('iframe');\n // iframe.setAttribute('name', id);\n\n var iframe = qq.toElement('