{"version":3,"sources":["_layouts/core/utils/webtoolkit.base64.js","_layouts/core/utils/md5.js","_layouts/core/utils/functions.js","_layouts/core/utils/request.js","_layouts/core/utils/session.js","_layouts/core/utils/notifications.js","_layouts/core/utils/html5uploader.js","_layouts/core/utils/dropzone.js","_layouts/core/utils/librarian.utils.js","_layouts/core/utils/form2js.js","_layouts/core/utils/js2form.js","_layouts/core/utils/log4javascript.js","_layouts/core/utils/zoom.js","_layouts/core/lang/lang.js","_layouts/core/lang/pluralize.js","_layouts/core/lang/languages.js","_layouts/core/lang/statecodes.js"],"names":["Base64","_keyStr","encode","input","chr2","chr3","enc1","enc2","enc3","enc4","i","buf","StringBuffer","_utf8_encode","length","chr1","charCodeAt","isNaN","append","this","charAt","toString","decode","replace","indexOf","String","fromCharCode","_utf8_decode","string","n","c","utftext","c1","c2","Encrypt","hexcase","b64pad","chrsz","hex_md5","s","binl2hex","core_md5","str2binl","b64_md5","binl2b64","str_md5","binl2str","hex_hmac_md5","key","data","core_hmac_md5","b64_hmac_md5","str_hmac_md5","md5_vm_test","x","len","a","b","d","olda","oldb","oldc","oldd","md5_ff","md5_gg","md5_hh","md5_ii","safe_add","Array","md5_cmn","q","t","bit_rol","bkey","ipad","opad","hash","concat","y","lsw","num","cnt","str","bin","mask","binarray","hex_tab","triplet","j","buffer","requestQueue","loginDialog","klass","Extends","Request","options","method","noCache","ignoreError","onFailureFn","onResubmitFn","onAuthFailureFn","initialize","onFailure","onException","onAuthFailure","setOptions","parent","send","urlEncoded","error","status","promptLogin","getErrorMessage","xhr","responseText","push","isClosing","Librarian","LoginDialog","onSuccess","onRelogin","bind","show","request","shift","Utils","reloadThumbnails","previewWindows","reloadThumbnail","Class","JSON","HTML","Session","Binds","Implements","Events","Options","logon","username","password","params","tz","Date","getTimezoneOffset","url","path","getMethodUrl","getQueryString","sessionType","sessionTypes","onBehalf","userInfo","UserId","onLogon","logoff","onLogoff","changePassword","oldPassword","newPassword","securityQuestion","securityAnswer","getUpdateUrl","uopw","unpw","uq","ua","addEvent","onUpdateComplete","sendResetPassword","getRecoverUrl","name","onSendResetPassword","notification","fireEvent","arguments","extend","undefined","user","contactAsGuest","userAsGuest","anonymous","sso","isUser","isMfaRequired","value","getResponseHeader","toLowerCase","MFAPanel","container","mfaInfo","credentials","containerEl","wrapperEl","$","loadHtml","getLayoutsPath","onLoadHtml","setupImg","getElement","Status","setupWrapper","src","ImageUrl","codeInput","focus","addOnKeyPress","submit","submitButton","addOnClick","toggleDisabled","disabled","toggleClass","session","hasClass","mfaSecret","Secret","mfaCode","sessionInfo","parse","message","prototype","remove","from","to","rest","slice","apply","find","predicate","TypeError","list","Object","thisArg","element","call","pushTop","array","item","implement","intersect","other","copy","each","el","splice","toArray","object","fn","results","replaceAll","token","newToken","ignoreCase","_token","substring","equalsIgnoreCase","containsIgnoreCase","contains","startsWith","startsWithIgnoreCase","endsWith","index","lastIndexOf","endsWithIgnoreCase","matches","operator","self","isLowerCase","isUpperCase","toUpperCase","isCharLowerCase","character","isCharUpperCase","isQuoted","quote","trim","toCapitalCase","lowerRest","capital","toPrettyFormat","words","subWords","split","lastUpper","join","setCharAt","chr","substr","safeSplit","word","tokenIndex","decodeXML","escaped_to_xml","&",""","<",">","'","encodeXML","xml_to_escaped","&","\"","<",">","'","toISOString","pad","number","r","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","toFixed","relativeDate","showAgo","useShortName","secDiff","getTime","dayDiff","Math","floor","SECONDS_IN_HOUR","translateSuffix","Lang","getString","getArgString","ceil","SECONDS_IN_MINUTE","minutes","getPluralArgString","hours","weeks","D","fromISO","p","exec","day","L","parseInt","UTC","getDate","setUTCMinutes","NaN","Element","selectSingleNode","xPath","XPathEvaluator","result","evaluate","XPathResult","FIRST_ORDERED_NODE_TYPE","singleNodeValue","XMLDocument","selectNodes","cXPathString","xNode","oNSResolver","createNSResolver","documentElement","aItems","ORDERED_NODE_SNAPSHOT_TYPE","aResult","snapshotLength","snapshotItem","ownerDocument","Number","toMoney","decimals","symbol","decimalMark","seperator","abs","intPart","seperatorCount","hashchange","onAdd","location","window","document","onhashchange","periodical","setVisible","visible","setStyle","select","activeClass","siblingSelector","getSiblings","forEach","sibling","removeClass","addClass","showOnly","hide","removeNode","prepend","newBuffer","delimiter","originalTitle","title","onPropertyChanged","evt","propertyName","setTimeout","changeTitle","newTitle","attachEvent","addEventListener","toLowerKeys","output","hasOwnProperty","toCamelKeys","refactor","Scroller","start","listener","addEvents","mouseover","bound","attach","stop","removeEvents","detach","timer","clearInterval","origRefactor","original","refactors","console","debug","NativeEvents","dragenter","dragleave","dragover","drop","Blob","$family","log","$empty","warn","trace","Notification","type","closeAfter","messageEl","render","html","class","inject","close","closeAll","selector","getElements","invoke","body","Html5Uploader","chunkSize","chunkUrl","completeUrl","importOptions","waitForComplete","onFileSuccess","onFileFailure","onComplete","files","successCount","failureCount","getUploadUrl","uploadFiles","fileList","file","uploadFile","chunk","uploadChunk","end","encodeURIComponent","size","headers","Content-Type","fileId","uploadComplete","stringify","checkComplete","DropZone","target","targetClass","dragClass","onDropFiles","targetEl","dragging","onDragOver","onDragLeave","onDrop","e","preventDefault","event","dataTransfer","hasFiles","dropEffect","startDrag","stopDrag","values","types","toBoolean","getHash","canDownload","isSlideShow","isGuest","groupid","presid","groupinfo","ext","getExtensionFromData","download","excludeTypes","canStream","preview","allowVideoStreaming","extensions","isStreamableVideo","allowAudioStreaming","isStreamableAudio","createLinkFromString","getArrayFromCSV","text","skip","delim","getArrayFromText","RegExp","getArrayFromFile","getObjectromFile","columns","info","selection","match","map","datum","col","propName","cr","lf","lines","showNotification","closeNotifications","showCartNotification","success","features","fastlane","load","FastLane","isEnabled","cart","showDetailedMessages","itemType","getItemTypeString","cartNotificationTypes","removed","notificationTime","openSendWindow","canShare","win","EventSendWindow","openCampaignWindow","campaignInfo","isdraft","ConfirmWindow","question","onFirstButtonClicked","CampaignWindow","openURLFile","getSlideText","json","open","Text","logType","activityLogType","fileid","fileName","filename","getLogUrl","async","openUploader","callback","doOpen","clouduploader","CloudUploadWindow","html5uploadwindow","hasHtml5UploadSupport","Html5UploadWindow","complete","upload","disclaimer","id","height","disclaimerHeight","width","firstButtonText","secondButtonText","resize","notifyUploadComplete","getSlideShowURL","getAppPath","getUrlLibraryName","loginKey","search","parseQueryString","lkey","hashData","frameName","sessionName","catid","openSlideShow","slideShowURL","winSize","getSize","getArticleDesignerURL","openArticleDesigner","adURL","openWorkflowToDo","todoWindow","WorkflowTodoWindow","onDoubleClick","Library","openWorkflowWizardWindow","workflowInstanceClick","onClick","slidenum","slidenumber","slideid","itemnumber","catType","isUserCategory","cattype","getSlideTextArray","getFileID","ignoreExtension","getFileInfo","deleteUserFile","getFileHash","getAttributeFromArray","attribList","attribName","attrib","Name","Value","getAttributesFromArray","attributes","getAttributeDropdownValues","attribId","includeInfo","getFileTypes","getThumbnailUrl","track","expand","parentData","sourceext","slideNum","noSource","fileAsSlide","hasFakeSlides","itemNum","isSourceNotAvailable","editFileName","getDownloadUrl","thumbnailid","tileList","expandGroupItemsToSlides","eventcount","eventid","getLibraryPath","contentid","contenttype","supportfileid","contentType","supportFile","uniqueID","cacheId","instanceid","altUrl","getFileTypeIcon","getFullPath","root","category","fileTypeIconsVersion","getFileTypeIcon_v1","getFileTypeIcon_v2","getFileTypeIcon_v3","getFileTypeIconsPath","getFileTypeIconName","powerpoint","pdf","excel","vector","image","video","audio","archive","favorite","link","wizard","campaign","page","getFileType","getNaturalImageSize","imageEl","tempImageEl","naturalWidth","naturalHeight","Image","getFileDownloadUrl","mode","newName","extension","requestid","href","click","getPath","shortName","parentid","getCatFromPath","getSearchContext","term","sid","getItemType","slide","getNameWithoutExtension","extIndex","getExtension","undecorateFileName","includeSource","fileData","fileinfo","filetypeextension","contentname","getFileNameFromPath","fullPath","getRequestInfo","requestId","getLink","isDownload","linkWindow","getRootURL","libraries","pageHeaders","downloadLinkMode","origin","pathname","eventGroup","includes","libraryLinkPreview","InfoWindow","groupname","content","getTopRated","count","outputType","useGetSendData","customSendData","searchType","Search","outputTypes","FILES","globalFavorite","GROUPS","getFilesByMethod","getPopular","SLIDES","getNewestFiles","excludeExtensions","exclude","getNewestGroups","notUsed","getNewestEventGroups","extraInfo","getEventGroupsByMethod","getPopularEventGroups","getEventUrl","parameters","view","viewNameByType","elasticSearch","enableContent","includeView","getSendData","getNthBusinessDay","startDate","targetDate","getFullYear","getMonth","setDate","dayOfWeek","getDay","isHoliday","getTopics","getCollaborationUrl","date","holidays","calendar","holiday","getFavoriteInstanceCount","presId","tileList2","sectionList","cartWindow","cartList","updateAllCheckboxes","updateCheckboxes","getItemStyle","ListView","updateCartCheckBoxes","SearchResult","resultViews","styleName","elements","$$","fromCart","enabled","tileItem","cartCheckEl","get","userCart","isInCart","checked","enableHoverMenu","set","setButtonState","itemEl","disable","src_orig","setButtonDisabled","buttonEl","setElementDisabled","recursive","childEl","setTreeFileDisplay","runOnAllTrees","unselectAllTrees","unselectAllWorkspaces","funcName","treeName","tree","trees","treeViews","loadCategoryByPath","selectTreeNodeByPath","treeView","loadItemView","description","loadFolderByPath","namedPath","getTreeByType","useName","hasSelectionFinished","loaded","recurseData","runFunctionOnTreeEvent","isLoaded","isOpen","toggle","getSelected","children","treeData","property","getChildren","state","handleTreeToggleAndLoad","unselect","showHomePage","node","$loading","hasChildren","eventName","onEvent","removeEvent","setSelectValue","selectEl","found","selected","multiple","selectedIndex","getSelectedItem","getSelectedValue","setElementValue","elementEl","tagName","innerText","getElementValue","getCheckValue","returnNullIfUncheck","validateInputPattern","inputEl","ignoreEmpty","pattern","test","fillSelect","allowEmpty","clearFirst","empty","optionEl","typeOf","Option","add","limitValueLength","setValueLengthLabel","countLimit","countContainerId","remaining","createLabeledInput","parentEl","label","className","labelFunc","contEl","injectInside","labelEl","for","labelNodeEl","createTextNode","appendChild","clearSearchRequests","contentLoader","lastRequest","cancel","lastSearch","destroy","clearRequests","myProcView","deleteRequest","myInProgProcView","clearFocus","keyNav","checkString","badChars","scrubString","replacement","atIndex","underscoreIndex","loadCustomXML","xhttp","XMLHttpRequest","ActiveXObject","xml","responseXML","Browser","ie","version","getXMLDoc","getXMLText","xmlText","doc","DOMParser","parseFromString","preserveWhiteSpace","loadXML","createXMLDoc","rootName","xmlDoc","XMLSerializer","serializeToString","serializer","getXMLNodeText","nodeEl","textContent","setXMLNodeText","getAttributeXMLNode","attributeType","attribEl","createElement","nameEl","valueEl","cloneXMLNode","clonedEl","nodeName","k","setAttribute","nodeText","l","childNodes","cloneXMLDoc","newXMLDoc","parser","doesXMLHaveNode","getElementsByTagName","getOrAddXMLNode","getXMLNode","addXMLNode","getDocument","xmlToJson","obj","nodeType","attribute","nodeValue","filter","old","renderContactName","isgroup","firstname","lastname","getContactNameClass","isValidEmailAddress","email","getLocalTimezoneName","dateString","getUTCDateValue","format","extractDateFromString","increment","getGMTOffset","toInt","getDateValue","eval","setUpDatePicker","boxClass","boxId","iconId","parentId","onIconClick","picker","dateFields","Picker","merge","timePicker","positionOffset","pickerClass","useFadeInOut","calendarIconEl","getDefaultThemePath","Event","isVisible","setUpDatePicker2","boxEl","iconEl","blockKeydown","progressBar","colors","leftValue","totalValue","display","percent","tableEl","bodyEl","valueTableEl","valueBodyEl","leftColEl","rowEl","lowerbound","upperbound","leftvalue","rightvalue","rightWidth","leftWidth","min","rightColEl","style","leftBackground","backgroundColor","rightBackground","align","color","rightValue","valueRowEl","colEl","percentColEl","colSpan","prepareItemData","totalIndex","slidecount","pagecount","extrafields","contentGroup","prestype","eventnumber","eventgroupinfo","showProgressImage","referenceEl","progressEl","setStyles","paddingLeft","paddingTop","position","zIndex","onload","getParent","parentSize","top","getHeight","left","getWidth","getImagesPath","hideProgressImage","showModalCover","styles","getScrollHeight","isPackageNameValid","notify","badNames","maxFileNameLength","getItemInformation","myFavorite","logout","storedHash","sname","toQueryString","openPage","response","keepHash","buildVersion","encodeHash","tags","decodeURIComponent","loadHomeContent","onNoHash","ie7","onHashChange","forced","hashNavigation","forcedHashChange","vuePage","skey","loadPageFromHash","doLoad","openFile","eventInfo","EventId","itemLoadFallback","getListByType","items","subset","tab","onTreeSelect","loadComplete","PreviewWindow","openPreviewWindow","pageClick","hashSuffix","changeTreeHash","mainPanelEl","scrollTo","useFileTitle","changeHash","toggleListView","reload","saveUserSetting","listView","setUserSetting","enabledSetting","isSearching","maxResults","showSearchNavigation","prepSearchGrid","getOutputType","searchLoadComplete","wrapper","reset","addResults","curPage","loadHome","pageHeader","headerType","headerTypes","bookmark","Bookmarks","viewBookmarkedContents","toggleTagCloudView","enable","tagcloud","relatedContentEl","tagCloudView","TagCloudView","clean","getStandardContent","presentations","myFavoriteCategory","getFromContent","getContentTypeName","getContentTypeIcon","icon","isCategorizedFileTypeIcons","getCategoryTypeFromContentType","sharedFavoriteCategory","sharedFavorite","workItem","workflow","getContentTypeFromCategoryType","articles","articleSection","uploads","article","canEditFavoriteAccess","sharedfavorite","isOwner","isShared","catId","isCat","isowner","canWrite","canwrite","isslideshow","isSlideshow","isFavoriteType","virtPresType","slideshow","sharedSlideshow","isFavorite","isfavorite","isshared","isMyFavorite","isMySlideShow","isSharedFavorite","isSharedSlideShow","presType","getMooSelectContact","contact","contactid","displayname","fullname","contacttype","parseCsv","delimeter","csvJson","objAttributeNames","objValues","isDataEqual","firstData","secondData","isDataEquals","isUserMemberOfGroup","groupNames","userGroups","isUserMemberOfGroupLike","group","requestStatuses","requestStatusRequest","requestStatusTimer","trackRequestStatus","checkRequestStatuses","clearTimeout","requestIds","keys","onRequestCheckComplete","RequestId","Failed","Complete","openRecEngine","pageData","recWindow","CustomWizardWindow","xmlURL","navMenuStyle","navMenuTitleStyle","keysToLowerCase","logInfo","logPreviewActivity","contentId","parentType","logActivityDuration","sync","getContactFeaturePermissions","getFeaturePermissions","getUserFeaturePermissions","getAdminUrl","stripHTML","allowedTags","$0","$1","getTinyMCEStyles","css","editor","customCSSPath","metroui","getTinyMCEDefaults","plugins","toolbar","menubar","statusbar","forced_root_block","convert_urls","browser_spellcheck","force_hex_style_colors","extended_valid_elements","custom_elements","allow_conditional_comments","formats","alignleft","collapsed","alignright","aligncenter","block","text-align","content_css","toolbar_mode","visual_table_class","getTinyMCEOptions","instanceOptions","defaults","libraryOptions","addTinyMCEButton","button","insertgreeting","tooltip","onAction","setCursorLocation","getBody","insertContent","insertsignature","insertportal","insertcontentlink","insertdownloadlink","insertimage","getBookmark","ImageSelectWindow","subtype","supportImageSubType","tmpl","all","getAbsolutePath","moveToBookmark","maxImgWidth","img","insertdisclosure","DisclosureWindow","disclosureType","disclosures","disclosure","disclosureid","ui","registry","addButton","getLibrarySetting","settings","parsedValue","getUserGroupInfo","groupName","includeMembers","setupSDDMMenu","menuEl","menuProperties","linkEl","linkProperties","linkIconClass","linkText","dropdownEl","dropdownProperties","populateSDDMDropdown","dropdownItems","bindSDDMMenu","properties","bindSDDMMenus","menu","clickFn","isSurface","mopen","partial","mouseout","mclosetime","blur","mcancelclosetime","mclose","getFlaggingLocation","getFlaggingClasses","mapping","flagging","metaName","classes","flag","customFunction","doesFlaggingMetaMatch","showOnCategory","metaValue","getField","fieldName","defaultValue","fields","fieldNameNoSpaces","getHashByName","openLibraryTreePanel","sideColumn","isCollapsed","handleIconEl","columnToggle","inIframe","getFormData","query","vars","val","kv","current","textToHtml","line","escapeHtml","getDropdownFilter","variations","FormData","getUserSetting","localStorage","getItem","setItem","deleteUserSetting","removeItem","validatePasswordComplexity","validPassword","passwordComplexityRules","rule","regex","addPerformanceTime","endTime","startTime","performance","timing","navigationStart","seconds","performanceTimes","logPerformanceTimes","Function","args","allArguments","_addEvent","bindObj","_removeEvent","keyCode","addOnDblClick","isAppleProduct","removeOnClick","makeUnselectable","unselectable","child","firstChild","nextSibling","getRight","getLeft","getBottom","getTop","Document","Engine","trident","webkit","gecko","removeOnKeyPress","form2js","rootNode","skipEmpty","nodeCallback","useIdIfEmpty","emptyToNull","useIdIfEmptyName","formValues","on","currNode","constructor","NodeList","getFormValues","processNameValues","nameValues","nameParts","currResult","arrNameFull","arrName","arrIdx","namePart","_nameParts","arrays","extractNodeValues","getSubFormValues","currentNode","currentResult","fieldValue","getFieldName","callbackResult","getFieldValue","fieldNode","getSelectedOptionValue","selectNode","js2form","fieldValues","formFieldsByName","_subArrayRegexp","_subObjectRegexp","_arrayItemRegexp","_lastIndexedArrayRegexp","_arrayOfArraysRegexp","_inputOrTextareaRegexp","rm","object2array","getFields","setValue","field","arrayIndexes","shouldClean","nameNormalized","subFieldName","subFields","normalizeName","currChunk","newIndex","nameChunksNormalized","nameChunks","currIndex","lastIndex","indexes","lvl","getSubValues","subObj","tempItem","tempResult","itemName","factory","define","amd","module","exports","log4javascript","isUndefined","EventSupport","firstItem","startIndex","deleteCount","itemsAfterDeleted","itemsDeleted","argumentsArray","itemsToAppend","eventTypes","eventListeners","setEventTypes","eventTypesParam","handleError","eventType","array_contains","removeEventListener","array_remove","dispatchEvent","eventArgs","listeners","applicationStartDate","uniqueId","random","emptyFunction","newLine","pageLoaded","Log4JavaScript","toStr","getExceptionMessage","ex","getUrlFileName","lastSlashIndex","max","getExceptionStringRep","exStr","lineNumber","localEx","logLog","showStackTraces","stack","bool","Boolean","splitIntoLines","edition","urlEncode","escape","arr","extractBooleanFromParam","param","extractStringFromParam","extractIntFromParam","extractFunctionFromParam","isError","err","Error","methodName","argsStrings","script","returnValue","quietMode","debugMessages","setQuietMode","numberOfErrors","alertAllErrors","setAlertAllErrors","displayDebug","alert","exception","alertMessage","log4javascript_disabled","setEnabled","useTimeStampsInMilliseconds","setTimeStampsInMilliseconds","timeStampsInMilliseconds","isTimeStampsInMilliseconds","evalInScope","expr","setShowStackTraces","Level","level","Timer","INFO","equals","isGreaterOrEqual","ALL","MIN_VALUE","TRACE","DEBUG","WARN","ERROR","FATAL","OFF","MAX_VALUE","getElapsedTime","anonymousLoggerName","defaultLoggerName","nullLoggerName","rootLoggerName","Logger","appenders","loggerLevel","isRoot","isNull","appenderCache","appenderCacheInvalidated","addChild","childLogger","invalidateAppenderCache","additive","getAdditivity","setAdditivity","additivity","valueChanged","addAppender","appender","Appender","setAddedToLogger","removeAppender","setRemovedFromLogger","removeAllAppenders","appenderCount","getEffectiveAppenders","parentEffectiveAppenders","getEffectiveLevel","finalParamIndex","lastParam","messages","loggingEvent","LoggingEvent","callAppenders","effectiveAppenders","doAppend","setLevel","getLevel","logger","initiallyExpanded","groupEnd","timers","time","timeEnd","milliseconds","assert","fatal","isEnabledFor","isTraceEnabled","isDebugEnabled","isInfoEnabled","isWarnEnabled","isErrorEnabled","isFatalEnabled","isEntryPoint","loggers","loggerNames","ROOT_LOGGER_DEFAULT_LEVEL","rootLogger","getRootLogger","getLogger","loggerName","parentLoggerName","lastDotIndex","defaultLogger","getDefaultLogger","createDefaultLogger","nullLogger","getNullLogger","resetConfiguration","timeStamp","timeStampInMilliseconds","timeStampInSeconds","getMilliseconds","getThrowableStrRep","getCombinedMessages","Layout","loggerKey","timeStampKey","millisecondsKey","levelKey","messageKey","exceptionKey","urlKey","batchHeader","batchFooter","batchSeparator","returnsPostData","overrideTimeStampsSetting","ignoresThrowable","getContentType","allowBatching","getTimeStampValue","getDataValues","combineMessages","dataValues","hasCustomFields","customFields","setKeys","setCustomField","fieldUpdated","formatWithException","formatted","SimpleDateFormat","SimpleLayout","NullLayout","XmlLayout","escapeNewLines","JsonLayout","readable","colon","lineBreak","HttpPostDataLayout","formatObjectExpansion","depth","indentation","objectsExpanded","doFormat","childDepth","childIndentation","childLines","expansion","childExpansion","formatString","jLen","PatternLayout","DEFAULT_CONVERSION_PATTERN","AlertAppender","BrowserConsoleAppender","layout","threshold","setLayout","getLayout","setThreshold","getThreshold","isCombinedMessages","escapeCdata","formatMessage","isReadable","formatValue","prefix","valType","formattedValue","childPrefix","queryBits","newDateAtMidnight","year","month","setMilliseconds","monthNames","dayNames","G","M","w","W","F","E","H","K","h","m","S","Z","getDifference","isBefore","getUTCTime","getHours","getMinutes","getSeconds","getTimeSince","getPreviousSunday","midday","previousSunday","getWeekInYear","minimalDaysInFirstWeek","startOfYear","weekInYear","getWeekInMonth","startOfMonth","weekInMonth","getDayInYear","setMinimalDaysInFirstWeek","days","getMinimalDaysInFirstWeek","padWithZeroes","formatText","numberOfLetters","minLength","formatNumber","formattedString","searchString","quotedString","patternLetters","otherLetters","otherCharacters","patternLetter","rawData","absData","TTCC_CONVERSION_PATTERN","ISO8601_DATEFORMAT","DATETIME_DATEFORMAT","ABSOLUTETIME_DATEFORMAT","matchedString","padding","truncation","conversionCharacter","specifier","precision","loggerNameBits","dateFormat","fieldIndex","strLen","getFormattedMessage","formattedMessage","consoleMethodName","opera","postError","xhrFactory","xmlHttpFactories","withCredentialsSupported","getXmlHttp","errorHandler","xmlHttp","ConsoleAppender","defaultCommandLineFunctions","consoleAppenderIdCounter","nodeTypes","preFormattedElements","emptyElements","indentationUnit","oldOnload","isHttpRequestSuccessful","AjaxAppender","withCredentials","isSupported","timed","waitForResponse","batchSize","timerInterval","requestSuccessCallback","failCallback","postVarName","sendAllOnUnload","sessionId","queuedLoggingEvents","queuedRequests","sending","initialized","checkCanConfigure","configOptionName","sendAll","currentRequestBatch","sendRequest","preparePostData","scheduleSending","sendAllRemaining","sendingAnything","currentLoggingEvent","actualBatchSize","batchedLoggingEvents","formattedMessages","postData","xmlHttpErrorHandler","msg","successCallback","onreadystatechange","readyState","header","setRequestHeader","headerEx","errMsg","getSessionId","setSessionId","sessionIdParam","layoutParam","isTimed","setTimed","timedParam","getTimerInterval","setTimerInterval","timerIntervalParam","isWaitForResponse","setWaitForResponse","waitForResponseParam","getBatchSize","setBatchSize","batchSizeParam","isSendAllOnUnload","setSendAllOnUnload","sendAllOnUnloadParam","setRequestSuccessCallback","requestSuccessCallbackParam","setFailCallback","failCallbackParam","getPostVarName","setPostVarName","postVarNameParam","getHeaders","addHeader","oldBeforeUnload","onbeforeunload","init","setCookie","expires","setTime","toGMTString","cookie","getCookie","nameEquals","ca","unescape","getBaseUrl","scripts","lastSlash","PopUpAppender","lazyInit","initiallyMinimized","useDocumentWrite","create","focusPopUp","InPageAppender","padWithSpaces","spaces","numberOfSpaces","getXhtml","includeRootNode","startNewLine","preformatted","getStyleAttributeValue","stylePairs","cssText","styleValue","nameValueBits","props","DOCUMENT_FRAGMENT_NODE","xhtml","ELEMENT_NODE","outerHTML","hasPrefix","currentAttr","specified","hasChildNodes","childStartNewLine","TEXT_NODE","childPreformatted","endTag","lt","trimmedLines","CDATA_SECTION_NODE","DOCUMENT_NODE","createCommandLineFunctions","addGlobalCommandLineFunction","getElementById","maxLen","propList","propVal","propNameStr","dir","frames","getCommandWindow","setCommandWindow","appendResult","clear","expansionDepth","setCommandLineObjectExpansionDepth","inPage","focusConsoleWindow","consoleWindowCreated","consoleWindowLoaded","consoleClosed","consoleAppenderId","newestMessageAtTop","scrollToLatestMessage","createWindow","getConsoleWindow","maxMessages","showCommandLine","commandLineObjectExpansionDepth","showHideButton","showCloseButton","appenderName","consoleWindowExists","isNewestMessageAtTop","setNewestMessageAtTop","newestMessageAtTopParam","setNewestAtTop","isScrollToLatestMessage","setScrollToLatestMessage","scrollToLatestMessageParam","setScrollToLatest","setWidth","widthParam","setHeight","heightParam","getMaxMessages","setMaxMessages","maxMessagesParam","isShowCommandLine","setShowCommandLine","showCommandLineParam","isShowHideButton","setShowHideButton","showHideButtonParam","isShowCloseButton","setShowCloseButton","showCloseButtonParam","getCommandLineObjectExpansionDepth","commandLineObjectExpansionDepthParam","minimized","QueuedLoggingEvent","levelName","QueuedGroup","QueuedGroupEnd","isInitiallyMinimized","setInitiallyMinimized","initiallyMinimizedParam","isUseDocumentWrite","setUseDocumentWrite","useDocumentWriteParam","checkAndAppend","safeToAppend","reopenWhenClosed","appendQueuedLoggingEvents","clearLog","focusCommandLine","focusSearch","commandWindow","commandWindowParam","executeLastCommand","evalLastCommand","commandLayout","getCommandLayout","setCommandLayout","commandLayoutParam","evalCommandAndAppend","commandReturnValue","commandOutput","execScript","commandLineFunctionsHash","commandLineFunctions","objectsToRestore","addObjectToRestore","addFunctionToWindow","evalExpr","mainLayout","addCommandLineFunction","functionName","commandLineFunction","commandHistoryCookieName","storeCommandHistory","commandHistory","writeHtml","writeln","consoleWindowLoadHandler","setAppender","setMainWindow","storedValue","currentCommandIndex","unload","caller","containerElement","cssProperties","windowCreationStarted","iframeContainerDiv","iframeId","useOldPopUp","complainAboutPopUpBlocking","popUp","pollConsoleWindow","windowTest","interval","errorMessage","poll","setInterval","getConsoleUrl","documentDomainSet","domain","hostname","addCssProperty","fromButton","confirm","parentNode","removeChild","initErrorMessage","finalInit","writeToDocument","border","iframeSrc","innerHTML","iframeDocumentExistsTest","pageLoadHandler","right","bottom","iframe","isUseOldPopUp","setUseOldPopUp","useOldPopUpParam","isComplainAboutPopUpBlocking","setComplainAboutPopUpBlocking","complainAboutPopUpBlockingParam","isFocusPopUp","setFocusPopUp","focusPopUpParam","isReopenWhenClosed","setReopenWhenClosed","reopenWhenClosedParam","windowProperties","frameInfo","frameEl","frameElement","windowName","host","checkPopUpClosed","closed","popUpClosedCallback","setCloseIfOpenerCloses","mainPageReloaded","showLogEntryDeleteButtons","InlineAppender","ATTRIBUTE_NODE","ENTITY_REFERENCE_NODE","ENTITY_NODE","PROCESSING_INSTRUCTION_NODE","COMMENT_NODE","DOCUMENT_TYPE_NODE","NOTATION_NODE","setDocumentReady","Zoom","contentWrapper","imageContainer","zoomFactor","maxZoom","reverseWidthCheck","defaultZoomLevel","zoomLevel","originalSize","originalScroll","drag","justDragged","handles","setImagePosition","Drag","onMouseWheel","doZoom","zoomAmount","naturalZoom","lowerTolerance","wheel","getNaturalDimensionsZoomLevel","upperTolerance","mousePos","direction","newWidth","newHeight","scrollLeft","scrollTop","newLeft","safeValues","natZoomLevel","minZoomLevel","imgHeight","imgWidth","imageCoords","getCoordinates","percentX","percentY","newTop","calculatePositionLimits","getLimitedPosition","heightLimit","widthLimit","limit","zoomTo","zoom","imagePos","getPosition","parentElement","modified","isZoomed","zoomToNaturalDimensions","zoomToDefault","strings","loadLangScripts","head","lang","availableLangs","charset","addLang","langList","setLangStrings","updateLang","overwrite","currentValue","preservePlurals","currentLang","defaultLang","arg","getPluralString","pluralizeString","spaceindex","isUpper","owl","pluralize","getStorageKey","ShortName","saveLanguage","loadSavedLanguage","setLang","translateElements","translation","userDefined","capitalizeSame","sampleWord","uninflected","keysLength","table","toKeys","irregular","I","you","he","it","me","him","them","myself","yourself","himself","herself","itself","themself","oneself","dwarf","mongoose","mythos","ox","soliloquy","trilby","person","forum","syllabus","alumnus","genus","viscus","stigma","suffixRules","plural","lowerWord","suffixRulesLength","isoLangs","ab","aa","af","ak","sq","am","ar","an","hy","as","av","ae","ay","az","bm","ba","eu","be","bn","bh","bi","bs","br","bg","my","ch","ce","ny","zh","zh-hans","nativeName","zh-hant","cv","kw","co","hr","cs","da","dv","nl","en","eo","et","ee","fo","fj","fi","fr","ff","gl","ka","de","gn","gu","ht","ha","hz","hi","ho","hu","ia","ga","ig","ik","io","is","iu","ja","jv","kl","kn","kr","ks","kk","km","ki","rw","ky","kg","ko","ku","kj","la","lb","lg","li","ln","lo","lu","lv","gv","mk","mg","ms","ml","mt","mi","mr","mh","mn","na","nv","nb","nd","ne","ng","nn","no","ii","nr","oc","oj","cu","om","or","os","pa","pi","fa","pl","ps","pt","qu","rn","ro","ru","sa","sc","sd","se","sm","sg","sr","gd","sn","si","sk","sl","so","st","es","su","sw","ss","sv","ta","te","tg","th","ti","bo","tk","tl","tn","tr","ts","tt","tw","ty","ug","uk","ur","uz","ve","vi","vo","wa","cy","wo","fy","xh","yi","yo","za","getLanguageName","getLanguageNativeName","stateCodes","Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","District Of Columbia","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Carolina","North Dakota","Ohio","Oklahoma","Oregon","Pennsylvania","Rhode Island","South Carolina","South Dakota","Tennessee","Texas","Utah","Vermont","Virginia","Washington","West Virginia","Wisconsin","Wyoming"],"mappings":"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","file":"_layouts\\core\\utils\\utils.bundle.min.js","sourcesContent":["/**\r\n*\r\n* Base64 encode / decode\r\n* http://www.webtoolkit.info/\r\n*\r\n**/\r\n\r\nvar Base64 = {\r\n // private property\r\n _keyStr: \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",\r\n\r\n // public method for encoding\r\n encode: function(input) {\r\n var chr1, chr2, chr3, enc1, enc2, enc3, enc4,\r\n i = 0,\r\n buf = new StringBuffer();\r\n\r\n input = Base64._utf8_encode(input);\r\n while (i < input.length) {\r\n chr1 = input.charCodeAt(i++);\r\n chr2 = input.charCodeAt(i++);\r\n chr3 = input.charCodeAt(i++);\r\n\r\n enc1 = chr1 >> 2;\r\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\r\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\r\n enc4 = chr3 & 63;\r\n\r\n if (isNaN(chr2))\r\n enc3 = enc4 = 64;\r\n else if (isNaN(chr3))\r\n enc4 = 64;\r\n\r\n buf.append(this._keyStr.charAt(enc1));\r\n buf.append(this._keyStr.charAt(enc2));\r\n buf.append(this._keyStr.charAt(enc3));\r\n buf.append(this._keyStr.charAt(enc4));\r\n }\r\n\r\n return buf.toString();\r\n },\r\n\r\n // public method for decoding\r\n decode: function(input) {\r\n var chr1, chr2, chr3,\r\n enc1, enc2, enc3, enc4,\r\n i = 0,\r\n buf = new StringBuffer();\r\n\r\n input = (input + '').replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\r\n\r\n while (i < input.length) {\r\n enc1 = this._keyStr.indexOf(input.charAt(i++));\r\n enc2 = this._keyStr.indexOf(input.charAt(i++));\r\n enc3 = this._keyStr.indexOf(input.charAt(i++));\r\n enc4 = this._keyStr.indexOf(input.charAt(i++));\r\n\r\n chr1 = (enc1 << 2) | (enc2 >> 4);\r\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\r\n chr3 = ((enc3 & 3) << 6) | enc4;\r\n\r\n buf.append(String.fromCharCode(chr1));\r\n\r\n if (enc3 != 64) {\r\n buf.append(String.fromCharCode(chr2));\r\n }\r\n if (enc4 != 64) {\r\n buf.append(String.fromCharCode(chr3));\r\n }\r\n }\r\n\r\n return Base64._utf8_decode(buf.toString());\r\n },\r\n\r\n // private method for UTF-8 encoding\r\n _utf8_encode: function(string) {\r\n string = (string + '').replace(/\\r\\n/g, \"\\n\");\r\n var buf = new StringBuffer();\r\n\r\n for (var n = 0; n < string.length; n++) {\r\n var c = string.charCodeAt(n);\r\n\r\n if (c < 128) {\r\n buf.append(String.fromCharCode(c));\r\n }\r\n else if ((c > 127) && (c < 2048)) {\r\n buf.append(String.fromCharCode((c >> 6) | 192));\r\n buf.append(String.fromCharCode((c & 63) | 128));\r\n }\r\n else {\r\n buf.append(String.fromCharCode((c >> 12) | 224));\r\n buf.append(String.fromCharCode(((c >> 6) & 63) | 128));\r\n buf.append(String.fromCharCode((c & 63) | 128));\r\n }\r\n }\r\n\r\n return buf.toString();\r\n },\r\n\r\n // private method for UTF-8 decoding\r\n _utf8_decode: function(utftext) {\r\n var buf = new StringBuffer(),\r\n i = 0,\r\n c, c1, c2;\r\n\r\n while (i < utftext.length) {\r\n\r\n c = utftext.charCodeAt(i);\r\n\r\n if (c < 128) {\r\n buf.append(String.fromCharCode(c));\r\n i++;\r\n }\r\n else if ((c > 191) && (c < 224)) {\r\n c1 = utftext.charCodeAt(i + 1);\r\n buf.append(String.fromCharCode(((c & 31) << 6) | (c1 & 63)));\r\n i += 2;\r\n }\r\n else {\r\n c1 = utftext.charCodeAt(i + 1);\r\n c2 = utftext.charCodeAt(i + 2);\r\n buf.append(String.fromCharCode(((c & 15) << 12) | ((c1 & 63) << 6) | (c2 & 63)));\r\n i += 3;\r\n }\r\n }\r\n\r\n return buf.toString();\r\n }\r\n};","\r\n/* Version 4.2.3.001 */\r\n/*\r\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\r\n * Digest Algorithm, as defined in RFC 1321.\r\n * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.\r\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\r\n * Distributed under the BSD License\r\n * See http://pajhome.org.uk/crypt/md5 for more info.\r\n */\r\n\r\nvar Encrypt = {\r\n /*\r\n * Configurable variables. You may need to tweak these to be compatible with\r\n * the server-side, but the defaults work in most cases.\r\n */\r\n hexcase: 0, /* hex output format. 0 - lowercase; 1 - uppercase */\r\n b64pad: '', /* base-64 pad character. \"=\" for strict RFC compliance */\r\n chrsz: 8, /* bits per input character. 8 - ASCII; 16 - Unicode */\r\n\r\n /*\r\n * These are the functions you'll usually want to call\r\n * They take string arguments and return either hex or base-64 encoded strings\r\n */\r\n hex_md5: function(s) {\r\n return Encrypt.binl2hex(Encrypt.core_md5(Encrypt.str2binl(s), s.length * Encrypt.chrsz));\r\n },\r\n\r\n b64_md5: function(s) {\r\n return Encrypt.binl2b64(Encrypt.core_md5(Encrypt.str2binl(s), s.length * Encrypt.chrsz));\r\n },\r\n\r\n str_md5: function(s) {\r\n return Encrypt.binl2str(Encrypt.core_md5(Encrypt.str2binl(s), s.length * Encrypt.chrsz));\r\n },\r\n\r\n hex_hmac_md5: function(key, data) {\r\n return Encrypt.binl2hex(Encrypt.core_hmac_md5(key, data));\r\n },\r\n\r\n b64_hmac_md5: function(key, data) {\r\n return Encrypt.binl2b64(Encrypt.core_hmac_md5(key, data));\r\n },\r\n\r\n str_hmac_md5: function(key, data) {\r\n return Encrypt.binl2str(Encrypt.core_hmac_md5(key, data));\r\n },\r\n\r\n /* \r\n * Perform a simple self-test to see if the VM is working \r\n */\r\n md5_vm_test: function() {\r\n return Encrypt.hex_md5(\"abc\") == \"900150983cd24fb0d6963f7d28e17f72\";\r\n },\r\n\r\n /*\r\n * Calculate the MD5 of an array of little-endian words, and a bit length\r\n */\r\n core_md5: function(x, len) {\r\n /* append padding */\r\n x[len >> 5] |= 0x80 << ((len) % 32);\r\n x[(((len + 64) >>> 9) << 4) + 14] = len;\r\n\r\n var a = 1732584193;\r\n var b = -271733879;\r\n var c = -1732584194;\r\n var d = 271733878;\r\n\r\n for (var i = 0; i < x.length; i += 16) {\r\n var olda = a;\r\n var oldb = b;\r\n var oldc = c;\r\n var oldd = d;\r\n\r\n a = Encrypt.md5_ff(a, b, c, d, x[i + 0], 7, -680876936);\r\n d = Encrypt.md5_ff(d, a, b, c, x[i + 1], 12, -389564586);\r\n c = Encrypt.md5_ff(c, d, a, b, x[i + 2], 17, 606105819);\r\n b = Encrypt.md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);\r\n a = Encrypt.md5_ff(a, b, c, d, x[i + 4], 7, -176418897);\r\n d = Encrypt.md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);\r\n c = Encrypt.md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);\r\n b = Encrypt.md5_ff(b, c, d, a, x[i + 7], 22, -45705983);\r\n a = Encrypt.md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);\r\n d = Encrypt.md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);\r\n c = Encrypt.md5_ff(c, d, a, b, x[i + 10], 17, -42063);\r\n b = Encrypt.md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);\r\n a = Encrypt.md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);\r\n d = Encrypt.md5_ff(d, a, b, c, x[i + 13], 12, -40341101);\r\n c = Encrypt.md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);\r\n b = Encrypt.md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);\r\n\r\n a = Encrypt.md5_gg(a, b, c, d, x[i + 1], 5, -165796510);\r\n d = Encrypt.md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);\r\n c = Encrypt.md5_gg(c, d, a, b, x[i + 11], 14, 643717713);\r\n b = Encrypt.md5_gg(b, c, d, a, x[i + 0], 20, -373897302);\r\n a = Encrypt.md5_gg(a, b, c, d, x[i + 5], 5, -701558691);\r\n d = Encrypt.md5_gg(d, a, b, c, x[i + 10], 9, 38016083);\r\n c = Encrypt.md5_gg(c, d, a, b, x[i + 15], 14, -660478335);\r\n b = Encrypt.md5_gg(b, c, d, a, x[i + 4], 20, -405537848);\r\n a = Encrypt.md5_gg(a, b, c, d, x[i + 9], 5, 568446438);\r\n d = Encrypt.md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);\r\n c = Encrypt.md5_gg(c, d, a, b, x[i + 3], 14, -187363961);\r\n b = Encrypt.md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);\r\n a = Encrypt.md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);\r\n d = Encrypt.md5_gg(d, a, b, c, x[i + 2], 9, -51403784);\r\n c = Encrypt.md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);\r\n b = Encrypt.md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);\r\n\r\n a = Encrypt.md5_hh(a, b, c, d, x[i + 5], 4, -378558);\r\n d = Encrypt.md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);\r\n c = Encrypt.md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);\r\n b = Encrypt.md5_hh(b, c, d, a, x[i + 14], 23, -35309556);\r\n a = Encrypt.md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);\r\n d = Encrypt.md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);\r\n c = Encrypt.md5_hh(c, d, a, b, x[i + 7], 16, -155497632);\r\n b = Encrypt.md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);\r\n a = Encrypt.md5_hh(a, b, c, d, x[i + 13], 4, 681279174);\r\n d = Encrypt.md5_hh(d, a, b, c, x[i + 0], 11, -358537222);\r\n c = Encrypt.md5_hh(c, d, a, b, x[i + 3], 16, -722521979);\r\n b = Encrypt.md5_hh(b, c, d, a, x[i + 6], 23, 76029189);\r\n a = Encrypt.md5_hh(a, b, c, d, x[i + 9], 4, -640364487);\r\n d = Encrypt.md5_hh(d, a, b, c, x[i + 12], 11, -421815835);\r\n c = Encrypt.md5_hh(c, d, a, b, x[i + 15], 16, 530742520);\r\n b = Encrypt.md5_hh(b, c, d, a, x[i + 2], 23, -995338651);\r\n\r\n a = Encrypt.md5_ii(a, b, c, d, x[i + 0], 6, -198630844);\r\n d = Encrypt.md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);\r\n c = Encrypt.md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);\r\n b = Encrypt.md5_ii(b, c, d, a, x[i + 5], 21, -57434055);\r\n a = Encrypt.md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);\r\n d = Encrypt.md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);\r\n c = Encrypt.md5_ii(c, d, a, b, x[i + 10], 15, -1051523);\r\n b = Encrypt.md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);\r\n a = Encrypt.md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);\r\n d = Encrypt.md5_ii(d, a, b, c, x[i + 15], 10, -30611744);\r\n c = Encrypt.md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);\r\n b = Encrypt.md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);\r\n a = Encrypt.md5_ii(a, b, c, d, x[i + 4], 6, -145523070);\r\n d = Encrypt.md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);\r\n c = Encrypt.md5_ii(c, d, a, b, x[i + 2], 15, 718787259);\r\n b = Encrypt.md5_ii(b, c, d, a, x[i + 9], 21, -343485551);\r\n\r\n a = Encrypt.safe_add(a, olda);\r\n b = Encrypt.safe_add(b, oldb);\r\n c = Encrypt.safe_add(c, oldc);\r\n d = Encrypt.safe_add(d, oldd);\r\n }\r\n return Array(a, b, c, d);\r\n\r\n },\r\n\r\n /*\r\n * These functions implement the four basic operations the algorithm uses.\r\n */\r\n md5_cmn: function(q, a, b, x, s, t) {\r\n return Encrypt.safe_add(Encrypt.bit_rol(Encrypt.safe_add(Encrypt.safe_add(a, q), Encrypt.safe_add(x, t)), s), b);\r\n },\r\n\r\n md5_ff: function (a, b, c, d, x, s, t) {\r\n return Encrypt.md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);\r\n },\r\n\r\n md5_gg: function (a, b, c, d, x, s, t) {\r\n return Encrypt.md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);\r\n },\r\n\r\n md5_hh: function (a, b, c, d, x, s, t) {\r\n return Encrypt.md5_cmn(b ^ c ^ d, a, b, x, s, t);\r\n },\r\n\r\n md5_ii: function (a, b, c, d, x, s, t) {\r\n return Encrypt.md5_cmn(c ^ (b | (~d)), a, b, x, s, t);\r\n },\r\n\r\n /*\r\n * Calculate the HMAC-MD5, of a key and some data\r\n */\r\n core_hmac_md5: function(key, data) {\r\n var bkey = Encrypt.str2binl(key);\r\n if (bkey.length > 16)\r\n bkey = Encrypt.core_md5(bkey, key.length * Encrypt.chrsz);\r\n\r\n var ipad = Array(16), opad = Array(16);\r\n for (var i = 0; i < 16; i++) {\r\n ipad[i] = bkey[i] ^ 0x36363636;\r\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\r\n }\r\n\r\n var hash = Encrypt.core_md5(ipad.concat(Encrypt.str2binl(data)), 512 + data.length * Encrypt.chrsz);\r\n return Encrypt.core_md5(opad.concat(hash), 512 + 128);\r\n },\r\n\r\n /*\r\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\r\n * to work around bugs in some JS interpreters.\r\n */\r\n safe_add: function(x, y) {\r\n var lsw = (x & 0xFFFF) + (y & 0xFFFF);\r\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\r\n return (msw << 16) | (lsw & 0xFFFF);\r\n },\r\n\r\n /*\r\n * Bitwise rotate a 32-bit number to the left.\r\n */\r\n bit_rol: function(num, cnt) {\r\n return (num << cnt) | (num >>> (32 - cnt));\r\n },\r\n\r\n /*\r\n * Convert a string to an array of little-endian words\r\n * If Encrypt.chrsz is ASCII, characters >255 have their hi-byte silently ignored.\r\n */\r\n str2binl: function(str) {\r\n var bin = Array();\r\n var mask = (1 << Encrypt.chrsz) - 1;\r\n for (var i = 0; i < str.length * Encrypt.chrsz; i += Encrypt.chrsz)\r\n bin[i >> 5] |= (str.charCodeAt(i / Encrypt.chrsz) & mask) << (i % 32);\r\n return bin;\r\n },\r\n\r\n /*\r\n * Convert an array of little-endian words to a string\r\n */\r\n binl2str: function(bin) {\r\n var str = \"\";\r\n var mask = (1 << Encrypt.chrsz) - 1;\r\n for (var i = 0; i < bin.length * 32; i += Encrypt.chrsz)\r\n str += String.fromCharCode((bin[i >> 5] >>> (i % 32)) & mask);\r\n return str;\r\n },\r\n\r\n /*\r\n * Convert an array of little-endian words to a hex string.\r\n */\r\n binl2hex: function(binarray) {\r\n var hex_tab = Encrypt.hexcase ? \"0123456789ABCDEF\" : \"0123456789abcdef\";\r\n var str = \"\";\r\n for (var i = 0; i < binarray.length * 4; i++) {\r\n str += hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8 + 4)) & 0xF) +\r\n hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8)) & 0xF);\r\n }\r\n return str;\r\n },\r\n\r\n /*\r\n * Convert an array of little-endian words to a base-64 string\r\n */\r\n binl2b64: function(binarray) {\r\n var tab = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\r\n var str = \"\";\r\n for (var i = 0; i < binarray.length * 4; i += 3) {\r\n var triplet = (((binarray[i >> 2] >> 8 * (i % 4)) & 0xFF) << 16) |\r\n (((binarray[i + 1 >> 2] >> 8 * ((i + 1) % 4)) & 0xFF) << 8) |\r\n ((binarray[i + 2 >> 2] >> 8 * ((i + 2) % 4)) & 0xFF);\r\n\r\n for (var j = 0; j < 4; j++) {\r\n if (i * 8 + j * 6 > binarray.length * 32)\r\n str += Encrypt.b64pad;\r\n else\r\n str += tab.charAt((triplet >> 6 * (3 - j)) & 0x3F);\r\n }\r\n }\r\n return str;\r\n }\r\n};","// Array Remove - By John Resig (MIT Licensed)\r\nif (typeof Array.prototype.remove != \"function\") {\r\n Array.prototype.remove = function(from, to) {\r\n var rest = this.slice((to || from) + 1 || this.length);\r\n this.length = from < 0 ? this.length + from : from;\r\n return this.push.apply(this, rest);\r\n };\r\n}\r\n\r\n// Array Find - From jsPolyfill\r\nif (typeof Array.prototype.find != \"function\") {\r\n Array.prototype.find = function(predicate) {\r\n if (typeof predicate !== 'function') {\r\n throw new TypeError('Predicate is not a function');\r\n }\r\n\r\n var list = Object(this);\r\n // Makes sures is always has an positive integer as length.\r\n var length = list.length >>> 0;\r\n var thisArg = arguments[1];\r\n\r\n for (var i = 0; i < length; i++) {\r\n var element = list[i];\r\n if (predicate.call(thisArg, element, i, list)) {\r\n return element;\r\n }\r\n }\r\n };\r\n}\r\n\r\n// Add the given item to the top of this Array\r\nif (typeof Array.pushTop != \"function\") {\r\n Array.pushTop = function(array, item) {\r\n return Array.from(item).concat(array);\r\n };\r\n}\r\n\r\n/*\r\n * Array intersect by Alexander Herrmann (MIT Licensed)\r\n * From: http://mootools.net/forge/p/array_more\r\n * Creates an intersection of the current array and the given one.\r\n */\r\nArray.implement({\r\n intersect: function(other) {\r\n var copy = this.slice();\r\n this.each(function(el) {\r\n if (other.indexOf(el) < 0) {\r\n copy.splice(copy.indexOf(el), 1);\r\n }\r\n }, this);\r\n return copy;\r\n }\r\n});\r\n\r\nObject.extend({\r\n toArray: function(object, fn) {\r\n var results = [];\r\n\r\n Object.each(object, function(value, key) {\r\n var item = fn(value, key);\r\n results.push(item);\r\n });\r\n\r\n return results;\r\n }\r\n});\r\n\r\n/**\r\n* replaceAll by Fagner Brack (MIT Licensed)\r\n* Replaces all occurrences of a substring in a string\r\n*/\r\nif (typeof String.prototype.replaceAll != \"function\") {\r\n String.prototype.replaceAll = function(token, newToken, ignoreCase) {\r\n var str, i = -1, _token;\r\n if ((str = this.toString()) && typeof token === \"string\") {\r\n _token = ignoreCase === true ? token.toLowerCase() : undefined;\r\n while ((i = (\r\n _token !== undefined ?\r\n str.toLowerCase().indexOf(\r\n _token,\r\n i >= 0 ? i + newToken.length : 0\r\n ) : str.indexOf(\r\n token,\r\n i >= 0 ? i + newToken.length : 0\r\n )\r\n )) !== -1) {\r\n str = str.substring(0, i)\r\n .concat(newToken)\r\n .concat(str.substring(i + token.length));\r\n }\r\n }\r\n return str;\r\n };\r\n}\r\n\r\nif (typeof String.prototype.equalsIgnoreCase != \"function\") {\r\n String.prototype.equalsIgnoreCase = function(str) {\r\n return this.toLowerCase() == str.toLowerCase();\r\n };\r\n}\r\n\r\nif (typeof String.prototype.containsIgnoreCase != \"function\") {\r\n String.prototype.containsIgnoreCase = function(str) {\r\n str = str.toLowerCase();\r\n\r\n return this.toLowerCase().contains(str);\r\n };\r\n}\r\n\r\nif (typeof String.prototype.startsWith != \"function\") {\r\n String.prototype.startsWith = function(str) {\r\n return this.indexOf(str) == 0;\r\n };\r\n}\r\n\r\nif (typeof String.prototype.startsWithIgnoreCase != \"function\") {\r\n String.prototype.startsWithIgnoreCase = function(str) {\r\n str = str.toLowerCase();\r\n\r\n return this.toLowerCase().startsWith(str);\r\n };\r\n}\r\n\r\nif (typeof String.prototype.endsWith != \"function\") {\r\n String.prototype.endsWith = function(str) {\r\n var index = this.lastIndexOf(str);\r\n\r\n return (index >= 0) && (index == (this.length - str.length));\r\n };\r\n}\r\n\r\nif (typeof String.prototype.endsWithIgnoreCase != \"function\") {\r\n String.prototype.endsWithIgnoreCase = function(str) {\r\n str = str.toLowerCase();\r\n\r\n return this.toLowerCase().endsWith(str);\r\n };\r\n}\r\n\r\nif (typeof String.prototype.matches != \"function\") {\r\n String.prototype.matches = function(key, operator) {\r\n if ((typeof operator == \"undefined\") || (operator == null))\r\n operator = \"contains\";\r\n\r\n if ((typeof key != \"undefined\") && (key != null)) {\r\n var self = this.toLowerCase();\r\n key = key.toLowerCase();\r\n operator = operator.toLowerCase();\r\n\r\n return (((operator == \"startswith\") && self.startsWith(key)) ||\r\n ((operator == \"endswith\") && self.endsWith(key)) ||\r\n ((operator == \"equals\") && (self == key)) ||\r\n ((operator == \"contains\") && self.indexOf(key) >= 0));\r\n }\r\n\r\n return false;\r\n };\r\n}\r\n\r\nif (typeof String.prototype.isLowerCase != \"function\") {\r\n String.prototype.isLowerCase = function() {\r\n return this == this.toLowerCase();\r\n };\r\n}\r\n\r\nif (typeof String.prototype.isUpperCase != \"function\") {\r\n String.prototype.isUpperCase = function() {\r\n return this == this.toUpperCase();\r\n };\r\n}\r\n\r\nif (typeof String.isCharLowerCase != \"function\") {\r\n String.isCharLowerCase = function(character) {\r\n return character == character.toLowerCase();\r\n };\r\n}\r\n\r\nif (typeof String.isCharUpperCase != \"function\") {\r\n String.isCharUpperCase = function(character) {\r\n return character == character.toUpperCase();\r\n };\r\n}\r\n\r\nif (typeof String.prototype.isQuoted != \"function\") {\r\n String.prototype.isQuoted = function(quote) {\r\n if ((typeof quote == \"undefined\") || (quote == null))\r\n quote = '\"';\r\n\r\n return this.trim().startsWith(quote) && this.trim().endsWith(quote);\r\n };\r\n}\r\n\r\nif (typeof String.prototype.toCapitalCase != \"function\") {\r\n String.prototype.toCapitalCase = function(lowerRest) {\r\n if ((typeof lowerRest == \"undefined\") || (lowerRest == null))\r\n lowerRest = true;\r\n\r\n var capital = new StringBuffer();\r\n capital.append(this.charAt(0).toUpperCase());\r\n var rest = this.substring(1);\r\n if (lowerRest)\r\n rest = rest.toLowerCase();\r\n capital.append(rest);\r\n return capital.toString();\r\n };\r\n}\r\n\r\nif (typeof String.prototype.toPrettyFormat != \"function\") {\r\n String.prototype.toPrettyFormat = function() {\r\n var words = [],\r\n lastUpper;\r\n\r\n var subWords = this.split(' ');\r\n for (var i = 0; i < subWords.length; i++) {\r\n lastUpper = 0;\r\n for (var j = 1; j < subWords[i].length; j++) {\r\n if (String.isCharUpperCase(subWords[i].charAt(j))) {\r\n words.push(subWords[i].substring(lastUpper, j));\r\n lastUpper = j;\r\n }\r\n }\r\n\r\n if (lastUpper < subWords[i].length)\r\n words.push(subWords[i].substring(lastUpper, subWords[i].length));\r\n }\r\n\r\n for (var i = 0; i < words.length; i++)\r\n words[i] = words[i].toCapitalCase().trim();\r\n\r\n return words.join(' ');\r\n };\r\n}\r\n\r\n/**\r\n* setCharAt by Helder Magalhães\r\n*\r\n* http://www.openjs.com/scripts/strings/setcharat_function.php\r\n*/\r\nif (typeof String.prototype.setCharAt != \"function\") {\r\n String.prototype.setCharAt = function(index, chr) {\r\n if (index > this.length - 1)\r\n return this;\r\n return this.substr(0, index) + chr + this.substr(index + 1);\r\n };\r\n}\r\n\r\n/**\r\n* safeSplit by Michael Lebson\r\n* Safely splits a string by the given token without\r\n* destroying the occurances of the token in the string.\r\n*/\r\nif (typeof String.prototype.safeSplit != \"function\") {\r\n String.prototype.safeSplit = function(token) {\r\n var word = this;\r\n var split = [];\r\n var tokenIndex = -1;\r\n\r\n // Go through each character\r\n for (var i = 0; i < word.length; i++) {\r\n // If this letter is the token\r\n if (word.charAt(i) == token) {\r\n // Save the location, if we don't have one already\r\n if (tokenIndex < 0)\r\n tokenIndex = i;\r\n // Otherwise, do some processing\r\n else {\r\n // If this token isn't at the beginning of the string,\r\n // add the part before it to the list of split values\r\n if (tokenIndex != 0)\r\n split.push(word.substring(0, tokenIndex));\r\n\r\n // Get the value between the first token\r\n // and this one and then save it\r\n split.push(word.substring(tokenIndex, i + 1));\r\n\r\n // Chop off the beginning of this word so we don't process it again\r\n word = word.substring(i + 1, word.length);\r\n // Start back at the beginning of the word\r\n i = 0;\r\n // And reset the token index\r\n tokenIndex = -1;\r\n }\r\n }\r\n }\r\n\r\n // Add the rest of the word to the split list\r\n split.push(word);\r\n\r\n // Return the split list\r\n return split;\r\n };\r\n}\r\n\r\n/**\r\n* Decodes xml-encoded strings\r\n*\r\n* From https://github.com/jnbdz/EncodeAndDecodeXML\r\n*/\r\n\r\nif (typeof String.prototype.decodeXML != \"function\") {\r\n String.prototype.decodeXML = function() {\r\n var escaped_to_xml = {\r\n '&': '&',\r\n '"': '\"',\r\n '<': '<',\r\n '>': '>',\r\n ''': \"'\"\r\n };\r\n\r\n return this.replace(/("|<|>|&|')/g, function (str, item) {\r\n return escaped_to_xml[item];\r\n });\r\n };\r\n}\r\n\r\nif (typeof String.prototype.encodeXML != \"function\") {\r\n String.prototype.encodeXML = function() {\r\n var xml_to_escaped = {\r\n '&': '&',\r\n '\"': '"',\r\n '<': '<',\r\n '>': '>',\r\n \"'\": '''\r\n };\r\n return String(this).replace(/([\\&\"<>'])/g, function(str, item) {\r\n return xml_to_escaped[item];\r\n });\r\n };\r\n}\r\n\r\n/**\r\n* Implements toISOString function for dates in older browsers (e.g. IE 8)\r\n*/\r\nif (typeof Date.prototype.toISOString != \"function\") {\r\n (function() {\r\n function pad(number) {\r\n var r = String(number);\r\n if (r.length === 1)\r\n r = '0' + r;\r\n\r\n return r;\r\n }\r\n\r\n Date.prototype.toISOString = function() {\r\n return this.getUTCFullYear()\r\n + '-' + pad(this.getUTCMonth() + 1)\r\n + '-' + pad(this.getUTCDate())\r\n + 'T' + pad(this.getUTCHours())\r\n + ':' + pad(this.getUTCMinutes())\r\n + ':' + pad(this.getUTCSeconds())\r\n + '.' + String((this.getUTCMilliseconds() / 1000).toFixed(3)).slice(2, 5)\r\n + 'Z';\r\n };\r\n }());\r\n}\r\n\r\n/*\r\n* JavaScript Pretty Date\r\n* Copyright (c) 2011 John Resig (ejohn.org)\r\n* Licensed under the MIT and GPL licenses.\r\n*/\r\nif (typeof Date.prototype.toPrettyFormat != \"function\") {\r\n (function() {\r\n var SECONDS_IN_MINUTE = 60,\r\n MINUTES_IN_HOUR = 60,\r\n HOURS_IN_DAY = 24,\r\n DAYS_IN_WEEK = 7,\r\n SECONDS_IN_HOUR = SECONDS_IN_MINUTE * MINUTES_IN_HOUR,\r\n SECONDS_IN_DAY = SECONDS_IN_HOUR * HOURS_IN_DAY;\r\n\r\n // Takes an ISO time and returns a string showing how long ago the date represents\r\n Date.prototype.toPrettyFormat = function(relativeDate, showAgo, useShortName) {\r\n var now = relativeDate || (new Date()),\r\n secDiff = (now.getTime() - this.getTime()) / 1000,\r\n dayDiff = Math.floor(secDiff / SECONDS_IN_DAY),\r\n translateSuffix = (showAgo !== false ? \"_ago\" : '') + (useShortName !== false ? \"_short\" : '');\r\n\r\n if (isNaN(dayDiff) || (dayDiff < 0))\r\n return Librarian.Lang.getString(\"recently\");\r\n\r\n if (dayDiff == 0) {\r\n if (secDiff < SECONDS_IN_MINUTE)\r\n return Librarian.Lang.getArgString(\"seconds\" + translateSuffix, [Math.ceil(secDiff)]);\r\n if (secDiff < SECONDS_IN_HOUR) {\r\n var minutes = Math.floor(secDiff / SECONDS_IN_MINUTE);\r\n return Librarian.Lang.getPluralArgString(\"minutes\" + translateSuffix, minutes, [minutes]);\r\n }\r\n\r\n var hours = Math.floor(secDiff / SECONDS_IN_HOUR);\r\n return Librarian.Lang.getPluralArgString(\"hours\" + translateSuffix, hours, [hours]);\r\n }\r\n else if (dayDiff == 1)\r\n return Librarian.Lang.getString(\"yesterday\");\r\n else if (dayDiff < DAYS_IN_WEEK)\r\n return Librarian.Lang.getPluralArgString(\"days\" + translateSuffix, dayDiff, [dayDiff]);\r\n\r\n var weeks = Math.floor(dayDiff / DAYS_IN_WEEK);\r\n return Librarian.Lang.getPluralArgString(\"weeks\" + translateSuffix, weeks, [weeks]);\r\n };\r\n }());\r\n}\r\n\r\n/**\r\n* If the browser can't handle ISO strings, add Date.fromISO to parse it\r\n*\r\n* from http://stackoverflow.com/questions/11020658/javascript-json-date-parse-in-ie7-ie8-returns-nan\r\n*/\r\n(function() {\r\n var D = new Date('2011-06-02T09:34:29+02:00');\r\n if (!D || +D !== 1307000069000) {\r\n Date.fromISO = function(s) {\r\n var day, tz,\r\n rx = /^(\\d{4}\\-\\d\\d\\-\\d\\d([tT ][\\d:\\.]*)?)([zZ]|([+\\-])(\\d\\d):(\\d\\d))?$/,\r\n p = rx.exec(s) || [];\r\n if (p[1]) {\r\n day = p[1].split(/\\D/);\r\n for (var i = 0, L = day.length; i < L; i++) {\r\n day[i] = parseInt(day[i], 10) || 0;\r\n };\r\n day[1] -= 1;\r\n day = new Date(Date.UTC.apply(Date, day));\r\n if (!day.getDate()) return NaN;\r\n if (p[5]) {\r\n tz = (parseInt(p[5], 10) * 60);\r\n if (p[6]) tz += parseInt(p[6], 10);\r\n if (p[4] == '+') tz *= -1;\r\n if (tz) day.setUTCMinutes(day.getUTCMinutes() + tz);\r\n }\r\n return day;\r\n }\r\n return new Date(s);\r\n }\r\n }\r\n else {\r\n Date.fromISO = function(s) {\r\n return new Date(s);\r\n }\r\n }\r\n})();\r\n\r\n/**\r\n* Implementation of selectSingleNode for browsers that do not already have it.\r\n*\r\n* Adapted from code from\r\n* http://weblogs.asp.net/ssargent/archive/2007/01/25/selectsinglenode-and-firefox.aspx\r\n*/\r\nif (typeof Element.prototype.selectSingleNode != \"function\") {\r\n Element.implement({\r\n selectSingleNode: function(xPath) {\r\n if (typeof XPathEvaluator == \"undefined\")\r\n return null;\r\n\r\n var pathEvaluator = new XPathEvaluator(),\r\n // FIRST_ORDERED_NODE_TYPE returns the first match to the xpath\r\n result = pathEvaluator.evaluate(xPath, this, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);\r\n\r\n if (result != null)\r\n return result.singleNodeValue;\r\n else\r\n return null;\r\n }\r\n });\r\n}\r\n\r\nif ((typeof XMLDocument != \"undefined\") && (typeof XMLDocument.prototype.selectSingleNode != \"function\")) {\r\n XMLDocument.prototype.selectSingleNode = function(xPath) {\r\n if (typeof XPathEvaluator == \"undefined\")\r\n return null;\r\n\r\n var pathEvaluator = new XPathEvaluator(),\r\n // FIRST_ORDERED_NODE_TYPE returns the first match to the xpath\r\n result = pathEvaluator.evaluate(xPath, this, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);\r\n\r\n if (result != null)\r\n return result.singleNodeValue;\r\n else\r\n return null;\r\n };\r\n}\r\n\r\n/**\r\n* Implementation of selectNodes for browsers that do not already have it.\r\n*\r\n* Adapted from code from\r\n* http://www.yesjames.com/index.php/2008/11/firefox-compatible-xpath-functions-in-javascript/\r\n*/\r\nif ((typeof XMLDocument != \"undefined\") && (typeof XMLDocument.prototype.selectNodes != \"function\")) {\r\n XMLDocument.prototype.selectNodes = function(cXPathString, xNode) {\r\n if (!xNode)\r\n xNode = this;\r\n\r\n var oNSResolver = this.createNSResolver(this.documentElement),\r\n aItems = this.evaluate(cXPathString, xNode, oNSResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null),\r\n aResult = [];\r\n for (var i = 0; i < aItems.snapshotLength; i++)\r\n aResult[i] = aItems.snapshotItem(i);\r\n\r\n return aResult;\r\n };\r\n}\r\n\r\nif (typeof Element.prototype.selectNodes != \"function\") {\r\n Element.implement({\r\n selectNodes: function(cXPathString) {\r\n if (this.ownerDocument.selectNodes)\r\n return this.ownerDocument.selectNodes(cXPathString, this);\r\n }\r\n });\r\n}\r\n\r\n/**\r\n* Converts a number into a thousands-separated string using the number of decimals,\r\n* the decimal mark, and the thousands separator provided.\r\n*\r\n* Adapted from code by Patrick Desjardins and Marco Demaio\r\n* http://stackoverflow.com/questions/149055/how-can-i-format-numbers-as-money-in-javascript\r\n*/\r\nif (typeof Number.prototype.toMoney != \"function\") {\r\n Number.prototype.toMoney = function(decimals, symbol, decimalMark, seperator) {\r\n // Default to two decimals if no count or an invalid one are provided\r\n if ((typeof decimals == \"undefined\") || (decimals == null) || isNaN(decimals))\r\n decimals = 2;\r\n else\r\n decimals = Math.abs(decimals);\r\n\r\n if ((typeof symbol == \"undefined\") || (symbol == null))\r\n symbol = '$';\r\n if ((typeof decimalMark == \"undefined\") || (decimalMark == null))\r\n decimalMark = '.';\r\n if ((typeof seperator == \"undefined\") || (seperator == null))\r\n seperator = ',';\r\n\r\n var number = Math.abs(this).toFixed(decimals);\r\n var intPart = parseInt(number).toString();\r\n var seperatorCount = 0;\r\n if (intPart.length > 3)\r\n seperatorCount = intPart.length % 3;\r\n\r\n var value = new StringBuffer();\r\n\r\n if (this < 0)\r\n value.append('-');\r\n\r\n value.append(symbol);\r\n if (seperatorCount > 0) {\r\n value.append(intPart.substr(0, seperatorCount));\r\n value.append(seperator);\r\n }\r\n\r\n value.append(intPart.substr(seperatorCount).replace(/(\\d{3})(?=\\d)/g, \"$1\" + seperator));\r\n if (decimals > 0) {\r\n value.append(decimalMark);\r\n value.append(Math.abs(number - intPart).toFixed(decimals).slice(2));\r\n }\r\n\r\n return value.toString();\r\n };\r\n}\r\n\r\n/**\r\n* Adds the onhashchange event\r\n*\r\n* authors:\r\n* sdf1981cgn\r\n* Greggory Hernandez\r\n*/\r\nElement.Events.hashchange = {\r\n onAdd: function() {\r\n var hash = self.location.hash;\r\n\r\n var hashchange = function() {\r\n if (hash == self.location.hash) return;\r\n else hash = self.location.hash;\r\n\r\n var value = (hash.indexOf('#/') == 0 ? hash.substr(2) : hash.indexOf('#') == 0 ? hash.substr(1) : hash);\r\n window.fireEvent(\"hashchange\", value);\r\n document.fireEvent(\"hashchange\", value);\r\n };\r\n\r\n if (\"onhashchange\" in window)\r\n window.onhashchange = hashchange;\r\n else\r\n hashchange.periodical(50);\r\n }\r\n};\r\n\r\n/**\r\n* Element visibility function by WM\r\n*/\r\nElement.implement({\r\n setVisible: function(visible) {\r\n if (visible === true || visible == \"visible\")\r\n this.setStyle(\"visibility\", \"visible\");\r\n else\r\n this.setStyle(\"visibility\", \"hidden\");\r\n }\r\n});\r\n\r\n/**\r\n* Adds selected class to current element and removes from siblings\r\n* Arguments:\r\n* activeClass (optional): Class to add/remove from elements. Defaults to \"active\"\r\n* siblingSelector (optional): CSS selector to match siblings\r\n*\r\n* Added by WM - 9/24/13\r\n*/\r\nElement.implement({\r\n select: function(activeClass, siblingSelector) {\r\n if (!activeClass)\r\n activeClass = \"active\";\r\n\r\n var siblings = this.getSiblings(siblingSelector);\r\n siblings.forEach(function(sibling) {\r\n sibling.removeClass(activeClass);\r\n });\r\n\r\n this.addClass(activeClass);\r\n }\r\n});\r\n\r\n/**\r\n* Shows this element while hiding siblings\r\n*/\r\nElement.implement({\r\n showOnly: function (siblingSelector) {\r\n var siblings = this.getSiblings(siblingSelector);\r\n siblings.forEach(function (sibling) {\r\n sibling.hide();\r\n });\r\n\r\n this.show();\r\n }\r\n});\r\n\r\n/*\r\n * IE workaround for remove\r\n */\r\nif (typeof Element.prototype.remove != \"function\") {\r\n Element.prototype.remove = function() {\r\n if (typeof this.removeNode == \"function\")\r\n this.removeNode(true);\r\n }\r\n}\r\n\r\n\r\n/**\r\n* String buffer implementation by Jon Brito\r\n*/\r\nfunction StringBuffer() {\r\n this.buffer = [];\r\n}\r\n\r\nStringBuffer.prototype.prepend = function(string) {\r\n var newBuffer = [];\r\n newBuffer.push(string);\r\n this.buffer = newBuffer.append(this.buffer);\r\n\r\n newBuffer = null;\r\n\r\n return this;\r\n};\r\n\r\nStringBuffer.prototype.append = function(string) {\r\n this.buffer.push(string);\r\n return this;\r\n};\r\n\r\nStringBuffer.prototype.toString = function(delimiter) {\r\n return this.buffer.join(delimiter || '');\r\n};\r\n\r\n/**\r\n* Workaround for IE changing the page title when a URL has a hash and a flash object is embedded\r\n*\r\n* http://stackoverflow.com/questions/4562423/ie-title-changes-to-afterhash-if-the-page-has-a-url-with-and-has-flash-s\r\n*/\r\n\r\nvar originalTitle = document.title.split('#')[0];\r\n\r\nfunction onPropertyChanged(evt) {\r\n if ((evt.propertyName === \"title\") && (document.title !== originalTitle)) {\r\n setTimeout(function() {\r\n document.title = originalTitle;\r\n }, 1);\r\n }\r\n}\r\n\r\nfunction changeTitle(newTitle) {\r\n originalTitle = newTitle;\r\n document.title = newTitle;\r\n}\r\n\r\nif (document.attachEvent)\r\n document.attachEvent(\"onpropertychange\", onPropertyChanged);\r\nelse if (document.addEventListener)\r\n document.addEventListener(\"propertychange\", onPropertyChanged, false);\r\n\r\n/**\r\n* Convert all keys in a given object to lower case\r\n*/\r\nif (typeof Object.toLowerKeys != \"function\") {\r\n Object.toLowerKeys = function(object) {\r\n var output = {};\r\n\r\n for (var key in object) {\r\n if (!object.hasOwnProperty(key))\r\n continue;\r\n\r\n var newKey = key.toLowerCase();\r\n\r\n output[newKey] = object[key];\r\n }\r\n\r\n return output;\r\n };\r\n}\r\n\r\nif (typeof Object.toCamelKeys != \"function\") {\r\n Object.toCamelKeys = function(object) {\r\n var output = {};\r\n\r\n for (var key in object) {\r\n if (!object.hasOwnProperty(key))\r\n continue;\r\n\r\n var newKey = key[0].toLowerCase() + key.substring(1);\r\n\r\n output[newKey] = object[key];\r\n }\r\n\r\n return output;\r\n };\r\n}\r\n\r\nClass.refactor(Scroller, {\r\n start: function() {\r\n this.listener.addEvents({\r\n mouseover: this.bound.attach\r\n //mouseleave: this.bound.detach\r\n });\r\n return this;\r\n },\r\n\r\n stop: function() {\r\n this.listener.removeEvents({\r\n mouseover: this.bound.attach\r\n //mouseleave: this.bound.detach\r\n });\r\n this.detach();\r\n this.timer = clearInterval(this.timer);\r\n return this;\r\n }\r\n});\r\n\r\n(function() {\r\n var origRefactor = Class.refactor;\r\n\r\n Class.refactor = function(original, refactors) {\r\n if (!original) {\r\n if (window.console && window.console.debug)\r\n window.console.debug(\"WARN: Attempting to refactor a class that doesn't exist - This is normal on portals\");\r\n return;\r\n }\r\n origRefactor(original, refactors);\r\n }\r\n})();\r\n\r\n// Extend drag events\r\nObject.append(Element.NativeEvents, {\r\n dragenter: 2,\r\n dragleave: 2,\r\n dragover: 2,\r\n drop: 2\r\n});\r\n\r\n// Return \"blob\" in typeOf()\r\nif (typeof Blob != \"undefined\")\r\n Blob.prototype.$family = function() { return \"blob\"; }\r\n\r\n// Dummy console for browsers that don't have it (e.g. IE) to avoid errors.\r\n// This should get replaced when the console is opened.\r\nif (!window.console) {\r\n window.console = {\r\n log: $empty,\r\n error: $empty,\r\n warn: $empty,\r\n debug: $empty,\r\n trace: $empty\r\n };\r\n}","(function() {\r\n var options = {\r\n method: \"get\",\r\n noCache: true,\r\n ignoreError: false\r\n },\r\n\r\n sessionNames = {},\r\n requestQueue = [],\r\n loginDialog = null,\r\n\r\n\r\n klass = {\r\n Extends: Request,\r\n\r\n options: options,\r\n\r\n onFailureFn: null,\r\n onResubmitFn: null,\r\n onAuthFailureFn: null,\r\n\r\n initialize: function(options) {\r\n this.onFailureFn = options.onFailure;\r\n this.onResubmitFn = options.onException;\r\n this.onAuthFailureFn = options.onAuthFailure;\r\n\r\n options.onFailure = null;\r\n options.onException = null;\r\n\r\n this.setOptions(options);\r\n this.parent(this.options);\r\n },\r\n\r\n send: function(options) {\r\n if (typeof this.options.data == \"string\")\r\n this.options.urlEncoded = false;\r\n\r\n this.parent(options);\r\n },\r\n\r\n onFailure: function() {\r\n if (this.status != 401 && this.options.ignoreError)\r\n return;\r\n\r\n this.parent();\r\n\r\n if (this.status == 401) {\r\n if (typeof this.onAuthFailureFn == \"function\")\r\n this.onAuthFailureFn();\r\n\r\n this.promptLogin();\r\n }\r\n else {\r\n var error = this.getErrorMessage();\r\n\r\n if (typeof this.onFailureFn == \"function\")\r\n this.onFailureFn(error, this.xhr);\r\n }\r\n },\r\n\r\n getErrorMessage: function() {\r\n var xhr = this.xhr;\r\n\r\n if (xhr && xhr.status >= 400)\r\n return xhr.responseText;\r\n\r\n return \"\";\r\n },\r\n\r\n promptLogin: function() {\r\n // Add failed requests to queue for retrying\r\n requestQueue.push(this);\r\n // Reset the list of session names\r\n sessionNames = {};\r\n\r\n // If we get a 401, the session expired and we should pop the login dialog.\r\n // If it logs on successfully, resend the requests.\r\n if (!loginDialog || loginDialog.isClosing) {\r\n loginDialog = new Librarian.LoginDialog({\r\n onSuccess: this.onRelogin.bind(this)\r\n }).show();\r\n }\r\n },\r\n\r\n onRelogin: function() {\r\n while (requestQueue.length) {\r\n var request = requestQueue.shift();\r\n\r\n if (typeof request.onResubmitFn == \"function\")\r\n request.onResubmitFn();\r\n else\r\n request.send();\r\n }\r\n\r\n Librarian.Utils.reloadThumbnails();\r\n\r\n // Refresh the preview thumbnails as well\r\n if ((typeof previewWindows != \"undefined\") && (previewWindows != null)) {\r\n for (var i = 0; i < previewWindows.length; i++) {\r\n if (previewWindows[i])\r\n previewWindows[i].reloadThumbnail();\r\n }\r\n }\r\n\r\n loginDialog = null;\r\n }\r\n };\r\n\r\n Librarian.Request = new Class(klass);\r\n\r\n klass.Extends = Request.JSON;\r\n\r\n Librarian.Request.JSON = new Class(klass);\r\n\r\n klass.Extends = Request.HTML;\r\n\r\n Librarian.Request.HTML = new Class(klass);\r\n\r\n})();","\r\nLibrarian.Session = new Class({\r\n Binds: [\"onResetComplete\", \"onUpdateComplete\", \"onLogon\", \"onLogoff\", \"onFailure\"],\r\n Implements: [Events, Options],\r\n\r\n options: {\r\n },\r\n\r\n initialize: function(options) {\r\n this.setOptions(options);\r\n },\r\n\r\n logon: function(username, password, params) {\r\n // Get current time zone\r\n var tz = -(new Date()).getTimezoneOffset() / 60;\r\n var url = Librarian.path.getMethodUrl(\"logon\") + \"&out=ujson&utz=\" + tz.toString();\r\n\r\n if (params) {\r\n url += \"&\" + Librarian.Utils.getQueryString(params);\r\n }\r\n\r\n var data = {\r\n username: username,\r\n password: password\r\n };\r\n\r\n if (Librarian.sessionType == Librarian.Session.sessionTypes.onBehalf)\r\n // Pass onBehalfID (stored in userInfo) to stay logged in on behalf\r\n url += \"&obuid=\" + Librarian.userInfo.UserId;\r\n\r\n new Request.JSON({\r\n method: \"post\",\r\n urlEncoded: true,\r\n url: url,\r\n data: data,\r\n noCache: true,\r\n onSuccess: this.onLogon,\r\n onFailure: this.onFailure\r\n }).send();\r\n },\r\n\r\n logoff: function() {\r\n new Request({\r\n method: \"get\",\r\n url: Librarian.path.getMethodUrl(\"logoff\"),\r\n noCache: true,\r\n onSuccess: this.onLogoff,\r\n onFailure: this.onFailure\r\n }).send();\r\n },\r\n\r\n changePassword: function(oldPassword, newPassword, securityQuestion, securityAnswer) {\r\n var url = Librarian.path.getUpdateUrl(\"setup\") + \"&out=cjson\";\r\n\r\n var params = {\r\n uopw: oldPassword,\r\n unpw: newPassword\r\n }\r\n\r\n if (securityQuestion != null) {\r\n params.uq = securityQuestion;\r\n params.ua = securityAnswer;\r\n }\r\n\r\n new Request({\r\n url: url,\r\n method: \"post\",\r\n data: params,\r\n noCache: true\r\n }).addEvent(\"success\", this.onUpdateComplete).addEvent(\"failure\", this.onFailure).send();\r\n },\r\n\r\n sendResetPassword: function(username) {\r\n var url = Librarian.path.getRecoverUrl(\"sendresetpass\") + \"&out=cjson\";\r\n\r\n var params = {\r\n name: username\r\n }\r\n\r\n new Request({\r\n url: url,\r\n method: \"post\",\r\n data: params,\r\n noCache: true\r\n }).addEvent(\"success\", this.onSendResetPassword).send();\r\n },\r\n\r\n onSendResetPassword: function() {\r\n Librarian.Utils.notification(\"Password reset sent\");\r\n },\r\n\r\n onUpdateComplete: function() {\r\n this.fireEvent(\"updatecomplete\", arguments);\r\n },\r\n\r\n onLogon: function() {\r\n this.fireEvent(\"logon\", arguments);\r\n },\r\n\r\n onLogoff: function() {\r\n this.fireEvent(\"logoff\", arguments);\r\n },\r\n\r\n onFailure: function() {\r\n this.fireEvent(\"error\", arguments);\r\n }\r\n});\r\n\r\n/* Static methods and variables */\r\nLibrarian.Session.extend({\r\n sessionTypes: {\r\n undefined: 0,\r\n user: 1,\r\n contactAsGuest: 2,\r\n userAsGuest: 3,\r\n anonymous: 4,\r\n onBehalf: 5,\r\n sso: 6\r\n },\r\n\r\n // Checks if the session is that of a user (type user or sso) or someone on behalf of a user (type onBehalf)\r\n isUser: function(sessionType) {\r\n return (sessionType == Librarian.Session.sessionTypes.user) ||\r\n (sessionType == Librarian.Session.sessionTypes.onBehalf) ||\r\n (sessionType == Librarian.Session.sessionTypes.sso);\r\n },\r\n\r\n isMfaRequired: function(xhr) {\r\n var value = xhr.getResponseHeader(\"X-MFA-Required\");\r\n if (!value)\r\n return false;\r\n\r\n return value.toLowerCase() == \"true\";\r\n }\r\n});\r\n\r\nLibrarian.Session.MFAPanel = new Class({\r\n Implements: [Events, Options],\r\n Binds: [\"onLoadHtml\", \"submit\", \"onSuccess\", \"onFailure\"],\r\n\r\n options: {\r\n container: null,\r\n mfaInfo: null,\r\n credentials: null,\r\n onSuccess: null\r\n },\r\n\r\n containerEl: null,\r\n wrapperEl: null,\r\n\r\n initialize: function(options) {\r\n this.setOptions(options);\r\n\r\n this.containerEl = $(this.options.container);\r\n\r\n this.loadHtml();\r\n },\r\n\r\n loadHtml: function() {\r\n var url = Librarian.path.getLayoutsPath() + \"pages/mfapanel.html\";\r\n\r\n var request = new Request.HTML({\r\n url: url,\r\n method: \"get\",\r\n append: this.containerEl,\r\n onSuccess: this.onLoadHtml\r\n });\r\n\r\n request.send();\r\n },\r\n\r\n onLoadHtml: function() {\r\n var mfaInfo = this.options.mfaInfo;\r\n\r\n this.wrapperEl = this.containerEl.getElement(\".mfa-wrapper\");\r\n\r\n if (mfaInfo.Status == \"MfaSetupRequired\") {\r\n var setupWrapper = this.wrapperEl.getElement(\".mfa-setup-wrapper\");\r\n if (setupWrapper)\r\n setupWrapper.show();\r\n\r\n var setupImg = this.wrapperEl.getElement(\".mfa-setup-image\");\r\n if (setupImg)\r\n setupImg.src = mfaInfo.ImageUrl;\r\n }\r\n\r\n this.codeInput = this.wrapperEl.getElement(\".mfa-code-input\");\r\n this.codeInput.focus();\r\n this.codeInput.addOnKeyPress(\"enter\", this.submit);\r\n\r\n this.submitButton = this.wrapperEl.getElement(\".mfa-code-submit\");\r\n this.submitButton.addOnClick(this.submit);\r\n\r\n this.fireEvent(\"load\");\r\n },\r\n\r\n toggleDisabled: function(disabled) {\r\n this.wrapperEl.toggleClass(\"disabled\", disabled);\r\n this.codeInput.disabled = disabled;\r\n this.submitButton.disabled = disabled;\r\n },\r\n\r\n submit: function() {\r\n if (this.wrapperEl.hasClass(\"disabled\"))\r\n return;\r\n\r\n this.toggleDisabled(true);\r\n\r\n var credentials = this.options.credentials;\r\n\r\n var params = {\r\n mfaSecret: this.options.mfaInfo.Secret,\r\n mfaCode: this.codeInput.value\r\n };\r\n\r\n var session = new Librarian.Session();\r\n session.onLogon = this.onSuccess;\r\n session.onFailure = this.onFailure;\r\n\r\n session.logon(credentials.username, credentials.password, params);\r\n },\r\n\r\n onSuccess: function(sessionInfo) {\r\n if (typeof this.options.onSuccess == \"function\")\r\n this.options.onSuccess(sessionInfo);\r\n },\r\n\r\n onFailure: function(xhr) {\r\n this.toggleDisabled(false);\r\n\r\n var status = null;\r\n\r\n if (Librarian.Session.isMfaRequired(xhr)) {\r\n var errorInfo = JSON.parse(xhr.responseText);\r\n status = errorInfo.Status;\r\n }\r\n\r\n var message = this.getErrorMessage(status);\r\n\r\n Librarian.Utils.error(message);\r\n },\r\n\r\n getErrorMessage: function(status) {\r\n switch(status) {\r\n case \"MfaSetupRequired\":\r\n return \"Authenticator setup is required\";\r\n case \"MfaCodeRequired\":\r\n return \"Verification code is required\";\r\n case \"MfaInvalidCode\":\r\n return \"Verification code is invalid. Please try again.\";\r\n default:\r\n return \"An unexpected error occurred. Please try again.\";\r\n }\r\n }\r\n});\r\n","Librarian.Notification = new Class({\r\n Implements: [Options],\r\n Binds: [\"close\"],\r\n\r\n options: {\r\n message: \"\",\r\n type: null,\r\n closeAfter: false // Time in ms or false to leave open\r\n },\r\n\r\n messageEl: null,\r\n\r\n initialize: function(options) {\r\n this.setOptions(options);\r\n\r\n this.render();\r\n },\r\n\r\n render: function() {\r\n var message = this.options.message.replaceAll(\"\\n\", \"
\");\r\n\r\n this.messageEl = new Element(\"div\", {\r\n html: message,\r\n \"class\": \"notification-message\"\r\n }).inject(Librarian.Notification.containerEl);\r\n\r\n if (this.options.type) {\r\n this.messageEl.addClass(\"notification-type-\" + this.options.type);\r\n }\r\n\r\n this.messageEl.addOnClick(this.close);\r\n\r\n if (this.options.closeAfter > 0) {\r\n setTimeout(this.close, this.options.closeAfter);\r\n }\r\n },\r\n\r\n close: function() {\r\n this.messageEl.remove();\r\n }\r\n});\r\n\r\nLibrarian.Notification.extend({\r\n containerEl: null,\r\n\r\n closeAll: function(type) {\r\n if (!this.containerEl)\r\n return;\r\n\r\n var selector = \".notification-message\";\r\n if (type)\r\n selector += \".notification-type-\" + type;\r\n\r\n var messageEls = this.containerEl.getElements(selector);\r\n\r\n messageEls.invoke(\"remove\");\r\n }\r\n});\r\n\r\nwindow.addEvent(\"load\", function() {\r\n Librarian.Notification.containerEl = new Element(\"div\", {\r\n \"class\": \"notification-container\"\r\n }).inject(document.body);\r\n});\r\n","Librarian.Html5Uploader = new Class({\r\n Implements: [Options],\r\n options: {\r\n chunkSize: 3 * 1024 * 1024,\r\n chunkUrl: null,\r\n completeUrl: null,\r\n importOptions: null,\r\n waitForComplete: false,\r\n onFileSuccess: null,\r\n onFileFailure: null,\r\n onComplete: null\r\n },\r\n\r\n files: [],\r\n successCount: 0,\r\n failureCount: 0,\r\n\r\n initialize: function(options) {\r\n this.setOptions(options);\r\n\r\n if (!this.options.chunkUrl)\r\n this.options.chunkUrl = Librarian.path.getUploadUrl(\"upufch\");\r\n\r\n if (!this.options.completeUrl)\r\n this.options.completeUrl = Librarian.path.getUploadUrl(\"upufchc\");\r\n },\r\n\r\n uploadFiles: function(fileList) {\r\n for (var i = 0; i < fileList.length; i++) {\r\n var file = fileList[i];\r\n this.uploadFile(file);\r\n }\r\n },\r\n\r\n uploadFile: function(file) {\r\n file.chunk = 0;\r\n file.status = \"pending\";\r\n\r\n this.files.push(file);\r\n\r\n // Start uploading\r\n this.uploadChunk(file);\r\n },\r\n\r\n uploadChunk: function(file) {\r\n var chunkSize = this.options.chunkSize,\r\n start = file.chunk * chunkSize,\r\n end = ++file.chunk * chunkSize;\r\n\r\n var chunk = file.slice(start, end);\r\n\r\n var url = this.options.chunkUrl + \"&out=cjson&fname=\" + encodeURIComponent(file.name) + \"&foffset=\" + start + \"&fsize=\" + file.size;\r\n\r\n if (this.options.importOptions)\r\n url += \"&exi=true\";\r\n else if (this.options.waitForComplete)\r\n url += \"&wait=true&comp=true\";\r\n\r\n var request = new Librarian.Request.JSON({\r\n url: url,\r\n method: \"POST\",\r\n data: chunk,\r\n headers: { \"Content-Type\": \"application/octet-stream\" },\r\n urlEncoded: false,\r\n onSuccess: function (status) {\r\n file.fileId = status.fileId;\r\n\r\n if (end >= file.size)\r\n this.uploadComplete(file);\r\n else\r\n this.uploadChunk(file);\r\n }.bind(this),\r\n onFailure: function(error) {\r\n this.onFileFailure(file, error);\r\n }.bind(this)\r\n\r\n });\r\n\r\n request.send();\r\n },\r\n\r\n uploadComplete: function(file) {\r\n if (!this.options.importOptions) {\r\n this.onFileSuccess(file);\r\n return;\r\n }\r\n\r\n var url = this.options.completeUrl + \"&in=cjson&out=cjson&exi=true&fname=\" + encodeURIComponent(file.name);\r\n if (this.options.waitForComplete)\r\n url += \"&comp=true\";\r\n\r\n var data = Base64.encode(JSON.stringify(this.options.importOptions));\r\n\r\n var request = new Librarian.Request.JSON({\r\n url: url,\r\n method: \"POST\",\r\n data: data,\r\n onSuccess: function(data) {\r\n this.onFileSuccess(file, data);\r\n }.bind(this),\r\n onFailure: function(error) {\r\n this.onFileFailure(file, error);\r\n }.bind(this)\r\n });\r\n\r\n request.send();\r\n },\r\n\r\n onFileSuccess: function(file, data) {\r\n file.status = \"success\";\r\n file.data = data;\r\n\r\n if (typeof this.options.onFileSuccess == \"function\")\r\n this.options.onFileSuccess(file, data);\r\n\r\n this.successCount++;\r\n this.checkComplete();\r\n },\r\n\r\n onFileFailure: function(file, error) {\r\n file.status = \"failure\";\r\n file.error = error;\r\n\r\n if (typeof this.options.onFileFailure == \"function\")\r\n this.options.onFileFailure(file, error);\r\n\r\n this.failureCount++;\r\n this.checkComplete();\r\n },\r\n\r\n checkComplete: function() {\r\n if (this.successCount + this.failureCount == this.files.length) {\r\n if (typeof this.options.onComplete == \"function\")\r\n this.options.onComplete(this.files, this.successCount, this.failureCount);\r\n\r\n // Reset\r\n this.files = [];\r\n this.successCount = this.failureCount = 0;\r\n }\r\n }\r\n \r\n});","Librarian.DropZone = new Class({\r\n Implements: [Options],\r\n Binds: [\"onDragOver\", \"onDragLeave\", \"onDrop\"],\r\n options: {\r\n target: null,\r\n targetClass: \"dropzone\",\r\n dragClass: \"dropzone-dragover\",\r\n onDropFiles: null\r\n },\r\n\r\n targetEl: null,\r\n dragging: false,\r\n\r\n initialize: function (options) {\r\n this.setOptions(options);\r\n\r\n if (!this.options.target)\r\n throw \"No target specified for drop zone\";\r\n\r\n this.targetEl = $(this.options.target);\r\n this.targetEl.addClass(this.options.targetClass);\r\n this.targetEl.addEvents({\r\n \"dragenter\": this.onDragOver,\r\n \"dragover\": this.onDragOver,\r\n \"dragleave\": this.onDragLeave,\r\n \"drop\": this.onDrop\r\n });\r\n },\r\n\r\n onDragOver: function (e) {\r\n if (e.preventDefault) {\r\n e.preventDefault();\r\n }\r\n\r\n var evt = e.event;\r\n if (!evt || !evt.dataTransfer)\r\n return;\r\n\r\n if (this.hasFiles(evt)) {\r\n evt.dataTransfer.dropEffect = \"copy\";\r\n\r\n this.startDrag();\r\n }\r\n },\r\n\r\n onDragLeave: function (e) {\r\n if (e.preventDefault) {\r\n e.preventDefault();\r\n }\r\n\r\n this.stopDrag();\r\n },\r\n\r\n onDrop: function (e) {\r\n if (e.preventDefault) {\r\n e.preventDefault();\r\n }\r\n\r\n this.stopDrag();\r\n\r\n var evt = e.event;\r\n if (!evt || !evt.dataTransfer)\r\n return;\r\n\r\n var files = evt.dataTransfer.files;\r\n\r\n if (typeof this.options.onDropFiles == \"function\")\r\n this.options.onDropFiles(files);\r\n },\r\n\r\n startDrag: function () {\r\n this.targetEl.addClass(this.options.dragClass);\r\n\r\n if (!this.dragging) {\r\n this.dragging = true;\r\n //this.trigger(\"startdragfile\");\r\n }\r\n },\r\n\r\n stopDrag: function () {\r\n this.targetEl.removeClass(this.options.dragClass);\r\n\r\n if (this.dragging) {\r\n this.dragging = false;\r\n //this.trigger(\"stopdragfile\");\r\n }\r\n },\r\n\r\n hasFiles: function (evt) {\r\n var typesArray = Object.values(evt.dataTransfer.types);\r\n return typesArray.indexOf(\"Files\") !== -1;\r\n }\r\n});","if (!Librarian.Utils) {\r\n Librarian.Utils = {\r\n toBoolean: function (value) {\r\n if (value == null)\r\n return false;\r\n return value.toLowerCase() == \"true\";\r\n },\r\n\r\n getHash: function () {\r\n var hash = window.location.hash;\r\n hash = hash.indexOf(\"#/\") > -1 ? hash.substring(2) : hash.substring(1);\r\n\r\n return hash;\r\n },\r\n\r\n canDownload: function (data) {\r\n if (Librarian.Utils.isSlideShow(data))\r\n return false;\r\n\r\n // Don't let DeepLink users download GFs and VPs\r\n if (Librarian.isGuest && ((data.groupid > 0) || (data.presid > 0) || data.groupinfo))\r\n return false;\r\n\r\n var ext = Librarian.Utils.getExtensionFromData(data);\r\n return !Librarian.download.excludeTypes.contains(ext);\r\n },\r\n canStream: function (data) {\r\n var ext = Librarian.Utils.getExtensionFromData(data, true);\r\n return (Librarian.preview.allowVideoStreaming && Librarian.extensions.isStreamableVideo(ext)) ||\r\n (Librarian.preview.allowAudioStreaming && Librarian.extensions.isStreamableAudio(ext));\r\n },\r\n createLinkFromString: function (string) {\r\n var exp = /\\(?\\b(http|https):\\/\\/[-A-Za-z0-9+&@#\\/%?=~_()|!:,.;]*[-A-Za-z0-9+&@#\\/%=~_()|]/ig;\r\n\r\n // $& uses the whole match from the regular expression. $1 would just return http or https\r\n return string.replace(exp, '$&');\r\n },\r\n getArrayFromCSV: function (text, skip, delim) {\r\n if ((typeof delim == \"undefined\") || (delim == null))\r\n delim = \"\\t\";\r\n\r\n var values = Librarian.Utils.getArrayFromText(text, skip);\r\n\r\n // Split each value by tabs\r\n for (var i = values.length; i--;) {\r\n // Remove empty strings\r\n if (values[i].trim().length == 0) {\r\n values.remove(i);\r\n continue;\r\n }\r\n\r\n values[i] = values[i].split(new RegExp(\"[\" + delim + \"]\", \"g\"));\r\n }\r\n\r\n return values;\r\n },\r\n getArrayFromFile: function (text, skip) {\r\n return Librarian.Utils.getArrayFromText(text, skip);\r\n },\r\n getObjectromFile: function (text) {\r\n var data = [];\r\n\r\n var selection = Librarian.Utils.getArrayFromFile(text, 1);\r\n var headers = (text.match(/[^\\r\\n]+/)[0].split(/[\\t]/g) || []).map(function (datum) {\r\n return datum.trim();\r\n });\r\n\r\n for (var i = 0, len = selection.length; i < len; i++) {\r\n // Remove empty strings\r\n if (selection[i].trim().length == 0) {\r\n selection.remove(i);\r\n continue;\r\n }\r\n\r\n var columns = selection[i].split(/[\\t]/g);\r\n\r\n var info = {};\r\n Array.each(columns, function (col, index) {\r\n var propName = headers[index];\r\n\r\n info[propName] = col.trim();\r\n });\r\n\r\n data.push(info);\r\n }\r\n\r\n return data;\r\n },\r\n getArrayFromText: function (text, skip) {\r\n // Carriage return and line feed\r\n var cr = /\\\\r/g,\r\n lf = /\\\\n/g;\r\n\r\n var lines = (text || '').split(/\\r?\\n/);\r\n\r\n // Removed escaped carriage return and new line\r\n for (var len = lines.length; len--;) {\r\n lines[len] = lines[len].replace(cr, \"\\r\");\r\n lines[len] = lines[len].replace(lf, \"\\n\");\r\n }\r\n\r\n if ((typeof skip == \"number\") && (skip > 0)) {\r\n return lines.slice(skip);\r\n }\r\n\r\n return lines;\r\n },\r\n error: function(message, closeAfter) {\r\n if (closeAfter == null)\r\n closeAfter = 5000;\r\n\r\n return Librarian.Utils.showNotification(message, \"error\", closeAfter);\r\n },\r\n notification: function(message, closeAfter) {\r\n if (closeAfter == null)\r\n closeAfter = 3000;\r\n\r\n return Librarian.Utils.showNotification(message, \"notification\", closeAfter);\r\n },\r\n showNotification: function(message, type, closeAfter) {\r\n var notification = new Librarian.Notification({\r\n message: message,\r\n type: type,\r\n closeAfter: closeAfter\r\n });\r\n\r\n return notification;\r\n },\r\n closeNotifications: function(type) {\r\n Librarian.Notification.closeAll(type);\r\n },\r\n showCartNotification: function (data, type, success) {\r\n if (!(Librarian.features.fastlane.load && Librarian.FastLane.isEnabled)) {\r\n if (Librarian.cart.showDetailedMessages) {\r\n var itemType = Librarian.Utils.getItemTypeString(data);\r\n\r\n if (type == Librarian.cartNotificationTypes.removed) {\r\n if (success) {\r\n Librarian.Utils.notification(Librarian.Lang.getArgString(\"cart_removed_type\", [itemType]), Librarian.cart.notificationTime);\r\n } else {\r\n Librarian.Utils.notification(Librarian.Lang.getArgString(\"cart_remove_failed\", [itemType]), Librarian.cart.notificationTime);\r\n }\r\n } else if (success) {\r\n Librarian.Utils.notification(Librarian.Lang.getArgString(\"cart_added\", [itemType]), Librarian.cart.notificationTime);\r\n }\r\n }\r\n else {\r\n Librarian.Utils.notification(Librarian.Lang.getString(\"cart_updated\"));\r\n }\r\n }\r\n },\r\n openSendWindow: function (data, options) {\r\n if (!Librarian.event.canShare) {\r\n return null;\r\n }\r\n\r\n if (!options)\r\n options = {};\r\n\r\n var win = new Librarian.EventSendWindow(options, data);\r\n win.show();\r\n\r\n return win;\r\n },\r\n openCampaignWindow: function (options) {\r\n if (!options.campaignInfo)\r\n throw \"No campaign info\";\r\n\r\n if (options.campaignInfo.isdraft) {\r\n var confirm = new Librarian.ConfirmWindow({\r\n question: Librarian.Lang.getString(\"eventgroup_send_draft?\")\r\n });\r\n\r\n confirm.onFirstButtonClicked = function () {\r\n new Librarian.CampaignWindow(options);\r\n }.bind(this);\r\n }\r\n else\r\n new Librarian.CampaignWindow(options);\r\n },\r\n openURLFile: function (data) {\r\n Librarian.Utils.getSlideText(data, function (json) {\r\n if (json) {\r\n window.open(json.Text.trim(), \"_blank\" + new Date().getTime());\r\n\r\n var logType = Librarian.activityLogType.preview;\r\n\r\n var fileId = data.fileid,\r\n fileName = encodeURIComponent(data.filename || data.name),\r\n url = Librarian.path.getLogUrl(\"logact\") + \"&cntid=\" + fileId + \"&cnttype=1&name=\" + fileName + \"&logtype=\" + logType;\r\n\r\n new Librarian.Request({\r\n url: url,\r\n async: true\r\n }).send();\r\n }\r\n });\r\n },\r\n openUploader: function (callback) {\r\n function doOpen() {\r\n if (Librarian.features.clouduploader.load) {\r\n var cloudUploadWindow = new Librarian.CloudUploadWindow();\r\n\r\n cloudUploadWindow.show();\r\n }\r\n else if (Librarian.features.html5uploadwindow.load && Librarian.Utils.hasHtml5UploadSupport()) {\r\n var html5UploadWindow = new Librarian.Html5UploadWindow({\r\n complete: function (files) {\r\n if (typeof callback == \"function\")\r\n callback(files);\r\n }\r\n });\r\n\r\n html5UploadWindow.show();\r\n }\r\n }\r\n\r\n if (Librarian.upload.disclaimer != null) {\r\n var confirm = new Librarian.ConfirmWindow({\r\n id: \"UploadAgreeWindow\",\r\n height: Librarian.upload.disclaimerHeight,\r\n width: 500,\r\n title: Librarian.Lang.getString(\"disclaimer\"),\r\n firstButtonText: Librarian.Lang.getString(\"agree\"),\r\n secondButtonText: Librarian.Lang.getString(\"cancel\"),\r\n question: Librarian.upload.disclaimer,\r\n resize: false\r\n });\r\n confirm.onFirstButtonClicked = doOpen;\r\n }\r\n else\r\n doOpen();\r\n },\r\n notifyUploadComplete: function (successCount, failureCount) {\r\n var method = \"notification\";\r\n var message = \"\";\r\n\r\n if (successCount > 0)\r\n message += \"
\" + Librarian.Lang.getPluralArgString(\"upload_success_count\", successCount, [successCount]) + \"
\";\r\n\r\n if (failureCount > 0) {\r\n method = \"error\";\r\n message += \"
\" + Librarian.Lang.getPluralArgString(\"upload_failure_count\", failureCount, [failureCount]) + \"
\";\r\n }\r\n\r\n if (message)\r\n Librarian.Utils[method](message, 5000);\r\n\r\n window.fireEvent(\"uploadFile\");\r\n },\r\n getSlideShowURL: function (data, type) {\r\n var url = Librarian.path.getAppPath(\"slideshow\") + '/' + type + \".htm?libName=\" + Librarian.path.getUrlLibraryName(),\r\n loginKey = window.location.search.substring(1).parseQueryString().lkey,\r\n hashData = this.getHash().parseQueryString(),\r\n frameName = '_' + type;\r\n if (Librarian.sessionName)\r\n url += \"&sname=\" + Librarian.sessionName;\r\n if ((typeof loginKey == \"string\") && (loginKey.length > 0))\r\n url += \"&lkey=\" + loginKey;\r\n\r\n // Include any data we have\r\n if (data) {\r\n if (data.presid > 0) {\r\n url += \"&presId=\" + data.presid;\r\n frameName += data.presid;\r\n }\r\n\r\n if (data.catid > 0)\r\n url += \"&catId=\" + data.catid;\r\n else if ((typeof hashData.catid == \"string\") && (hashData.catid.length > 0))\r\n url += \"&catId=\" + hashData.catid;\r\n }\r\n else if ((typeof hashData.catid == \"string\") && (hashData.catid.length > 0))\r\n url += \"&catId=\" + hashData.catid;\r\n\r\n return { url: url, frameName: frameName };\r\n },\r\n openSlideShow: function (data, type) {\r\n var slideShowURL = Librarian.Utils.getSlideShowURL(data, type),\r\n winSize = window.getSize();\r\n\r\n window.open(slideShowURL.url, slideShowURL.frameName + (new Date()).getTime(), \"directories=no,channelmode=yes,resizable=yes,location=yes,height=\" + winSize.y + \",width=\" + winSize.x);\r\n },\r\n getArticleDesignerURL: function () {\r\n return Librarian.path.getAppPath(\"articles\") + \"/designer.htm?libName=\" + Librarian.path.getUrlLibraryName();\r\n },\r\n openArticleDesigner: function () {\r\n var adURL = Librarian.Utils.getArticleDesignerURL();\r\n window.open(adURL);\r\n },\r\n openWorkflowToDo: function () {\r\n Librarian.todoWindow = new Librarian.WorkflowTodoWindow();\r\n Librarian.todoWindow.onDoubleClick = Library.openWorkflowWizardWindow;\r\n if (typeof Library.workflowInstanceClick == \"function\")\r\n Librarian.todoWindow.onClick = Library.workflowInstanceClick;\r\n Librarian.todoWindow.show();\r\n },\r\n getSlideText: function (data, onSuccess, type, onFailure) {\r\n var slidenum = data.slidenumber || 1;\r\n\r\n // Don't log 404 errors\r\n var params = \"&ignoreerror=true\";\r\n\r\n if (data.slideid > 0)\r\n params += \"&sid=\" + data.slideid;\r\n else if (data.fileid > 0)\r\n params += \"&fid=\" + data.fileid + \"&snum=\" + slidenum;\r\n else if (data.presid > 0)\r\n params += \"&pid=\" + data.presid + \"&snum=\" + (data.itemnumber || slidenum);\r\n else if (data.groupid > 0)\r\n params += \"&gid=\" + data.groupid + \"&snum=\" + slidenum;\r\n else if (data.filename && data.filename.length > 0)\r\n params += \"&fname=\" + encodeURIComponent(data.filename) + \"&snum=\" + slidenum;\r\n else\r\n return;\r\n\r\n if ((typeof type != \"undefined\") && (type != null))\r\n params += \"&subtype=\" + type;\r\n\r\n if (Librarian.catType.isUserCategory(data.cattype))\r\n params += \"&useweb=false\";\r\n\r\n new Librarian.Request.JSON({\r\n url: Librarian.path.getMethodUrl(\"getslidetext\") + params + \"&out=ujson\",\r\n onSuccess: onSuccess || $empty,\r\n onFailure: onFailure || $empty\r\n }).send();\r\n },\r\n getSlideTextArray: function (data, onSuccess, type, onFailure) {\r\n Librarian.Utils.getSlideText(data, function (result) {\r\n if (!result || !result.Text) {\r\n if (typeof onFailure == \"function\")\r\n onFailure();\r\n return;\r\n }\r\n\r\n var array = Librarian.Utils.getArrayFromFile(result.Text);\r\n\r\n if (typeof onSuccess == \"function\")\r\n onSuccess(array);\r\n }, type, onFailure);\r\n },\r\n getFileID: function (fileName, onSuccess, onFailure, ignoreExtension) {\r\n var url = Librarian.path.getMethodUrl(\"getfid\") + \"&out=ljson&fname=\" + encodeURIComponent(fileName);\r\n if (ignoreExtension === true) {\r\n url += \"&ignoreextension=\" + ignoreExtension + \"&cattype=2\";\r\n }\r\n\r\n new Librarian.Request.JSON({\r\n url: url,\r\n onSuccess: onSuccess,\r\n onFailure: function(error) {\r\n Librarian.Utils.onFailure(error);\r\n if (typeof onFailure == \"function\")\r\n onFailure();\r\n }\r\n }).send();\r\n },\r\n getFileInfo: function(fileId, onSuccess, onFailure) {\r\n var url = Librarian.path.getMethodUrl(\"getfi\") + \"&out=ljson&fid=\" + encodeURIComponent(fileId);\r\n\r\n new Librarian.Request.JSON({\r\n url: url,\r\n onSuccess: onSuccess,\r\n onFailure: function(error) {\r\n Librarian.Utils.onFailure(error);\r\n if (typeof onFailure == \"function\")\r\n onFailure();\r\n }\r\n }).send();\r\n },\r\n deleteUserFile: function(fileId, onSuccess, onFailure) {\r\n var url = Librarian.path.getUpdateUrl(\"deleteuserfile\") + \"&out=ljson&fid=\" + encodeURIComponent(fileId);\r\n\r\n new Librarian.Request.JSON({\r\n url: url,\r\n onSuccess: onSuccess,\r\n onFailure: function(error) {\r\n Librarian.Utils.onFailure(error);\r\n if (typeof onFailure == \"function\")\r\n onFailure();\r\n }\r\n }).send();\r\n },\r\n\r\n getFileHash: function (fileid, name, onSuccess, onFailure) {\r\n if (typeof onSuccess != \"function\")\r\n return null;\r\n\r\n var params;\r\n if (fileid > 0)\r\n params = \"&fid=\" + fileid;\r\n else\r\n params = \"&fname=\" + encodeURIComponent(name);\r\n\r\n return new Librarian.Request({\r\n url: Librarian.path.getMethodUrl(\"getfh\") + \"&out=text\" + params,\r\n onSuccess: onSuccess,\r\n async: false,\r\n onFailure: function(error) {\r\n Librarian.Utils.onFailure(error);\r\n if (typeof onFailure == \"function\")\r\n onFailure();\r\n }\r\n }).send();\r\n },\r\n getAttributeFromArray: function (attribList, attribName) {\r\n if (!attribList || !attribName)\r\n return null;\r\n\r\n for (var i = 0; i < attribList.length; i++) {\r\n var attrib = attribList[i];\r\n\r\n if ((attrib.name == attribName) || (attrib.Name == attribName))\r\n return attrib.value || attrib.Value;\r\n }\r\n\r\n return null;\r\n },\r\n getAttributesFromArray: function (attribList) {\r\n var attributes = {};\r\n if (attribList) {\r\n for (var i = 0; i < attribList.length; i++) {\r\n var attrib = attribList[i];\r\n\r\n var name = attrib.name || attrib.Name;\r\n var value = attrib.value || attrib.Value;\r\n\r\n attributes[name] = value;\r\n }\r\n }\r\n\r\n return attributes;\r\n },\r\n getAttributeDropdownValues: function (attribId, attribName, onSuccess, onFailure, includeInfo) {\r\n if ((!attribId || (attribId < 0)) && (!attribName || (attribName.length == 0)))\r\n return null;\r\n\r\n var params;\r\n if (attribId && (attribId >= 0))\r\n params = \"&atid=\" + attribId;\r\n else\r\n params = \"&atname=\" + encodeURIComponent(attribName);\r\n\r\n var request = new Librarian.Request.JSON({\r\n url: Librarian.path.getMethodUrl(\"getadv\") + params + \"&out=ujson\",\r\n onFailure: function(error) {\r\n Librarian.Utils.onFailure(error);\r\n if (typeof onFailure == \"function\")\r\n onFailure();\r\n },\r\n onSuccess: function (json) {\r\n if (!json)\r\n return;\r\n\r\n if (includeInfo === true) {\r\n onSuccess(json, attribName);\r\n return;\r\n }\r\n\r\n var values = json.map(function (item) {\r\n return item.Value;\r\n });\r\n onSuccess(values, attribName, json);\r\n }\r\n });\r\n request.send();\r\n return request;\r\n },\r\n getFileTypes: function (onSuccess, onFailure) {\r\n var request = new Librarian.Request.JSON({\r\n url: Librarian.path.getMethodUrl(\"getftypes\") + \"&out=ujson\",\r\n onFailure: function(error) {\r\n Librarian.Utils.onFailure(error);\r\n if (typeof onFailure == \"function\")\r\n onFailure();\r\n },\r\n onSuccess: onSuccess\r\n });\r\n request.send();\r\n },\r\n getThumbnailUrl: function (size, data, track, expand, parentData) {\r\n var slideNum, itemNum, noSource = false;\r\n if (data) {\r\n // Get the source file's extension (if there is one)\r\n var sourceext = Librarian.Utils.getExtensionFromData(data, true),\r\n // Whether or not this is a file pretending to be a slide\r\n fileAsSlide = Librarian.extensions.hasFakeSlides(sourceext);\r\n\r\n slideNum = data.slidenumber;\r\n\r\n // If there is no slide number, there is an invalid slide number,\r\n // or this is a file pretending to be a slide, use the first \"slide\" in the file\r\n if (!slideNum || (slideNum < 0) || fileAsSlide)\r\n slideNum = 1;\r\n\r\n itemNum = (data.itemnumber || slideNum);\r\n\r\n // If this is a presentation with a -1 slide id and an invalid file type,\r\n // the source isn't available and we should show the \"No Image Available\" image\r\n if (Librarian.Utils.isSourceNotAvailable(data))\r\n noSource = true;\r\n }\r\n else\r\n noSource = true;\r\n\r\n var url = Librarian.path.getThumbnailUrl() + \"&tname=\" + size;\r\n\r\n if (!noSource) {\r\n if (data.editFileName)\r\n url = Librarian.path.getDownloadUrl(\"spv\") + \"&tname=\" + size + \"&fname=\" + encodeURIComponent(data.editFileName);\r\n else if (data.thumbnailid)\r\n url += \"&tnid=\" + data.thumbnailid;\r\n else if (data.presid)\r\n url += \"&pid=\" + data.presid + \"&comp=1&snum=\" + itemNum + \"&expand=\" + ((Librarian.tileList.expandGroupItemsToSlides || (expand === true)) ? '1' : '0');\r\n else if (data.slideid > 0)\r\n url += \"&sid=\" + data.slideid;\r\n else if (data.groupid) {\r\n // If this has an event count, its an event group not a Global Favorite\r\n if (typeof data.eventcount == \"number\")\r\n url += \"&egid=\" + data.groupid + \"&snum=\" + itemNum;\r\n else\r\n url += \"&gid=\" + data.groupid + \"&snum=\" + itemNum + \"&expand=\" + ((expand === true) ? '1' : '0');\r\n }\r\n else if (data.fileid)\r\n url += \"&fid=\" + data.fileid + \"&snum=\" + slideNum;\r\n else if (data.eventid)\r\n url += \"&eid=\" + data.eventid;\r\n else if (data.catid) {\r\n url = Librarian.path.getLibraryPath() + \"img/folder.jpg\";\r\n track = false;\r\n }\r\n else if (data.contentid && data.contenttype)\r\n url += \"&cntid=\" + data.contentid + \"&cnttype=\" + data.contenttype + \"&snum=\" + itemNum;\r\n else if (data.supportfileid)\r\n url += \"&cntid=\" + data.supportfileid + \"&cnttype=\" + Librarian.contentType.supportFile + \"&snum=\" + itemNum;\r\n else {\r\n url = null;\r\n track = false;\r\n }\r\n }\r\n else {\r\n url = null;\r\n track = false;\r\n }\r\n\r\n if (url) {\r\n if (track === true)\r\n url += \"&track=1&\" + String.uniqueID();\r\n else if (data && !data.thumbnailid)\r\n url += \"&cacheid=\" + Librarian.cacheId;\r\n\r\n if (data.instanceid > 0 || (parentData && parentData.instanceid > 0))\r\n url += \"&useweb=false\";\r\n\r\n // Pass the icon path as an alternative\r\n var ext = Librarian.Utils.getExtensionFromData(data);\r\n var altUrl = Librarian.Utils.getFileTypeIcon(ext, 32);\r\n\r\n url += \"&alt=\" + encodeURIComponent(altUrl);\r\n }\r\n else {\r\n url = Librarian.path.getFullPath(Librarian.path.root + \"/img/NotAvailable.jpg\");\r\n }\r\n\r\n return url;\r\n },\r\n\r\n getFileTypeIcon: function (ext, size, category) {\r\n ext = (ext || '').trim().toLowerCase();\r\n category = !!category;\r\n size = size || '';\r\n\r\n var version = Librarian.extensions.fileTypeIconsVersion;\r\n\r\n switch (version) {\r\n case 1:\r\n return this.getFileTypeIcon_v1(ext, size, category);\r\n case 2:\r\n return this.getFileTypeIcon_v2(ext, size, category);\r\n case 3:\r\n return this.getFileTypeIcon_v3(ext, size, category);\r\n default:\r\n return \"\";\r\n }\r\n },\r\n\r\n getFileTypeIcon_v1: function(ext, size, category) {\r\n var fileName;\r\n\r\n if (category) {\r\n fileName = 'CategoryFolder';\r\n if (ext === \"favorite\") {\r\n fileName = \"FavoritesFolder\";\r\n }\r\n\r\n if (size && (typeof size == \"number\")) {\r\n fileName += '_' + size;\r\n }\r\n }\r\n else {\r\n fileName = ext;\r\n\r\n if (size && (typeof size == \"number\")) {\r\n fileName = size + '_' + fileName;\r\n }\r\n }\r\n\r\n fileName += \".gif\";\r\n\r\n return Librarian.path.getFileTypeIconsPath(\"v1\") + fileName;\r\n },\r\n\r\n getFileTypeIcon_v2: function(ext, size, category) {\r\n var fileName;\r\n\r\n if (category) {\r\n if (ext === \"favorite\") {\r\n fileName = \"FAV_Folder\";\r\n }\r\n else {\r\n fileName = \"YEL_Folder\";\r\n }\r\n }\r\n else {\r\n fileName = Librarian.Utils.getFileTypeIconName(ext);\r\n }\r\n\r\n if (typeof size != \"number\")\r\n size = 16;\r\n\r\n fileName += \"_Icon_\" + size + \".png\";\r\n\r\n return Librarian.path.getFileTypeIconsPath(\"v2\") + fileName;\r\n },\r\n\r\n getFileTypeIcon_v3: function(ext, size, category) {\r\n // Use v2 category icons\r\n if (category)\r\n return Librarian.Utils.getFileTypeIcon_v2(ext, size, category);\r\n\r\n var fileName = Librarian.Utils.getFileTypeIconName(ext);\r\n\r\n // Use 2x icons\r\n if (size == 32)\r\n fileName += \"_64\";\r\n else\r\n fileName += \"_32\";\r\n\r\n fileName += \".png\";\r\n\r\n return Librarian.path.getFileTypeIconsPath(\"v3\") + fileName;\r\n },\r\n\r\n getFileTypeIconName: function(ext) {\r\n var type = Librarian.extensions.getFileType(ext);\r\n\r\n var icons = {\r\n powerpoint: \"PowerPoint\",\r\n pdf: \"PDF\",\r\n text: \"Text\",\r\n word: \"Word\",\r\n excel: \"Excel\",\r\n vector: \"Vector\",\r\n image: \"Image\",\r\n video: \"Video\",\r\n audio: \"Audio\",\r\n archive: \"Archive\",\r\n favorite: \"Favorite\",\r\n link: \"Link\",\r\n wizard: \"Wizard\",\r\n campaign: \"Campaign\",\r\n page: \"Page\"\r\n };\r\n\r\n return icons[type] || \"Default\";\r\n },\r\n\r\n getNaturalImageSize: function (imageEl) {\r\n if (!imageEl)\r\n return null;\r\n\r\n var width = imageEl.naturalWidth,\r\n height = imageEl.naturalHeight;\r\n\r\n // If we can't use natural width or height, make a fake image that isn't hidden and pull the size from that\r\n if ((typeof width != \"number\") || isNaN(width) || (typeof height != \"number\") || isNaN(height)) {\r\n var tempImageEl = new Image();\r\n tempImageEl.src = imageEl.src;\r\n\r\n width = tempImageEl.width;\r\n height = tempImageEl.height;\r\n }\r\n\r\n return { x: width, y: height };\r\n },\r\n getFileDownloadUrl: function (data, mode, newName, extension) {\r\n if ((typeof mode == \"undefined\") || (mode == null))\r\n mode = \"dnld\";\r\n var fileid = data.fileid || data,\r\n url = '';\r\n\r\n if (fileid) {\r\n url = Librarian.path.getDownloadUrl() + \"mode=\" + mode + \"&fid=\" + fileid;\r\n\r\n if (newName)\r\n url += \"&name=\" + encodeURIComponent(newName);\r\n if (extension)\r\n url += \"&ext=\" + encodeURIComponent(extension);\r\n }\r\n\r\n if (data.requestid)\r\n url += \"&rid=\" + data.requestid;\r\n\r\n return url;\r\n },\r\n download: function(url, filename) {\r\n if (typeof filename != \"string\")\r\n filename = \"\";\r\n\r\n var link = new Element(\"a\", {\r\n href: url,\r\n download: filename\r\n });\r\n\r\n link.click();\r\n }, \r\n getPath: function (data, onComplete, name) {\r\n if (!data)\r\n return;\r\n if (typeof onComplete != \"function\")\r\n return;\r\n if ((typeof name == \"undefined\") || (name == null))\r\n name = false;\r\n\r\n var method = \"getcpath\",\r\n id = \"&cid=\" + data.catid,\r\n catType = Librarian.catType.file;\r\n\r\n if (data.type != null)\r\n catType = data.type;\r\n else if (data.cattype != null)\r\n catType = data.cattype;\r\n\r\n if (data.groupid > 0) {\r\n method = \"getpath\";\r\n var shortName = \"gid\";\r\n if (data.type == Librarian.catType.event || data.cattype == Librarian.catType.event)\r\n shortName = \"egid\";\r\n\r\n id += '&' + shortName + '=' + data.groupid;\r\n }\r\n else if (data.eventid > 0 && data.parentid) {\r\n method = \"getpath\";\r\n var shortName = \"egid\";\r\n\r\n id += '&' + shortName + '=' + data.parentid;\r\n }\r\n else if (data.presid > 0) {\r\n method = \"getpath\";\r\n id += \"&pid=\" + data.presid;\r\n }\r\n else if (data.fileid > 0) {\r\n method = \"getpath\";\r\n id += \"&fid=\" + data.fileid;\r\n }\r\n else if (typeof data.path == \"string\")\r\n id += \"&cname=\" + encodeURIComponent(data.path);\r\n\r\n var url = Librarian.path.getMethodUrl(method) + \"&catType=\" + catType + id + \"&out=text\";\r\n if (name)\r\n url += \"&name=true\";\r\n\r\n var request = new Librarian.Request({\r\n url: url,\r\n onSuccess: onComplete,\r\n onFailure: function () {\r\n onComplete(null);\r\n }\r\n });\r\n request.send();\r\n },\r\n getCatFromPath: function (path, onComplete, onFailure) {\r\n if (!path)\r\n return;\r\n if (typeof onComplete != \"function\")\r\n return;\r\n\r\n var url = Librarian.path.getMethodUrl(\"getcatfp\") + \"&cpath=\" + path + \"&out=cjson\",\r\n request = new Request.JSON({\r\n url: url,\r\n onSuccess: onComplete,\r\n onFailure: function(error) {\r\n Librarian.Utils.onFailure(error);\r\n if (typeof onFailure == \"function\")\r\n onFailure();\r\n }\r\n });\r\n request.send();\r\n },\r\n getSearchContext: function (term, sid, onComplete) {\r\n var request = new Librarian.Request({\r\n url: Librarian.path.getMethodUrl(\"getslidetext\") + \"&out=stext&sid=\" + sid +\r\n \"&sterms=\" + encodeURIComponent(term) +\r\n \"&max=512&mclass=searchContext&mtag=span\",\r\n onSuccess: onComplete\r\n });\r\n request.send();\r\n },\r\n getItemType: function (data) {\r\n if (data) {\r\n var ext = Librarian.Utils.getExtensionFromData(data, true);\r\n if ((data.slideid > 0) || (data.contenttype == Librarian.contentType.slide)) {\r\n if (ext.startsWith(\"ppt\") || ext.startsWith(\"pps\") || ext.startsWith(\"pot\"))\r\n return \"slide\";\r\n else\r\n return \"page\";\r\n }\r\n else if (data.eventid > 0)\r\n return \"event\";\r\n else if (typeof data.eventcount == \"number\")\r\n return \"eventgroup\";\r\n else if ((data.groupid > 0) || (data.presid > 0))\r\n return \"group\";\r\n }\r\n\r\n return \"item\";\r\n },\r\n getItemTypeString: function (data) {\r\n var type = Librarian.Utils.getItemType(data);\r\n\r\n return Librarian.Lang.getString(type);\r\n },\r\n isSourceNotAvailable: function (data) {\r\n return data && (data.presid > 0) && (data.slideid > 0) && (data.slidenumber <= 0);\r\n },\r\n getNameWithoutExtension: function (filename) {\r\n if (!filename)\r\n return '';\r\n\r\n var extIndex = filename.lastIndexOf('.');\r\n if (extIndex < 0)\r\n return filename;\r\n\r\n return filename.substring(0, extIndex);\r\n },\r\n getExtension: function (filename) {\r\n if (!filename)\r\n return '';\r\n\r\n filename = Librarian.Utils.undecorateFileName(filename);\r\n // Get the index of the last . so we can get the extension\r\n var extIndex = filename.lastIndexOf('.');\r\n if (extIndex < 0)\r\n return '';\r\n\r\n return filename.substring(extIndex + 1).toLowerCase();;\r\n },\r\n getExtensionFromData: function (data, includeSource) {\r\n if (!data)\r\n return '';\r\n\r\n data = Object.toLowerKeys(data);\r\n\r\n if ((typeof includeSource == \"undefined\") || (includeSource == null))\r\n includeSource = false;\r\n\r\n var fileData = (data.fileinfo || data.groupinfo || data),\r\n ext = null;\r\n // If we're supposed to include the source, get that first\r\n // The source should only ever be a valid file type, so ignore it if it's \"vpres\" for some reason\r\n if (includeSource && (fileData.sourceext != \"vpres\"))\r\n ext = fileData.sourceext;\r\n\r\n // Get the extension from all the possibilities\r\n ext = ext || fileData.filetypeextension || fileData.ext || '';\r\n // If the extension starts with a ., drop it\r\n if (ext.startsWith('.'))\r\n ext = ext.substring(1);\r\n\r\n // Trim off any whitespace\r\n ext = ext.trim();\r\n\r\n // If we don't have an extension, try to get it from the file name\r\n if (ext.length == 0)\r\n ext = (Librarian.Utils.getExtension(fileData.filename || fileData.contentname || fileData.name) || '').trim();\r\n // If we still don't have an extension, check for special ones\r\n if (ext.length == 0) {\r\n if (fileData.groupid > 0) {\r\n ext = \"favg\";\r\n\r\n // If this has an event count, its an event group not a Global Favorite\r\n if (fileData.eventcount > 0)\r\n ext = \"evtg\";\r\n }\r\n else if (fileData.presid > 0)\r\n ext = \"vpres\";\r\n }\r\n\r\n // Trim whitespace again and return the lowercase\r\n return ext.trim().toLowerCase();\r\n },\r\n getFileNameFromPath: function (fullPath) {\r\n var fileName = '';\r\n if (fullPath)\r\n fileName = fullPath.replace(/^.*[\\\\\\/]/, '');\r\n\r\n return fileName;\r\n },\r\n getRequestInfo: function (requestId, onSuccess, onFailure) {\r\n var request = new Librarian.Request.JSON({\r\n url: Librarian.path.getMethodUrl(\"getr\") + \"&rid=\" + requestId + \"&out=ujson\",\r\n onSuccess: onSuccess,\r\n onFailure: function(error) {\r\n Librarian.Utils.onFailure(error);\r\n if (typeof onFailure == \"function\")\r\n onFailure();\r\n }\r\n });\r\n request.send();\r\n },\r\n getLink: function (data, isDownload) {\r\n if (!data)\r\n return null;\r\n\r\n if (Librarian.linkWindow != null) {\r\n Librarian.linkWindow.close();\r\n Librarian.linkWindow = null;\r\n }\r\n\r\n // Make sure we don't have some inner object\r\n data = data.fileinfo || data.groupinfo || data;\r\n\r\n var url = null;\r\n // If this is absolutely a file and we're told to use the download link\r\n if (isDownload &&\r\n (typeof data.fileid == \"number\") && (data.fileid > 0) &&\r\n ((typeof data.groupid != \"number\") || (data.groupid <= 0)) &&\r\n ((typeof data.presid != \"number\") || (data.presid <= 0)) &&\r\n ((typeof data.slideid != \"number\") || (data.slideid <= 0)) &&\r\n ((typeof data.slidenumber != \"number\") || (data.slidenumber <= 0))) {\r\n Librarian.Utils.getFileHash(data.fileid, null, function (hash) {\r\n url = Librarian.path.getRootURL();\r\n // If we have a root, build the whole rest of the URL before the library\r\n if (Librarian.path.root.length > 0)\r\n url += Librarian.path.root + '/' + Librarian.path.libraries;\r\n url += '/' + Librarian.path.getUrlLibraryName() + '/' + Librarian.path.getDownloadUrl(Librarian.pageHeaders.downloadLinkMode) + \"&fh=\" + hash;\r\n });\r\n }\r\n else {\r\n url = window.location.origin + window.location.pathname;\r\n\r\n if (data.fileid) {\r\n url += \"#fileid=\" + data.fileid;\r\n }\r\n else if (data.groupid && data.contenttype == Librarian.contentType.eventGroup) {\r\n url += \"#groupid=\" + data.groupid + \"&type=5\";\r\n if (data.catid) {\r\n url += \"&catid=\" + data.catid;\r\n }\r\n }\r\n else if (data.groupid) {\r\n url += \"#groupid=\" + data.groupid + \"&type=1\";\r\n }\r\n else {\r\n url += window.location.hash;\r\n };\r\n\r\n if (!url.includes(\"catid\") && data.catid && data.contenttype == Librarian.contentType.category) {\r\n url += \"#catid=\" + data.catid + \"&type=\" + data.type;\r\n }\r\n\r\n if (Librarian.pageHeaders.libraryLinkPreview && data.contenttype !== Librarian.contentType.category) {\r\n url += \"&preview=true\";\r\n };\r\n }\r\n\r\n Librarian.linkWindow = new Librarian.InfoWindow({\r\n title: Librarian.Lang.getArgString(\"info_title\", [data.groupname || data.name || data.filename]),\r\n content: url\r\n });\r\n\r\n Librarian.linkWindow.show();\r\n },\r\n getTopRated: function (count, catType, onSuccess, onFailure, outputType, useGetSendData, customSendData) {\r\n var searchType = Librarian.Search.outputTypes.FILES;\r\n if (catType == Librarian.catType.globalFavorite)\r\n searchType = Librarian.Search.outputTypes.GROUPS;\r\n return Librarian.Utils.getFilesByMethod(count, onSuccess, onFailure, \"gettoprated\", searchType, outputType, { type: catType }, useGetSendData, customSendData);\r\n },\r\n getPopular: function (count, contentType, onSuccess, onFailure, outputType, useGetSendData, customSendData) {\r\n var searchType = Librarian.Search.outputTypes.FILES;\r\n if (contentType == Librarian.contentType.globalFavorite)\r\n searchType = Librarian.Search.outputTypes.GROUPS;\r\n else if (contentType == Librarian.contentType.slide)\r\n searchType = Librarian.Search.outputTypes.SLIDES;\r\n return Librarian.Utils.getFilesByMethod(count, onSuccess, onFailure, \"getpopc\", searchType, outputType, { type: contentType }, useGetSendData, customSendData);\r\n },\r\n getNewestFiles: function (count, onSuccess, onFailure, outputType, excludeExtensions, useGetSendData, customSendData) {\r\n return Librarian.Utils.getFilesByMethod(count, onSuccess, onFailure, \"getnewf\", Librarian.Search.outputTypes.FILES, outputType, excludeExtensions ? { exclude: excludeExtensions.join(',') } : null, useGetSendData, customSendData);\r\n },\r\n getNewestGroups: function (count, onSuccess, onFailure, outputType, notUsed, useGetSendData, customSendData) {\r\n return Librarian.Utils.getFilesByMethod(count, onSuccess, onFailure, \"getnewcg\", Librarian.Search.outputTypes.GROUPS, outputType, null, useGetSendData, customSendData);\r\n },\r\n getNewestEventGroups: function (data, extraInfo, onSuccess, onFailure, outputType) {\r\n return Librarian.Utils.getEventGroupsByMethod(onSuccess, onFailure, \"getrecgs\", outputType, data, extraInfo);\r\n },\r\n getPopularEventGroups: function (data, extraInfo, onSuccess, onFailure, outputType) {\r\n return Librarian.Utils.getEventGroupsByMethod(onSuccess, onFailure, \"getpopgs\", outputType, data, extraInfo);\r\n },\r\n getEventGroupsByMethod: function (onSuccess, onFailure, method, outputType, data, extraInfo) {\r\n if (typeof onSuccess != \"function\")\r\n return null;\r\n if ((typeof outputType == \"undefined\") || (outputType == null))\r\n outputType = \"dgrid\";\r\n\r\n var url = Librarian.path.getEventUrl(method) + \"&out=\" + outputType;\r\n\r\n if (extraInfo != null) {\r\n url += \"&exi=\" + extraInfo;\r\n }\r\n\r\n var options = {\r\n url: url,\r\n onSuccess: onSuccess,\r\n onFailure: function(error) {\r\n Librarian.Utils.onFailure(error);\r\n if (typeof onFailure == \"function\")\r\n onFailure();\r\n }\r\n };\r\n\r\n if (data) {\r\n // If the given data is an object, stringify it\r\n if (typeof data == \"object\")\r\n data = JSON.stringify(data);\r\n // Convert the data to Base64\r\n if (typeof Base64 != \"undefined\")\r\n data = Base64.encode(data);\r\n\r\n // And save it\r\n options.data = data;\r\n options.method = \"post\";\r\n options.url += \"&in=cjson\";\r\n }\r\n\r\n var request = new Librarian.Request.JSON(options);\r\n request.send();\r\n\r\n return request;\r\n },\r\n getFilesByMethod: function (count, onSuccess, onFailure, method, type, outputType, parameters, useGetSendData, customSendData) {\r\n if (count <= 0)\r\n return null;\r\n if (typeof onSuccess != \"function\")\r\n return null;\r\n if ((typeof outputType == \"undefined\") || (outputType == null))\r\n outputType = \"dgrid\";\r\n if (typeof useGetSendData != \"boolean\")\r\n useGetSendData = true;\r\n\r\n var url = Librarian.path.getMethodUrl(method) + \"&max=\" + count + \"&out=\" + outputType + \"&in=ujson\";\r\n\r\n // If we were given parameters\r\n if ((typeof parameters == \"object\") && (parameters != null)) {\r\n // Add each one\r\n for (var key in parameters) {\r\n if (!parameters.hasOwnProperty(key))\r\n continue;\r\n\r\n url += '&' + key + '=' + encodeURIComponent(parameters[key]);\r\n }\r\n }\r\n\r\n var view = '';\r\n if (Librarian.search.viewNameByType && Librarian.search.viewNameByType[type])\r\n view = \"&vname=\" + Librarian.search.viewNameByType[type];\r\n\r\n if (Librarian.elasticSearch.enableContent) {\r\n url += \"&usees=1\";\r\n\r\n if (Librarian.elasticSearch.includeView)\r\n url += view;\r\n }\r\n else\r\n url += view;\r\n\r\n var options = {\r\n url: url,\r\n onSuccess: onSuccess,\r\n onFailure: function(error) {\r\n Librarian.Utils.onFailure(error);\r\n if (typeof onFailure == \"function\")\r\n onFailure();\r\n }\r\n };\r\n\r\n // If we have a custom data function\r\n if (useGetSendData && (typeof Library != \"undefined\") && ((typeof Library.getSendData == \"function\") || (typeof customSendData == \"function\"))) {\r\n var data = {};\r\n if (type == Librarian.Search.outputTypes.FILES)\r\n data.cattype = Librarian.catType.file;\r\n else if (type == Librarian.Search.outputTypes.GROUPS)\r\n data.cattype = Librarian.catType.globalFavorite;\r\n\r\n // Get the data to send and check that it is valid\r\n if ((typeof customSendData == \"function\")) {\r\n data = customSendData(data, options.url);\r\n } else {\r\n data = Library.getSendData(data, options.url);\r\n }\r\n\r\n if (data) {\r\n // If the given data is an object, stringify it\r\n if (typeof data.data == \"object\")\r\n data.data = JSON.stringify(data.data);\r\n // Convert the data to Base64\r\n if (typeof Base64 != \"undefined\")\r\n data.data = Base64.encode(data.data);\r\n\r\n // And save it\r\n options.data = data.data;\r\n options.method = \"post\";\r\n if (data.url)\r\n options.url = data.url;\r\n }\r\n }\r\n\r\n var request = new Librarian.Request.JSON(options);\r\n request.send();\r\n\r\n return request;\r\n },\r\n getNthBusinessDay: function (n, startDate) {\r\n if ((typeof n != \"number\") || (n <= 0))\r\n return null;\r\n\r\n if (!startDate)\r\n startDate = new Date();\r\n\r\n var targetDate = new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate());\r\n\r\n while (n > 0) {\r\n targetDate.setDate(targetDate.getDate() + 1);\r\n\r\n // Skip Sunday(0) and Saturday(6)\r\n var dayOfWeek = targetDate.getDay();\r\n if (dayOfWeek == 0 || dayOfWeek == 6)\r\n continue;\r\n\r\n // Skip holidays\r\n if (Librarian.Utils.isHoliday(targetDate))\r\n continue;\r\n\r\n // Otherwise, count this as a business day\r\n n--;\r\n }\r\n\r\n return targetDate;\r\n },\r\n getTopics: function(count, onSuccess, onFailure) {\r\n var url = Librarian.path.getCollaborationUrl(\"gettopics\") + \"&max=\" + count + \"&out=cjson\" + \"&in=cjson\",\r\n options = {\r\n url: url,\r\n onSuccess: onSuccess,\r\n onFailure: function(error) {\r\n Librarian.Utils.onFailure(error);\r\n if (typeof onFailure == \"function\")\r\n onFailure();\r\n }\r\n };\r\n\r\n var request = new Librarian.Request.JSON(options);\r\n request.send();\r\n },\r\n isHoliday: function (date) {\r\n var holidays = Librarian.calendar.holidays;\r\n if (!holidays)\r\n return false;\r\n\r\n for (var i = 0; i < holidays.length; i++) {\r\n var holiday = new Date(holidays[i]);\r\n\r\n if (date.getMonth() == holiday.getMonth() &&\r\n date.getDate() == holiday.getDate() &&\r\n (date.getFullYear() == holiday.getFullYear() ||\r\n holiday.getFullYear() <= 2000)) // Holidays with same date every year\r\n return true;\r\n }\r\n\r\n return false;\r\n },\r\n getFavoriteInstanceCount: function (presId, onComplete) {\r\n var request = new Librarian.Request({\r\n url: Librarian.path.getMethodUrl(\"getvpic\") + \"&pid=\" + presId + \"&out=ujson\",\r\n onSuccess: onComplete,\r\n onFailure: Librarian.Utils.onFailure\r\n });\r\n request.send();\r\n return request;\r\n },\r\n reloadThumbnails: function () {\r\n // Reload the tilelist thumbnails\r\n if ((typeof tileList != \"undefined\") && (tileList != null))\r\n tileList.reloadThumbnails();\r\n if ((typeof tileList2 != \"undefined\") && (tileList2 != null))\r\n tileList2.reloadThumbnails();\r\n if ((typeof sectionList != \"undefined\") && (sectionList != null))\r\n sectionList.reloadThumbnails();\r\n if (Librarian.cartWindow && Librarian.cartWindow.cartList != null)\r\n Librarian.cartWindow.cartList.reloadThumbnails();\r\n },\r\n updateAllCheckboxes: function () {\r\n if ((typeof tileList != \"undefined\") && (tileList != null))\r\n Librarian.Utils.updateCheckboxes(tileList.getItemStyle());\r\n if ((typeof fileList != \"undefined\") && (fileList != null))\r\n Librarian.ListView.updateCartCheckBoxes.bind(fileList)();\r\n if (typeof Library.updateCheckboxes == \"function\")\r\n Library.updateCheckboxes();\r\n if (Librarian.SearchResult != null && Librarian.SearchResult.resultViews != null) {\r\n Array.each(Librarian.SearchResult.resultViews, function (view) {\r\n view.updateCartCheckBoxes();\r\n });\r\n }\r\n },\r\n updateCheckboxes: function (styleName) {\r\n var elements = $$('.' + styleName),\r\n fromCart = styleName.contains(\"-cart\");\r\n\r\n for (var i = 0; i < elements.length; i++) {\r\n if ((elements[i].enabled == false) || !elements[i].tileItem.cartCheckEl || (elements[i].tileItem.cartCheckEl.get(\"enabled\") == \"false\") || !Librarian.userCart)\r\n continue;\r\n\r\n if (Librarian.userCart.isInCart(elements[i].tileItem.data, !fromCart)) {\r\n elements[i].tileItem.checked = true;\r\n\r\n if (Librarian.tileList.enableHoverMenu)\r\n elements[i].tileItem.cartCheckEl.show();\r\n else\r\n elements[i].tileItem.cartCheckEl.set(\"checked\", true);\r\n }\r\n else {\r\n elements[i].tileItem.checked = false;\r\n\r\n if (Librarian.tileList.enableHoverMenu)\r\n elements[i].tileItem.cartCheckEl.hide();\r\n else\r\n elements[i].tileItem.cartCheckEl.set(\"checked\", false);\r\n }\r\n }\r\n },\r\n setButtonState: function (itemEl, wrapperEl, disable) {\r\n if (!itemEl)\r\n return;\r\n\r\n if (disable) {\r\n if (itemEl.src) {\r\n // This item is already grayed out.\r\n if (itemEl.src.contains(\"_gray\"))\r\n return;\r\n // There are no \"checked gray\" images\r\n if (itemEl.src.contains(\"_checked\"))\r\n return;\r\n\r\n // Get the index of the last . so we can get the extension\r\n var extIndex = itemEl.src.lastIndexOf('.');\r\n // Get the extension from the src\r\n var ext = itemEl.src.substring(extIndex + 1, itemEl.src.length);\r\n\r\n // If we don't have a stored original src, store the current src.\r\n if ((itemEl.src_orig == undefined) || (itemEl.src_orig == null))\r\n itemEl.src_orig = itemEl.src;\r\n\r\n // Change the src to the gray image\r\n itemEl.src = itemEl.src.substring(0, extIndex) + \"_gray.\" + ext;\r\n }\r\n\r\n itemEl.addClass(\"disabled\");\r\n if (wrapperEl)\r\n wrapperEl.addClass(\"disabled\");\r\n }\r\n else {\r\n // Only switch everything back if there is an original src to switch back to\r\n if ((itemEl.src_orig != undefined) && (itemEl.src_orig != null))\r\n itemEl.src = itemEl.src_orig;\r\n\r\n itemEl.removeClass(\"disabled\");\r\n if (wrapperEl)\r\n wrapperEl.removeClass(\"disabled\");\r\n }\r\n },\r\n setButtonDisabled: function (buttonEl, disable) {\r\n Librarian.Utils.setElementDisabled(buttonEl, disable);\r\n },\r\n setElementDisabled: function (itemEl, disable, recursive) {\r\n if (!itemEl)\r\n return;\r\n if ((typeof disable == \"undefined\") || (disable == null))\r\n disable = true;\r\n\r\n itemEl.disabled = disable;\r\n\r\n if (disable)\r\n itemEl.addClass(\"disabled\");\r\n else\r\n itemEl.removeClass(\"disabled\");\r\n\r\n if (recursive) {\r\n var children = itemEl.getElements(\"*\");\r\n children.forEach(function (childEl) {\r\n Librarian.Utils.setElementDisabled(childEl, disable);\r\n });\r\n }\r\n },\r\n setTreeFileDisplay: function (show) {\r\n Librarian.Utils.runOnAllTrees((show ? \"show\" : \"hide\") + \"Files\");\r\n },\r\n unselectAllTrees: function () {\r\n Librarian.Utils.runOnAllTrees(\"unselect\");\r\n Librarian.Utils.unselectAllWorkspaces();\r\n },\r\n runOnAllTrees: function (funcName) {\r\n var trees = Librarian.treeViews;\r\n for (var treeName in trees) {\r\n if (!trees.hasOwnProperty(treeName))\r\n continue;\r\n\r\n var tree = trees[treeName];\r\n if (tree != null) {\r\n if (typeof funcName == \"function\")\r\n funcName(tree);\r\n else if (typeof funcName == \"string\")\r\n tree[funcName]();\r\n }\r\n }\r\n },\r\n unselectAllWorkspaces: function () {\r\n $$(\".request-tree-label-selected\").removeClass(\"request-tree-label-selected\");\r\n $$(\".upload-tree-label-selected\").removeClass(\"upload-tree-label-selected\");\r\n $$(\".proc-tree-label-selected\").removeClass(\"proc-tree-label-selected\");\r\n $$(\".myFilesLinkLabel-tree-label-selected\").removeClass(\"myFilesLinkLabel-tree-label-selected\");\r\n $$(\".bookmark-tree-label-selected\").removeClass(\"bookmark-tree-label-selected\");\r\n },\r\n // Load the category given in the path\r\n loadCategoryByPath: function (path) {\r\n // Try selecting the path in the tree, if that fails, loads the category\r\n Librarian.Utils.selectTreeNodeByPath(treeView, path, null, true, function () {\r\n Librarian.Utils.getCatFromPath(path, function (data) {\r\n Library.loadItemView(Object.toLowerKeys(data), data.name, data.description, data.type, tileList);\r\n });\r\n });\r\n },\r\n // Should be called load folder by name, doesn't accept a path\r\n loadFolderByPath: function (namedPath, catType, tree) {\r\n if ((typeof catType == \"undefined\") || (catType == null))\r\n catType = Librarian.catType.file;\r\n if ((typeof tree == \"undefined\") || (tree == null)) {\r\n if (typeof Library.getTreeByType == \"function\")\r\n tree = Library.getTreeByType(catType);\r\n else\r\n tree = treeView;\r\n }\r\n\r\n Librarian.Utils.getPath({ path: namedPath, type: (catType || Librarian.catType.file) }, function (path) {\r\n if (path == null) {\r\n Librarian.Utils.error(\"Could not find path in library:\\n\" + namedPath);\r\n return;\r\n }\r\n\r\n Librarian.Utils.selectTreeNodeByPath(tree, path);\r\n });\r\n },\r\n selectTreeNodeByPath: function (tree, path, start, useName, onFailure) {\r\n if (!tree)\r\n return;\r\n if ((typeof path == \"undefined\") || (path == null) || (path.length == 0))\r\n return;\r\n if ((typeof start == \"undefined\") || (start == null))\r\n start = true;\r\n if ((typeof useName == \"undefined\") || (useName == null))\r\n useName = false;\r\n\r\n Librarian.treeView.hasSelectionFinished = false;\r\n\r\n // If the tree isn't loaded\r\n if (!tree.loaded) {\r\n tree.recurseData = {\r\n path: path,\r\n start: start,\r\n useName: useName\r\n };\r\n\r\n // Wait until it IS loaded\r\n Librarian.Utils.runFunctionOnTreeEvent(tree, \"load\", function () {\r\n // If there is a root is it hasn't loaded\r\n if (this.root && !this.root.isLoaded()) {\r\n // Wait until IT is loaded\r\n Librarian.Utils.runFunctionOnTreeEvent(this.root, \"load\", function () {\r\n // And then finally run this function\r\n Librarian.Utils.selectTreeNodeByPath(this.tree, this.tree.recurseData.path, this.tree.recurseData.start, this.tree.recurseData.useName, onFailure);\r\n });\r\n }\r\n // Otherwise, try running the function now\r\n else\r\n Librarian.Utils.selectTreeNodeByPath(this, this.recurseData.path, this.recurseData.start, this.recurseData.useName, onFailure);\r\n });\r\n return;\r\n }\r\n else if (!tree.root.isOpen())\r\n tree.root.toggle(true);\r\n\r\n // Split the string into a list\r\n if (typeof path == \"string\")\r\n path = path.split('/');\r\n\r\n for (var i = 0; i < path.length; i++) {\r\n // Get the selected node in the tree\r\n var parent = tree.getSelected();\r\n // If there is no selected node, try the root\r\n if (!parent || start)\r\n parent = tree.root;\r\n // In deep links the \"parent\" isn't really a node so we need to get the first real node\r\n if (!parent.data)\r\n parent = parent.children[0];\r\n\r\n var parentData = null,\r\n // Default to assuming this is a file\r\n treeData = \"fileid\";\r\n // But if we're told to use names, check that instead\r\n if (useName)\r\n parentData = parent.property.name;\r\n else {\r\n // If it starts with a C, though, it's a category\r\n if (path[i].startsWith(\"C\")) {\r\n // Trim off the C\r\n path[i] = path[i].substring(1);\r\n // And store the catid property as the key\r\n treeData = \"catid\";\r\n }\r\n // If it starts with a E, though, it's an event\r\n else if (path[i].startsWith(\"E\")) {\r\n // Trim off the C\r\n path[i] = path[i].substring(1);\r\n // And store the eventid property as the key\r\n treeData = \"eventid\";\r\n }\r\n\r\n parentData = parent.data[treeData];\r\n }\r\n\r\n // Check this node to see if it's the one we're looking for\r\n if (parentData == path[i]) {\r\n if (parent != tree.getSelected()) {\r\n // If this isn't the last item in the path\r\n if (i != (path.length - 1)) {\r\n // Chop this item off the beginning of the path list\r\n parent.path = path.slice(i + 1);\r\n parent.useName = useName;\r\n // Set open to false so that we force it open\r\n parent.state.open = false;\r\n Librarian.Utils.handleTreeToggleAndLoad(parent, function () {\r\n this.tree.select(this);\r\n\r\n // Once the node is loaded and open, keep searching if there\r\n // are things left to search for\r\n if (this.path.length > 0)\r\n Librarian.Utils.selectTreeNodeByPath(this.tree, this.path, false, this.useName, onFailure);\r\n });\r\n\r\n // Don't continue. Regardless of whether the parent is already loaded or open\r\n // the inner function will be called, causing a recursive call to this function.\r\n // If we continue, we will end up with two parallel recursive loading branches\r\n return;\r\n }\r\n else {\r\n // Only let the PageHeader load if this is the last item in the path\r\n Librarian.treeView.hasSelectionFinished = true;\r\n tree.select(parent);\r\n }\r\n }\r\n\r\n // If this is the end of the path,\r\n // return here so the \"Cannot find this item\" message isn't displayed\r\n if (i == (path.length - 1))\r\n return;\r\n else\r\n continue;\r\n }\r\n\r\n // Get the children for this node\r\n var children = parent.getChildren();\r\n // If there aren't any, bail\r\n if (!children)\r\n return;\r\n\r\n // Check every child\r\n for (var j = 0; j < children.length; j++) {\r\n var childData = null;\r\n if (useName)\r\n childData = children[j].property.name;\r\n else\r\n childData = children[j].data[treeData];\r\n\r\n // If the id matches\r\n if (childData == path[i]) {\r\n // Only let the PageHeader load if this is the last item in the path\r\n if (i == (path.length - 1))\r\n Librarian.treeView.hasSelectionFinished = true;\r\n\r\n // If we're checking file data and this is actually a file, select it\r\n if ((treeData != \"catid\") && (typeof children[j][treeData] != \"undefined\")) {\r\n tree.select(children[j]);\r\n\r\n // If this is the end of the path,\r\n // return here so the \"Cannot find this item\" message isn't displayed\r\n if (i == (path.length - 1))\r\n return;\r\n else\r\n break;\r\n }\r\n\r\n // Chop this item off the beginning of the path list\r\n children[j].path = path.slice(i + 1);\r\n children[j].useName = useName;\r\n // Set open to false so that we force it open\r\n children[j].state.open = false;\r\n Librarian.Utils.handleTreeToggleAndLoad(children[j], function () {\r\n this.tree.select(this);\r\n\r\n // Once the node is loaded and open, run keep searching if there\r\n // are things left to search for\r\n if (this.path.length > 0)\r\n Librarian.Utils.selectTreeNodeByPath(this.tree, this.path, false, this.useName, onFailure);\r\n });\r\n\r\n // Don't continue. Regardless of whether the node is already loaded or open\r\n // the inner function will be called, causing a recursive call to this function.\r\n // If we continue, we will end up with two parallel recursive loading branches\r\n return;\r\n }\r\n }\r\n }\r\n\r\n // Selection has finished, we just didn't find anything\r\n Librarian.treeView.hasSelectionFinished = true;\r\n // If we have gotten here, the thing we're looking for doesn't exist in the tree\r\n if (typeof onFailure == \"function\")\r\n onFailure();\r\n else\r\n Librarian.Utils.error(Librarian.Lang.getString(\"cantfindintree\"));\r\n tree.unselect();\r\n\r\n // Load the home page as the default if we can't find this thing in the tree\r\n if (typeof Library.showHomePage == \"function\")\r\n Library.showHomePage();\r\n else if (typeof showHomePage == \"function\")\r\n showHomePage();\r\n },\r\n handleTreeToggleAndLoad: function (node, fn) {\r\n if (!node)\r\n return;\r\n if (typeof fn != \"function\")\r\n return;\r\n\r\n // If the node isn't loaded, load it, if it's a category\r\n else if (!node.isLoaded() && node.data && (node.data.fileid == null)) {\r\n Librarian.Utils.runFunctionOnTreeEvent(node, \"load\", function () {\r\n // Now that it's loaded, open it\r\n Librarian.Utils.handleTreeToggleAndLoad(this, fn);\r\n });\r\n\r\n if (!node.$loading) {\r\n node.load();\r\n }\r\n }\r\n // If it is loaded, just make sure it's opened (if it can be)\r\n else if (!node.isOpen() && node.hasChildren()) {\r\n Librarian.Utils.runFunctionOnTreeEvent(node, \"toggle\", fn);\r\n node.toggle(true);\r\n }\r\n else\r\n fn.bind(node)();\r\n },\r\n runFunctionOnTreeEvent: function (node, eventName, fn) {\r\n if (!node)\r\n return;\r\n if (typeof eventName != \"string\")\r\n return;\r\n if (typeof fn != \"function\")\r\n return;\r\n\r\n function onEvent() {\r\n node.removeEvent(eventName, onEvent);\r\n fn.bind(node)();\r\n }\r\n\r\n node.addEvent(eventName, onEvent);\r\n },\r\n setSelectValue: function (selectEl, values, predicate) {\r\n if ((typeof selectEl == \"undefined\") || (selectEl == null))\r\n return -1;\r\n if ((typeof values == \"undefined\") || (values == null))\r\n return -1;\r\n\r\n // Make sure values is an array so we can support multi-select selects\r\n if (!(values instanceof Array))\r\n values = [values];\r\n\r\n var found = false;\r\n // De-select every option before checking\r\n for (var i = 0; i < selectEl.options.length; i++) {\r\n selectEl.options[i].selected = false;\r\n\r\n // Check each value, if this isn't a multi-select it will return after the first found\r\n for (var j = values.length; j--;) {\r\n var value = values[j];\r\n if ((selectEl.options[i].value == value) && ((typeof predicate != \"function\") || predicate(selectEl.options[i]))) {\r\n if (!selectEl.multiple) {\r\n selectEl.selectedIndex = i;\r\n return i;\r\n }\r\n\r\n selectEl.options[i].selected = true;\r\n found = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return found || -1;\r\n },\r\n getSelectedItem: function (selectEl) {\r\n if ((typeof selectEl == \"undefined\") || (selectEl == null))\r\n return null;\r\n\r\n var selectedIndex = selectEl.selectedIndex;\r\n if ((selectedIndex < 0) || (selectedIndex >= selectEl.options.length))\r\n return null;\r\n\r\n return selectEl.options[selectedIndex];\r\n },\r\n getSelectedValue: function (selectEl) {\r\n if (!selectEl)\r\n return null;\r\n\r\n var multiple = selectEl.get(\"multiple\");\r\n if (multiple) {\r\n var values = [],\r\n options = selectEl.options;\r\n for (var i = options.length; i--;) {\r\n if (options[i].selected)\r\n values.push(options[i].value);\r\n }\r\n return values;\r\n }\r\n\r\n var itemEl = Librarian.Utils.getSelectedItem(selectEl);\r\n return itemEl ? itemEl.value : null;\r\n },\r\n setElementValue: function (elementEl, value) {\r\n if ((typeof elementEl == \"undefined\") || (elementEl == null))\r\n return;\r\n if ((typeof value == \"undefined\") || (value == null))\r\n return;\r\n\r\n if (elementEl.tagName == \"INPUT\") {\r\n if ((elementEl.type == \"checkbox\") || (elementEl.type == \"radio\")) {\r\n elementEl.set(\"checked\", (value === true) || ((value + '') === \"true\"));\r\n }\r\n else\r\n elementEl.value = value;\r\n }\r\n else if (elementEl.tagName == \"SELECT\")\r\n Librarian.Utils.setSelectValue(elementEl, value);\r\n else if (elementEl.tagName == \"TEXTAREA\") {\r\n // Make sure both of these are set so all browsers will recognize it\r\n elementEl.innerText = value;\r\n elementEl.value = value;\r\n }\r\n else\r\n elementEl.set(\"text\", value);\r\n },\r\n getElementValue: function (elementEl, getCheckValue, returnNullIfUncheck) {\r\n if ((typeof elementEl == \"undefined\") || (elementEl == null))\r\n return null;\r\n\r\n // Make sure IE8 isn't being stupid\r\n elementEl = $(elementEl);\r\n\r\n if (elementEl.tagName == \"INPUT\") {\r\n if (!getCheckValue && ((elementEl.type == \"checkbox\") || (elementEl.type == \"radio\"))) {\r\n return elementEl.get(\"checked\");\r\n }\r\n else {\r\n if (returnNullIfUncheck && (elementEl.type == \"checkbox\") || (elementEl.type == \"radio\")) {\r\n var isChecked = elementEl.get(\"checked\");\r\n return isChecked ? elementEl.value : null;\r\n }\r\n else {\r\n return elementEl.value;\r\n } \r\n }\r\n \r\n }\r\n else if (elementEl.tagName == \"SELECT\")\r\n return Librarian.Utils.getSelectedValue(elementEl);\r\n else if (elementEl.tagName == \"TEXTAREA\")\r\n return elementEl.value || elementEl.innerText;\r\n\r\n return elementEl.get(\"text\");\r\n },\r\n validateInputPattern: function(inputEl, ignoreEmpty) {\r\n var value = inputEl.value;\r\n if (!value && ignoreEmpty)\r\n return true;\r\n\r\n var pattern = inputEl.pattern;\r\n if (!pattern)\r\n return true;\r\n\r\n var regex = new RegExp(pattern);\r\n\r\n return regex.test(value);\r\n },\r\n fillSelect: function (selectEl, options, allowEmpty, clearFirst) {\r\n if (!selectEl)\r\n return;\r\n if ((typeof options == \"undefined\") || (options == null))\r\n return;\r\n if ((typeof allowEmpty == \"undefined\") || (allowEmpty == null))\r\n allowEmpty = false;\r\n if ((typeof clearFirst == \"undefined\") || (clearFirst == null))\r\n clearFirst = false;\r\n\r\n if (clearFirst) {\r\n selectEl.empty();\r\n selectEl.options.length = 0;\r\n }\r\n\r\n for (var i = 0; i < options.length; i++) {\r\n var name,\r\n value,\r\n disabled = false;\r\n\r\n if (typeOf(options[i]) == \"array\") {\r\n name = (options[i][0] || '').trim();\r\n value = (options[i][1] || '').trim();\r\n }\r\n else if (typeOf(options[i]) == \"object\") {\r\n name = options[i].name;\r\n value = options[i].id || name;\r\n disabled = !!options[i].disabled;\r\n }\r\n else {\r\n name = options[i];\r\n value = options[i];\r\n }\r\n\r\n if (!allowEmpty && (name.length == 0) && (value.length == 0))\r\n continue;\r\n\r\n var optionEl = new Option(name, value);\r\n if (disabled)\r\n optionEl.disabled = disabled;\r\n selectEl.options.add(optionEl);\r\n }\r\n },\r\n limitValueLength: function (length) {\r\n if (this.value.length > length) {\r\n Librarian.Utils.error(Librarian.Lang.getArgString(\"max_length\", [length]));\r\n // Cancel keyhit\r\n this.value = this.value.substring(0, length);\r\n }\r\n },\r\n setValueLengthLabel: function (countLimit, countContainerId) {\r\n if ((typeof countLimit != \"number\") || (typeof countContainerId != \"string\"))\r\n return;\r\n\r\n var count = (this.value || '').length,\r\n remaining = countLimit - count;\r\n\r\n Librarian.Utils.setElementValue($(countContainerId), remaining);\r\n },\r\n createLabeledInput: function (parentEl, id, type, name, value, label, checked, className, data, onClick, labelFunc) {\r\n if (!parentEl)\r\n return null;\r\n\r\n var contEl = new Element(\"div\", {\r\n \"class\": className + \"-container\"\r\n }).injectInside(parentEl);\r\n\r\n var labelEl = new Element(\"label\", {\r\n \"class\": className + \"-label\",\r\n \"for\": id\r\n }).injectInside(contEl);\r\n\r\n var childEl = new Element(\"input[type=\" + type + \"]\", {\r\n \"id\": id,\r\n \"class\": className,\r\n \"name\": name,\r\n \"value\": value,\r\n \"checked\": (checked ? \"checked\" : '')\r\n }).injectInside(labelEl);\r\n\r\n if (typeof onClick == \"function\")\r\n childEl.addOnClick(onClick, childEl);\r\n\r\n // Set extra data if there is any\r\n if (data) {\r\n for (var key in data) {\r\n if (data.hasOwnProperty(key))\r\n childEl.set(key, data[key]);\r\n }\r\n }\r\n\r\n var labelNodeEl;\r\n if (labelFunc) {\r\n labelNodeEl = labelFunc(name, value, label);\r\n }\r\n else {\r\n labelNodeEl = document.createTextNode(label);\r\n }\r\n\r\n labelEl.appendChild(labelNodeEl);\r\n\r\n return contEl;\r\n },\r\n clearSearchRequests: function () {\r\n if (Librarian.contentLoader && Librarian.contentLoader.lastRequest) {\r\n Librarian.contentLoader.lastRequest.cancel();\r\n Librarian.contentLoader.lastRequest = null;\r\n }\r\n\r\n if (Librarian.lastSearch) {\r\n Librarian.lastSearch.cancel();\r\n Librarian.lastSearch.destroy();\r\n Librarian.lastSearch = null;\r\n }\r\n },\r\n clearRequests: function () {\r\n if (Librarian.myProcView != null) {\r\n Librarian.myProcView.enabled = false;\r\n\r\n if (Librarian.myProcView.request) {\r\n Librarian.myProcView.request.cancel();\r\n Librarian.myProcView.request = null;\r\n }\r\n\r\n // Don't stop this request, but stop it from reloading the table when it finishes.\r\n if (Librarian.myProcView.deleteRequest)\r\n Librarian.myProcView.deleteRequest.onSuccess = function () { };\r\n }\r\n\r\n if (Librarian.myInProgProcView != null) {\r\n Librarian.myInProgProcView.enabled = false;\r\n\r\n if (Librarian.myInProgProcView.request) {\r\n Librarian.myInProgProcView.request.cancel();\r\n Librarian.myInProgProcView.request = null;\r\n }\r\n }\r\n },\r\n clearFocus: function () {\r\n Librarian.Utils.runOnAllTrees(function (tree) {\r\n if (tree != null && tree.keyNav)\r\n tree.keyNav.detach();\r\n });\r\n },\r\n checkString: function (string) {\r\n for (var i = 0; i < string.length; i++) {\r\n if (Librarian.path.badChars.contains(string.charAt(i)))\r\n return false;\r\n }\r\n\r\n return true;\r\n },\r\n scrubString: function (string, replacement) {\r\n replacement = replacement || '_';\r\n string = string || '';\r\n\r\n for (var i = 0; i < string.length; i++) {\r\n if (Librarian.path.badChars.contains(string.charAt(i)))\r\n string = string.setCharAt(i, replacement);\r\n }\r\n\r\n return string;\r\n },\r\n undecorateFileName: function (name) {\r\n if (!name || !name.contains('@'))\r\n return name;\r\n\r\n // Get the index of the @\r\n var atIndex = name.indexOf('@'),\r\n // Find the _ that separates the e-mail from the file name\r\n underscoreIndex = name.indexOf('_', atIndex);\r\n // If it exists, chop everything up to that point\r\n if (underscoreIndex >= 0)\r\n name = name.substring(underscoreIndex + 1, name.length);\r\n\r\n return name;\r\n },\r\n loadCustomXML: function (path) {\r\n var xhttp;\r\n\r\n if (window.XMLHttpRequest)\r\n xhttp = new XMLHttpRequest();\r\n else\r\n xhttp = new ActiveXObject(\"Microsoft.XMLHTTP\");\r\n\r\n xhttp.open(\"GET\", path, false);\r\n xhttp.send();\r\n\r\n if (xhttp.status != 200)\r\n return null;\r\n\r\n var xml = xhttp.responseXML;\r\n\r\n xhttp = null;\r\n\r\n // CLN-840 - Workaround for IE10 and higher no longer having direct XPath support\r\n // This forces the use of the ActiveX XML DOM which still supports the needed methods\r\n // CLN-1470 - Workaround for Chrome having the same issue as newer IE\r\n if ((Browser.ie && (Browser.version > 9)))\r\n xml = Librarian.Utils.getXMLDoc(Librarian.Utils.getXMLText(xml));\r\n\r\n return xml;\r\n },\r\n getXMLDoc: function (xmlText) {\r\n var doc;\r\n\r\n if (window.DOMParser && !Browser.ie) {\r\n var parser = new DOMParser();\r\n doc = parser.parseFromString(xmlText, \"text/xml\");\r\n }\r\n else {\r\n doc = new ActiveXObject(\"Microsoft.XMLDOM\");\r\n doc.async = \"false\";\r\n doc.preserveWhiteSpace = true;\r\n doc.loadXML(xmlText);\r\n }\r\n return doc;\r\n },\r\n createXMLDoc: function (rootName) {\r\n return Librarian.Utils.getXMLDoc('<' + rootName + \">');\r\n },\r\n getXMLText: function (xmlDoc) {\r\n var xml = xmlDoc.xml;\r\n\r\n // If there is no \"xml\" element, we have to serialize it ourselves\r\n if (xml == undefined) {\r\n // Make sure there IS a serializer.\r\n if (XMLSerializer) {\r\n // And get the xml string from the document\r\n var serializer = new XMLSerializer();\r\n xml = serializer.serializeToString(xmlDoc);\r\n\r\n serializer = null;\r\n }\r\n }\r\n\r\n return xml;\r\n },\r\n getXMLNodeText: function (nodeEl) {\r\n if (!nodeEl)\r\n return null;\r\n\r\n var text = nodeEl.text;\r\n if (typeof text != \"string\")\r\n text = nodeEl.textContent;\r\n if (typeof text != \"string\") {\r\n if (!nodeEl.get)\r\n return null;\r\n text = nodeEl.get(\"text\");\r\n }\r\n\r\n return text;\r\n },\r\n setXMLNodeText: function (nodeEl, text) {\r\n if (!nodeEl)\r\n return;\r\n\r\n if (!nodeEl.text) {\r\n if (nodeEl.set)\r\n nodeEl.set(\"text\", text);\r\n }\r\n else\r\n nodeEl.text = text;\r\n },\r\n getAttributeXMLNode: function (xmlDoc, attributeType, name, value) {\r\n var attribEl = xmlDoc.createElement(attributeType),\r\n nameEl = attribEl.appendChild(xmlDoc.createElement(\"Name\")),\r\n valueEl = attribEl.appendChild(xmlDoc.createElement(\"Value\"));\r\n\r\n nameEl.appendChild(xmlDoc.createTextNode(name));\r\n valueEl.appendChild(xmlDoc.createTextNode(value));\r\n\r\n return attribEl;\r\n },\r\n cloneXMLNode: function (xmlDoc, nodeEl, value) {\r\n var clonedEl = xmlDoc.createElement(nodeEl.nodeName);\r\n if ((typeof value != \"undefined\") && (value != null))\r\n clonedEl.appendChild(xmlDoc.createTextNode(value));\r\n\r\n for (var k = nodeEl.attributes.length; k--;)\r\n clonedEl.setAttribute(nodeEl.attributes[k].name, nodeEl.attributes[k].text || nodeEl.attributes[k].value);\r\n\r\n for (var l = nodeEl.childNodes.length; l--;) {\r\n if (nodeEl.childNodes[l].nodeName == \"#text\") {\r\n var nodeText = Librarian.Utils.getXMLNodeText(nodeEl.childNodes[l]);\r\n if (nodeText != null)\r\n clonedEl.appendChild(xmlDoc.createTextNode(nodeText));\r\n }\r\n else\r\n clonedEl.appendChild(Librarian.Utils.cloneXMLNode(xmlDoc, nodeEl.childNodes[l]));\r\n }\r\n\r\n return clonedEl;\r\n },\r\n cloneXMLDoc: function (xmlDoc) {\r\n var xml = Librarian.Utils.getXMLText(xmlDoc),\r\n newXMLDoc;\r\n\r\n if (window.DOMParser && !Browser.ie) {\r\n var parser = new DOMParser();\r\n newXMLDoc = parser.parseFromString(xml, \"text/xml\");\r\n\r\n parser = null;\r\n }\r\n // Internet Explorer\r\n else {\r\n newXMLDoc = new ActiveXObject(\"Microsoft.XMLDOM\");\r\n newXMLDoc.async = \"false\";\r\n newXMLDoc.loadXML(xml);\r\n }\r\n\r\n return newXMLDoc;\r\n },\r\n doesXMLHaveNode: function (nodeEl, nodeName) {\r\n return nodeEl.getElementsByTagName(nodeName).length > 0;\r\n },\r\n getOrAddXMLNode: function(parentEl, name) {\r\n var nodeEl = Librarian.Utils.getXMLNode(parentEl, name);\r\n if (!nodeEl)\r\n nodeEl = Librarian.Utils.addXMLNode(parentEl, name);\r\n\r\n return nodeEl;\r\n },\r\n getXMLNode: function(parentEl, name) {\r\n return parentEl.getElementsByTagName(name)[0];\r\n },\r\n addXMLNode: function(parentEl, name, value) {\r\n var xmlDoc;\r\n if (parentEl instanceof XMLDocument) {\r\n xmlDoc = parentEl;\r\n parentEl = xmlDoc.documentElement;\r\n }\r\n else\r\n xmlDoc = parentEl.getDocument();\r\n\r\n var nodeEl = xmlDoc.createElement(name);\r\n parentEl.appendChild(nodeEl);\r\n\r\n if (value != null)\r\n nodeEl.set(\"text\", value);\r\n\r\n return nodeEl;\r\n },\r\n\r\n // Adapted from https://davidwalsh.name/convert-xml-json\r\n // by David Walsh\r\n xmlToJson: function (xml) {\r\n var obj = {};\r\n\r\n if (xml.nodeType == 1) { // element\r\n if (xml.attributes.length > 0) {\r\n obj[\"_attributes\"] = {};\r\n for (var j = 0; j < xml.attributes.length; j++) {\r\n var attribute = xml.attributes.item(j);\r\n obj[\"_attributes\"][attribute.nodeName] = attribute.nodeValue;\r\n }\r\n }\r\n }\r\n else if (xml.nodeType == 3) { // text\r\n obj = xml.nodeValue;\r\n }\r\n\r\n var elements = Array.from(xml.childNodes).filter(function (node) {\r\n return node.nodeType == 1;\r\n });\r\n\r\n if (elements.length > 0) {\r\n for (var i = 0; i < elements.length; i++) {\r\n var item = elements[i],\r\n nodeName = item.nodeName;\r\n\r\n if (obj[nodeName] == null) {\r\n // First child with this name\r\n obj[nodeName] = this.xmlToJson(item);\r\n } else {\r\n // Create an array of children with the same name\r\n if (obj[nodeName].push == null) {\r\n var old = obj[nodeName];\r\n obj[nodeName] = [];\r\n obj[nodeName].push(old);\r\n }\r\n\r\n obj[nodeName].push(this.xmlToJson(item));\r\n }\r\n }\r\n }\r\n else\r\n obj = xml.textContent;\r\n\r\n return obj;\r\n },\r\n renderContactName: function (data /*, row, colmod*/) {\r\n if (data.isgroup)\r\n return data.groupname || data.name;\r\n\r\n var name = '';\r\n\r\n if (data.firstname)\r\n name = data.firstname;\r\n\r\n if (data.lastname) {\r\n if (name.length > 0)\r\n name += \" \";\r\n\r\n name += data.lastname;\r\n }\r\n\r\n return name;\r\n },\r\n getContactNameClass: function(data) {\r\n if (data.isgroup)\r\n return \"group-name\";\r\n else\r\n return \"contact-name\";\r\n },\r\n isValidEmailAddress: function(email) {\r\n // text@text.text\r\n var regex = /[^<>()\\s]+@[^<>()\\s]+\\.[^<>()\\s]+/;\r\n\r\n return regex.test(email);\r\n },\r\n getLocalTimezoneName: function () {\r\n var dateString = new Date().toString();\r\n\r\n // Parse the timezone from the end of the date string\r\n // This works for Chrome and Firefox, but not IE\r\n var matches = /\\((.*)\\)/.exec(dateString);\r\n if (matches)\r\n return matches[1];\r\n\r\n return \"\";\r\n },\r\n getUTCDateValue: function (dateString, format) {\r\n var date = Librarian.Utils.extractDateFromString(dateString);\r\n if (!date || isNaN(date) || (date == \"Invalid Date\"))\r\n return null;\r\n\r\n date.increment(\"hour\", -date.getGMTOffset().toInt() / 100);\r\n\r\n return Librarian.Utils.getDateValue(date, format);\r\n },\r\n getDateValue: function (dateString, format) {\r\n var date = Librarian.Utils.extractDateFromString(dateString);\r\n if (typeof format != \"string\")\r\n format = \"%m/%d/%Y\";\r\n\r\n if (!date || isNaN(date) || (date == \"Invalid Date\"))\r\n date = null;\r\n else\r\n date = date.format(format);\r\n\r\n return date;\r\n },\r\n extractDateFromString: function (dateString) {\r\n if (dateString instanceof Date)\r\n return dateString;\r\n\r\n if (dateString) {\r\n // Make sure this is actually a string\r\n dateString = dateString + '';\r\n\r\n // Datestring cannot be parsed correctly if it uses \".+\" instead of \"+\"\r\n dateString = dateString.replace(\".+\", \"+\");\r\n\r\n if (dateString.contains(\"Date(\")) {\r\n var end = dateString.indexOf('-');\r\n if (end < 0)\r\n end = dateString.indexOf(')');\r\n\r\n return eval(\"new \" + dateString.slice(1, end) + \")\");\r\n }\r\n else {\r\n // Try to parse the date out as-is\r\n var date = Date.parse(dateString);\r\n // Newer browsers return a number from Date.parse\r\n // If that is the case, convert it to a date object\r\n if (typeof date == \"number\")\r\n date = new Date(date);\r\n // If that didn't work, it may be an ISO format in an older browser\r\n // The fromISO function will also use the native Date constructor parsing if the string isn't in ISO format\r\n if (isNaN(date))\r\n date = Date.fromISO(dateString);\r\n return date;\r\n }\r\n }\r\n\r\n return null;\r\n },\r\n setUpDatePicker: function (boxClass, boxId, iconId, parentId, onIconClick, options) {\r\n var picker = null;\r\n var dateFields = $$(\"input.\" + boxClass);\r\n if (dateFields.length > 0) {\r\n var defaultOptions = {\r\n timePicker: false,\r\n positionOffset: { x: 0, y: 0 },\r\n pickerClass: \"datepicker_vista\",\r\n useFadeInOut: false\r\n };\r\n\r\n picker = new Picker.Date(dateFields, Object.merge(defaultOptions, options));\r\n\r\n dateFields.each(function (el) {\r\n el.removeClass(boxClass);\r\n });\r\n\r\n var calendarIconEl = $(parentId + '_' + iconId) || $(iconId);\r\n if (calendarIconEl) {\r\n if ((typeof parentId == \"string\") && (parentId.length > 0))\r\n calendarIconEl.id = parentId + '_' + iconId;\r\n calendarIconEl.parentId = parentId;\r\n calendarIconEl.boxId = boxId;\r\n calendarIconEl.onIconClick = onIconClick;\r\n calendarIconEl.src = Librarian.path.getDefaultThemePath() + \"images/icons/calendar.gif\";\r\n calendarIconEl.addOnClick(function (e) {\r\n var evt = new Event(e);\r\n evt.stop();\r\n\r\n if (typeof this.onIconClick == \"function\")\r\n this.onIconClick();\r\n\r\n var itemEl = $(this.parentId + '_' + this.boxId) || $(this.boxId);\r\n if (itemEl && itemEl.isVisible())\r\n itemEl.focus();\r\n\r\n evt = null;\r\n });\r\n }\r\n }\r\n\r\n return picker;\r\n },\r\n setUpDatePicker2: function (boxEl, iconEl, onIconClick, options) {\r\n var defaultOptions = {\r\n timePicker: false,\r\n positionOffset: { x: 0, y: 0 },\r\n pickerClass: \"datepicker_vista\",\r\n useFadeInOut: false,\r\n blockKeydown: false,\r\n };\r\n\r\n var picker = new Picker.Date(boxEl, Object.merge(defaultOptions, options));\r\n\r\n if (iconEl) {\r\n iconEl.boxEl = boxEl;\r\n iconEl.onIconClick = onIconClick;\r\n iconEl.addOnClick(function () {\r\n if (typeof this.onIconClick == \"function\")\r\n this.onIconClick();\r\n\r\n if (this.boxEl)\r\n this.boxEl.focus();\r\n\r\n return false;\r\n });\r\n }\r\n\r\n return picker;\r\n },\r\n progressBar: function (target, width, height, colors, leftValue, totalValue, display) {\r\n var targetEl = $(target);\r\n if (!targetEl)\r\n return;\r\n\r\n // Clear out the target\r\n targetEl.empty();\r\n\r\n // Make sure these are valid boolean values\r\n display.percent = !!display.percent;\r\n display.lowerbound = !!display.lowerbound;\r\n display.upperbound = !!display.upperbound;\r\n display.leftvalue = !!display.leftvalue;\r\n display.rightvalue = !!display.rightvalue;\r\n\r\n var percent = Math.min((leftValue / totalValue), 1),\r\n leftWidth = percent * width,\r\n rightWidth = width - leftWidth,\r\n\r\n // Use a table to keep the correct layout\r\n tableEl = new Element(\"table\"),\r\n bodyEl = new Element(\"tbody\"),\r\n rowEl = new Element(\"tr\"),\r\n leftColEl = new Element(\"td\"),\r\n rightColEl = new Element(\"td\"),\r\n percentColEl;\r\n\r\n // Create the left portion and fill it, but only if it will actually take up some space\r\n if (leftWidth > 0) {\r\n leftColEl.width = leftColEl.style.width = leftWidth + \"px\";\r\n leftColEl.height = leftColEl.style.height = height + \"px\";\r\n\r\n // Make sure the color exists before trying to use it\r\n if (colors.leftBackground != undefined)\r\n leftColEl.style.backgroundColor = colors.leftBackground;\r\n\r\n rowEl.appendChild(leftColEl);\r\n }\r\n\r\n // Create the right portion and fill it, but only if it will actually take up some space\r\n if (rightWidth > 0) {\r\n rightColEl.width = rightColEl.style.width = rightWidth + \"px\";\r\n rightColEl.height = rightColEl.style.height = height + \"px\";\r\n\r\n // Make sure the color exists before trying to use it\r\n if (colors.rightBackground != undefined)\r\n rightColEl.style.backgroundColor = colors.rightBackground;\r\n\r\n rowEl.appendChild(rightColEl);\r\n }\r\n\r\n bodyEl.appendChild(rowEl);\r\n\r\n // Show the current value on the left and the remaining value on the right\r\n if (display.rightvalue || display.leftvalue) {\r\n if (display.leftvalue)\r\n leftColEl.set(\"text\", leftValue);\r\n\r\n leftColEl.align = \"center\";\r\n leftColEl.style.color = colors.leftValue;\r\n\r\n if (display.rightvalue)\r\n rightColEl.set(\"text\", totalValue - leftValue);\r\n\r\n rightColEl.align = \"center\";\r\n rightColEl.style.color = colors.rightValue;\r\n }\r\n\r\n // Show 0 on the left and the total value on the right and the percent in the middle\r\n if (display.lowerbound || display.upperbound || display.percent) {\r\n var valueTableEl = new Element(\"table\"),\r\n valueBodyEl = new Element(\"tbody\"),\r\n valueRowEl = new Element(\"tr\"),\r\n colEl = new Element(\"td\");\r\n leftColEl = new Element(\"td\");\r\n rightColEl = new Element(\"td\");\r\n percentColEl = new Element(\"td\");\r\n rowEl = new Element(\"tr\");\r\n\r\n valueTableEl.width = \"100%\";\r\n colEl.colSpan = '2';\r\n\r\n // Set up the new columns\r\n if (display.lowerbound)\r\n leftColEl.set(\"text\", 0);\r\n\r\n leftColEl.width = (.4 * width);\r\n\r\n if (display.upperbound)\r\n rightColEl.set(\"text\", totalValue);\r\n rightColEl.width = (.4 * width);\r\n rightColEl.align = \"right\";\r\n\r\n // If we're showing the percent, add that in the middle\r\n if (display.percent)\r\n percentColEl.set(\"text\", Math.ceil(percent * 100) + '%');\r\n\r\n // Always add the space for it, though, so the layout is consistent\r\n percentColEl.align = \"center\";\r\n percentColEl.width = 40;\r\n\r\n // Add it all to the table now\r\n valueRowEl.appendChild(leftColEl);\r\n valueRowEl.appendChild(percentColEl);\r\n valueRowEl.appendChild(rightColEl);\r\n valueBodyEl.appendChild(valueRowEl);\r\n valueTableEl.appendChild(valueBodyEl);\r\n colEl.appendChild(valueTableEl);\r\n rowEl.appendChild(colEl);\r\n bodyEl.appendChild(rowEl);\r\n }\r\n\r\n // Add everything to the table and add the table to the target\r\n tableEl.appendChild(bodyEl);\r\n targetEl.appendChild(tableEl);\r\n },\r\n prepareItemData: function (data, index, parentData, count, totalIndex) {\r\n var ext = Librarian.Utils.getExtensionFromData(data);\r\n data.ext = ext;\r\n\r\n // If there is no fileid provided, default to 0\r\n if (data.fileid == undefined)\r\n data.fileid = 0;\r\n // If there is no presid provided, default to 0\r\n if (data.presid == undefined)\r\n data.presid = 0;\r\n // If there is no groupid provided, default to 0\r\n if (data.groupid == undefined)\r\n data.groupid = 0;\r\n // If there is no slideid provided, default to 0\r\n if (data.slideid == undefined)\r\n data.slideid = 0;\r\n\r\n // If there is parent data\r\n if (parentData) {\r\n // and it provides the fileid, store it.\r\n if (parentData.fileid > data.fileid)\r\n data.fileid = parentData.fileid;\r\n // and it provides the slideid, store it.\r\n if (parentData.slideid > data.slideid)\r\n data.slideid = parentData.slideid;\r\n // and it provides the groupid, store it.\r\n if (parentData.groupid > data.groupid)\r\n data.groupid = parentData.groupid;\r\n // and it provides the presid, store it.\r\n if (parentData.presid > data.presid)\r\n data.presid = parentData.presid;\r\n\r\n // Pull the file type extension out from it if the child\r\n // doesn't have this information.\r\n if (data.filetypeextension == undefined)\r\n data.filetypeextension = parentData.filetypeextension;\r\n // Pull the name out from it if the child\r\n // doesn't have a name.\r\n if (data.name == undefined)\r\n data.name = parentData.name;\r\n // If this is a group, save the group name as the name of this item\r\n if ((data.groupid > 0) && parentData.name)\r\n data.name = parentData.name;\r\n // If the child doesn't have a slidecount, pull it from\r\n // the length of the list of items.\r\n if (isNaN(data.slidecount)) {\r\n if (!isNaN(parentData.pagecount) && (parentData.pagecount > 0))\r\n data.slidecount = parentData.pagecount;\r\n else if (!isNaN(data.pagecount) && (data.pagecount > 0) && (data.presid < 0))\r\n data.slidecount = data.pagecount;\r\n // Items that are pretending to have slides should have their slidecount be 0 unless they are in a My Favorite\r\n else if ((!Librarian.extensions.hasFakeSlides(ext) || (data.presid > 0)) && !isNaN(count))\r\n data.slidecount = count;\r\n else\r\n data.slidecount = 0;\r\n }\r\n\r\n // If the parent has extra fields but the child doesn't, copy them over\r\n if (parentData.extrafields && !data.extrafields)\r\n data.extrafields = parentData.extrafields;\r\n }\r\n // If this is a child that doesn't have a slide count but does have a\r\n // PAGE count, set the slide count to the page count\r\n else if (isNaN(data.slidecount) && !isNaN(data.pagecount) && (data.pagecount > 0))\r\n data.slidecount = data.pagecount;\r\n else if (isNaN(data.slidecount) && !isNaN(count))\r\n data.slidecount = count;\r\n\r\n if (data.contenttype == Librarian.contentType.contentGroup) {\r\n // The \"slidenumber\" within a group refers to the slide number\r\n // from the source file. In order to avoid confusion, we use\r\n // an \"itemnumber\" property to define the slide number within this group.\r\n // Also, set the extension for the global here.\r\n if ((data.fileid > 0) && (data.itemnumber == null) && (typeof index == \"number\"))\r\n data.itemnumber = index + 1;\r\n if (!data.sourceext)\r\n data.sourceext = ext;\r\n data.filetypeextension = \"favg\";\r\n }\r\n else if (data.groupid > 0 && typeof data.eventcount == \"number\") {\r\n data.slidecount = data.eventcount;\r\n data.filetypeextension = \"evtg\";\r\n }\r\n // Set the extension for the virtual presentation\r\n else if (data.presid > 0) {\r\n if (!data.sourceext)\r\n data.sourceext = ext;\r\n data.filetypeextension = \"vpres\";\r\n if ((typeof data.prestype != \"number\") && (parentData != null))\r\n data.prestype = parentData.prestype;\r\n if (Librarian.Utils.isSlideShow(data)) {\r\n if (data.slidecount <= 0)\r\n data.slidecount = 1;\r\n if ((typeof data.itemnumber != \"number\") || (data.itemnumber < 0))\r\n data.itemnumber = 0;\r\n }\r\n }\r\n // Set the extension for events\r\n else if (data.eventid > 0) {\r\n data.filetypeextension = \"evt\";\r\n if (typeof totalIndex == \"number\")\r\n data.eventnumber = totalIndex + 1;\r\n if (parentData && parentData.eventgroupinfo && (parentData.eventgroupinfo.eventcount > 0))\r\n data.eventcount = parentData.eventgroupinfo.eventcount;\r\n else\r\n data.eventcount = count;\r\n }\r\n\r\n // If we aren't given a slidenumber, this is a file and we should set it to 0.\r\n if (data.slidenumber == undefined)\r\n data.slidenumber = 0;\r\n\r\n // If this is a fake slide from a file within a my favorite, set the slide number to its item number so the cart doesn't think this is a file\r\n if ((data.presid > 0) && (data.slidenumber == -1) && Librarian.extensions.hasFakeSlides(ext))\r\n data.slidenumber = data.itemnumber;\r\n },\r\n showProgressImage: function (referenceEl) {\r\n var progressEl = new Element(\"img\");\r\n progressEl.setStyles({\r\n paddingLeft: \"5px\",\r\n paddingTop: \"5px\",\r\n\r\n position: \"absolute\",\r\n zIndex: 5000\r\n });\r\n progressEl.id = \"progressImage\";\r\n\r\n progressEl.onload = function () {\r\n var parentEl = this.getParent();\r\n if (!parentEl)\r\n return;\r\n\r\n var parentSize = parentEl.getSize();\r\n // Set the top and left position of the image to be right in the middle of the parent\r\n this.style.top = (parentSize.y / 2) - (this.getHeight() / 2) + \"px\";\r\n this.style.left = (parentSize.x / 2) - (this.getWidth() / 2) + \"px\";\r\n }.bind(progressEl);\r\n\r\n if ((typeof referenceEl != \"undefined\") && (referenceEl != null)) {\r\n progressEl.id = referenceEl.id + '_' + progressEl.id;\r\n referenceEl.appendChild(progressEl);\r\n }\r\n else\r\n document.body.appendChild(progressEl);\r\n\r\n progressEl.src = Librarian.path.getImagesPath() + \"progress.gif\";\r\n\r\n return progressEl.id;\r\n },\r\n hideProgressImage: function (id) {\r\n if ((typeof id == \"undefined\") || (id == null))\r\n id = \"progressImage\";\r\n\r\n var progressEl = $(id);\r\n if (progressEl)\r\n progressEl.destroy();\r\n },\r\n showModalCover: function (contEl) {\r\n if (!contEl)\r\n return null;\r\n\r\n var coverEl = new Element(\"div\", {\r\n \"class\": \"modal-cover\",\r\n \"styles\": {\r\n \"height\": contEl.getScrollHeight() + \"px\"\r\n }\r\n }).injectInside(contEl);\r\n\r\n return coverEl;\r\n },\r\n isPackageNameValid: function (name, notify) {\r\n name = (name || '').trim();\r\n if (name.length == 0) {\r\n if (notify !== false)\r\n Librarian.Utils.error(Librarian.Lang.getArgString(\"create_namerequired\", [Librarian.Lang.getString(\"presentation\")]));\r\n return false;\r\n }\r\n\r\n if (!Librarian.Utils.checkString(name)) {\r\n if (notify !== false)\r\n Librarian.Utils.error(Librarian.Lang.getArgString(\"create_invalidname\", [Librarian.Lang.getString(\"presentation\"), Librarian.path.badChars]));\r\n return false;\r\n }\r\n\r\n if (Librarian.path.badNames.contains(name)) {\r\n if (notify !== false)\r\n Librarian.Utils.error(Librarian.Lang.getArgString(\"create_badname\", Librarian.Lang.getString(\"presentation\")));\r\n return false;\r\n }\r\n\r\n if (name.length > Librarian.path.maxFileNameLength) {\r\n if (notify !== false)\r\n Librarian.Utils.error(Librarian.Lang.getArgString(\"create_nametoolong\", [Librarian.Lang.getString(\"presentation\"), Librarian.path.maxFileNameLength]));\r\n return false;\r\n }\r\n\r\n return true;\r\n },\r\n getItemInformation: function (data, onSuccess, onFailure) {\r\n if (typeof onSuccess != \"function\")\r\n return;\r\n\r\n var url = null;\r\n\r\n if (data.presid > 0)\r\n url = Librarian.path.getMethodUrl(\"getvp\") + \"&pid=\" + data.presid + \"&out=dgrid\";\r\n else if (data.groupid > 0)\r\n url = Librarian.path.getMethodUrl(\"getgslides\") + \"&gid=\" + data.groupid + \"&out=dgrid&expand=\" + (Librarian.tileList.expandGroupItemsToSlides ? '1' : '0');\r\n else if (data.fileid > 0)\r\n url = Librarian.path.getMethodUrl(\"getslides\") + \"&fid=\" + data.fileid + \"&out=dgrid\";\r\n else if (data.catid != -1) {\r\n var type = data.type;\r\n\r\n if (type == Librarian.catType.myFavorite)\r\n url = Librarian.path.getMethodUrl(\"getvpci\") + \"&cid=\" + data.catid + \"&out=dgrid\";\r\n else if (type == Librarian.catType.globalFavorite)\r\n url = Librarian.path.getMethodUrl(\"getcgci\") + \"&cid=\" + data.catid + \"&out=dgrid\";\r\n else\r\n url = Librarian.path.getMethodUrl(\"getci\") + \"&cid=\" + data.catid + \"&out=dgrid\";\r\n }\r\n\r\n if (!url)\r\n return;\r\n\r\n var request = new Librarian.Request.JSON({\r\n url: url,\r\n onSuccess: onSuccess\r\n });\r\n if (typeof onFailure == \"function\")\r\n request.onFailure = onFailure;\r\n request.send();\r\n },\r\n logout: function () {\r\n var params = Librarian.features.sso.load ? \"?sso=false\" : \"\";\r\n\r\n Librarian.Utils.clearRequests();\r\n Librarian.Utils.clearSearchRequests();\r\n\r\n var session = new Librarian.Session();\r\n session.onLogoff = function () {\r\n // Remove session name from window\r\n var storedHash = window.name.parseQueryString();\r\n delete storedHash.sname;\r\n window.name = Object.toQueryString(storedHash);\r\n\r\n // Once logoff is complete, redirect\r\n Librarian.Utils.openPage(\"index.htm\" + params, false);\r\n };\r\n session.onFailure = function (error) {\r\n // If we got a 401, we're not authenicated anyway\r\n // so just redirect\r\n if (error && (error.status == 401))\r\n Librarian.Utils.openPage(\"index.htm\" + params, false);\r\n // Otherwise, alert the error text\r\n else {\r\n var index = this.response.text.indexOf('\\n'),\r\n message;\r\n if (index > 0)\r\n message = this.response.text.substr(0, index);\r\n else\r\n message = this.response.text;\r\n\r\n if (message.length > 0)\r\n Librarian.Utils.error(message, false);\r\n }\r\n };\r\n session.logoff();\r\n },\r\n openPage: function (page, keepHash, target) {\r\n if ((typeof keepHash == \"undefined\") || (keepHash == null))\r\n keepHash = true;\r\n if ((typeof target == \"undefined\") || (target == null))\r\n target = \"_self\";\r\n\r\n var hash = '';\r\n // If there is a hash on this url, keep it through the page load\r\n if (window.location.hash && keepHash)\r\n hash = window.location.hash;\r\n // If we're going to the login screen, keep the search path because it could contain \"sso=true\"\r\n if ((page == \"index.htm\") && window.location.search)\r\n page += window.location.search;\r\n\r\n // Add the build version to the end of the path to make sure it's unique and not cached, if it doesn't have it already\r\n if (!page.contains('?' + Librarian.buildVersion) && !page.contains('&' + Librarian.buildVersion))\r\n page += (page.contains('?') ? '&' : '?') + Librarian.buildVersion;\r\n\r\n window.open(page + Librarian.Utils.encodeHash(hash), target);\r\n },\r\n encodeHash: function (hash) {\r\n if (hash.length == 0)\r\n return hash;\r\n\r\n // Drop the # and split by all the &s\r\n var tags = hash.substring(1).split('&');\r\n\r\n // Go through each key-value pair\r\n for (var i = 0; i < tags.length; i++) {\r\n // Split by the = to separate the keys and values\r\n var values = tags[i].split('=');\r\n\r\n // Go through each key/value and encode it\r\n for (var j = 0; j < values.length; j++)\r\n values[j] = encodeURIComponent(decodeURIComponent(values[j]));\r\n\r\n // Rejoin this key-value pair\r\n tags[i] = values.join('=');\r\n }\r\n\r\n // Rejoin the entire hash with & and prepend the #\r\n return '#' + tags.join('&');\r\n },\r\n loadHomeContent: function (onNoHash) {\r\n // Hash navigation doesn't work at all on IE7, so don't even try\r\n if ((Browser.ie7 || !Librarian.Utils.onHashChange(this.getHash(), true)) && (typeof onNoHash == \"function\"))\r\n onNoHash();\r\n },\r\n onHashChange: function (hash, forced) {\r\n // Hash navigation doesn't work at all on IE7, so don't even try\r\n if (Browser.ie7 || !Librarian.hashNavigation)\r\n return false;\r\n\r\n if (Librarian.forcedHashChange === true) {\r\n Librarian.forcedHashChange = false;\r\n return true;\r\n }\r\n\r\n if (hash.length > 1) {\r\n var data = hash.parseQueryString();\r\n //Vue route, handled in router.js. skey handled differently\r\n if (data.vuePage || data.skey) {\r\n return true;\r\n }\r\n\r\n if (data.page != null) {\r\n if (typeof Library.loadPageFromHash == \"function\")\r\n return Library.loadPageFromHash(data);\r\n }\r\n\r\n // If this is a deeplink do a simple lookup\r\n // We can't do a server lookup because of the issue described in CLN-1311\r\n if (Librarian.isGuest) {\r\n if (data.fileid > 0) {\r\n var doLoad = function () {\r\n var root = treeView.root,\r\n openFile = function () {\r\n treeView.removeEvent(\"select\", openFile);\r\n Librarian.Utils.selectTreeNodeByPath(treeView, 'E' + Librarian.eventInfo.EventId + '/' + data.fileid);\r\n };\r\n if (root && !root.data)\r\n root = root.children[0];\r\n // There is code in place to automatically select the root node for a deep link, wait for that to happen and then open the preview window\r\n if (root && !root.state.open)\r\n treeView.addEvent(\"select\", openFile);\r\n else\r\n openFile();\r\n };\r\n\r\n // If the tree hasn't loaded yet, wait for it to do that\r\n if (!treeView.loaded)\r\n Librarian.Utils.runFunctionOnTreeEvent(treeView, \"loadChildren\", doLoad);\r\n else\r\n doLoad();\r\n\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n if (data.type == null)\r\n data.type = 0;\r\n\r\n // If loading the path fails, use this as a fallback\r\n var itemLoadFallback = function () {\r\n var list = tileList;\r\n if (typeof Library.getListByType == \"function\")\r\n list = Library.getListByType(this.type);\r\n\r\n // Try to get the information about the item from the server\r\n // This method looks the same as loading from the tree, but the\r\n // actual item isn't selected in the tree\r\n if (typeof Library.loadItemView == \"function\") {\r\n Librarian.Utils.getItemInformation(data, function (json) {\r\n if (!json || !json.data || (json.data.length == 0))\r\n return;\r\n\r\n var info = json.data[0];\r\n // This is a file\r\n if (info.fileinfo) {\r\n info = info.fileinfo;\r\n info.contenttype = Librarian.contentType.file;\r\n }\r\n // This is a content group\r\n if (info.groupinfo) {\r\n info = info.groupinfo;\r\n info.contenttype = Librarian.contentType.globalFavorite;\r\n }\r\n // This is a virtual presentation\r\n if (info.presid && info.items) {\r\n info = Object.subset(info, [\"name\", \"description\", \"presid\", \"slidecount\", \"createddate\", \"lastmoddate\"]);\r\n info.contenttype = Librarian.contentType.myFavorite;\r\n }\r\n\r\n var tree = Library.getTreeByType(this.type, this.tab, this.prestype);\r\n\r\n Librarian.Utils.onTreeSelect.bind(tree)({ data: info, name: info.name }, list);\r\n },\r\n function() {\r\n Librarian.Utils.error(Librarian.Lang.getString(\"cantfindintree\"));\r\n if (typeof Library.showHomePage == \"function\")\r\n Library.showHomePage();\r\n else if (typeof showHomePage == \"function\")\r\n showHomePage();\r\n }.bind(data));\r\n }\r\n // This is a last ditch effort to load the data\r\n // This is just a blank list with the given information, no page header\r\n else {\r\n Librarian.contentLoader.onComplete = list.loadComplete;\r\n Librarian.contentLoader.load(data, data.type);\r\n }\r\n };\r\n\r\n // If we can get the tree, try to load the file/category by path\r\n if (typeof Library.getTreeByType == \"function\") {\r\n Librarian.Utils.getPath(data, function (path) {\r\n if (path != null)\r\n Librarian.Utils.selectTreeNodeByPath(Library.getTreeByType(data.type, data.tab, data.prestype), path);\r\n // If the path wasn't found, fall back\r\n else\r\n itemLoadFallback();\r\n });\r\n }\r\n // Otherwise fall back\r\n else\r\n itemLoadFallback();\r\n\r\n if (data.preview == \"true\")\r\n Librarian.PreviewWindow.openPreviewWindow({\r\n fileid: data.fileid\r\n });\r\n\r\n return true;\r\n }\r\n\r\n // If this wasn't force loaded and there is a pageClick function,\r\n // load the home page beacuse we don't have a hash\r\n if (!Librarian.isGuest && (forced !== true)) {\r\n if (typeof Library.pageClick == \"function\") {\r\n Library.pageClick(\"home\");\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n },\r\n onTreeSelect: function (node, list, hashSuffix) {\r\n if (Librarian.hashNavigation)\r\n Librarian.Utils.changeTreeHash.bind(this)(node, hashSuffix);\r\n\r\n if (Librarian.myProcView != null)\r\n Librarian.myProcView.destroy();\r\n\r\n if (typeof Library.onTreeSelect == \"function\")\r\n Library.onTreeSelect.bind(this)(node, list);\r\n\r\n var mainPanelEl = $(\"mainPanel\");\r\n if (mainPanelEl)\r\n mainPanelEl.scrollTo(0, 0);\r\n else\r\n window.scrollTo(0, 0);\r\n },\r\n changeTreeHash: function (node, hashSuffix) {\r\n var hash = '';\r\n\r\n if (node.data.fileid > 0) {\r\n if ((this.options.catType == Librarian.catType.globalFavorite) ||\r\n (node.data.contenttype == Librarian.contentType.globalFavorite))\r\n hash = \"groupid=\" + node.data.fileid;\r\n else if (this.options.catType == Librarian.catType.myFavorite)\r\n hash = \"presid=\" + node.data.fileid;\r\n else if (this.options.catType == Librarian.catType.event)\r\n hash = \"groupid=\" + node.data.fileid;\r\n else\r\n hash = \"fileid=\" + node.data.fileid;\r\n }\r\n\r\n if (node.data.catid != null)\r\n hash += ((hash.length > 0) ? '&' : '') + \"catid=\" + node.data.catid;\r\n\r\n // Add the pres type as well\r\n if (node.data.prestype > 0)\r\n hash += \"&prestype=\" + node.data.prestype;\r\n\r\n hash += \"&type=\" + this.options.catType;\r\n\r\n // Save this setting so the Outlook plugin's portals can be special and use titles\r\n if (Librarian.isGuest && Librarian.tileList.useFileTitle)\r\n hash += \"&useTitle=true\";\r\n\r\n if (typeof hashSuffix == \"string\")\r\n hash += hashSuffix;\r\n\r\n Librarian.Utils.changeHash(hash);\r\n },\r\n\r\n changeHash: function (hash) {\r\n if (this.getHash() != hash) {\r\n Librarian.forcedHashChange = true;\r\n window.location.hash = hash;\r\n }\r\n\r\n // Make sure value is reset in case onHashChange is not triggered\r\n setTimeout(function() {\r\n Librarian.forcedHashChange = false;\r\n });\r\n },\r\n\r\n toggleListView: function (reload, saveUserSetting) {\r\n Librarian.listView.enabled = !Librarian.listView.enabled;\r\n if (saveUserSetting !== false)\r\n Librarian.Utils.setUserSetting(Librarian.ListView.enabledSetting, Librarian.listView.enabled);\r\n\r\n if (reload !== false) {\r\n if (!Librarian.search.isSearching) {\r\n if ((Library.curPage == \"home\") && (typeof Library.loadHome == \"function\"))\r\n Library.loadHome();\r\n else {\r\n if (Librarian.pageHeader && Librarian.pageHeader.options.headerType == Librarian.headerTypes.bookmark) {\r\n Librarian.Bookmarks.viewBookmarkedContents();\r\n } else {\r\n var trees = Librarian.treeViews;\r\n // Find the first tree with selection and run onTreeSelect on it\r\n for (var treeName in trees) {\r\n if (!trees.hasOwnProperty(treeName))\r\n continue;\r\n\r\n var tree = trees[treeName];\r\n if (tree != null) {\r\n var selected = tree.getSelected();\r\n if (selected) {\r\n Library.onTreeSelect.bind(tree)(selected, tileList, true);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n var search = Librarian.lastSearch,\r\n maxResults = Librarian.search.maxResults;\r\n\r\n if (Librarian.listView.enabled) {\r\n Librarian.Search.showSearchNavigation(false);\r\n maxResults = Librarian.ListView.prepSearchGrid(search, search.getOutputType());\r\n }\r\n else {\r\n search.options.loadComplete = tileList.searchLoadComplete;\r\n if (tileList && tileList.wrapper) {\r\n tileList.reset();\r\n tileList.wrapper.appendChild(document.createTextNode(Librarian.Lang.getString(\"searching\")));\r\n }\r\n }\r\n\r\n search.addResults(null, maxResults);\r\n Librarian.lastSearch = search;\r\n search.search();\r\n }\r\n }\r\n\r\n var itemEl = $(\"toggleList\");\r\n if (itemEl) {\r\n if (Librarian.listView.enabled)\r\n itemEl.set(\"text\", \"Thumbnail View\");\r\n else\r\n itemEl.set(\"text\", \"List View\");\r\n }\r\n\r\n itemEl = $(\"expandCollapseContainer\");\r\n if (itemEl) {\r\n if (Librarian.listView.enabled)\r\n itemEl.show(\"inline\");\r\n else\r\n itemEl.hide();\r\n }\r\n\r\n itemEl = null;\r\n },\r\n toggleTagCloudView: function (enable, data) {\r\n if (!Librarian.features.tagcloud.load) {\r\n return;\r\n }\r\n\r\n if (enable) {\r\n //Hide related content\r\n var relatedContentEl = $(\"relatedContent\");\r\n if (relatedContentEl) {\r\n relatedContentEl.hide();\r\n }\r\n\r\n if (tileList) {\r\n // Reset the TileList\r\n tileList.reset();\r\n }\r\n\r\n if (Librarian.tagCloudView) {\r\n Librarian.tagCloudView.reload(data);\r\n } else {\r\n Librarian.tagCloudView = new Librarian.TagCloudView({\r\n container: $(\"tileListWrapper\"),\r\n data: data\r\n });\r\n }\r\n } else {\r\n if (Librarian.tagCloudView) {\r\n if (Librarian.tagCloudView.isVisible()) {\r\n Librarian.tagCloudView.clean();\r\n\r\n if ((Library.curPage == \"home\") && (typeof Library.loadHome == \"function\"))\r\n Library.loadHome();\r\n else {\r\n var trees = Librarian.treeViews;\r\n // Find the first tree with selection and run onTreeSelect on it\r\n for (var treeName in trees) {\r\n if (!trees.hasOwnProperty(treeName))\r\n continue;\r\n\r\n var tree = trees[treeName];\r\n if (tree != null) {\r\n var selected = tree.getSelected();\r\n if (selected) {\r\n Library.onTreeSelect.bind(tree)(selected, tileList, true);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n getStandardContent: function (content) {\r\n content = Object.toLowerKeys(content);\r\n\r\n // Standardize contentname\r\n content.contentname = content.name || content.contentname;\r\n\r\n // Standardize content type\r\n if (!content.contenttype) {\r\n if (content.slideid > 0)\r\n content.contenttype = Librarian.contentType.slide;\r\n else if (content.groupid > 0) {\r\n if (content.ext == \"evtg\")\r\n content.contenttype = Librarian.contentType.eventGroup;\r\n else\r\n content.contenttype = Librarian.contentType.globalFavorite;\r\n }\r\n else if (content.presid > 0 && (content.ext == \"vpres\" || content.sourceext == null))\r\n content.contenttype = Librarian.contentType.myFavorite;\r\n else if (content.fileid > 0 || content.fileId > 0)\r\n content.contenttype = Librarian.contentType.file;\r\n else if (content.catid >= 0) {\r\n content.contenttype = Librarian.contentType.category;\r\n\r\n if ((content.cattype == Librarian.catType.myFavorite) || content.presentations)\r\n content.contenttype = Librarian.contentType.myFavoriteCategory;\r\n }\r\n }\r\n\r\n // Standardize content id\r\n if (content.contenttype == Librarian.contentType.globalFavorite)\r\n content.contentid = content.groupid || content.fileid || content.contentid;\r\n else if (content.contenttype == Librarian.contentType.myFavorite)\r\n content.contentid = content.presid || content.fileid || content.contentid;\r\n else if (content.contenttype == Librarian.contentType.slide) {\r\n content.contentid = content.slideid || content.contentid;\r\n\r\n if (content.slidenumber && content.filename)\r\n content.contentname = Librarian.Utils.getItemTypeString(content) + \" \" + content.slidenumber + \" in \" + content.filename;\r\n }\r\n else if (content.contenttype == Librarian.contentType.file) {\r\n content.contentid = content.fileid || content.fileId || content.contentid;\r\n content.contentname = content.filename || content.contentname;\r\n }\r\n else if ((content.contenttype == Librarian.contentType.category) || (content.contenttype == Librarian.contentType.myFavoriteCategory))\r\n content.contentid = (content.catid >= 0) ? content.catid : content.contentid;\r\n else if (content.contenttype == Librarian.contentType.eventGroup)\r\n content.contentid = content.groupid || content.contentid;\r\n\r\n return content;\r\n },\r\n getFromContent: function (content) {\r\n if (!content || !content.contentid || (typeof content.contenttype != \"number\") || !content.contentname)\r\n return content;\r\n\r\n var item = {\r\n contenttype: content.contenttype\r\n };\r\n\r\n if (content.contenttype == Librarian.contentType.slide) {\r\n item.slideid = content.contentid;\r\n item.filename = content.contentname;\r\n item.title = content.title;\r\n }\r\n else if (content.contenttype == Librarian.contentType.file) {\r\n item.fileid = content.contentid;\r\n item.filename = content.contentname;\r\n item.title = content.title;\r\n }\r\n else {\r\n item.name = content.contentname;\r\n if (content.contenttype == Librarian.contentType.globalFavorite)\r\n item.groupid = content.contentid;\r\n else if (content.contenttype == Librarian.contentType.myFavorite)\r\n item.presid = content.contentid;\r\n else if ((content.contenttype == Librarian.contentType.category) || (content.contenttype == Librarian.contentType.myFavoriteCategory))\r\n item.catid = content.contentid;\r\n }\r\n\r\n return item;\r\n },\r\n getContentTypeName: function (content) {\r\n if ((typeof content == \"undefined\") || (content == null))\r\n return \"\";\r\n\r\n var itemType = '';\r\n switch (content.contenttype) {\r\n case Librarian.contentType.file:\r\n itemType = \"file\";\r\n break;\r\n case Librarian.contentType.globalFavorite:\r\n itemType = \"favorite_global\";\r\n break;\r\n case Librarian.contentType.myFavorite:\r\n itemType = \"favorite_generic\";\r\n break;\r\n case Librarian.contentType.category:\r\n case Librarian.contentType.myFavoriteCategory:\r\n itemType = \"category\";\r\n break;\r\n case Librarian.contentType.slide:\r\n itemType = Librarian.Utils.getItemType(content);\r\n break;\r\n }\r\n\r\n return Librarian.Lang.getString(itemType);\r\n },\r\n getContentTypeIcon: function (content) {\r\n if ((typeof content === \"undefined\") || (content === null)) {\r\n return '';\r\n }\r\n\r\n content = Object.toLowerKeys(content);\r\n\r\n var contentType = parseInt(content.contenttype, 10);\r\n if (isNaN(contentType)) {\r\n return '';\r\n }\r\n\r\n var ext = Librarian.Utils.getExtensionFromData(content, true),\r\n icon = '',\r\n category = false;\r\n switch (contentType) {\r\n case Librarian.contentType.file:\r\n icon = ext;\r\n break;\r\n case Librarian.contentType.globalFavorite:\r\n icon = \"favg\";\r\n break;\r\n case Librarian.contentType.myFavorite:\r\n icon = \"vpres\";\r\n break;\r\n case Librarian.contentType.category:\r\n case Librarian.contentType.myFavoriteCategory:\r\n icon = \"category\";\r\n category = true;\r\n break;\r\n case Librarian.contentType.slide:\r\n if (ext.startsWith(\"ppt\") || ext.startsWith(\"pps\") || ext.startsWith(\"pot\")) {\r\n icon = \"ppt_slide\";\r\n } else if (ext == \"pdf\") {\r\n icon = \"pdf_page\";\r\n } else {\r\n icon = ext;\r\n }\r\n break;\r\n }\r\n\r\n if (Librarian.extensions.isCategorizedFileTypeIcons()) {\r\n return Librarian.Utils.getFileTypeIcon(ext, null, category);\r\n }\r\n\r\n return Librarian.path.getFileTypeIconsPath(\"v1\") + icon + \".gif\";\r\n },\r\n getCategoryTypeFromContentType: function (contentType) {\r\n switch (contentType) {\r\n case Librarian.contentType.file:\r\n return Librarian.catType.file;\r\n case Librarian.contentType.globalFavorite:\r\n return Librarian.catType.globalFavorite;\r\n case Librarian.contentType.sharedFavoriteCategory:\r\n case Librarian.contentType.sharedFavorite:\r\n case Librarian.contentType.myFavorite:\r\n case Librarian.contentType.myFavoriteCategory:\r\n return Librarian.catType.myFavorite;\r\n case Librarian.contentType.eventGroup:\r\n return Librarian.catType.event;\r\n case Librarian.contentType.workItem:\r\n return Librarian.catType.workflow;\r\n }\r\n return Librarian.catType.undefined;\r\n },\r\n getContentTypeFromCategoryType: function (catType, slide) {\r\n if (slide === true) {\r\n if (catType == Librarian.catType.event)\r\n return Librarian.contentType.event;\r\n if (catType == Librarian.catType.articles)\r\n return Librarian.contentType.articleSection;\r\n return Librarian.contentType.slide;\r\n }\r\n\r\n switch (catType) {\r\n case Librarian.catType.file:\r\n case Librarian.catType.uploads:\r\n case Librarian.catType.download:\r\n return Librarian.contentType.file;\r\n case Librarian.catType.globalFavorite:\r\n return Librarian.contentType.globalFavorite;\r\n case Librarian.catType.event:\r\n return Librarian.contentType.eventGroup;\r\n case Librarian.catType.myFavorite:\r\n return Librarian.contentType.myFavorite; // TODO: Support other favorite types, somehow\r\n case Librarian.catType.articles:\r\n return Librarian.contentType.article;\r\n }\r\n return Librarian.contentType.undefined;\r\n },\r\n canEditFavoriteAccess: function (data) {\r\n if (!Librarian.features.sharedfavorite.load)\r\n return false;\r\n\r\n return Librarian.Utils.isOwner(data) && Librarian.Utils.isShared(data);\r\n },\r\n isOwner: function (data) {\r\n if (!data)\r\n return false;\r\n var catId = (data.catid || data.catId || -1).toInt(),\r\n // Check prestype to make sure this is a Favorite category\r\n isCat = ((typeof data.prestype == \"number\") && (catId >= 0)),\r\n presid = (data.presid || data.presId || (isCat ? catId : -1) || -1).toInt();\r\n if (presid < 0)\r\n return false;\r\n\r\n return (data.isowner === true) || (data.isOwner === true);\r\n },\r\n canWrite: function (data) {\r\n if (!data)\r\n return false;\r\n var presid = (data.presid || data.presId || -1).toInt();\r\n if (presid < 0)\r\n return false;\r\n\r\n return (data.isowner === true) || (data.isOwner === true) || (data.canwrite === true) || (data.canWrite === true);\r\n },\r\n isSlideShow: function (data) {\r\n if (!data)\r\n return false;\r\n var presid = (data.presid || data.presId || -1).toInt();\r\n if (presid < 0)\r\n return false;\r\n\r\n if (!data.isslideshow && !data.isSlideshow)\r\n return Librarian.Utils.isFavoriteType([Librarian.virtPresType.slideshow, Librarian.virtPresType.sharedSlideshow]);\r\n return true;\r\n },\r\n isFavorite: function (data) {\r\n if (!data)\r\n return false;\r\n var presid = (data.presid || data.presId || -1).toInt();\r\n if (presid < 0)\r\n return false;\r\n\r\n if (!data.isfavorite && !data.isFavorite)\r\n return Librarian.Utils.isFavoriteType([Librarian.virtPresType.myFavorite, Librarian.virtPresType.sharedFavorite]);\r\n return true;\r\n },\r\n isShared: function (data) {\r\n if (!data)\r\n return false;\r\n var presid = (data.presid || data.presId || -1).toInt();\r\n if (presid < 0)\r\n return false;\r\n\r\n if (!data.isshared && !data.isShared)\r\n return Librarian.Utils.isFavoriteType([Librarian.virtPresType.sharedFavorite, Librarian.virtPresType.sharedSlideshow]);\r\n return true;\r\n },\r\n isMyFavorite: function (data) {\r\n return Librarian.Utils.isFavoriteType(data, Librarian.virtPresType.myFavorite);\r\n },\r\n isMySlideShow: function (data) {\r\n return Librarian.Utils.isFavoriteType(data, Librarian.virtPresType.slideshow);\r\n },\r\n isSharedFavorite: function (data) {\r\n return Librarian.Utils.isFavoriteType(data, Librarian.virtPresType.sharedFavorite);\r\n },\r\n isSharedSlideShow: function (data) {\r\n return Librarian.Utils.isFavoriteType(data, Librarian.virtPresType.sharedSlideshow);\r\n },\r\n isFavoriteType: function (data, types) {\r\n if (!data)\r\n return false;\r\n var presid = (data.presid || data.presId || -1).toInt();\r\n if (presid < 0)\r\n return false;\r\n\r\n types = Array.from(types);\r\n return types.contains(data.prestype) || types.contains(data.presType);\r\n },\r\n onFailure: function(error) {\r\n if (!error)\r\n return;\r\n\r\n if (typeof error == \"object\")\r\n error = error.responseText || \"\";\r\n\r\n var index = error.indexOf('\\n');\r\n if (index > 0)\r\n error = error.substr(0, index);\r\n\r\n if (error)\r\n Librarian.Utils.error(error, false);\r\n },\r\n getMooSelectContact: function (contact) {\r\n // Dynamics crm\r\n if (typeof contact.contactid == \"string\")\r\n delete contact.contactid;\r\n\r\n var text = contact.text || contact.displayname || contact.fullname || contact.name || contact.email;\r\n var value = contact.value;\r\n\r\n if (!value) {\r\n if (contact.contactid && contact.contacttype)\r\n value = contact.contactid + '-' + contact.contacttype;\r\n else\r\n value = contact.id || contact.email;\r\n }\r\n\r\n contact.text = text;\r\n contact.value = value;\r\n\r\n return contact;\r\n },\r\n parseCsv: function (text, delimeter) {\r\n var csvJson = text.match(/[^\\r\\n]+/g),\r\n objAttributeNames = csvJson[0].split(\"/[\" + delimeter + \"]+/g\");\r\n\r\n csvJson.slice(1);\r\n\r\n for (var i = csvJson.length; i--;) {\r\n var objValues = csvJson[i].split(\"/[\" + delimeter + \"]+/g\");\r\n for (var j = objAttributeNames.length; j--;) {\r\n csvJson[i] = {};\r\n csvJson[i][objAttributeNames[j]] = objValues[j];\r\n }\r\n }\r\n\r\n return csvJson;\r\n },\r\n isDataEqual: function (firstData, secondData) {\r\n if (typeof Library.isDataEquals == \"function\") {\r\n return Library.isDataEquals(firstData, secondData);\r\n }\r\n return firstData.contentid == secondData.contentid && firstData.contenttype == secondData.contenttype;\r\n },\r\n isUserMemberOfGroup: function (groupNames) {\r\n // Don't check anything if we don't have the groups list\r\n if (typeOf(Librarian.userGroups) != \"array\")\r\n return false;\r\n if ((typeof groupNames == \"undefined\") || (groupNames == null))\r\n return false;\r\n\r\n groupNames = Array.from(groupNames).invoke('toLowerCase');\r\n\r\n return Librarian.userGroups.filter(function (item) {\r\n return groupNames.contains(item.Name.toLowerCase());\r\n }).length > 0;\r\n },\r\n // Check if a user is a member of a group where the passed in groups are partial group names\r\n // Someone in the 'Everyone' group would return true for groupName = ['everyone', 'every', 'e']\r\n isUserMemberOfGroupLike: function (groupNames) {\r\n // Don't check anything if we don't have the groups list\r\n if (typeOf(Librarian.userGroups) != \"array\")\r\n return false;\r\n if ((typeof groupNames == \"undefined\") || (groupNames == null))\r\n return false;\r\n\r\n groupNames = Array.from(groupNames).invoke('toLowerCase');\r\n\r\n return Librarian.userGroups.filter(function (item) {\r\n return groupNames.filter(function (group) {\r\n return (item.Name.toLowerCase().indexOf(group) >= 0);\r\n }).length > 0;\r\n }).length > 0;\r\n },\r\n requestStatuses: {},\r\n requestStatusRequest: null,\r\n requestStatusTimer: null,\r\n trackRequestStatus: function (requestId, onSuccess, onFailure) {\r\n if (!Librarian.Utils.requestStatuses[requestId])\r\n Librarian.Utils.requestStatuses[requestId] = { onSuccess: onSuccess, onFailure: onFailure };\r\n\r\n if (!Librarian.Utils.requestStatusTimer)\r\n Librarian.Utils.requestStatusTimer = setTimeout(Librarian.Utils.checkRequestStatuses, 5000);\r\n },\r\n checkRequestStatuses: function () {\r\n // Stop the timer, if it exists, just in case\r\n if (Librarian.Utils.requestStatusTimer)\r\n clearTimeout(Librarian.Utils.requestStatusTimer);\r\n\r\n // Get all of the request ids whose items are not null\r\n var requestIds = Object.keys(Object.filter(Librarian.Utils.requestStatuses, function (value) { return value != null; }));\r\n // If there are no more requests, null out the timer and stop\r\n if (requestIds.length == 0) {\r\n Librarian.Utils.requestStatusTimer = null;\r\n return;\r\n }\r\n // Otherwise, set up another timer loop\r\n else\r\n Librarian.Utils.requestStatusTimer = setTimeout(Librarian.Utils.checkRequestStatuses, 5000);\r\n\r\n // If the request hasn't finished yet, don't send another\r\n if (Librarian.Utils.requestStatusRequest != null)\r\n return;\r\n\r\n // Send a check request for all of the request ids in the list\r\n Librarian.Utils.requestStatusRequest = new Librarian.Request.JSON({\r\n url: Librarian.path.getMethodUrl(\"crst\") + \"&out=ujson&rid=\" + encodeURIComponent(requestIds.join(',')),\r\n onSuccess: Librarian.Utils.onRequestCheckComplete\r\n });\r\n Librarian.Utils.requestStatusRequest.send();\r\n },\r\n onRequestCheckComplete: function (json) {\r\n for (var i = 0; i < json.length; i++) {\r\n var data = json[i],\r\n request = Librarian.Utils.requestStatuses[data.RequestId];\r\n\r\n if (data.Failed) {\r\n if (request && (typeof request.onFailure == \"function\"))\r\n request.onFailure(data);\r\n\r\n Librarian.Utils.requestStatuses[data.RequestId] = null;\r\n }\r\n else if (data.Complete) {\r\n if (request && (typeof request.onSuccess == \"function\"))\r\n request.onSuccess(data);\r\n\r\n Librarian.Utils.requestStatuses[data.RequestId] = null;\r\n }\r\n }\r\n\r\n Librarian.Utils.requestStatusRequest = null;\r\n },\r\n openRecEngine: function (page, pageData) {\r\n Librarian.recWindow = new Librarian.CustomWizardWindow({\r\n xmlURL: Librarian.path.getLibraryPath() + \"wizard/wizard.xml\",\r\n navMenuStyle: \"rec-eng-menu\",\r\n navMenuTitleStyle: \"menu-subhead\",\r\n page: page,\r\n pageData: pageData\r\n });\r\n Librarian.recWindow.show();\r\n },\r\n keysToLowerCase: function(obj) {\r\n var keys = Object.keys(obj);\r\n var n = keys.length;\r\n while (n--) {\r\n var key = keys[n]; // \"cache\" it, for less lookups to the array\r\n if (key !== key.toLowerCase()) { // might already be in its lower case version\r\n obj[key.toLowerCase()] = obj[key]; // swap the value to a new lower case key\r\n delete obj[key]; // delete the old key\r\n }\r\n }\r\n return (obj);\r\n },\r\n log: function (text) {\r\n if (window.console)\r\n console.log(text);\r\n },\r\n logInfo: function (info, text) {\r\n if (window.console)\r\n console.info(info, text);\r\n },\r\n logPreviewActivity: function (data, id, params) {\r\n var contentId = -1, contentType = Librarian.contentType.undefined, parentId = -1, parentType = Librarian.contentType.undefined;\r\n if (data.slideid > 0) {\r\n contentId = data.slideid;\r\n contentType = Librarian.contentType.slide;\r\n\r\n if (data.presid > 0) {\r\n parentId = data.presid;\r\n parentType = Librarian.contentType.myFavorite;\r\n }\r\n else if (data.groupid > 0) {\r\n parentId = data.groupid;\r\n parentType = Librarian.contentType.globalFavorite;\r\n }\r\n else if (data.fileid > 0) {\r\n parentId = data.fileid;\r\n parentType = Librarian.contentType.file;\r\n }\r\n }\r\n else if (data.presid > 0) {\r\n contentId = data.presid;\r\n contentType = Librarian.contentType.myFavorite;\r\n }\r\n else if (data.groupid > 0) {\r\n contentId = data.groupid;\r\n contentType = Librarian.contentType.globalFavorite;\r\n }\r\n else if (data.fileid > 0) {\r\n contentId = data.fileid;\r\n contentType = Librarian.contentType.file;\r\n }\r\n else if ((data.contentid > 0) || (data.contentId > 0)) {\r\n contentId = data.contentid || data.contentId;\r\n contentType = data.contenttype || data.contentType;\r\n }\r\n\r\n if ((contentId == -1) || (contentType == Librarian.contentType.undefined))\r\n return;\r\n\r\n var url = Librarian.path.getLogUrl(\"logprv\") + \"&cntid=\" + contentId + \"&cnttype=\" + contentType + \"&parid=\" + parentId + \"&partype=\" + parentType + \"&id=\" + id;\r\n\r\n if (params)\r\n url += \"&\" + Object.toQueryString(params);\r\n\r\n new Librarian.Request({\r\n url: url\r\n }).send();\r\n },\r\n logActivityDuration: function (id, sync) {\r\n // Send this request to the server to note that we are done looking at this slide\r\n new Librarian.Request({\r\n url: Librarian.path.getLogUrl(\"logactd\") + \"&id=\" + id,\r\n async: sync !== true\r\n }).send();\r\n },\r\n getContactFeaturePermissions: function (contact) {\r\n Librarian.Utils.getFeaturePermissions(\r\n function (json) {\r\n contact.features = json;\r\n },\r\n \"getftrpermact\",\r\n \"&coid=\" + contact.contactid + \"&cotype=\" + contact.contacttype\r\n );\r\n },\r\n getUserFeaturePermissions: function () {\r\n Librarian.Utils.getFeaturePermissions(\r\n function (json) {\r\n Librarian.userInfo.features = json;\r\n },\r\n \"getftrpermu\"\r\n );\r\n },\r\n getFeaturePermissions: function (onSuccess, method, options) {\r\n if ((typeof onSuccess != \"function\") || !method)\r\n return;\r\n\r\n new Librarian.Request.JSON({\r\n url: Librarian.path.getAdminUrl(method) + (options || '') + \"&out=cjson\",\r\n onSuccess: onSuccess\r\n }).send();\r\n },\r\n // Source: http://phpjs.org/functions/strip_tags:535\r\n stripHTML: function (text, allowedTags) {\r\n // Make sure the allowed arg is a string containing only tags in lowercase ()\r\n allowedTags = (((allowedTags || '') + '').toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []).join('');\r\n var tags = /<\\/?([a-z][a-z0-9]*)\\b[^>]*>/gi,\r\n commentsAndPhpTags = /|<\\?(?:php)?[\\s\\S]*?\\?>/gi;\r\n return text.replace(commentsAndPhpTags, '').replace(tags, function ($0, $1) {\r\n return allowedTags.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';\r\n });\r\n },\r\n getTinyMCEStyles: function (type) {\r\n if (!type)\r\n type = \"editor\";\r\n\r\n var css = [Librarian.path.getLayoutsPath() + \"tinymce/\" + type + \".css\"];\r\n if (Librarian.editor.customCSSPath.length > 0)\r\n css.push(Librarian.editor.customCSSPath);\r\n if (Librarian.features.metroui.load)\r\n css.push(Librarian.path.getLayoutsPath() + \"tinymce/metro.css\");\r\n\r\n return css.join(',');\r\n },\r\n getTinyMCEDefaults: function () {\r\n return {\r\n plugins: \"lists advlist code link hr\",\r\n toolbar: \"bold italic underline | alignleft aligncenter alignright | fontsize | link forecolor removeformat\",\r\n resize: false,\r\n menubar: false,\r\n statusbar: false,\r\n forced_root_block: false,\r\n convert_urls: false,\r\n browser_spellcheck: true,\r\n force_hex_style_colors: true,\r\n // Override element rules; don't pad td with nbsp\r\n extended_valid_elements: \"td[*]\",\r\n custom_elements: \"style\",\r\n allow_conditional_comments: true,\r\n formats: {\r\n // Override img to use align instead of float\r\n alignleft: [\r\n { selector: 'img', collapsed: false, attributes: { 'align': 'left' } }\r\n ],\r\n alignright: [\r\n { selector: 'img', collapsed: false, attributes: { 'align': 'right' } }\r\n ],\r\n // Use text-align instead of margin: auto\r\n aligncenter: { block: 'p', styles: { 'text-align': 'center' } }\r\n },\r\n content_css: Librarian.Utils.getTinyMCEStyles(),\r\n toolbar_mode: 'wrap',\r\n visual_table_class: \"none\" // Hack since it won't allow us to pass an empty value\r\n };\r\n },\r\n getTinyMCEOptions: function (instanceOptions) {\r\n var defaults = Librarian.Utils.getTinyMCEDefaults(),\r\n libraryOptions = Librarian.editor.options;\r\n\r\n return Object.merge({}, defaults, libraryOptions, instanceOptions);\r\n },\r\n // Adds to the available buttons, but still has to be included in the toolbar options\r\n addTinyMCEButton: function (editor, button) {\r\n var buttons = {\r\n \"insertgreeting\": {\r\n tooltip: Librarian.Lang.getString(\"greeting_tooltip\"),\r\n text: Librarian.Lang.getString(\"greeting_text\"),\r\n onAction: function () {\r\n editor.selection.setCursorLocation(editor.getBody(), 0);\r\n editor.insertContent('[Email Greeting],

');\r\n }\r\n },\r\n \"insertsignature\": {\r\n tooltip: Librarian.Lang.getString(\"signature_tooltip\"),\r\n text: Librarian.Lang.getString(\"signature_text\"),\r\n onAction: function() {\r\n editor.insertContent('[Email Signature]');\r\n }\r\n },\r\n \"insertportal\": {\r\n tooltip: Librarian.Lang.getString(\"portal_link_tooltip\"),\r\n text: Librarian.Lang.getString(\"portal_link_text\"),\r\n onAction: function () {\r\n editor.insertContent('[Portal Link]');\r\n }\r\n },\r\n \"insertcontentlink\": {\r\n tooltip: Librarian.Lang.getString(\"content_link_tooltip\"),\r\n text: Librarian.Lang.getString(\"content_link_text\"),\r\n onAction: function () {\r\n editor.insertContent('[Content Link]');\r\n }\r\n },\r\n \"insertdownloadlink\": {\r\n tooltip: Librarian.Lang.getString(\"download_link_tooltip\"),\r\n text: Librarian.Lang.getString(\"download_link_text\"),\r\n onAction: function () {\r\n editor.insertContent('[Download Link]');\r\n }\r\n },\r\n \"insertimage\": {\r\n tooltip: Librarian.Lang.getString(\"insert_image_tooltip\"),\r\n icon: \"image\",\r\n onAction: function () {\r\n // Fix for IE11 inserting at beginning after losing focus\r\n // https://stackoverflow.com/a/22132612\r\n var position = editor.selection.getBookmark();\r\n\r\n var imageWin = new Librarian.ImageSelectWindow({\r\n params: {\r\n subtype: Librarian.supportImageSubType.event,\r\n tmpl: false,\r\n all: true\r\n },\r\n onSuccess: function (image) {\r\n var url = Librarian.path.getAbsolutePath(Librarian.path.getDownloadUrl(\"dsf\")) + \"&fh=\" + image.hash;\r\n\r\n editor.selection.moveToBookmark(position);\r\n\r\n if (Librarian.event.maxImgWidth != null) {\r\n var img = new Image();\r\n img.src = url;\r\n img.addEventListener(\"load\", function () {\r\n var width = this.naturalWidth;\r\n if (width > Librarian.event.maxImgWidth)\r\n width = Librarian.event.maxImgWidth;\r\n\r\n editor.insertContent(\"\");\r\n });\r\n }\r\n else {\r\n editor.insertContent(\"\");\r\n }\r\n }\r\n });\r\n }\r\n },\r\n \"insertdisclosure\": {\r\n tooltip: Librarian.Lang.getString(\"insert_disc_tooltip\"),\r\n text: Librarian.Lang.getString(\"insert_disc_text\"),\r\n onAction: function () {\r\n // Fix for IE11 inserting at beginning after losing focus\r\n // https://stackoverflow.com/a/22132612\r\n var position = editor.selection.getBookmark();\r\n\r\n var discWin = new Librarian.DisclosureWindow({\r\n type: Librarian.disclosureType.email\r\n });\r\n discWin.addEvent(\"complete\", function (disclosures) {\r\n disclosures = Array.from(disclosures);\r\n\r\n disclosures.forEach(function (disclosure) {\r\n var placeholder = \"{!disclosure:id=\" + disclosure.disclosureid + \"}\",\r\n html = \"

\" + placeholder + \"

\";\r\n\r\n editor.selection.moveToBookmark(position);\r\n editor.insertContent(html);\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n var options = buttons[button];\r\n if (options)\r\n editor.ui.registry.addButton(button, options);\r\n },\r\n getLibrarySetting: function (name, onSuccess, onFailure) {\r\n if (typeof onSuccess != \"function\")\r\n return;\r\n if (!name)\r\n return;\r\n if (typeof name == \"string\")\r\n name = [name];\r\n var count = name.length,\r\n settings = {};\r\n for (var i = name.length; i--;) {\r\n (function (name) {\r\n var request = new Librarian.Request.JSON({\r\n url: Librarian.path.getMethodUrl(\"getsettval\") + \"&name=\" + name + \"&out=ujson\",\r\n onSuccess: function (value) {\r\n var parsedValue;\r\n try {\r\n parsedValue = parseInt(value);\r\n if (isNaN(parsedValue)) {\r\n parsedValue = value;\r\n\r\n if (parsedValue.toLowerCase() == \"true\")\r\n parsedValue = true;\r\n else if (parsedValue.toLowerCase() == \"false\")\r\n parsedValue = false;\r\n }\r\n }\r\n catch (e) {\r\n parsedValue = value;\r\n }\r\n settings[name] = parsedValue;\r\n if (!--count)\r\n onSuccess(settings);\r\n },\r\n onFailure: function(error) {\r\n if (!--count) {\r\n if (Object.keys(settings).length != 0)\r\n onSuccess(settings);\r\n }\r\n\r\n Librarian.Utils.onFailure(error);\r\n if (typeof onFailure == \"function\")\r\n onFailure(name);\r\n }\r\n });\r\n request.send();\r\n })(name[i]);\r\n }\r\n },\r\n getUserGroupInfo: function (groupName, includeMembers, onSuccess, onFailure) {\r\n var request = new Request.JSON({\r\n method: \"get\",\r\n url: Librarian.path.getMethodUrl(\"getugi\") + \"&out=cjson&members=\" + (!!includeMembers ? '1' : '0') + \"&name=\" + encodeURIComponent(groupName),\r\n onSuccess: onSuccess,\r\n onFailure: onFailure || Librarian.Utils.onFailure\r\n });\r\n request.send();\r\n\r\n return request;\r\n },\r\n setupSDDMMenu: function(options, container) {\r\n var menuEl = new Element(\"li\", options.menuProperties);\r\n\r\n var linkEl = new Element(\"a\", options.linkProperties).injectInside(menuEl);\r\n\r\n if (options.linkIconClass)\r\n var iconEl = new Element(\"span\", { \"class\": options.linkIconClass }).injectInside(linkEl);\r\n\r\n if (options.linkText)\r\n var textEl = new Element(\"span\", { \"text\": options.linkText }).injectInside(linkEl);\r\n\r\n var dropdownEl = new Element(\"div\", options.dropdownProperties).injectInside(menuEl);\r\n\r\n Librarian.Utils.populateSDDMDropdown(dropdownEl, options.dropdownItems);\r\n Librarian.Utils.bindSDDMMenu(linkEl, dropdownEl);\r\n\r\n var containerEl = $(container);\r\n if (containerEl)\r\n menuEl.injectInside(containerEl);\r\n\r\n return menuEl;\r\n },\r\n populateSDDMDropdown: function(dropdownEl, dropdownItems) {\r\n dropdownItems.forEach(function(item) {\r\n var itemEl = new Element(\"a\", item.properties).injectInside(dropdownEl);\r\n\r\n if (typeof item.onClick == \"function\")\r\n itemEl.addOnClick(item.onClick);\r\n });\r\n },\r\n bindSDDMMenus: function (items) {\r\n if (!items)\r\n return;\r\n for (var i = items.length; i--;) {\r\n var parentEl = $(items[i].parent),\r\n menuEl = $(items[i].menu),\r\n onClick = items[i].onClick;\r\n Librarian.Utils.bindSDDMMenu(parentEl, menuEl, onClick);\r\n }\r\n },\r\n bindSDDMMenu: function (parentEl, menuEl, onClick) {\r\n if (parentEl && menuEl) {\r\n var clickFn = Librarian.isSurface() ? mopen.partial(menuEl, parentEl) : onClick;\r\n\r\n parentEl.addEvents({\r\n click: clickFn,\r\n mouseover: mopen.partial(menuEl, parentEl),\r\n mouseout: mclosetime,\r\n blur: mclosetime,\r\n });\r\n\r\n menuEl.addEvents({\r\n mouseover: mcancelclosetime,\r\n mouseout: mclosetime,\r\n blur: mclosetime,\r\n click: mclose\r\n });\r\n }\r\n },\r\n getFlaggingLocation: function (location) {\r\n switch (location) {\r\n case 0:\r\n return \"top-left\";\r\n case 1:\r\n return \"top-right\";\r\n case 2:\r\n return \"bottom-right\";\r\n case 3:\r\n default:\r\n return \"bottom-left\";\r\n }\r\n },\r\n getFlaggingClasses: function(data) {\r\n var mapping = Librarian.flagging.mapping;\r\n\r\n if (!Librarian.flagging.enabled || !data || !mapping)\r\n return [];\r\n\r\n // Backwards compatibility with name/value settings\r\n if (typeOf(mapping) != \"array\") {\r\n mapping = Object.toArray(mapping, function(value, name) {\r\n return {\r\n metaName: name,\r\n className: value,\r\n }\r\n });\r\n }\r\n\r\n var classes = [];\r\n\r\n mapping.forEach(function(flag) {\r\n var isFlagSet = flag.customFunction || Librarian.Utils.doesFlaggingMetaMatch;\r\n if (isFlagSet(data, flag)) {\r\n classes.push(flag.className);\r\n }\r\n });\r\n\r\n return classes;\r\n },\r\n doesFlaggingMetaMatch: function(data, flag) {\r\n if (data.contenttype == Librarian.contentType.category && !Librarian.flagging.showOnCategory)\r\n return false;\r\n\r\n var metaName = flag.metaName;\r\n var metaValue = (flag.metaValue || \"true\").toLowerCase();\r\n\r\n var value = Librarian.Utils.getField(data, metaName);\r\n if (value == null)\r\n return false;\r\n\r\n var values = value.toString().toLowerCase().split(';');\r\n\r\n return values.contains(metaValue);\r\n },\r\n getField: function(data, fieldName, defaultValue) {\r\n if (!data)\r\n return defaultValue;\r\n\r\n var fields = data.extrafields || data.attributes;\r\n if (!fields)\r\n return defaultValue;\r\n\r\n // Also look for field with no spaces (e.g. from V_SearchFiles)\r\n var fieldNameNoSpaces = fieldName.replaceAll(\" \", \"\");\r\n\r\n for (var key in fields) {\r\n if (!fields.hasOwnProperty(key))\r\n continue;\r\n\r\n if (key.equalsIgnoreCase(fieldName) || key.equalsIgnoreCase(fieldNameNoSpaces))\r\n return fields[key];\r\n }\r\n\r\n return defaultValue;\r\n },\r\n getHashByName: function (name) {\r\n if (!name) {\r\n return null;\r\n }\r\n\r\n var data = this.getHash().parseQueryString() || {};\r\n\r\n return data[name];\r\n },\r\n openLibraryTreePanel: function () {\r\n $(\"sideColumn\").setStyle(\"display\", \"block\");\r\n $(\"sideColumn_handle_icon\").setStyle(\"display\", \"block\");\r\n\r\n if (sideColumn.isCollapsed) {\r\n if (sideColumn.handleIconEl) { sideColumn.handleIconEl.click(); }\r\n else { sideColumn.columnToggle(); }\r\n }\r\n },\r\n inIframe: function () {\r\n try {\r\n return window.self !== window.top;\r\n } catch (e) {\r\n return true;\r\n }\r\n },\r\n getFormData: function (query) {\r\n var vars = query.split(/[&;]/),\r\n object = {};\r\n\r\n if (!vars.length) return object;\r\n\r\n vars.each(function (val) {\r\n var kv = val.split('='),\r\n value = decodeURIComponent(kv[1]).trim(),\r\n keys = decodeURIComponent(kv[0]).replace(/\\[\\]/g, '').match(/([^\\]\\[]+|(\\B)(?=\\]))/g),\r\n obj = object;\r\n\r\n if (!keys) return;\r\n keys.each(function (key, i) {\r\n var current = obj[key];\r\n\r\n if (i < keys.length - 1) { obj = obj[key] = current || {}; }\r\n else if (typeOf(current) == 'array') current.push(value);\r\n else obj[key] = current != null ? [current, value] : value;\r\n });\r\n });\r\n\r\n return object;\r\n },\r\n getQueryString: function (params) {\r\n if (!params)\r\n return \"\";\r\n\r\n if (typeOf(params) == \"array\")\r\n params = params.join(\"&\");\r\n else if (typeOf(params) == \"object\")\r\n params = Object.toQueryString(params);\r\n\r\n return params.toString();\r\n },\r\n textToHtml: function(text) {\r\n var lines = text.split(\"\\n\");\r\n\r\n return lines.map(function(line) {\r\n return Librarian.Utils.escapeHtml(line);\r\n }).join(\"
\");\r\n },\r\n escapeHtml: function(text) {\r\n return text.escapeHtml();\r\n },\r\n getDropdownFilter: function(value) {\r\n if (!value)\r\n return null;\r\n\r\n var variations = [];\r\n\r\n variations.push(value);\r\n variations.push(\"%;\" + value);\r\n variations.push(value + \";%\");\r\n variations.push(\"%;\" + value + \";%\");\r\n\r\n return variations.join(\",\");\r\n },\r\n hasHtml5UploadSupport: function () {\r\n return window.FormData !== undefined;\r\n },\r\n\r\n getUserSetting: function(name) {\r\n var value = null;\r\n\r\n try {\r\n value = localStorage.getItem(name);\r\n }\r\n catch (error) {\r\n console.error(\"Could not get user setting: \" + name + \"\\n\" + error);\r\n }\r\n\r\n return value;\r\n },\r\n\r\n setUserSetting: function(name, value) {\r\n if (value != null) {\r\n try {\r\n localStorage.setItem(name, value);\r\n }\r\n catch (error) {\r\n console.error(\"Could not set user setting: \" + name + \"\\n\" + error);\r\n }\r\n }\r\n else\r\n Librarian.Utils.deleteUserSetting(name);\r\n },\r\n\r\n deleteUserSetting: function(name) {\r\n try {\r\n localStorage.removeItem(name);\r\n }\r\n catch (error) {\r\n console.error(\"Could not delete user setting: \" + name + \"\\n\" + error);\r\n }\r\n },\r\n\r\n validatePasswordComplexity: function (password) {\r\n var result = [];\r\n var validPassword = true;\r\n\r\n if (Librarian.passwordComplexityRules != null) {\r\n Librarian.passwordComplexityRules.forEach(function (rule) {\r\n var regex = new RegExp(rule.regex);\r\n var success = password.match(regex) != null;\r\n \r\n result.push({\r\n label: rule.label,\r\n success: success\r\n });\r\n\r\n if (!success) {\r\n validPassword = false;\r\n }\r\n });\r\n }\r\n\r\n return {\r\n validPassword: validPassword,\r\n result: result\r\n };\r\n },\r\n\r\n addPerformanceTime: function(label, endTime) {\r\n var startTime = window.performance.timing.navigationStart;\r\n\r\n if (!endTime)\r\n endTime = new Date();\r\n\r\n var seconds = (endTime - startTime) / 1000;\r\n\r\n Librarian.performanceTimes[label] = seconds;\r\n\r\n if (Librarian.logPerformanceTimes)\r\n console.log(label + \": \" + seconds + \" s\");\r\n }\r\n };\r\n}\r\n\r\nFunction.implement({\r\n // Returns a function with default arguments, and event arguments\r\n partial: function () {\r\n var self = this,\r\n args = Array.prototype.slice.call(arguments);\r\n return function () {\r\n var allArguments = args.concat(Array.prototype.slice.call(arguments));\r\n return self.apply(this, allArguments);\r\n };\r\n }\r\n});\r\n\r\n// Add functions to Elements and Document\r\n(function () {\r\n function _addEvent(fn, bindObj, eventName) {\r\n if (bindObj)\r\n this.addEvent(eventName, fn.bind(bindObj));\r\n else\r\n this.addEvent(eventName, fn);\r\n }\r\n\r\n function _removeEvent(fn, bindObj, eventName) {\r\n if (typeof fn == \"function\") {\r\n if (bindObj)\r\n this.removeEvent(eventName, fn.bind(bindObj));\r\n else\r\n this.removeEvent(eventName, fn);\r\n }\r\n else\r\n this.removeEvents(eventName);\r\n }\r\n\r\n Element.implement({\r\n addOnKeyPress: function (keys, fn, bindObj) {\r\n keys = Array.from(keys);\r\n if (bindObj)\r\n fn = fn.bind(bindObj);\r\n\r\n var wrapperFn = function(e) {\r\n if (keys.contains(e.key) || keys.contains(e.keyCode))\r\n fn(e);\r\n }\r\n\r\n _addEvent.apply(this, [wrapperFn, bindObj, \"keypress\"]);\r\n },\r\n\r\n addOnDblClick: function (fn, bindObj) {\r\n if (!Librarian.isAppleProduct())\r\n _addEvent.apply(this, [fn, bindObj, \"dblclick\"]);\r\n _addEvent.apply(this, [fn, bindObj, \"tap\"]);\r\n },\r\n\r\n addOnClick: function (fn, bindObj) {\r\n if (!Librarian.isAppleProduct())\r\n _addEvent.apply(this, [fn, bindObj, \"click\"]);\r\n _addEvent.apply(this, [fn, bindObj, \"tap\"]);\r\n },\r\n\r\n removeOnClick: function (fn, bindObj) {\r\n if (!Librarian.isAppleProduct())\r\n _removeEvent.apply(this, [fn, bindObj, \"click\"]);\r\n _removeEvent.apply(this, [fn, bindObj, \"tap\"]);\r\n },\r\n\r\n makeUnselectable: function () {\r\n if (this.nodeType == 1) {\r\n this.unselectable = true;\r\n if (typeof this.setAttribute == \"function\")\r\n this.setAttribute(\"unselectable\", \"on\");\r\n }\r\n\r\n var child = $(this.firstChild);\r\n while (child) {\r\n if (typeof child.makeUnselectable == \"function\")\r\n child.makeUnselectable();\r\n child = $(child.nextSibling);\r\n }\r\n },\r\n\r\n getRight: function () {\r\n return this.getLeft() + this.getWidth();\r\n },\r\n\r\n getBottom: function () {\r\n return this.getTop() + this.getHeight();\r\n }\r\n });\r\n\r\n Document.implement({\r\n addOnKeyPress: function (fn, bindObj) {\r\n var eventName = (Browser.Engine.trident || Browser.Engine.webkit || Browser.Engine.gecko) ? \"keydown\" : \"keypress\";\r\n\r\n _addEvent.apply(this, [fn, bindObj, eventName]);\r\n },\r\n\r\n removeOnKeyPress: function () {\r\n if (Browser.Engine.trident || Browser.Engine.webkit || Browser.Engine.gecko)\r\n this.removeEvents(\"keydown\");\r\n else\r\n this.removeEvents(\"keypress\");\r\n }\r\n });\r\n})();","/**\n * Copyright (c) 2010 Maxim Vasiliev\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n * @author Maxim Vasiliev\n * Date: 19.09.11\n * Time: 23:40\n */\nform2js = new Class({\n\tImplements: Options,\n\toptions: {\n\t\trootNode: null,\n\t\tdelimiter: null,\n\t\tskipEmpty: null,\n\t\tnodeCallback: null,\n\t\tuseIdIfEmpty: null,\n\t\temptyToNull: null,\n\t},\n\tuseIdIfEmptyName: null,\n\tformValues: null,\n\tnodeCallback: null,\n\temptyToNull: null,\n\tinitialize: function(options) {\n\t\tthis.setOptions(options);\n\t\t\n\t\tif (typeof this.options.skipEmpty == 'undefined' || this.options.skipEmpty == null) this.options.skipEmpty = true;\n\t\tif (typeof this.options.emptyToNull == 'undefined' || this.options.emptyToNull == null) this.emptyToNull = true;\n\t\tif (typeof this.options.delimiter == 'undefined' || this.options.delimiter == null) this.options.delimiter = '.';\n\t\tif (this.options.useIdIfEmpty == null) this.useIdIfEmptyName = false;\n\n\t\tthis.rootNode = typeof this.options.rootNode == 'string' ? $(this.options.rootNode) : this.options.rootNode;\n\t\tthis.nodeCallback = this.options.nodeCallback;\n\t\n\t},\n\ton: function() {\n\t\tvar formValues = [], currNode, i = 0;\n\t\t/* If rootNode is array - combine values */\n\t\tif (this.rootNode.constructor == Array || (typeof NodeList != \"undefined\" && this.rootNode.constructor == NodeList)) {\n\t\t\twhile(currNode = this.rootNode[i++]) {\n\t\t\t\tformValues = formValues.concat(this.getFormValues(currNode, this.nodeCallback, this.useIdIfEmptyName));\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tformValues = this.getFormValues(this.rootNode, this.nodeCallback, this.useIdIfEmptyName);\n\t\t}\n\n\t\treturn this.processNameValues(formValues, this.options.skipEmpty, this.emptyToNull, this.options.delimiter);\n\t},\n\tprocessNameValues: function(nameValues, skipEmpty, delimiter) {\n\t\tvar result = {},\n\t\t\tarrays = {},\n\t\t\ti, j, k, l,\n\t\t\tvalue,\n\t\t\tnameParts,\n\t\t\tcurrResult,\n\t\t\tarrNameFull,\n\t\t\tarrName,\n\t\t\tarrIdx,\n\t\t\tnamePart,\n\t\t\tname,\n\t\t\t_nameParts;\n\n\t\t\tfor (i = 0; i < nameValues.length; i++) {\n\t\t\t\tvalue = nameValues[i].value;\n\n\t\t\t\tif (this.emptyToNull && (value === '')) { value = null; }\n\t\t\t\tif (skipEmpty && (value === '' || value === null)) continue;\n\n\t\t\t\tname = nameValues[i].name;\n\t\t\t\tif (typeof name === 'undefined') continue;\n\n\t\t\t\t_nameParts = name.split(this.options.delimiter);\n\t\t\t\tnameParts = [];\n\t\t\t\tcurrResult = result;\n\t\t\t\tarrNameFull = '';\n\n\t\t\t\tfor(j = 0; j < _nameParts.length; j++)\n\t\t\t\t{\n\t\t\t\t\tnamePart = _nameParts[j].split('][');\n\t\t\t\t\tif (namePart.length > 1)\n\t\t\t\t\t{\n\t\t\t\t\t\tfor(k = 0; k < namePart.length; k++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (k == 0)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tnamePart[k] = namePart[k] + ']';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (k == namePart.length - 1)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tnamePart[k] = '[' + namePart[k];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tnamePart[k] = '[' + namePart[k] + ']';\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tarrIdx = namePart[k].match(/([a-z_]+)?\\[([a-z_][a-z0-9_]+?)\\]/i);\n\t\t\t\t\t\t\tif (arrIdx)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfor(l = 1; l < arrIdx.length; l++)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tif (arrIdx[l]) nameParts.push(arrIdx[l]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse{\n\t\t\t\t\t\t\t\tnameParts.push(namePart[k]);\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\tnameParts = nameParts.concat(namePart);\n\t\t\t\t}\n\n\t\t\t\tfor (j = 0; j < nameParts.length; j++)\n\t\t\t\t{\n\t\t\t\t\tnamePart = nameParts[j];\n\n\t\t\t\t\tif (namePart.indexOf('[]') > -1 && j == nameParts.length - 1)\n\t\t\t\t\t{\n\t\t\t\t\t\tarrName = namePart.substr(0, namePart.indexOf('['));\n\t\t\t\t\t\tarrNameFull += arrName;\n\n\t\t\t\t\t\tif (!currResult[arrName]) currResult[arrName] = [];\n\t\t\t\t\t\tcurrResult[arrName].push(value);\n\t\t\t\t\t}\n\t\t\t\t\telse if (namePart.indexOf('[') > -1)\n\t\t\t\t\t{\n\t\t\t\t\t\tarrName = namePart.substr(0, namePart.indexOf('['));\n\t\t\t\t\t\tarrIdx = namePart.replace(/(^([a-z_]+)?\\[)|(\\]$)/gi, '');\n\n\t\t\t\t\t\t/* Unique array name */\n\t\t\t\t\t\tarrNameFull += '_' + arrName + '_' + arrIdx;\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * Because arrIdx in field name can be not zero-based and step can be\n\t\t\t\t\t\t * other than 1, we can't use them in target array directly.\n\t\t\t\t\t\t * Instead we're making a hash where key is arrIdx and value is a reference to\n\t\t\t\t\t\t * added array element\n\t\t\t\t\t\t */\n\n\t\t\t\t\t\tif (!arrays[arrNameFull]) arrays[arrNameFull] = {};\n\t\t\t\t\t\tif (arrName != '' && !currResult[arrName]) currResult[arrName] = [];\n\n\t\t\t\t\t\tif (j == nameParts.length - 1)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (arrName == '')\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcurrResult.push(value);\n\t\t\t\t\t\t\t\tarrays[arrNameFull][arrIdx] = currResult[currResult.length - 1];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcurrResult[arrName].push(value);\n\t\t\t\t\t\t\t\tarrays[arrNameFull][arrIdx] = currResult[arrName][currResult[arrName].length - 1];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (!arrays[arrNameFull][arrIdx])\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif ((/^[a-z_]+\\[?/i).test(nameParts[j+1])) currResult[arrName].push({});\n\t\t\t\t\t\t\t\telse currResult[arrName].push([]);\n\n\t\t\t\t\t\t\t\tarrays[arrNameFull][arrIdx] = currResult[arrName][currResult[arrName].length - 1];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcurrResult = arrays[arrNameFull][arrIdx];\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tarrNameFull += namePart;\n\n\t\t\t\t\t\tif (j < nameParts.length - 1) /* Not the last part of name - means object */\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (!currResult[namePart]) currResult[namePart] = {};\n\t\t\t\t\t\t\tcurrResult = currResult[namePart];\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcurrResult[namePart] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t},\n\tgetFormValues: function(rootNode, nodeCallback, useIdIfEmpty) {\n\t\tvar result = this.extractNodeValues(rootNode, nodeCallback, this.useIdIfEmptyName);\n return result.length > 0 ? result : this.getSubFormValues(rootNode, nodeCallback, this.useIdIfEmptyName);\n\t},\n\tgetSubFormValues: function(rootNode, nodeCallback, useIdIfEmpty) {\n\t\t\tvar result = [],\n\t\t\tcurrentNode = rootNode.firstChild;\n\n\t\t\twhile (currentNode) {\n\t\t\t\tvar currentResult = this.extractNodeValues(currentNode, nodeCallback, this.useIdIfEmptyName);\n\t\t\t\tfor (var i = 0; i < currentResult.length;i++ ) {\n\t\t\t\t\tif((currentResult[i].value !== null && this.options.skipEmpty) || !this.options.skipEmpty) {\n\t\t\t\t\t\tresult[result.length] = currentResult[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcurrentNode = currentNode.nextSibling;\n\t\t\t}\n\t\t\treturn result;\n\t},\n\textractNodeValues: function(node, nodeCallback, useIdIfEmptyName) {\n\t\tvar callbackResult, fieldValue, result, fieldName = this.getFieldName(node, useIdIfEmptyName);\n\n callbackResult = this.nodeCallback && this.nodeCallback(node);\n\n if (callbackResult && callbackResult.name) {\n result = [callbackResult];\n }\n else if (fieldName != '' && node.nodeName.match(/INPUT|TEXTAREA/i)) {\n fieldValue = this.getFieldValue(node);\n\t\t\tif (fieldValue == null && node.type == 'radio')\n\t\t result = [];\n\t\t else\n\t\t result = [ { name: fieldName, value: fieldValue} ];\n\t\t} else if (fieldName != '' && node.nodeName.match(/SELECT/i)) {\n\t\t\tfieldValue = this.getFieldValue(node);\n\t\t\tresult = [ { name: fieldName.replace(/\\[\\]$/, ''), value: fieldValue } ];\n } else {\n result = this.getSubFormValues(node, nodeCallback, useIdIfEmptyName);\n }\n\n return result;\n\n\t},\n\tgetFieldName: function(node, useIdIfEmptyName) {\n\t\tif (node.name && node.name != '') return node.name;\n\t\telse if (this.useIdIfEmptyName && node.id && node.id != '') return node.id;\n\t\telse return '';\n\t},\n\tgetFieldValue: function(fieldNode) {\n\t\tif (fieldNode.disabled) return null;\n\t\t\n\t\tswitch (fieldNode.nodeName) {\n\t\t\tcase 'INPUT':\n\t\t\tcase 'TEXTAREA':\n\t\t\t\tswitch (fieldNode.type.toLowerCase()) {\n\t\t\t\t\tcase 'radio':\n\t\t\t\t\t\tif (fieldNode.checked) return fieldNode.value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'checkbox':\n\t\t if (fieldNode.checked && fieldNode.value === 'true' || fieldNode.value === 'on') return true;\n\t\t if (!fieldNode.checked && fieldNode.value === 'true' || fieldNode.value === 'on') return false;\n\t\t\t\t\t\t\tif (fieldNode.checked) return fieldNode.value;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'button':\n\t\t\t\t\tcase 'reset':\n\t\t\t\t\tcase 'submit':\n\t\t\t\t\tcase 'image':\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn fieldNode.value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'SELECT':\n\t\t\t\treturn this.getSelectedOptionValue(fieldNode);\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn null;\n\n\t},\n\tgetSelectedOptionValue: function(selectNode) {\n\t\tvar multiple = selectNode.multiple,\n\t\t\tresult = [],\n\t\t\toptions,\n\t\t\ti, l;\n\n\t\tif (!multiple) return selectNode.value;\n\n\t\tfor (options = selectNode.getElementsByTagName('option'), i = 0, l = options.length; i < l; i++) {\n\t\t\tif (options[i].selected) result.push(options[i].value);\n\t\t}\n\n\t\treturn result; \n\t}\n\t\n\n});","/**\n * Copyright (c) 2010 Maxim Vasiliev\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n * @author Maxim Vasiliev\n * Date: 19.09.11\n * Time: 23:40\n */\njs2form = new Class({\nImplements: Options,\noptions: {\n\trootNode: null,\n\tdelimiter: null,\n\tskipEmpty: null,\n\tnodeCallback: null,\n\tuseIdIfEmpty: null,\n\tdata: null\n},\nuseIdIfEmptyName: null,\nfieldValues: null,\nformFieldsByName: null,\n_subArrayRegexp: /^\\[\\d+?\\]/,\n_subObjectRegexp: /^[a-zA-Z_][a-zA-Z_0-9]+/,\n_arrayItemRegexp: /\\[[0-9]+?\\]$/,\n_lastIndexedArrayRegexp: /(.*)(\\[)([0-9]*)(\\])$/,\n_arrayOfArraysRegexp: /\\[([0-9]+)\\]\\[([0-9]+)\\]/g,\n_inputOrTextareaRegexp: /INPUT|TEXTAREA/i,\n\n/**\n*\n* @param rootNode\n* @param data\n* @param delimiter\n* @param nodeCallback\n* @param useIdIfEmptyName\n*/\n\tinitialize: function(options) {\n\t\tthis.setOptions(options);\n\t\tif (typeof this.options.skipEmpty == 'undefined' || this.options.skipEmpty == null) this.options.skipEmpty = true;\n\t\tif (typeof this.options.delimiter == 'undefined' || this.options.delimiter == null) this.options.delimiter = '.';\n\t\tif (this.options.useIdIfEmpty == null) this.useIdIfEmptyName = false;\n\t\tthis.rootNode = this.options.rootNode;\n\t},\n\trm: function() {\n\t\tthis.fieldValues = this.object2array(this.options.data);\n\t\tthis.formFieldsByName = this.getFields(this.rootNode, this.useIdIfEmptyName, this.options.delimiter, {}, true);\n\n\t\tfor (var i = 0; i < this.fieldValues.length; i++) {\n\t\t\tvar fieldName = this.fieldValues[i].name;\n\t\t\tvar fieldValue = this.fieldValues[i].value;\n\n\t\t\tif (typeof this.formFieldsByName[fieldName] != 'undefined') {\n\t\t\t\tthis.setValue(this.formFieldsByName[fieldName], fieldValue);\n\t\t\t} else if (typeof this.formFieldsByName[fieldName.replace(this._arrayItemRegexp, '[]')] != 'undefined') {\n\t\t\t\tthis.setValue(this.formFieldsByName[fieldName.replace(this._arrayItemRegexp, '[]')], fieldValue);\n\t\t\t}\n\t\t}\n\t},\n\tsetValue: function(field, value) {\n\t\tvar children, i, l;\n\n\t\tif (field instanceof Array) {\n\t\t\tfor(i = 0; i < field.length; i++)\n\t\t\t\tif (field[i].value == value) \n\t\t\t\t\tfield[i].checked = true;\n\n\t\t} else if (this._inputOrTextareaRegexp.test(field.nodeName)) {\n\t\t\tfield.value = (value == null) ? '' : value;\n\n\t\t} else if (/SELECT/i.test(field.nodeName)) {\n\t\t\tchildren = field.getElementsByTagName('option');\n\n\t\t\tfor (i = 0,l = children.length; i < l; i++) {\n\n\t\t\t\tif (children[i].value == value) {\n\t\t\t\t\tchildren[i].selected = true;\n\t\t\t\t\tif (field.multiple) \n\t\t\t\t\t\tbreak;\n\t\t\t\t} else if (!field.multiple) {\n\t\t\t\t\tchildren[i].selected = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tgetFields: function(rootNode, useIdIfEmptyName, delimiter, arrayIndexes, shouldClean) {\n\t\tif (arguments.length < 4) arrayIndexes = {};\n\n\t\tvar result = {},\n\t\tcurrNode = $(rootNode).firstChild,\n\t\tname, nameNormalized,\n\t\tsubFieldName,\n\t\ti, j, l,\n\t\toptions;\n\n\t\twhile (currNode) {\n\t\t\tname = '';\n\n\t\t\tif (currNode.name && currNode.name != '') {\n\t\t\t\tname = currNode.name;\n\t\t\t}\n\t\t\telse if (useIdIfEmptyName && currNode.id && currNode.id != '') {\n\t\t\t\tname = currNode.id;\n\t\t\t}\n\n\t\t\tif (name == '') {\n\t\t\t\tvar subFields = this.getFields(currNode, useIdIfEmptyName, delimiter, arrayIndexes, shouldClean);\n\t\t\t\tfor (subFieldName in subFields) {\n\t\t\t\t\tif (typeof result[subFieldName] == 'undefined') {\n\t\t\t\t\t\tresult[subFieldName] = subFields[subFieldName];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor (i = 0; i < subFields[subFieldName].length; i++) {\n\t\t\t\t\t\t\tif (result[subFieldName].tagName == \"SELECT\")\n\t\t\t\t\t\t\t\tresult[subFieldName].add(subFields[subFieldName][i]);\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tresult[subFieldName].push(subFields[subFieldName][i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t } else {\n\t\t\t if (/SELECT/i.test(currNode.nodeName)) {\n\t\t\t\t for(j = 0, options = currNode.getElementsByTagName('option'), l = options.length; j < l; j++) {\n\t\t\t\t\t if (shouldClean) {\n\t\t\t\t\t\t options[j].selected = false;\n\t\t\t\t\t }\n\n\t\t\t\t\t nameNormalized = this.normalizeName(name, delimiter, arrayIndexes);\n\t\t\t\t\t result[nameNormalized] = currNode;\n\t\t\t\t }\n\t\t\t } else if (/INPUT/i.test(currNode.nodeName) && /CHECKBOX|RADIO/i.test(currNode.type)) {\n\t\t\t\t if(shouldClean) {\n\t\t\t\t\t currNode.checked = false;\n\t\t\t\t }\n\n\t\t\t\t nameNormalized =\tthis.normalizeName(name, delimiter, arrayIndexes);\n\t\t\t\t nameNormalized = nameNormalized.replace(this._arrayItemRegexp, '[]');\n\t\t\t\t\n\t\t\t\t if (!result[nameNormalized]) result[nameNormalized] = [];\n\t\t\t\t\t result[nameNormalized].push(currNode);\n\t\t\t } else {\n\t\t\t\t if (shouldClean) {\n\t\t\t\t\t currNode.value = '';\n\t\t\t\t }\n\n\t\t\t\t nameNormalized = this.normalizeName(name, delimiter, arrayIndexes);\n\t\t\t\t result[nameNormalized] = currNode;\n\n\t\t\t }\n\t\t }\r\n\t\t if (this.options.nodeCallback)\r\n\t\t this.options.nodeCallback(currNode);\n\t\t currNode = currNode.nextSibling;\n\t\t}\n\n\treturn result;\n\t},\n\n\t/**\n\t* Normalizes names of arrays, puts correct indexes (consecutive and ordered by element appearance in HTML)\n\t* @param name\n\t* @param delimiter\n\t* @param arrayIndexes\n\t*/\n\tnormalizeName: function(name, delimiter, arrayIndexes) {\n\t\tvar nameChunksNormalized = [],\n\t\tnameChunks = name.split(delimiter),\n\t\tcurrChunk,\n\t\tnameMatches,\n\t\tnameNormalized,\n\t\tcurrIndex,\n\t\tnewIndex,\n\t\ti;\n\n\t\tname = name.replace(this._arrayOfArraysRegexp, '[$1].[$2]');\n\t\t\n\t\tfor (i = 0; i < nameChunks.length; i++) {\n\t\t\tcurrChunk = nameChunks[i];\n\t\t\tnameChunksNormalized.push(currChunk);\n\t\t\tnameMatches = currChunk.match(this._lastIndexedArrayRegexp);\n\n\t\tif (nameMatches != null) {\n\t\t\tnameNormalized = nameChunksNormalized.join(delimiter);\n\t\t\tcurrIndex = nameNormalized.replace(this._lastIndexedArrayRegexp, '$3');\n\t\t\tnameNormalized = nameNormalized.replace(this._lastIndexedArrayRegexp, '$1');\n\n\t\t\tif (typeof (arrayIndexes[nameNormalized]) == 'undefined') {\n\t\t\t\tarrayIndexes[nameNormalized] = {\n\t\t\t\tlastIndex: -1,\n\t\t\t\tindexes: {}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (currIndex == '' || typeof arrayIndexes[nameNormalized].indexes[currIndex] == 'undefined') {\n\t\t\t\tarrayIndexes[nameNormalized].lastIndex++;\n\t\t\t\tarrayIndexes[nameNormalized].indexes[currIndex] = arrayIndexes[nameNormalized].lastIndex;\n\t\t\t}\n\n\t\t\t\tnewIndex = arrayIndexes[nameNormalized].indexes[currIndex];\n\t\t\t\tnameChunksNormalized[nameChunksNormalized.length - 1] = currChunk.replace(this._lastIndexedArrayRegexp, '$1$2' + newIndex + '$4');\n\t\t\t}\n\t\t}\n\n\t\tnameNormalized = nameChunksNormalized.join(delimiter);\n\t\tnameNormalized = nameNormalized.replace('].[', '][');\n\t\treturn nameNormalized;\n\t},\n\tobject2array: function(obj, lvl) {\n\t\tvar result = [], i, name;\n\n\t\tif (arguments.length == 1) lvl = 0;\n\n\t\tif (obj == null) {\n\t\t\tresult = [{ name: \"\", value: null }];\n\t\t}\n\t\telse if (typeof obj == 'string' || typeof obj == 'number' || typeof obj == 'date' || typeof obj == 'boolean') {\n\t\t\tresult = [\n\t\t\t\t{ name: \"\", value : obj }\n\t\t\t];\n\t\t}\n\t\telse if (obj instanceof Array) {\n\t\t\tfor (i = 0; i < obj.length; i++)\n\t\t\t{\n\t\t\t\tname = \"[\" + i + \"]\";\n\t\t\t\tresult = result.concat(this.getSubValues(obj[i], name, lvl + 1));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i in obj)\n\t\t\t{\n\t\t\t\tname = i;\n\t\t\t\tresult = result.concat(this.getSubValues(obj[i], name, lvl + 1));\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t},\n\tgetSubValues: function(subObj, name, lvl) {\n\t\tvar itemName;\n\t\tvar result = [], tempResult = this.object2array(subObj, lvl + 1), i, tempItem;\n\n\t\tfor (i = 0; i < tempResult.length; i++) {\n\t\t\titemName = name;\n\t\t\tif (this._subArrayRegexp.test(tempResult[i].name)) {\n\t\t\t\titemName += tempResult[i].name;\n\t\t\t}\n\t\t\telse if (this._subObjectRegexp.test(tempResult[i].name)) {\n\t\t\t\titemName += '.' + tempResult[i].name;\n\t\t\t}\n\n\t\t\ttempItem = { name: itemName, value: tempResult[i].value };\n\t\t\tresult.push(tempItem);\n\t\t}\n\t\treturn result;\n\t}\n});","/**\r\n * Copyright 2014 Tim Down.\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(function(factory,root){if(typeof define==\"function\"&&define.amd){define(factory);}else if(typeof module!=\"undefined\"&&typeof exports==\"object\"){module.exports=factory();}else{root.log4javascript=factory();}})(function(){if(!Array.prototype.push){Array.prototype.push=function(){for(var i=0,len=arguments.length;i0){var firstItem=this[0];for(var i=0,len=this.length-1;i2)?itemsAfterDeleted=argumentsArray.slice(2).concat(itemsAfterDeleted):itemsAfterDeleted;for(i=0,len=itemsToAppend.length;i=0){arr.splice(index,1);return true;}else{return false;}}\r\nfunction array_contains(arr,val){for(var i=0,len=arr.length;i=level.level;}};Level.ALL=new Level(Number.MIN_VALUE,\"ALL\");Level.TRACE=new Level(10000,\"TRACE\");Level.DEBUG=new Level(20000,\"DEBUG\");Level.INFO=new Level(30000,\"INFO\");Level.WARN=new Level(40000,\"WARN\");Level.ERROR=new Level(50000,\"ERROR\");Level.FATAL=new Level(60000,\"FATAL\");Level.OFF=new Level(Number.MAX_VALUE,\"OFF\");log4javascript.Level=Level;function Timer(name,level){this.name=name;this.level=isUndefined(level)?Level.INFO:level;this.start=new Date();}\r\nTimer.prototype.getElapsedTime=function(){return new Date().getTime()-this.start.getTime();};var anonymousLoggerName=\"[anonymous]\";var defaultLoggerName=\"[default]\";var nullLoggerName=\"[null]\";var rootLoggerName=\"root\";function Logger(name){this.name=name;this.parent=null;this.children=[];var appenders=[];var loggerLevel=null;var isRoot=(this.name===rootLoggerName);var isNull=(this.name===nullLoggerName);var appenderCache=null;var appenderCacheInvalidated=false;this.addChild=function(childLogger){this.children.push(childLogger);childLogger.parent=this;childLogger.invalidateAppenderCache();};var additive=true;this.getAdditivity=function(){return additive;};this.setAdditivity=function(additivity){var valueChanged=(additive!=additivity);additive=additivity;if(valueChanged){this.invalidateAppenderCache();}};this.addAppender=function(appender){if(isNull){handleError(\"Logger.addAppender: you may not add an appender to the null logger\");}else{if(appender instanceof log4javascript.Appender){if(!array_contains(appenders,appender)){appenders.push(appender);appender.setAddedToLogger(this);this.invalidateAppenderCache();}}else{handleError(\"Logger.addAppender: appender supplied ('\"+\r\ntoStr(appender)+\"') is not a subclass of Appender\");}}};this.removeAppender=function(appender){array_remove(appenders,appender);appender.setRemovedFromLogger(this);this.invalidateAppenderCache();};this.removeAllAppenders=function(){var appenderCount=appenders.length;if(appenderCount>0){for(var i=0;i1&&isError(lastParam)){exception=lastParam;finalParamIndex--;}\r\nvar messages=[];for(var i=0;i<=finalParamIndex;i++){messages[i]=params[i];}\r\nvar loggingEvent=new LoggingEvent(this,new Date(),level,messages,exception);this.callAppenders(loggingEvent);}};this.callAppenders=function(loggingEvent){var effectiveAppenders=this.getEffectiveAppenders();for(var i=0,len=effectiveAppenders.length;i0)?args:[\"Assertion Failure\"];args.push(newLine);args.push(expr);this.log(Level.ERROR,args);}};this.toString=function(){return\"Logger[\"+this.name+\"]\";};}\r\nLogger.prototype={trace:function(){this.log(Level.TRACE,arguments);},debug:function(){this.log(Level.DEBUG,arguments);},info:function(){this.log(Level.INFO,arguments);},warn:function(){this.log(Level.WARN,arguments);},error:function(){this.log(Level.ERROR,arguments);},fatal:function(){this.log(Level.FATAL,arguments);},isEnabledFor:function(level){return level.isGreaterOrEqual(this.getEffectiveLevel());},isTraceEnabled:function(){return this.isEnabledFor(Level.TRACE);},isDebugEnabled:function(){return this.isEnabledFor(Level.DEBUG);},isInfoEnabled:function(){return this.isEnabledFor(Level.INFO);},isWarnEnabled:function(){return this.isEnabledFor(Level.WARN);},isErrorEnabled:function(){return this.isEnabledFor(Level.ERROR);},isFatalEnabled:function(){return this.isEnabledFor(Level.FATAL);}};Logger.prototype.trace.isEntryPoint=true;Logger.prototype.debug.isEntryPoint=true;Logger.prototype.info.isEntryPoint=true;Logger.prototype.warn.isEntryPoint=true;Logger.prototype.error.isEntryPoint=true;Logger.prototype.fatal.isEntryPoint=true;var loggers={};var loggerNames=[];var ROOT_LOGGER_DEFAULT_LEVEL=Level.DEBUG;var rootLogger=new Logger(rootLoggerName);rootLogger.setLevel(ROOT_LOGGER_DEFAULT_LEVEL);log4javascript.getRootLogger=function(){return rootLogger;};log4javascript.getLogger=function(loggerName){if(typeof loggerName!=\"string\"){loggerName=anonymousLoggerName;logLog.warn(\"log4javascript.getLogger: non-string logger name \"+\r\ntoStr(loggerName)+\" supplied, returning anonymous logger\");}\r\nif(loggerName==rootLoggerName){handleError(\"log4javascript.getLogger: root logger may not be obtained by name\");}\r\nif(!loggers[loggerName]){var logger=new Logger(loggerName);loggers[loggerName]=logger;loggerNames.push(loggerName);var lastDotIndex=loggerName.lastIndexOf(\".\");var parentLogger;if(lastDotIndex>-1){var parentLoggerName=loggerName.substring(0,lastDotIndex);parentLogger=log4javascript.getLogger(parentLoggerName);}else{parentLogger=rootLogger;}\r\nparentLogger.addChild(logger);}\r\nreturn loggers[loggerName];};var defaultLogger=null;log4javascript.getDefaultLogger=function(){if(!defaultLogger){defaultLogger=createDefaultLogger();}\r\nreturn defaultLogger;};var nullLogger=null;log4javascript.getNullLogger=function(){if(!nullLogger){nullLogger=new Logger(nullLoggerName);nullLogger.setLevel(Level.OFF);}\r\nreturn nullLogger;};log4javascript.resetConfiguration=function(){rootLogger.setLevel(ROOT_LOGGER_DEFAULT_LEVEL);loggers={};};var LoggingEvent=function(logger,timeStamp,level,messages,exception){this.logger=logger;this.timeStamp=timeStamp;this.timeStampInMilliseconds=timeStamp.getTime();this.timeStampInSeconds=Math.floor(this.timeStampInMilliseconds/1000);this.milliseconds=this.timeStamp.getMilliseconds();this.level=level;this.messages=messages;this.exception=exception;};LoggingEvent.prototype={getThrowableStrRep:function(){return this.exception?getExceptionStringRep(this.exception):\"\";},getCombinedMessages:function(){return(this.messages.length==1)?this.messages[0]:this.messages.join(newLine);},toString:function(){return\"LoggingEvent[\"+this.level+\"]\";}};log4javascript.LoggingEvent=LoggingEvent;var Layout=function(){};Layout.prototype={defaults:{loggerKey:\"logger\",timeStampKey:\"timestamp\",millisecondsKey:\"milliseconds\",levelKey:\"level\",messageKey:\"message\",exceptionKey:\"exception\",urlKey:\"url\"},loggerKey:\"logger\",timeStampKey:\"timestamp\",millisecondsKey:\"milliseconds\",levelKey:\"level\",messageKey:\"message\",exceptionKey:\"exception\",urlKey:\"url\",batchHeader:\"\",batchFooter:\"\",batchSeparator:\"\",returnsPostData:false,overrideTimeStampsSetting:false,useTimeStampsInMilliseconds:null,format:function(){handleError(\"Layout.format: layout supplied has no format() method\");},ignoresThrowable:function(){handleError(\"Layout.ignoresThrowable: layout supplied has no ignoresThrowable() method\");},getContentType:function(){return\"text/plain\";},allowBatching:function(){return true;},setTimeStampsInMilliseconds:function(timeStampsInMilliseconds){this.overrideTimeStampsSetting=true;this.useTimeStampsInMilliseconds=bool(timeStampsInMilliseconds);},isTimeStampsInMilliseconds:function(){return this.overrideTimeStampsSetting?this.useTimeStampsInMilliseconds:useTimeStampsInMilliseconds;},getTimeStampValue:function(loggingEvent){return this.isTimeStampsInMilliseconds()?loggingEvent.timeStampInMilliseconds:loggingEvent.timeStampInSeconds;},getDataValues:function(loggingEvent,combineMessages){var dataValues=[[this.loggerKey,loggingEvent.logger.name],[this.timeStampKey,this.getTimeStampValue(loggingEvent)],[this.levelKey,loggingEvent.level.name],[this.urlKey,window.location.href],[this.messageKey,combineMessages?loggingEvent.getCombinedMessages():loggingEvent.messages]];if(!this.isTimeStampsInMilliseconds()){dataValues.push([this.millisecondsKey,loggingEvent.milliseconds]);}\r\nif(loggingEvent.exception){dataValues.push([this.exceptionKey,getExceptionStringRep(loggingEvent.exception)]);}\r\nif(this.hasCustomFields()){for(var i=0,len=this.customFields.length;i0);},formatWithException:function(loggingEvent){var formatted=this.format(loggingEvent);if(loggingEvent.exception&&this.ignoresThrowable()){formatted+=loggingEvent.getThrowableStrRep();}\r\nreturn formatted;},toString:function(){handleError(\"Layout.toString: all layouts must override this method\");}};log4javascript.Layout=Layout;var Appender=function(){};Appender.prototype=new EventSupport();Appender.prototype.layout=new PatternLayout();Appender.prototype.threshold=Level.ALL;Appender.prototype.loggers=[];Appender.prototype.doAppend=function(loggingEvent){if(enabled&&loggingEvent.level.level>=this.threshold.level){this.append(loggingEvent);}};Appender.prototype.append=function(loggingEvent){};Appender.prototype.setLayout=function(layout){if(layout instanceof Layout){this.layout=layout;}else{handleError(\"Appender.setLayout: layout supplied to \"+\r\nthis.toString()+\" is not a subclass of Layout\");}};Appender.prototype.getLayout=function(){return this.layout;};Appender.prototype.setThreshold=function(threshold){if(threshold instanceof Level){this.threshold=threshold;}else{handleError(\"Appender.setThreshold: threshold supplied to \"+\r\nthis.toString()+\" is not a subclass of Level\");}};Appender.prototype.getThreshold=function(){return this.threshold;};Appender.prototype.setAddedToLogger=function(logger){this.loggers.push(logger);};Appender.prototype.setRemovedFromLogger=function(logger){array_remove(this.loggers,logger);};Appender.prototype.group=emptyFunction;Appender.prototype.groupEnd=emptyFunction;Appender.prototype.toString=function(){handleError(\"Appender.toString: all appenders must override this method\");};log4javascript.Appender=Appender;function SimpleLayout(){this.customFields=[];}\r\nSimpleLayout.prototype=new Layout();SimpleLayout.prototype.format=function(loggingEvent){return loggingEvent.level.name+\" - \"+loggingEvent.getCombinedMessages();};SimpleLayout.prototype.ignoresThrowable=function(){return true;};SimpleLayout.prototype.toString=function(){return\"SimpleLayout\";};log4javascript.SimpleLayout=SimpleLayout;function NullLayout(){this.customFields=[];}\r\nNullLayout.prototype=new Layout();NullLayout.prototype.format=function(loggingEvent){return loggingEvent.messages;};NullLayout.prototype.ignoresThrowable=function(){return true;};NullLayout.prototype.formatWithException=function(loggingEvent){var messages=loggingEvent.messages,ex=loggingEvent.exception;return ex?messages.concat([ex]):messages;};NullLayout.prototype.toString=function(){return\"NullLayout\";};log4javascript.NullLayout=NullLayout;function XmlLayout(combineMessages){this.combineMessages=extractBooleanFromParam(combineMessages,true);this.customFields=[];}\r\nXmlLayout.prototype=new Layout();XmlLayout.prototype.isCombinedMessages=function(){return this.combineMessages;};XmlLayout.prototype.getContentType=function(){return\"text/xml\";};XmlLayout.prototype.escapeCdata=function(str){return str.replace(/\\]\\]>/,\"]]>]]>\";}\r\nvar str=\"\"+newLine;if(this.combineMessages){str+=formatMessage(loggingEvent.getCombinedMessages());}else{str+=\"\"+newLine;for(i=0,len=loggingEvent.messages.length;i\"+newLine;}\r\nif(this.hasCustomFields()){for(i=0,len=this.customFields.length;i\"+newLine;}}\r\nif(loggingEvent.exception){str+=\"\"+newLine;}\r\nstr+=\"\"+newLine+newLine;return str;};XmlLayout.prototype.ignoresThrowable=function(){return false;};XmlLayout.prototype.toString=function(){return\"XmlLayout\";};log4javascript.XmlLayout=XmlLayout;function escapeNewLines(str){return str.replace(/\\r\\n|\\r|\\n/g,\"\\\\r\\\\n\");}\r\nfunction JsonLayout(readable,combineMessages){this.readable=extractBooleanFromParam(readable,false);this.combineMessages=extractBooleanFromParam(combineMessages,true);this.batchHeader=this.readable?\"[\"+newLine:\"[\";this.batchFooter=this.readable?\"]\"+newLine:\"]\";this.batchSeparator=this.readable?\",\"+newLine:\",\";this.setKeys();this.colon=this.readable?\": \":\":\";this.tab=this.readable?\"\\t\":\"\";this.lineBreak=this.readable?newLine:\"\";this.customFields=[];}\r\nJsonLayout.prototype=new Layout();JsonLayout.prototype.isReadable=function(){return this.readable;};JsonLayout.prototype.isCombinedMessages=function(){return this.combineMessages;};JsonLayout.prototype.format=function(loggingEvent){var layout=this;var dataValues=this.getDataValues(loggingEvent,this.combineMessages);var str=\"{\"+this.lineBreak;var i,len;function formatValue(val,prefix,expand){var formattedValue;var valType=typeof val;if(val instanceof Date){formattedValue=String(val.getTime());}else if(expand&&(val instanceof Array)){formattedValue=\"[\"+layout.lineBreak;for(var i=0,len=val.length;i0){objectsExpanded.push(obj);expansion=\"[\"+newLine;childDepth=depth-1;childIndentation=indentation+\" \";childLines=[];for(i=0,len=obj.length;i0){objectsExpanded.push(obj);expansion=\"{\"+newLine;childDepth=depth-1;childIndentation=indentation+\" \";childLines=[];for(i in obj){try{childExpansion=doFormat(obj[i],childDepth,childIndentation);childLines.push(childIndentation+i+\": \"+childExpansion);}catch(ex){childLines.push(childIndentation+i+\": Error formatting property. Details: \"+\r\ngetExceptionStringRep(ex));}}\r\nexpansion+=childLines.join(\",\"+newLine)+newLine+indentation+\"}\";return expansion;}else{return formatString(toStr(obj));}}\r\nreturn doFormat(obj,depth,indentation);}\r\nvar SimpleDateFormat;(function(){var regex=/('[^']*')|(G+|y+|M+|w+|W+|D+|d+|F+|E+|a+|H+|k+|K+|h+|m+|s+|S+|Z+)|([a-zA-Z]+)|([^a-zA-Z']+)/;var monthNames=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];var dayNames=[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"];var TEXT2=0,TEXT3=1,NUMBER=2,YEAR=3,MONTH=4,TIMEZONE=5;var types={G:TEXT2,y:YEAR,M:MONTH,w:NUMBER,W:NUMBER,D:NUMBER,d:NUMBER,F:NUMBER,E:TEXT3,a:TEXT2,H:NUMBER,k:NUMBER,K:NUMBER,h:NUMBER,m:NUMBER,s:NUMBER,S:NUMBER,Z:TIMEZONE};var ONE_DAY=24*60*60*1000;var ONE_WEEK=7*ONE_DAY;var DEFAULT_MINIMAL_DAYS_IN_FIRST_WEEK=1;var newDateAtMidnight=function(year,month,day){var d=new Date(year,month,day,0,0,0);d.setMilliseconds(0);return d;};Date.prototype.getDifference=function(date){return this.getTime()-date.getTime();};Date.prototype.isBefore=function(d){return this.getTime()=minimalDaysInFirstWeek){weekInMonth++;}\r\nreturn weekInMonth;};Date.prototype.getDayInYear=function(){var startOfYear=newDateAtMidnight(this.getFullYear(),0,1);return 1+Math.floor(this.getTimeSince(startOfYear)/ONE_DAY);};SimpleDateFormat=function(formatString){this.formatString=formatString;};SimpleDateFormat.prototype.setMinimalDaysInFirstWeek=function(days){this.minimalDaysInFirstWeek=days;};SimpleDateFormat.prototype.getMinimalDaysInFirstWeek=function(){return isUndefined(this.minimalDaysInFirstWeek)?DEFAULT_MINIMAL_DAYS_IN_FIRST_WEEK:this.minimalDaysInFirstWeek;};var padWithZeroes=function(str,len){while(str.length=4)?data:data.substr(0,Math.max(minLength,numberOfLetters));};var formatNumber=function(data,numberOfLetters){var dataString=\"\"+data;return padWithZeroes(dataString,numberOfLetters);};SimpleDateFormat.prototype.format=function(date){var formattedString=\"\";var result;var searchString=this.formatString;while((result=regex.exec(searchString))){var quotedString=result[1];var patternLetters=result[2];var otherLetters=result[3];var otherCharacters=result[4];if(quotedString){if(quotedString==\"''\"){formattedString+=\"'\";}else{formattedString+=quotedString.substring(1,quotedString.length-1);}}else if(otherLetters){}else if(otherCharacters){formattedString+=otherCharacters;}else if(patternLetters){var patternLetter=patternLetters.charAt(0);var numberOfLetters=patternLetters.length;var rawData=\"\";switch(patternLetter){case\"G\":rawData=\"AD\";break;case\"y\":rawData=date.getFullYear();break;case\"M\":rawData=date.getMonth();break;case\"w\":rawData=date.getWeekInYear(this.getMinimalDaysInFirstWeek());break;case\"W\":rawData=date.getWeekInMonth(this.getMinimalDaysInFirstWeek());break;case\"D\":rawData=date.getDayInYear();break;case\"d\":rawData=date.getDate();break;case\"F\":rawData=1+Math.floor((date.getDate()-1)/7);break;case\"E\":rawData=dayNames[date.getDay()];break;case\"a\":rawData=(date.getHours()>=12)?\"PM\":\"AM\";break;case\"H\":rawData=date.getHours();break;case\"k\":rawData=date.getHours()||24;break;case\"K\":rawData=date.getHours()%12;break;case\"h\":rawData=(date.getHours()%12)||12;break;case\"m\":rawData=date.getMinutes();break;case\"s\":rawData=date.getSeconds();break;case\"S\":rawData=date.getMilliseconds();break;case\"Z\":rawData=date.getTimezoneOffset();break;}\r\nswitch(types[patternLetter]){case TEXT2:formattedString+=formatText(rawData,numberOfLetters,2);break;case TEXT3:formattedString+=formatText(rawData,numberOfLetters,3);break;case NUMBER:formattedString+=formatNumber(rawData,numberOfLetters);break;case YEAR:if(numberOfLetters<=3){var dataString=\"\"+rawData;formattedString+=dataString.substr(2,2);}else{formattedString+=formatNumber(rawData,numberOfLetters);}\r\nbreak;case MONTH:if(numberOfLetters>=3){formattedString+=formatText(monthNames[rawData],numberOfLetters,numberOfLetters);}else{formattedString+=formatNumber(rawData+1,numberOfLetters);}\r\nbreak;case TIMEZONE:var isPositive=(rawData>0);var prefix=isPositive?\"-\":\"+\";var absData=Math.abs(rawData);var hours=\"\"+Math.floor(absData/60);hours=padWithZeroes(hours,2);var minutes=\"\"+(absData%60);minutes=padWithZeroes(minutes,2);formattedString+=prefix+hours+minutes;break;}}\r\nsearchString=searchString.substr(result.index+result[0].length);}\r\nreturn formattedString;};})();log4javascript.SimpleDateFormat=SimpleDateFormat;function PatternLayout(pattern){if(pattern){this.pattern=pattern;}else{this.pattern=PatternLayout.DEFAULT_CONVERSION_PATTERN;}\r\nthis.customFields=[];}\r\nPatternLayout.TTCC_CONVERSION_PATTERN=\"%r %p %c - %m%n\";PatternLayout.DEFAULT_CONVERSION_PATTERN=\"%m%n\";PatternLayout.ISO8601_DATEFORMAT=\"yyyy-MM-dd HH:mm:ss,SSS\";PatternLayout.DATETIME_DATEFORMAT=\"dd MMM yyyy HH:mm:ss,SSS\";PatternLayout.ABSOLUTETIME_DATEFORMAT=\"HH:mm:ss,SSS\";PatternLayout.prototype=new Layout();PatternLayout.prototype.format=function(loggingEvent){var regex=/%(-?[0-9]+)?(\\.?[0-9]+)?([acdfmMnpr%])(\\{([^\\}]+)\\})?|([^%]+)/;var formattedString=\"\";var result;var searchString=this.pattern;while((result=regex.exec(searchString))){var matchedString=result[0];var padding=result[1];var truncation=result[2];var conversionCharacter=result[3];var specifier=result[5];var text=result[6];if(text){formattedString+=\"\"+text;}else{var replacement=\"\";switch(conversionCharacter){case\"a\":case\"m\":var depth=0;if(specifier){depth=parseInt(specifier,10);if(isNaN(depth)){handleError(\"PatternLayout.format: invalid specifier '\"+\r\nspecifier+\"' for conversion character '\"+conversionCharacter+\"' - should be a number\");depth=0;}}\r\nvar messages=(conversionCharacter===\"a\")?loggingEvent.messages[0]:loggingEvent.messages;for(var i=0,len=messages.length;i0&&(replacement.charAt(replacement.length-1)!==\" \")){replacement+=\" \";}\r\nif(depth===0){replacement+=messages[i];}else{replacement+=formatObjectExpansion(messages[i],depth);}}\r\nbreak;case\"c\":var loggerName=loggingEvent.logger.name;if(specifier){var precision=parseInt(specifier,10);var loggerNameBits=loggingEvent.logger.name.split(\".\");if(precision>=loggerNameBits.length){replacement=loggerName;}else{replacement=loggerNameBits.slice(loggerNameBits.length-precision).join(\".\");}}else{replacement=loggerName;}\r\nbreak;case\"d\":var dateFormat=PatternLayout.ISO8601_DATEFORMAT;if(specifier){dateFormat=specifier;if(dateFormat==\"ISO8601\"){dateFormat=PatternLayout.ISO8601_DATEFORMAT;}else if(dateFormat==\"ABSOLUTE\"){dateFormat=PatternLayout.ABSOLUTETIME_DATEFORMAT;}else if(dateFormat==\"DATE\"){dateFormat=PatternLayout.DATETIME_DATEFORMAT;}}\r\nreplacement=(new SimpleDateFormat(dateFormat)).format(loggingEvent.timeStamp);break;case\"f\":if(this.hasCustomFields()){var fieldIndex=0;if(specifier){fieldIndex=parseInt(specifier,10);if(isNaN(fieldIndex)){handleError(\"PatternLayout.format: invalid specifier '\"+\r\nspecifier+\"' for conversion character 'f' - should be a number\");}else if(fieldIndex===0){handleError(\"PatternLayout.format: invalid specifier '\"+\r\nspecifier+\"' for conversion character 'f' - must be greater than zero\");}else if(fieldIndex>this.customFields.length){handleError(\"PatternLayout.format: invalid specifier '\"+\r\nspecifier+\"' for conversion character 'f' - there aren't that many custom fields\");}else{fieldIndex=fieldIndex-1;}}\r\nvar val=this.customFields[fieldIndex].value;if(typeof val==\"function\"){val=val(this,loggingEvent);}\r\nreplacement=val;}\r\nbreak;case\"n\":replacement=newLine;break;case\"p\":replacement=loggingEvent.level.name;break;case\"r\":replacement=\"\"+loggingEvent.timeStamp.getDifference(applicationStartDate);break;case\"%\":replacement=\"%\";break;default:replacement=matchedString;break;}\r\nvar l;if(truncation){l=parseInt(truncation.substr(1),10);var strLen=replacement.length;if(l=200&&xmlHttp.status<300)||xmlHttp.status==1223;}\r\nfunction AjaxAppender(url,withCredentials){var appender=this;var isSupported=true;if(!url){handleError(\"AjaxAppender: URL must be specified in constructor\");isSupported=false;}\r\nvar timed=this.defaults.timed;var waitForResponse=this.defaults.waitForResponse;var batchSize=this.defaults.batchSize;var timerInterval=this.defaults.timerInterval;var requestSuccessCallback=this.defaults.requestSuccessCallback;var failCallback=this.defaults.failCallback;var postVarName=this.defaults.postVarName;var sendAllOnUnload=this.defaults.sendAllOnUnload;var contentType=this.defaults.contentType;var sessionId=null;var queuedLoggingEvents=[];var queuedRequests=[];var headers=[];var sending=false;var initialized=false;function checkCanConfigure(configOptionName){if(initialized){handleError(\"AjaxAppender: configuration option '\"+\r\nconfigOptionName+\"' may not be set after the appender has been initialized\");return false;}\r\nreturn true;}\r\nthis.getSessionId=function(){return sessionId;};this.setSessionId=function(sessionIdParam){sessionId=extractStringFromParam(sessionIdParam,null);this.layout.setCustomField(\"sessionid\",sessionId);};this.setLayout=function(layoutParam){if(checkCanConfigure(\"layout\")){this.layout=layoutParam;if(sessionId!==null){this.setSessionId(sessionId);}}};this.isTimed=function(){return timed;};this.setTimed=function(timedParam){if(checkCanConfigure(\"timed\")){timed=bool(timedParam);}};this.getTimerInterval=function(){return timerInterval;};this.setTimerInterval=function(timerIntervalParam){if(checkCanConfigure(\"timerInterval\")){timerInterval=extractIntFromParam(timerIntervalParam,timerInterval);}};this.isWaitForResponse=function(){return waitForResponse;};this.setWaitForResponse=function(waitForResponseParam){if(checkCanConfigure(\"waitForResponse\")){waitForResponse=bool(waitForResponseParam);}};this.getBatchSize=function(){return batchSize;};this.setBatchSize=function(batchSizeParam){if(checkCanConfigure(\"batchSize\")){batchSize=extractIntFromParam(batchSizeParam,batchSize);}};this.isSendAllOnUnload=function(){return sendAllOnUnload;};this.setSendAllOnUnload=function(sendAllOnUnloadParam){if(checkCanConfigure(\"sendAllOnUnload\")){sendAllOnUnload=extractBooleanFromParam(sendAllOnUnloadParam,sendAllOnUnload);}};this.setRequestSuccessCallback=function(requestSuccessCallbackParam){requestSuccessCallback=extractFunctionFromParam(requestSuccessCallbackParam,requestSuccessCallback);};this.setFailCallback=function(failCallbackParam){failCallback=extractFunctionFromParam(failCallbackParam,failCallback);};this.getPostVarName=function(){return postVarName;};this.setPostVarName=function(postVarNameParam){if(checkCanConfigure(\"postVarName\")){postVarName=extractStringFromParam(postVarNameParam,postVarName);}};this.getHeaders=function(){return headers;};this.addHeader=function(name,value){if(name.toLowerCase()==\"content-type\"){contentType=value;}else{headers.push({name:name,value:value});}};function sendAll(){if(isSupported&&enabled){sending=true;var currentRequestBatch;if(waitForResponse){if(queuedRequests.length>0){currentRequestBatch=queuedRequests.shift();sendRequest(preparePostData(currentRequestBatch),sendAll);}else{sending=false;if(timed){scheduleSending();}}}else{while((currentRequestBatch=queuedRequests.shift())){sendRequest(preparePostData(currentRequestBatch));}\r\nsending=false;if(timed){scheduleSending();}}}}\r\nthis.sendAll=sendAll;function sendAllRemaining(){var sendingAnything=false;if(isSupported&&enabled){var actualBatchSize=appender.getLayout().allowBatching()?batchSize:1;var currentLoggingEvent;var batchedLoggingEvents=[];while((currentLoggingEvent=queuedLoggingEvents.shift())){batchedLoggingEvents.push(currentLoggingEvent);if(queuedLoggingEvents.length>=actualBatchSize){queuedRequests.push(batchedLoggingEvents);batchedLoggingEvents=[];}}\r\nif(batchedLoggingEvents.length>0){queuedRequests.push(batchedLoggingEvents);}\r\nsendingAnything=(queuedRequests.length>0);waitForResponse=false;timed=false;sendAll();}\r\nreturn sendingAnything;}\r\nthis.sendAllRemaining=sendAllRemaining;function preparePostData(batchedLoggingEvents){var formattedMessages=[];var currentLoggingEvent;var postData=\"\";while((currentLoggingEvent=batchedLoggingEvents.shift())){formattedMessages.push(appender.getLayout().formatWithException(currentLoggingEvent));}\r\nif(batchedLoggingEvents.length==1){postData=formattedMessages.join(\"\");}else{postData=appender.getLayout().batchHeader+\r\nformattedMessages.join(appender.getLayout().batchSeparator)+\r\nappender.getLayout().batchFooter;}\r\nif(contentType==appender.defaults.contentType){postData=appender.getLayout().returnsPostData?postData:urlEncode(postVarName)+\"=\"+urlEncode(postData);if(postData.length>0){postData+=\"&\";}\r\npostData+=\"layout=\"+urlEncode(appender.getLayout().toString());}\r\nreturn postData;}\r\nfunction scheduleSending(){window.setTimeout(sendAll,timerInterval);}\r\nfunction xmlHttpErrorHandler(){var msg=\"AjaxAppender: could not create XMLHttpRequest object. AjaxAppender disabled\";handleError(msg);isSupported=false;if(failCallback){failCallback(msg);}}\r\nfunction sendRequest(postData,successCallback){try{var xmlHttp=getXmlHttp(xmlHttpErrorHandler);if(isSupported){xmlHttp.onreadystatechange=function(){if(xmlHttp.readyState==4){if(isHttpRequestSuccessful(xmlHttp)){if(requestSuccessCallback){requestSuccessCallback(xmlHttp);}\r\nif(successCallback){successCallback(xmlHttp);}}else{var msg=\"AjaxAppender.append: XMLHttpRequest request to URL \"+\r\nurl+\" returned status code \"+xmlHttp.status;handleError(msg);if(failCallback){failCallback(msg);}}\r\nxmlHttp.onreadystatechange=emptyFunction;xmlHttp=null;}};xmlHttp.open(\"POST\",url,true);if(withCredentials&&withCredentialsSupported){xmlHttp.withCredentials=true;}\r\ntry{for(var i=0,header;header=headers[i++];){xmlHttp.setRequestHeader(header.name,header.value);}\r\nxmlHttp.setRequestHeader(\"Content-Type\",contentType);}catch(headerEx){var msg=\"AjaxAppender.append: your browser's XMLHttpRequest implementation\"+\" does not support setRequestHeader, therefore cannot post data. AjaxAppender disabled\";handleError(msg);isSupported=false;if(failCallback){failCallback(msg);}\r\nreturn;}\r\nxmlHttp.send(postData);}}catch(ex){var errMsg=\"AjaxAppender.append: error sending log message to \"+url;handleError(errMsg,ex);isSupported=false;if(failCallback){failCallback(errMsg+\". Details: \"+getExceptionStringRep(ex));}}}\r\nthis.append=function(loggingEvent){if(isSupported){if(!initialized){init();}\r\nqueuedLoggingEvents.push(loggingEvent);var actualBatchSize=this.getLayout().allowBatching()?batchSize:1;if(queuedLoggingEvents.length>=actualBatchSize){var currentLoggingEvent;var batchedLoggingEvents=[];while((currentLoggingEvent=queuedLoggingEvents.shift())){batchedLoggingEvents.push(currentLoggingEvent);}\r\nqueuedRequests.push(batchedLoggingEvents);if(!timed&&(!waitForResponse||(waitForResponse&&!sending))){sendAll();}}}};function init(){initialized=true;if(sendAllOnUnload){var oldBeforeUnload=window.onbeforeunload;window.onbeforeunload=function(){if(oldBeforeUnload){oldBeforeUnload();}\r\nsendAllRemaining();};}\r\nif(timed){scheduleSending();}}}\r\nAjaxAppender.prototype=new Appender();AjaxAppender.prototype.defaults={waitForResponse:false,timed:false,timerInterval:1000,batchSize:1,sendAllOnUnload:false,requestSuccessCallback:null,failCallback:null,postVarName:\"data\",contentType:\"application/x-www-form-urlencoded\"};AjaxAppender.prototype.layout=new HttpPostDataLayout();AjaxAppender.prototype.toString=function(){return\"AjaxAppender\";};log4javascript.AjaxAppender=AjaxAppender;function setCookie(name,value,days,path){var expires;path=path?\"; path=\"+path:\"\";if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));expires=\"; expires=\"+date.toGMTString();}else{expires=\"\";}\r\ndocument.cookie=escape(name)+\"=\"+escape(value)+expires+path;}\r\nfunction getCookie(name){var nameEquals=escape(name)+\"=\";var ca=document.cookie.split(\";\");for(var i=0,len=ca.length;i','','','log4javascript','','','','','','','','','','','
','
','
','Filters:','','','','','','','','
','
',' ','','','','','
','','','','','
','
','
','Options:','','','','','','','','
','
','
','
','
','
','','','
','
','','',''];};var defaultCommandLineFunctions=[];ConsoleAppender=function(){};var consoleAppenderIdCounter=1;ConsoleAppender.prototype=new Appender();ConsoleAppender.prototype.create=function(inPage,container,lazyInit,initiallyMinimized,useDocumentWrite,width,height,focusConsoleWindow){var appender=this;var initialized=false;var consoleWindowCreated=false;var consoleWindowLoaded=false;var consoleClosed=false;var queuedLoggingEvents=[];var isSupported=true;var consoleAppenderId=consoleAppenderIdCounter++;initiallyMinimized=extractBooleanFromParam(initiallyMinimized,this.defaults.initiallyMinimized);lazyInit=extractBooleanFromParam(lazyInit,this.defaults.lazyInit);useDocumentWrite=extractBooleanFromParam(useDocumentWrite,this.defaults.useDocumentWrite);var newestMessageAtTop=this.defaults.newestMessageAtTop;var scrollToLatestMessage=this.defaults.scrollToLatestMessage;width=width?width:this.defaults.width;height=height?height:this.defaults.height;var maxMessages=this.defaults.maxMessages;var showCommandLine=this.defaults.showCommandLine;var commandLineObjectExpansionDepth=this.defaults.commandLineObjectExpansionDepth;var showHideButton=this.defaults.showHideButton;var showCloseButton=this.defaults.showCloseButton;this.setLayout(this.defaults.layout);var init,createWindow,safeToAppend,getConsoleWindow,open;var appenderName=inPage?\"InPageAppender\":\"PopUpAppender\";var checkCanConfigure=function(configOptionName){if(consoleWindowCreated){handleError(appenderName+\": configuration option '\"+configOptionName+\"' may not be set after the appender has been initialized\");return false;}\r\nreturn true;};var consoleWindowExists=function(){return(consoleWindowLoaded&&isSupported&&!consoleClosed);};this.isNewestMessageAtTop=function(){return newestMessageAtTop;};this.setNewestMessageAtTop=function(newestMessageAtTopParam){newestMessageAtTop=bool(newestMessageAtTopParam);if(consoleWindowExists()){getConsoleWindow().setNewestAtTop(newestMessageAtTop);}};this.isScrollToLatestMessage=function(){return scrollToLatestMessage;};this.setScrollToLatestMessage=function(scrollToLatestMessageParam){scrollToLatestMessage=bool(scrollToLatestMessageParam);if(consoleWindowExists()){getConsoleWindow().setScrollToLatest(scrollToLatestMessage);}};this.getWidth=function(){return width;};this.setWidth=function(widthParam){if(checkCanConfigure(\"width\")){width=extractStringFromParam(widthParam,width);}};this.getHeight=function(){return height;};this.setHeight=function(heightParam){if(checkCanConfigure(\"height\")){height=extractStringFromParam(heightParam,height);}};this.getMaxMessages=function(){return maxMessages;};this.setMaxMessages=function(maxMessagesParam){maxMessages=extractIntFromParam(maxMessagesParam,maxMessages);if(consoleWindowExists()){getConsoleWindow().setMaxMessages(maxMessages);}};this.isShowCommandLine=function(){return showCommandLine;};this.setShowCommandLine=function(showCommandLineParam){showCommandLine=bool(showCommandLineParam);if(consoleWindowExists()){getConsoleWindow().setShowCommandLine(showCommandLine);}};this.isShowHideButton=function(){return showHideButton;};this.setShowHideButton=function(showHideButtonParam){showHideButton=bool(showHideButtonParam);if(consoleWindowExists()){getConsoleWindow().setShowHideButton(showHideButton);}};this.isShowCloseButton=function(){return showCloseButton;};this.setShowCloseButton=function(showCloseButtonParam){showCloseButton=bool(showCloseButtonParam);if(consoleWindowExists()){getConsoleWindow().setShowCloseButton(showCloseButton);}};this.getCommandLineObjectExpansionDepth=function(){return commandLineObjectExpansionDepth;};this.setCommandLineObjectExpansionDepth=function(commandLineObjectExpansionDepthParam){commandLineObjectExpansionDepth=extractIntFromParam(commandLineObjectExpansionDepthParam,commandLineObjectExpansionDepth);};var minimized=initiallyMinimized;this.isInitiallyMinimized=function(){return initiallyMinimized;};this.setInitiallyMinimized=function(initiallyMinimizedParam){if(checkCanConfigure(\"initiallyMinimized\")){initiallyMinimized=bool(initiallyMinimizedParam);minimized=initiallyMinimized;}};this.isUseDocumentWrite=function(){return useDocumentWrite;};this.setUseDocumentWrite=function(useDocumentWriteParam){if(checkCanConfigure(\"useDocumentWrite\")){useDocumentWrite=bool(useDocumentWriteParam);}};function QueuedLoggingEvent(loggingEvent,formattedMessage){this.loggingEvent=loggingEvent;this.levelName=loggingEvent.level.name;this.formattedMessage=formattedMessage;}\r\nQueuedLoggingEvent.prototype.append=function(){getConsoleWindow().log(this.levelName,this.formattedMessage);};function QueuedGroup(name,initiallyExpanded){this.name=name;this.initiallyExpanded=initiallyExpanded;}\r\nQueuedGroup.prototype.append=function(){getConsoleWindow().group(this.name,this.initiallyExpanded);};function QueuedGroupEnd(){}\r\nQueuedGroupEnd.prototype.append=function(){getConsoleWindow().groupEnd();};var checkAndAppend=function(){safeToAppend();if(!initialized){init();}else if(consoleClosed&&reopenWhenClosed){createWindow();}\r\nif(safeToAppend()){appendQueuedLoggingEvents();}};this.append=function(loggingEvent){if(isSupported){var formattedMessage=appender.getLayout().formatWithException(loggingEvent);queuedLoggingEvents.push(new QueuedLoggingEvent(loggingEvent,formattedMessage));checkAndAppend();}};this.group=function(name,initiallyExpanded){if(isSupported){queuedLoggingEvents.push(new QueuedGroup(name,initiallyExpanded));checkAndAppend();}};this.groupEnd=function(){if(isSupported){queuedLoggingEvents.push(new QueuedGroupEnd());checkAndAppend();}};var appendQueuedLoggingEvents=function(){while(queuedLoggingEvents.length>0){queuedLoggingEvents.shift().append();}\r\nif(focusConsoleWindow){getConsoleWindow().focus();}};this.setAddedToLogger=function(logger){this.loggers.push(logger);if(enabled&&!lazyInit){init();}};this.clear=function(){if(consoleWindowExists()){getConsoleWindow().clearLog();}\r\nqueuedLoggingEvents.length=0;};this.focus=function(){if(consoleWindowExists()){getConsoleWindow().focus();}};this.focusCommandLine=function(){if(consoleWindowExists()){getConsoleWindow().focusCommandLine();}};this.focusSearch=function(){if(consoleWindowExists()){getConsoleWindow().focusSearch();}};var commandWindow=window;this.getCommandWindow=function(){return commandWindow;};this.setCommandWindow=function(commandWindowParam){commandWindow=commandWindowParam;};this.executeLastCommand=function(){if(consoleWindowExists()){getConsoleWindow().evalLastCommand();}};var commandLayout=new PatternLayout(\"%m\");this.getCommandLayout=function(){return commandLayout;};this.setCommandLayout=function(commandLayoutParam){commandLayout=commandLayoutParam;};this.evalCommandAndAppend=function(expr){var commandReturnValue={appendResult:true,isError:false};var commandOutput=\"\";try{var result,i;if(!commandWindow.eval&&commandWindow.execScript){commandWindow.execScript(\"null\");}\r\nvar commandLineFunctionsHash={};for(i=0,len=commandLineFunctions.length;i>> \"+expr;if(!isUndefined(commandOutput)){message+=newLine+commandOutput;}\r\nvar level=commandReturnValue.isError?Level.ERROR:Level.INFO;var loggingEvent=new LoggingEvent(null,new Date(),level,[message],null);var mainLayout=this.getLayout();this.setLayout(commandLayout);this.append(loggingEvent);this.setLayout(mainLayout);}};var commandLineFunctions=defaultCommandLineFunctions.concat([]);this.addCommandLineFunction=function(functionName,commandLineFunction){commandLineFunctions.push([functionName,commandLineFunction]);};var commandHistoryCookieName=\"log4javascriptCommandHistory\";this.storeCommandHistory=function(commandHistory){setCookie(commandHistoryCookieName,commandHistory.join(\",\"));};var writeHtml=function(doc){var lines=getConsoleHtmlLines();doc.open();for(var i=0,len=lines.length;i\";consoleClosed=false;var iframeDocumentExistsTest=function(win){try{return bool(win)&&bool(win.document);}catch(ex){return false;}};if(iframeDocumentExistsTest(getConsoleWindow())){writeToDocument();}else{pollConsoleWindow(iframeDocumentExistsTest,100,writeToDocument,initErrorMessage);}\r\nconsoleWindowCreated=true;};createWindow=function(show){if(show||!initiallyMinimized){var pageLoadHandler=function(){if(!container){containerElement=document.createElement(\"div\");containerElement.style.position=\"fixed\";containerElement.style.left=\"0\";containerElement.style.right=\"0\";containerElement.style.bottom=\"0\";document.body.appendChild(containerElement);appender.addCssProperty(\"borderWidth\",\"1px 0 0 0\");appender.addCssProperty(\"zIndex\",1000000);open();}else{try{var el=document.getElementById(container);if(el.nodeType==1){containerElement=el;}\r\nopen();}catch(ex){handleError(\"InPageAppender.init: invalid container element '\"+container+\"' supplied\",ex);}}};if(pageLoaded&&container&&container.appendChild){containerElement=container;open();}else if(pageLoaded){pageLoadHandler();}else{log4javascript.addEventListener(\"load\",pageLoadHandler);}\r\nwindowCreationStarted=true;}};init=function(){createWindow();initialized=true;};getConsoleWindow=function(){var iframe=window.frames[iframeId];if(iframe){return iframe;}};safeToAppend=function(){if(isSupported&&!consoleClosed){if(consoleWindowCreated&&!consoleWindowLoaded&&getConsoleWindow()&&isLoaded(getConsoleWindow())){consoleWindowLoaded=true;}\r\nreturn consoleWindowLoaded;}\r\nreturn false;};}else{var useOldPopUp=appender.defaults.useOldPopUp;var complainAboutPopUpBlocking=appender.defaults.complainAboutPopUpBlocking;var reopenWhenClosed=this.defaults.reopenWhenClosed;this.isUseOldPopUp=function(){return useOldPopUp;};this.setUseOldPopUp=function(useOldPopUpParam){if(checkCanConfigure(\"useOldPopUp\")){useOldPopUp=bool(useOldPopUpParam);}};this.isComplainAboutPopUpBlocking=function(){return complainAboutPopUpBlocking;};this.setComplainAboutPopUpBlocking=function(complainAboutPopUpBlockingParam){if(checkCanConfigure(\"complainAboutPopUpBlocking\")){complainAboutPopUpBlocking=bool(complainAboutPopUpBlockingParam);}};this.isFocusPopUp=function(){return focusConsoleWindow;};this.setFocusPopUp=function(focusPopUpParam){focusConsoleWindow=bool(focusPopUpParam);};this.isReopenWhenClosed=function(){return reopenWhenClosed;};this.setReopenWhenClosed=function(reopenWhenClosedParam){reopenWhenClosed=bool(reopenWhenClosedParam);};this.close=function(){logLog.debug(\"close \"+this);try{popUp.close();this.unload();}catch(ex){}};this.hide=function(){logLog.debug(\"hide \"+this);if(consoleWindowExists()){this.close();}};this.show=function(){logLog.debug(\"show \"+this);if(!consoleWindowCreated){open();}};this.isVisible=function(){return safeToAppend();};var popUp;open=function(){var windowProperties=\"width=\"+width+\",height=\"+height+\",status,resizable\";var frameInfo=\"\";try{var frameEl=window.frameElement;if(frameEl){frameInfo=\"_\"+frameEl.tagName+\"_\"+(frameEl.name||frameEl.id||\"\");}}catch(e){frameInfo=\"_inaccessibleParentFrame\";}\r\nvar windowName=\"PopUp_\"+location.host.replace(/[^a-z0-9]/gi,\"_\")+\"_\"+consoleAppenderId+frameInfo;if(!useOldPopUp||!useDocumentWrite){windowName=windowName+\"_\"+uniqueId;}\r\nvar checkPopUpClosed=function(win){if(consoleClosed){return true;}else{try{return bool(win)&&win.closed;}catch(ex){}}\r\nreturn false;};var popUpClosedCallback=function(){if(!consoleClosed){appender.unload();}};function finalInit(){getConsoleWindow().setCloseIfOpenerCloses(!useOldPopUp||!useDocumentWrite);consoleWindowLoadHandler();consoleWindowLoaded=true;appendQueuedLoggingEvents();pollConsoleWindow(checkPopUpClosed,500,popUpClosedCallback,\"PopUpAppender.checkPopUpClosed: error checking pop-up window\");}\r\ntry{popUp=window.open(getConsoleUrl(),windowName,windowProperties);consoleClosed=false;consoleWindowCreated=true;if(popUp&&popUp.document){if(useDocumentWrite&&useOldPopUp&&isLoaded(popUp)){popUp.mainPageReloaded();finalInit();}else{if(useDocumentWrite){writeHtml(popUp.document);}\r\nvar popUpLoadedTest=function(win){return bool(win)&&isLoaded(win);};if(isLoaded(popUp)){finalInit();}else{pollConsoleWindow(popUpLoadedTest,100,finalInit,\"PopUpAppender.init: unable to create console window\");}}}else{isSupported=false;logLog.warn(\"PopUpAppender.init: pop-ups blocked, please unblock to use PopUpAppender\");if(complainAboutPopUpBlocking){handleError(\"log4javascript: pop-up windows appear to be blocked. Please unblock them to use pop-up logging.\");}}}catch(ex){handleError(\"PopUpAppender.init: error creating pop-up\",ex);}};createWindow=function(){if(!initiallyMinimized){open();}};init=function(){createWindow();initialized=true;};getConsoleWindow=function(){return popUp;};safeToAppend=function(){if(isSupported&&!isUndefined(popUp)&&!consoleClosed){if(popUp.closed||(consoleWindowLoaded&&isUndefined(popUp.closed))){appender.unload();logLog.debug(\"PopUpAppender: pop-up closed\");return false;}\r\nif(!consoleWindowLoaded&&isLoaded(popUp)){consoleWindowLoaded=true;}}\r\nreturn isSupported&&consoleWindowLoaded&&!consoleClosed;};}\r\nthis.getConsoleWindow=getConsoleWindow;};ConsoleAppender.addGlobalCommandLineFunction=function(functionName,commandLineFunction){defaultCommandLineFunctions.push([functionName,commandLineFunction]);};function PopUpAppender(lazyInit,initiallyMinimized,useDocumentWrite,width,height){this.create(false,null,lazyInit,initiallyMinimized,useDocumentWrite,width,height,this.defaults.focusPopUp);}\r\nPopUpAppender.prototype=new ConsoleAppender();PopUpAppender.prototype.defaults={layout:new PatternLayout(\"%d{HH:mm:ss} %-5p - %m{1}%n\"),initiallyMinimized:false,focusPopUp:false,lazyInit:true,useOldPopUp:true,complainAboutPopUpBlocking:true,newestMessageAtTop:false,scrollToLatestMessage:true,width:\"600\",height:\"400\",reopenWhenClosed:false,maxMessages:null,showCommandLine:true,commandLineObjectExpansionDepth:1,showHideButton:false,showCloseButton:true,useDocumentWrite:true};PopUpAppender.prototype.toString=function(){return\"PopUpAppender\";};log4javascript.PopUpAppender=PopUpAppender;function InPageAppender(container,lazyInit,initiallyMinimized,useDocumentWrite,width,height){this.create(true,container,lazyInit,initiallyMinimized,useDocumentWrite,width,height,false);}\r\nInPageAppender.prototype=new ConsoleAppender();InPageAppender.prototype.defaults={layout:new PatternLayout(\"%d{HH:mm:ss} %-5p - %m{1}%n\"),initiallyMinimized:false,lazyInit:true,newestMessageAtTop:false,scrollToLatestMessage:true,width:\"100%\",height:\"220px\",maxMessages:null,showCommandLine:true,commandLineObjectExpansionDepth:1,showHideButton:false,showCloseButton:false,showLogEntryDeleteButtons:true,useDocumentWrite:true};InPageAppender.prototype.toString=function(){return\"InPageAppender\";};log4javascript.InPageAppender=InPageAppender;log4javascript.InlineAppender=InPageAppender;})();function padWithSpaces(str,len){if(str.length]*>\",\"i\");if(regex.test(el.outerHTML)){return RegExp.$1.toLowerCase();}}\r\nreturn\"\";}\r\nvar lt=\"<\";var gt=\">\";var i,len;if(includeRootNode&&rootNode.nodeType!=nodeTypes.DOCUMENT_FRAGMENT_NODE){switch(rootNode.nodeType){case nodeTypes.ELEMENT_NODE:var tagName=rootNode.tagName.toLowerCase();xhtml=startNewLine?newLine+indentation:\"\";xhtml+=lt;var prefix=getNamespace(rootNode);var hasPrefix=!!prefix;if(hasPrefix){xhtml+=prefix+\":\";}\r\nxhtml+=tagName;for(i=0,len=rootNode.attributes.length;i\"+newLine;case nodeTypes.DOCUMENT_NODE:xhtml=\"\";for(i=0,len=rootNode.childNodes.length;i lowerTolerance && zoomAmount < upperTolerance) {\r\n this.zoomLevel = 1;\r\n } else {\r\n this.zoomLevel += (this.options.zoomFactor * evt.wheel);\r\n }\r\n\r\n // Do the zoom\r\n this.doZoom(evt.page, evt.wheel);\r\n\r\n evt = null;\r\n },\r\n\r\n doZoom: function(mousePos, direction) {\r\n // Detach the drag handler\r\n if (this.drag)\r\n this.drag.detach();\r\n\r\n var natZoomLevel = this.getNaturalDimensionsZoomLevel();\r\n var minZoomLevel = Math.min(natZoomLevel, 1);\r\n if (this.zoomLevel < minZoomLevel) {\r\n this.zoomLevel = minZoomLevel;\r\n }\r\n\r\n // If we're less than 1.0 zoom\r\n if (this.zoomLevel == 1.0) {\r\n // Reset to 1.0\r\n this.zoomLevel = 1.0;\r\n // Remove the \"zoomed\" class\r\n this.options.image.removeClass(\"zoomed\");\r\n // And reset the position\r\n this.setImagePosition(0, 0);\r\n // Reset scroll positions, if we haven't already\r\n if (this.originalScroll.x != null) {\r\n if (this.options.imageContainer)\r\n this.options.imageContainer.scrollLeft = this.originalScroll.x;\r\n else if (this.options.contentWrapper)\r\n this.options.contentWrapper.scrollLeft = this.originalScroll.x;\r\n\r\n this.originalScroll.x = null;\r\n }\r\n if (this.originalScroll.y != null) {\r\n if (this.options.imageContainer)\r\n this.options.imageContainer.scrollTop = this.originalScroll.y;\r\n else if (this.options.contentWrapper)\r\n this.options.contentWrapper.scrollTop = this.originalScroll.y;\r\n\r\n this.originalScroll.y = null;\r\n }\r\n // Reset the height\r\n this.options.image.style.height = '';\r\n // Set the width of the image to the zoomed width\r\n this.options.image.style.width = (this.originalSize.x * this.zoomLevel) + \"px\";\r\n\r\n // If we were given a content wrapper, reset the overflow to auto\r\n if (this.options.contentWrapper)\r\n this.options.contentWrapper.setStyle(\"overflow\", \"auto\");\r\n }\r\n else {\r\n // If the zoom is past the maximum level, reset it to the maximum\r\n if (this.zoomLevel > this.options.maxZoom) {\r\n this.zoomLevel = this.options.maxZoom;\r\n // Reset the height\r\n this.options.image.style.height = '';\r\n // Set the width of the image to the zoomed width\r\n this.options.image.style.width = (this.originalSize.x * this.zoomLevel) + \"px\";\r\n }\r\n // Otherwise, handle zooming to the current mouse position\r\n else {\r\n // Calculate the new width and height\r\n var newWidth = (this.originalSize.x * this.zoomLevel);\r\n var newHeight = (this.originalSize.y * this.zoomLevel);\r\n\r\n // Reset the height\r\n this.options.image.style.height = '';\r\n // Set the width of the image to the zoomed width\r\n this.options.image.style.width = newWidth + \"px\";\r\n\r\n // Center image if zoomLevel is below 1\r\n if (this.zoomLevel <= 1.0) {\r\n if (this.options.contentWrapper) {\r\n var height = this.options.contentWrapper.getHeight();\r\n var width = this.options.contentWrapper.getWidth();\r\n\r\n var imgHeight = this.options.image.getHeight();\r\n var imgWidth = this.options.image.getWidth();\r\n\r\n this.setImagePosition((width - imgWidth) / 2.0, (height -imgHeight) / 2.0);\r\n }\r\n }\r\n // If no position is specified, center the image horizontally and scroll to top\r\n else if (mousePos == null) {\r\n if (this.options.contentWrapper) {\r\n var width = this.options.contentWrapper.getWidth();\r\n var imgWidth = this.options.image.getWidth();\r\n\r\n this.setImagePosition((width - imgWidth) / 2.0, 0);\r\n }\r\n } else {\r\n var imageCoords = this.options.image.getCoordinates();\r\n\r\n // Get the percent of the width of the image that the mouse is from the left\r\n var percentX = (mousePos.x - imageCoords.left) / imageCoords.width;\r\n // Get the percent of the height of the image that the mouse is from the top\r\n var percentY = (mousePos.y - imageCoords.top) / imageCoords.height;\r\n\r\n var scrollLeft = 0;\r\n var scrollTop = 0;\r\n\r\n // Get the scroll positions if we have a wrapper\r\n if (this.options.imageContainer) {\r\n scrollLeft = this.options.imageContainer.scrollLeft;\r\n scrollTop = this.options.imageContainer.scrollTop;\r\n } else if (this.options.contentWrapper) {\r\n scrollLeft = this.options.contentWrapper.scrollLeft;\r\n scrollTop = this.options.contentWrapper.scrollTop;\r\n }\r\n\r\n // Calculate the new left position from the current left, width, x%, image offset, and the scroll position.\r\n var newLeft = ((imageCoords.left - ((newWidth - imageCoords.width) * percentX)) - imageCoords.left + this.options.image.style.left.toInt()) - scrollLeft;\r\n\r\n // Ignore the initial image offset when first zooming in on a maximized image\r\n if (this.options.reverseWidthCheck && (direction == 1) &&\r\n ((this.zoomLevel - this.options.zoomFactor) == this.options.defaultZoomLevel))\r\n newLeft += imageCoords.left;\r\n\r\n // Calculate the new top position from the current top, height, y%, image offset, and the scroll position.\r\n var newTop = ((imageCoords.top - ((newHeight - imageCoords.height) * percentY)) - imageCoords.top + this.options.image.style.top.toInt()) - scrollTop;\r\n\r\n // Calculate the new position limits from the size of the image\r\n this.calculatePositionLimits();\r\n\r\n // Get the left/top values within the limited space\r\n var safeValues = this.getLimitedPosition(newLeft, newTop);\r\n\r\n // And then set the image's position to the new ones\r\n this.setImagePosition(safeValues.left, safeValues.top);\r\n }\r\n \r\n // Save and reset the scroll positions\r\n if (this.originalScroll.x == null) {\r\n this.originalScroll.x = scrollLeft;\r\n\r\n if (this.options.imageContainer)\r\n this.options.imageContainer.scrollLeft = 0;\r\n else if (this.options.contentWrapper)\r\n this.options.contentWrapper.scrollLeft = 0;\r\n }\r\n if (this.originalScroll.y == null) {\r\n this.originalScroll.y = scrollTop;\r\n\r\n if (this.options.imageContainer)\r\n this.options.imageContainer.scrollTop = 0;\r\n else if (this.options.contentWrapper)\r\n this.options.contentWrapper.scrollTop = 0;\r\n }\r\n }\r\n\r\n // Add the \"zoomed\" class\r\n if (!this.options.image.hasClass(\"zoomed\"))\r\n this.options.image.addClass(\"zoomed\");\r\n\r\n if (this.zoomLevel > 1.0) {\r\n // If we were given a content wrapper, set the overflow to hidden so no scrollbars show\r\n if (this.options.contentWrapper)\r\n this.options.contentWrapper.setStyle(\"overflow\", \"hidden\");\r\n\r\n // And re-attach the drag handler, if we have one\r\n if (this.drag)\r\n this.drag.attach();\r\n }\r\n }\r\n },\r\n\r\n calculatePositionLimits: function() {\r\n // Don't bother if we don't have a drag handler\r\n if (!this.drag)\r\n return;\r\n\r\n // Get the image's width and height\r\n var width = this.options.image.getWidth();\r\n var height = this.options.image.getHeight();\r\n // Calculate the limits from the original sizes\r\n var heightLimit = height;\r\n var widthLimit = width;\r\n\r\n // If there is a content wrapper, use its dimensions, otherwise use the image dimensions\r\n if (this.options.imageContainer)\r\n widthLimit -= this.options.imageContainer.getWidth();\r\n else if (this.options.contentWrapper)\r\n widthLimit -= this.options.contentWrapper.getWidth();\r\n else\r\n widthLimit -= this.originalSize.x;\r\n\r\n if (this.options.contentWrapper)\r\n heightLimit -= this.options.contentWrapper.getHeight();\r\n else\r\n heightLimit -= this.originalSize.y;\r\n\r\n // Create the limit object with the correct bounds for the correct width check type\r\n // Only use the reverse width check if the image has a smaller width than the parent window\r\n if (this.options.reverseWidthCheck && (!this.options.window || (this.options.window.getWidth() > width)))\r\n this.drag.options.limit = { x: [0, (-1.0 * widthLimit)], y: [(-1.0 * heightLimit), 0] };\r\n else\r\n this.drag.options.limit = { x: [(-1.0 * widthLimit), 0], y: [(-1.0 * heightLimit), 0] };\r\n },\r\n\r\n zoomTo: function(left, top, zoom) {\r\n // If the element is null, don't continue\r\n if (this.options.image == null)\r\n return;\r\n\r\n // If the zoom level is a number\r\n if (!isNaN(zoom)) {\r\n // And it is within the [1.0, max] limits\r\n if (zoom > 1.0)\r\n zoom = 1.0;\r\n if (zoom < this.options.maxZoom)\r\n zoom = this.options.maxZoom;\r\n\r\n // Save it\r\n this.zoomLevel = zoom;\r\n }\r\n\r\n // Always do the zoom so we know that\r\n // the position limits have been calculated\r\n this.doZoom();\r\n\r\n // Get the currnet image position\r\n var imagePos = this.options.image.getPosition(this.options.image.parentElement);\r\n // Whether or not the position has changed\r\n var modified = false;\r\n\r\n // If left isn't valid, save the image's current left\r\n if (isNaN(left))\r\n left = imagePos.x;\r\n // Otherwise mark it as modified\r\n else\r\n modified = true;\r\n\r\n // If top isn't valid, save the image's current top\r\n if (isNaN(top))\r\n top = imagePos.x;\r\n // Otherwise mark it as modified\r\n else\r\n modified = true;\r\n\r\n // If the positions have been modified\r\n if (modified) {\r\n var safeValues = this.getLimitedPosition(left, top);\r\n\r\n // And then set the image's position to the new ones\r\n this.setImagePosition(safeValues.left, safeValues.top);\r\n }\r\n },\r\n\r\n getLimitedPosition: function(left, top) {\r\n var newLeft = left, newTop = top;\r\n\r\n // Make sure the left position is within the calculated limits\r\n if (newLeft < this.drag.options.limit.x[0])\r\n newLeft = this.drag.options.limit.x[0];\r\n if (newLeft > this.drag.options.limit.x[1])\r\n newLeft = this.drag.options.limit.x[1];\r\n\r\n // Make sure the top position is within the calculated limits\r\n if (newTop < this.drag.options.limit.y[0])\r\n newTop = this.drag.options.limit.y[0];\r\n if (newTop > this.drag.options.limit.y[1])\r\n newTop = this.drag.options.limit.y[1];\r\n\r\n return { left: newLeft, top: newTop };\r\n },\r\n\r\n setImagePosition: function(left, top) {\r\n // If the element is null, don't continue\r\n if (this.options.image == null)\r\n return;\r\n\r\n // Set the image's position by style\r\n this.options.image.style.left = left + \"px\";\r\n this.options.image.style.top = top + \"px\";\r\n },\r\n\r\n isZoomed: function() {\r\n return this.zoomLevel != 1.0;\r\n },\r\n\r\n zoomToNaturalDimensions: function() { \r\n this.zoomLevel = this.getNaturalDimensionsZoomLevel();\r\n this.doZoom();\r\n },\r\n\r\n zoomToDefault: function () {\r\n this.zoomLevel = this.options.defaultZoomLevel;\r\n this.doZoom();\r\n },\r\n\r\n getNaturalDimensionsZoomLevel: function() {\r\n var naturalSize = Librarian.Utils.getNaturalImageSize(this.options.image);\r\n return (naturalSize.x / (this.originalSize.x * 1.0));\r\n }\r\n});","Librarian.Lang = { };\r\nLibrarian.Lang.strings = { };\r\n\r\nLibrarian.Lang.loadLangScripts = function() {\r\n var head = document.getElementsByTagName(\"head\")[0];\r\n\r\n // Load each of the available langauges, first from\r\n // the and then from each library.\r\n // This allows the core to set up the default values\r\n // before the libraries override them.\r\n for (var i = 0; i < Librarian.lang.availableLangs.length; i++) {\r\n var script = document.createElement(\"script\");\r\n script.src = Librarian.path.getLayoutsPath() + \"core/lang/\" + Librarian.lang.availableLangs[i] + \".js?\" + Librarian.buildVersion;\r\n script.charset = \"utf-8\";\r\n script.type = \"text/javascript\";\r\n head.appendChild(script);\r\n }\r\n\r\n window.addEvent(\"logonUser\", function(){\r\n for (var i = 0; i < Librarian.lang.availableLangs.length; i++) {\r\n script = document.createElement(\"script\");\r\n script.src = Librarian.path.getLibraryPath() + \"lang/\" + Librarian.lang.availableLangs[i] + \".js?\" + Librarian.buildVersion;\r\n script.charset = \"utf-8\";\r\n script.type = \"text/javascript\";\r\n head.appendChild(script);\r\n }\r\n });\r\n};\r\n\r\nLibrarian.Lang.addLang = function(lang, strings) {\r\n // If this language doesn't exist yet, create it\r\n var langList = Librarian.Lang.strings[lang];\r\n if ((typeof langList == \"undefined\") || (langList == null))\r\n Librarian.Lang.strings[lang] = { };\r\n\r\n // Set all the strings for this language, but don't overwrite\r\n // any if they exist already\r\n Librarian.Lang.setLangStrings(lang, strings, false);\r\n};\r\n\r\nLibrarian.Lang.updateLang = function(lang, strings) {\r\n // If this language doesn't exist yet, add it\r\n var langList = Librarian.Lang.strings[lang];\r\n if ((typeof langList == \"undefined\") || (langList == null)) {\r\n Librarian.Lang.addLang(lang, strings);\r\n return;\r\n }\r\n\r\n // Set all the strings for this language, and overwrite\r\n // any if they exist already\r\n Librarian.Lang.setLangStrings(lang, strings, true);\r\n};\r\n\r\nLibrarian.Lang.setLangStrings = function(lang, strings, overwrite) {\r\n // Copy each key individually so they\r\n // are added and updated rather than replacing\r\n // the entire collection.\r\n // This allows for selective updates rather than\r\n // requiring the entire list of strings to be present in\r\n // each Library's localization override.\r\n // Only overwrite strings that exist if we are told to\r\n for (var key in strings) {\r\n var currentValue = Librarian.Lang.strings[lang][key];\r\n if (overwrite || (typeof currentValue == \"undefined\") || (currentValue == null))\r\n Librarian.Lang.strings[lang][key] = strings[key];\r\n }\r\n};\r\n\r\nLibrarian.Lang.getString = function(name, preservePlurals) {\r\n var string = null;\r\n // Get the string for the current language and given name\r\n if (Librarian.Lang.strings[Librarian.lang.currentLang])\r\n string = Librarian.Lang.strings[Librarian.lang.currentLang][name];\r\n\r\n // If the string doesn't exist with the current langauge, get the\r\n // string from the default language instead.\r\n if (((typeof string == \"undefined\") || (string == null)) && Librarian.Lang.strings[Librarian.lang.defaultLang])\r\n string = Librarian.Lang.strings[Librarian.lang.defaultLang][name];\r\n\r\n string = string || name || '';\r\n // Remove all plural tokens if we're not using them\r\n if (preservePlurals !== true)\r\n return string.replaceAll(\"{plural}\", '');\r\n return string;\r\n};\r\n\r\nLibrarian.Lang.getArgString = function(name, args, preservePlurals) {\r\n var string = Librarian.Lang.getString(name, preservePlurals);\r\n\r\n args = Array.from(args);\r\n\r\n // Loop through each argument\r\n for (var i = 0; i < args.length; i++) {\r\n var token = '{' + i + '}',\r\n arg = args[i];\r\n // Save and validate the argument here rather than using the || '' method\r\n // because doing that makes booleans and the number 0 not show up, as they evaluate to false\r\n if ((typeof arg == \"undefined\") || (arg == null))\r\n arg = '';\r\n\r\n // And replace all instances of the token referencing\r\n // this argument index\r\n string = string.replaceAll(token, arg.toString());\r\n }\r\n\r\n return string;\r\n};\r\n\r\nLibrarian.Lang.getPluralString = function(name, count) {\r\n return Librarian.Lang.pluralizeString(Librarian.Lang.getString(name, true), count);\r\n};\r\n\r\nLibrarian.Lang.getPluralArgString = function(name, count, args) {\r\n return Librarian.Lang.pluralizeString(Librarian.Lang.getArgString(name, args, true), count);\r\n};\r\n\r\nLibrarian.Lang.pluralizeString = function(string, count) {\r\n // Find the initial token location\r\n var index = string.indexOf(\"{plural}\");\r\n\r\n // Replace each instance of the plural token\r\n while (index >= 0) {\r\n // Get the index of the last space before the plural token and add 1\r\n // to not include that in the substring\r\n var spaceindex = string.substring(0, index).lastIndexOf(' ') + 1;\r\n // The word is whatever's in between that space location and the plural location\r\n var word = string.substring(spaceindex, index);\r\n // Save the casing of the word\r\n var isUpper = word.isUpperCase();\r\n\r\n // Pluralize the word using the library, if it's there\r\n if (typeof owl != \"undefined\")\r\n word = owl.pluralize(word, count);\r\n\r\n // If the word used to be uppercase, make the plural word uppercase too\r\n if (isUpper)\r\n word = word.toUpperCase();\r\n\r\n // Replace the word and the plural token with the plural version of the word\r\n string = string.replace(/\\w+{plural}/, word);\r\n\r\n // Find the new token location\r\n index = string.indexOf(\"{plural}\");\r\n }\r\n\r\n return string;\r\n};\r\n\r\nLibrarian.Lang.getStorageKey = function() {\r\n var shortName = Librarian.sessionInfo.ShortName;\r\n\r\n return shortName + \"-lang\";\r\n};\r\n\r\nLibrarian.Lang.saveLanguage = function() {\r\n if (!localStorage)\r\n return;\r\n\r\n var key = Librarian.Lang.getStorageKey();\r\n localStorage.setItem(key, Librarian.lang.currentLang);\r\n};\r\n\r\nLibrarian.Lang.loadSavedLanguage = function() {\r\n if (!localStorage)\r\n return;\r\n\r\n var key = Librarian.Lang.getStorageKey();\r\n var lang = localStorage.getItem(key);\r\n\r\n if (lang)\r\n Librarian.Lang.setLang(lang);\r\n};\r\n\r\nLibrarian.Lang.setLang = function(lang) {\r\n Librarian.lang.currentLang = lang;\r\n Librarian.Lang.saveLanguage();\r\n\r\n Librarian.Lang.translateElements();\r\n}\r\n\r\nLibrarian.Lang.translateElements = function(parent) {\r\n if (!parent)\r\n parent = $(document.body);\r\n\r\n var elements = parent.getElements(\"[data-translation]\");\r\n \r\n elements.forEach(function(el) {\r\n var translation = el.get(\"data-translation\");\r\n var text = Librarian.Lang.getString(translation);\r\n if (text)\r\n el.set(\"text\", text);\r\n });\r\n}\r\n\r\nLibrarian.Lang.loadLangScripts();","/* This file is part of OWL Pluralization.\r\n\r\nOWL Pluralization is free software: you can redistribute it and/or \r\nmodify it under the terms of the GNU Lesser General Public License\r\nas published by the Free Software Foundation, either version 3 of\r\nthe License, or (at your option) any later version.\r\n\r\nOWL Pluralization is distributed in the hope that it will be useful,\r\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\r\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\nGNU Lesser General Public License for more details.\r\n\r\nYou should have received a copy of the GNU Lesser General Public \r\nLicense along with OWL Pluralization. If not, see \r\n.\r\n*/\r\n\r\n// prepare the owl namespace.\r\nif (typeof owl === 'undefined') owl = {};\r\n\r\nowl.pluralize = (function() {\r\n var userDefined = {};\r\n\r\n function capitalizeSame(word, sampleWord) {\r\n if (sampleWord.match(/^[A-Z]/)) {\r\n return word.charAt(0).toUpperCase() + word.slice(1);\r\n } else {\r\n return word;\r\n }\r\n }\r\n\r\n // returns a plain Object having the given keys,\r\n // all with value 1, which can be used for fast lookups.\r\n function toKeys(keys) {\r\n keys = keys.split(',');\r\n var keysLength = keys.length;\r\n var table = {};\r\n for (var i = 0; i < keysLength; i++) {\r\n table[keys[i]] = 1;\r\n }\r\n return table;\r\n }\r\n\r\n // words that are always singular, always plural, or the same in both forms.\r\n var uninflected = toKeys(\"aircraft,advice,blues,corn,molasses,equipment,gold,information,cotton,jewelry,kin,legislation,luck,luggage,moose,music,offspring,rice,silver,trousers,wheat,bison,bream,breeches,britches,carp,chassis,clippers,cod,contretemps,corps,debris,diabetes,djinn,eland,elk,flounder,gallows,graffiti,headquarters,herpes,high,homework,innings,jackanapes,mackerel,measles,mews,mumps,news,pincers,pliers,proceedings,rabies,salmon,scissors,sea,series,shears,species,swine,trout,tuna,whiting,wildebeest,pike,oats,tongs,dregs,snuffers,victuals,tweezers,vespers,pinchers,bellows,cattle\");\r\n\r\n var irregular = {\r\n // pronouns\r\n I: 'we',\r\n you: 'you',\r\n he: 'they',\r\n it: 'they', // or them\r\n me: 'us',\r\n him: 'them',\r\n them: 'them',\r\n myself: 'ourselves',\r\n yourself: 'yourselves',\r\n himself: 'themselves',\r\n herself: 'themselves',\r\n itself: 'themselves',\r\n themself: 'themselves',\r\n oneself: 'oneselves',\r\n\r\n child: 'children',\r\n dwarf: 'dwarfs', // dwarfs are real; dwarves are fantasy.\r\n mongoose: 'mongooses',\r\n mythos: 'mythoi',\r\n ox: 'oxen',\r\n soliloquy: 'soliloquies',\r\n trilby: 'trilbys',\r\n person: 'people',\r\n forum: 'forums', // fora is ok but uncommon.\r\n\r\n // latin plural in popular usage.\r\n syllabus: 'syllabi',\r\n alumnus: 'alumni',\r\n genus: 'genera',\r\n viscus: 'viscera',\r\n stigma: 'stigmata'\r\n };\r\n\r\n var suffixRules = [\r\n // common suffixes\r\n\t\t[/man$/i, 'men'],\r\n\t\t[/([lm])ouse$/i, '$1ice'],\r\n\t\t[/tooth$/i, 'teeth'],\r\n\t\t[/goose$/i, 'geese'],\r\n\t\t[/foot$/i, 'feet'],\r\n\t\t[/zoon$/i, 'zoa'],\r\n\t\t[/([tcsx])is$/i, '$1es'],\r\n\r\n // fully assimilated suffixes\r\n\t\t[/ix$/i, 'ices'],\r\n\t\t[/^(cod|mur|sil|vert)ex$/i, '$1ices'],\r\n\t\t[/^(agend|addend|memorand|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi)um$/i, '$1a'],\r\n\t\t[/^(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|\\w+hedr)on$/i, '$1a'],\r\n\t\t[/^(alumn|alg|vertebr)a$/i, '$1ae'],\r\n\r\n // churches, classes, boxes, etc.\r\n\t\t[/([cs]h|ss|x)$/i, '$1es'],\r\n\r\n // words with -ves plural form\r\n\t\t[/([aeo]l|[^d]ea|ar)f$/i, '$1ves'],\r\n\t\t[/([nlw]i)fe$/i, '$1ves'],\r\n\r\n // -y\r\n\t\t[/([aeiou])y$/i, '$1ys'],\r\n // MODIFIED BY MAL - 06/08/2012\r\n // This was meant to catch nouns and pluralize them correctly,\r\n // but it was also catching all capitolized words ending in y.\r\n // For instance: \"Category\" was becoming \"Categorys\"\r\n //[/(^[A-Z][a-z]*)y$/, '$1ys'], // case sensitive!\r\n // END MODIFIED BY MAL\r\n\t\t[/y$/i, 'ies'],\r\n\r\n // -o\r\n\t\t[/([aeiou])o$/i, '$1os'],\r\n\t\t[/^(pian|portic|albin|generalissim|manifest|archipelag|ghett|medic|armadill|guan|octav|command|infern|phot|ditt|jumb|pr|dynam|ling|quart|embry|lumbag|rhin|fiasc|magnet|styl|alt|contralt|sopran|bass|crescend|temp|cant|sol|kimon)o$/i, '$1os'],\r\n\t\t[/o$/i, 'oes'],\r\n\r\n // words ending in s...\r\n\t\t[/s$/i, 'ses']\r\n\t];\r\n\r\n // pluralizes the given singular noun. There are three ways to call it:\r\n // pluralize(noun) -> pluralNoun\r\n // Returns the plural of the given noun.\r\n // Example: \r\n // pluralize(\"person\") -> \"people\"\r\n // pluralize(\"me\") -> \"us\"\r\n //\r\n // pluralize(noun, count) -> plural or singular noun\r\n // Inflect the noun according to the count, returning the singular noun\r\n // if the count is 1.\r\n // Examples:\r\n // pluralize(\"person\", 3) -> \"people\"\r\n // pluralize(\"person\", 1) -> \"person\"\r\n // pluralize(\"person\", 0) -> \"people\"\r\n //\r\n // pluralize(noun, count, plural) -> plural or singular noun\r\n // you can provide an irregular plural yourself as the 3rd argument.\r\n // Example:\r\n // pluralize(\"château\", 2 \"châteaux\") -> \"châteaux\"\r\n function pluralize(word, count, plural) {\r\n // handle the empty string reasonably.\r\n if (word === '') return '';\r\n\r\n // singular case.\r\n if (count === 1) return word;\r\n\r\n // life is very easy if an explicit plural was provided.\r\n if (typeof plural === 'string') return plural;\r\n\r\n var lowerWord = word.toLowerCase();\r\n\r\n // user defined rules have the highest priority.\r\n if (lowerWord in userDefined) {\r\n return capitalizeSame(userDefined[lowerWord], word);\r\n }\r\n\r\n // single letters are pluralized with 's, \"I got five A's on\r\n // my report card.\"\r\n if (word.match(/^[A-Z]$/)) return word + \"'s\";\r\n\r\n // some word don't change form when plural.\r\n if (word.match(/fish$|ois$|sheep$|deer$|pox$|itis$/i)) return word;\r\n if (word.match(/^[A-Z][a-z]*ese$/)) return word; // Nationalities.\r\n if (lowerWord in uninflected) return word;\r\n\r\n // there's a known set of words with irregular plural forms.\r\n if (lowerWord in irregular) {\r\n return capitalizeSame(irregular[lowerWord], word);\r\n }\r\n\r\n // try to pluralize the word depending on its suffix.\r\n var suffixRulesLength = suffixRules.length;\r\n for (var i = 0; i < suffixRulesLength; i++) {\r\n var rule = suffixRules[i];\r\n if (word.match(rule[0])) {\r\n return word.replace(rule[0], rule[1]);\r\n }\r\n }\r\n\r\n // if all else fails, just add s.\r\n return word + 's';\r\n }\r\n\r\n pluralize.define = function(word, plural) {\r\n userDefined[word.toLowerCase()] = plural;\r\n };\r\n\r\n return pluralize;\r\n\r\n})();\r\n","/**\r\n * @author Anatoly Mironov (mirontoli)\r\n * http://sharepointkunskap.wordpress.com\r\n * http://www.bool.se\r\n * \r\n * http://stackoverflow.com/questions/3605495/generate-a-list-of-localized-language-names-with-links-to-google-translate/14800384#14800384\r\n * http://stackoverflow.com/questions/10997128/language-name-from-iso-639-1-code-in-javascript/14800499#14800499\r\n * \r\n * using Phil Teare's answer on stackoverflow\r\n * http://stackoverflow.com/questions/3217492/list-of-language-codes-in-yaml-or-json/4900304#4900304\r\n * Just for testing only. Incorporate in your own javascript namespace\r\n * Example: getLanguageName(\"cv-RU\") --> Chuvash\r\n */\r\n(function() {\r\n 'use strict';\r\n\r\n /**\r\n\t * @author Phil Teare\r\n\t * using wikipedia data\r\n\t */\r\n var isoLangs = {\r\n \"ab\": {\r\n \"name\": \"Abkhaz\"\r\n },\r\n \"aa\": {\r\n \"name\": \"Afar\"\r\n },\r\n \"af\": {\r\n \"name\": \"Afrikaans\"\r\n },\r\n \"ak\": {\r\n \"name\": \"Akan\"\r\n },\r\n \"sq\": {\r\n \"name\": \"Albanian\"\r\n },\r\n \"am\": {\r\n \"name\": \"Amharic\"\r\n },\r\n \"ar\": {\r\n \"name\": \"Arabic\"\r\n },\r\n \"an\": {\r\n \"name\": \"Aragonese\"\r\n },\r\n \"hy\": {\r\n \"name\": \"Armenian\"\r\n },\r\n \"as\": {\r\n \"name\": \"Assamese\"\r\n },\r\n \"av\": {\r\n \"name\": \"Avaric\"\r\n },\r\n \"ae\": {\r\n \"name\": \"Avestan\"\r\n },\r\n \"ay\": {\r\n \"name\": \"Aymara\"\r\n },\r\n \"az\": {\r\n \"name\": \"Azerbaijani\"\r\n },\r\n \"bm\": {\r\n \"name\": \"Bambara\"\r\n },\r\n \"ba\": {\r\n \"name\": \"Bashkir\"\r\n },\r\n \"eu\": {\r\n \"name\": \"Basque\"\r\n },\r\n \"be\": {\r\n \"name\": \"Belarusian\"\r\n },\r\n \"bn\": {\r\n \"name\": \"Bengali\"\r\n },\r\n \"bh\": {\r\n \"name\": \"Bihari\"\r\n },\r\n \"bi\": {\r\n \"name\": \"Bislama\"\r\n },\r\n \"bs\": {\r\n \"name\": \"Bosnian\"\r\n },\r\n \"br\": {\r\n \"name\": \"Breton\"\r\n },\r\n \"bg\": {\r\n \"name\": \"Bulgarian\"\r\n },\r\n \"my\": {\r\n \"name\": \"Burmese\"\r\n },\r\n \"ca\": {\r\n \"name\": \"Catalan; Valencian\"\r\n },\r\n \"ch\": {\r\n \"name\": \"Chamorro\"\r\n },\r\n \"ce\": {\r\n \"name\": \"Chechen\"\r\n },\r\n \"ny\": {\r\n \"name\": \"Chichewa; Chewa; Nyanja\"\r\n },\r\n \"zh\": {\r\n \"name\": \"Chinese\"\r\n },\r\n \"zh-hans\": {\r\n \"name\": \"Chinese (Simplified)\",\r\n \"nativeName\": \"简体中文\"\r\n },\r\n \"zh-hant\": {\r\n \"name\": \"Chinese (Traditional)\",\r\n \"nativeName\": \"繁體中文\"\r\n },\r\n \"cv\": {\r\n \"name\": \"Chuvash\"\r\n },\r\n \"kw\": {\r\n \"name\": \"Cornish\"\r\n },\r\n \"co\": {\r\n \"name\": \"Corsican\"\r\n },\r\n \"cr\": {\r\n \"name\": \"Cree\"\r\n },\r\n \"hr\": {\r\n \"name\": \"Croatian\"\r\n },\r\n \"cs\": {\r\n \"name\": \"Czech\"\r\n },\r\n \"da\": {\r\n \"name\": \"Danish\"\r\n },\r\n \"dv\": {\r\n \"name\": \"Divehi; Dhivehi; Maldivian;\"\r\n },\r\n \"nl\": {\r\n \"name\": \"Dutch\"\r\n },\r\n \"en\": {\r\n \"name\": \"English\"\r\n },\r\n \"eo\": {\r\n \"name\": \"Esperanto\"\r\n },\r\n \"et\": {\r\n \"name\": \"Estonian\"\r\n },\r\n \"ee\": {\r\n \"name\": \"Ewe\"\r\n },\r\n \"fo\": {\r\n \"name\": \"Faroese\"\r\n },\r\n \"fj\": {\r\n \"name\": \"Fijian\"\r\n },\r\n \"fi\": {\r\n \"name\": \"Finnish\"\r\n },\r\n \"fr\": {\r\n \"name\": \"French\",\r\n \"nativeName\": \"Français\"\r\n },\r\n \"ff\": {\r\n \"name\": \"Fula; Fulah; Pulaar; Pular\"\r\n },\r\n \"gl\": {\r\n \"name\": \"Galician\"\r\n },\r\n \"ka\": {\r\n \"name\": \"Georgian\"\r\n },\r\n \"de\": {\r\n \"name\": \"German\",\r\n \"nativeName\": \"Deutsch\"\r\n },\r\n \"el\": {\r\n \"name\": \"Greek, Modern\"\r\n },\r\n \"gn\": {\r\n \"name\": \"Guaraní\"\r\n },\r\n \"gu\": {\r\n \"name\": \"Gujarati\"\r\n },\r\n \"ht\": {\r\n \"name\": \"Haitian; Haitian Creole\"\r\n },\r\n \"ha\": {\r\n \"name\": \"Hausa\"\r\n },\r\n \"he\": {\r\n \"name\": \"Hebrew (modern)\"\r\n },\r\n \"hz\": {\r\n \"name\": \"Herero\"\r\n },\r\n \"hi\": {\r\n \"name\": \"Hindi\"\r\n },\r\n \"ho\": {\r\n \"name\": \"Hiri Motu\"\r\n },\r\n \"hu\": {\r\n \"name\": \"Hungarian\"\r\n },\r\n \"ia\": {\r\n \"name\": \"Interlingua\"\r\n },\r\n \"id\": {\r\n \"name\": \"Indonesian\"\r\n },\r\n \"ie\": {\r\n \"name\": \"Interlingue\"\r\n },\r\n \"ga\": {\r\n \"name\": \"Irish\"\r\n },\r\n \"ig\": {\r\n \"name\": \"Igbo\"\r\n },\r\n \"ik\": {\r\n \"name\": \"Inupiaq\"\r\n },\r\n \"io\": {\r\n \"name\": \"Ido\"\r\n },\r\n \"is\": {\r\n \"name\": \"Icelandic\"\r\n },\r\n \"it\": {\r\n \"name\": \"Italian\",\r\n \"nativeName\": \"Italiano\"\r\n },\r\n \"iu\": {\r\n \"name\": \"Inuktitut\"\r\n },\r\n \"ja\": {\r\n \"name\": \"Japanese\",\r\n \"nativeName\": \"日本語\"\r\n },\r\n \"jv\": {\r\n \"name\": \"Javanese\"\r\n },\r\n \"kl\": {\r\n \"name\": \"Kalaallisut, Greenlandic\"\r\n },\r\n \"kn\": {\r\n \"name\": \"Kannada\"\r\n },\r\n \"kr\": {\r\n \"name\": \"Kanuri\"\r\n },\r\n \"ks\": {\r\n \"name\": \"Kashmiri\"\r\n },\r\n \"kk\": {\r\n \"name\": \"Kazakh\"\r\n },\r\n \"km\": {\r\n \"name\": \"Khmer\"\r\n },\r\n \"ki\": {\r\n \"name\": \"Kikuyu, Gikuyu\"\r\n },\r\n \"rw\": {\r\n \"name\": \"Kinyarwanda\"\r\n },\r\n \"ky\": {\r\n \"name\": \"Kirghiz, Kyrgyz\"\r\n },\r\n \"kv\": {\r\n \"name\": \"Komi\"\r\n },\r\n \"kg\": {\r\n \"name\": \"Kongo\"\r\n },\r\n \"ko\": {\r\n \"name\": \"Korean\",\r\n \"nativeName\": \"한국어\"\r\n },\r\n \"ku\": {\r\n \"name\": \"Kurdish\"\r\n },\r\n \"kj\": {\r\n \"name\": \"Kwanyama, Kuanyama\"\r\n },\r\n \"la\": {\r\n \"name\": \"Latin\"\r\n },\r\n \"lb\": {\r\n \"name\": \"Luxembourgish, Letzeburgesch\"\r\n },\r\n \"lg\": {\r\n \"name\": \"Luganda\"\r\n },\r\n \"li\": {\r\n \"name\": \"Limburgish, Limburgan, Limburger\"\r\n },\r\n \"ln\": {\r\n \"name\": \"Lingala\"\r\n },\r\n \"lo\": {\r\n \"name\": \"Lao\"\r\n },\r\n \"lt\": {\r\n \"name\": \"Lithuanian\"\r\n },\r\n \"lu\": {\r\n \"name\": \"Luba-Katanga\"\r\n },\r\n \"lv\": {\r\n \"name\": \"Latvian\"\r\n },\r\n \"gv\": {\r\n \"name\": \"Manx\"\r\n },\r\n \"mk\": {\r\n \"name\": \"Macedonian\"\r\n },\r\n \"mg\": {\r\n \"name\": \"Malagasy\"\r\n },\r\n \"ms\": {\r\n \"name\": \"Malay\"\r\n },\r\n \"ml\": {\r\n \"name\": \"Malayalam\"\r\n },\r\n \"mt\": {\r\n \"name\": \"Maltese\"\r\n },\r\n \"mi\": {\r\n \"name\": \"Māori\"\r\n },\r\n \"mr\": {\r\n \"name\": \"Marathi (Marāṭhī)\"\r\n },\r\n \"mh\": {\r\n \"name\": \"Marshallese\"\r\n },\r\n \"mn\": {\r\n \"name\": \"Mongolian\"\r\n },\r\n \"na\": {\r\n \"name\": \"Nauru\"\r\n },\r\n \"nv\": {\r\n \"name\": \"Navajo, Navaho\"\r\n },\r\n \"nb\": {\r\n \"name\": \"Norwegian Bokmål\"\r\n },\r\n \"nd\": {\r\n \"name\": \"North Ndebele\"\r\n },\r\n \"ne\": {\r\n \"name\": \"Nepali\"\r\n },\r\n \"ng\": {\r\n \"name\": \"Ndonga\"\r\n },\r\n \"nn\": {\r\n \"name\": \"Norwegian Nynorsk\"\r\n },\r\n \"no\": {\r\n \"name\": \"Norwegian\"\r\n },\r\n \"ii\": {\r\n \"name\": \"Nuosu\"\r\n },\r\n \"nr\": {\r\n \"name\": \"South Ndebele\"\r\n },\r\n \"oc\": {\r\n \"name\": \"Occitan\"\r\n },\r\n \"oj\": {\r\n \"name\": \"Ojibwe, Ojibwa\"\r\n },\r\n \"cu\": {\r\n \"name\": \"Old Church Slavonic, Church Slavic, Church Slavonic, Old Bulgarian, Old Slavonic\"\r\n },\r\n \"om\": {\r\n \"name\": \"Oromo\"\r\n },\r\n \"or\": {\r\n \"name\": \"Oriya\"\r\n },\r\n \"os\": {\r\n \"name\": \"Ossetian, Ossetic\"\r\n },\r\n \"pa\": {\r\n \"name\": \"Panjabi, Punjabi\"\r\n },\r\n \"pi\": {\r\n \"name\": \"Pāli\"\r\n },\r\n \"fa\": {\r\n \"name\": \"Persian\"\r\n },\r\n \"pl\": {\r\n \"name\": \"Polish\"\r\n },\r\n \"ps\": {\r\n \"name\": \"Pashto, Pushto\"\r\n },\r\n \"pt\": {\r\n \"name\": \"Portuguese\",\r\n \"nativeName\": \"Português\"\r\n },\r\n \"qu\": {\r\n \"name\": \"Quechua\"\r\n },\r\n \"rm\": {\r\n \"name\": \"Romansh\"\r\n },\r\n \"rn\": {\r\n \"name\": \"Kirundi\"\r\n },\r\n \"ro\": {\r\n \"name\": \"Romanian, Moldavian, Moldovan\"\r\n },\r\n \"ru\": {\r\n \"name\": \"Russian\",\r\n \"nativeName\": \"Русский\"\r\n },\r\n \"sa\": {\r\n \"name\": \"Sanskrit (Saṁskṛta)\"\r\n },\r\n \"sc\": {\r\n \"name\": \"Sardinian\"\r\n },\r\n \"sd\": {\r\n \"name\": \"Sindhi\"\r\n },\r\n \"se\": {\r\n \"name\": \"Northern Sami\"\r\n },\r\n \"sm\": {\r\n \"name\": \"Samoan\"\r\n },\r\n \"sg\": {\r\n \"name\": \"Sango\"\r\n },\r\n \"sr\": {\r\n \"name\": \"Serbian\"\r\n },\r\n \"gd\": {\r\n \"name\": \"Scottish Gaelic; Gaelic\"\r\n },\r\n \"sn\": {\r\n \"name\": \"Shona\"\r\n },\r\n \"si\": {\r\n \"name\": \"Sinhala, Sinhalese\"\r\n },\r\n \"sk\": {\r\n \"name\": \"Slovak\"\r\n },\r\n \"sl\": {\r\n \"name\": \"Slovene\"\r\n },\r\n \"so\": {\r\n \"name\": \"Somali\"\r\n },\r\n \"st\": {\r\n \"name\": \"Southern Sotho\"\r\n },\r\n \"es\": {\r\n \"name\": \"Spanish; Castilian\",\r\n \"nativeName\": \"Español\"\r\n },\r\n \"su\": {\r\n \"name\": \"Sundanese\"\r\n },\r\n \"sw\": {\r\n \"name\": \"Swahili\"\r\n },\r\n \"ss\": {\r\n \"name\": \"Swati\"\r\n },\r\n \"sv\": {\r\n \"name\": \"Swedish\"\r\n },\r\n \"ta\": {\r\n \"name\": \"Tamil\"\r\n },\r\n \"te\": {\r\n \"name\": \"Telugu\"\r\n },\r\n \"tg\": {\r\n \"name\": \"Tajik\"\r\n },\r\n \"th\": {\r\n \"name\": \"Thai\",\r\n \"nativeName\": \"ไทย\"\r\n },\r\n \"ti\": {\r\n \"name\": \"Tigrinya\"\r\n },\r\n \"bo\": {\r\n \"name\": \"Tibetan Standard, Tibetan, Central\"\r\n },\r\n \"tk\": {\r\n \"name\": \"Turkmen\"\r\n },\r\n \"tl\": {\r\n \"name\": \"Tagalog\"\r\n },\r\n \"tn\": {\r\n \"name\": \"Tswana\"\r\n },\r\n \"to\": {\r\n \"name\": \"Tonga (Tonga Islands)\"\r\n },\r\n \"tr\": {\r\n \"name\": \"Turkish\"\r\n },\r\n \"ts\": {\r\n \"name\": \"Tsonga\"\r\n },\r\n \"tt\": {\r\n \"name\": \"Tatar\"\r\n },\r\n \"tw\": {\r\n \"name\": \"Twi\"\r\n },\r\n \"ty\": {\r\n \"name\": \"Tahitian\"\r\n },\r\n \"ug\": {\r\n \"name\": \"Uighur, Uyghur\"\r\n },\r\n \"uk\": {\r\n \"name\": \"Ukrainian\"\r\n },\r\n \"ur\": {\r\n \"name\": \"Urdu\"\r\n },\r\n \"uz\": {\r\n \"name\": \"Uzbek\"\r\n },\r\n \"ve\": {\r\n \"name\": \"Venda\"\r\n },\r\n \"vi\": {\r\n \"name\": \"Vietnamese\",\r\n \"nativeName\": \"Tiếng Việt\"\r\n },\r\n \"vo\": {\r\n \"name\": \"Volapük\"\r\n },\r\n \"wa\": {\r\n \"name\": \"Walloon\"\r\n },\r\n \"cy\": {\r\n \"name\": \"Welsh\"\r\n },\r\n \"wo\": {\r\n \"name\": \"Wolof\"\r\n },\r\n \"fy\": {\r\n \"name\": \"Western Frisian\"\r\n },\r\n \"xh\": {\r\n \"name\": \"Xhosa\"\r\n },\r\n \"yi\": {\r\n \"name\": \"Yiddish\"\r\n },\r\n \"yo\": {\r\n \"name\": \"Yoruba\"\r\n },\r\n \"za\": {\r\n \"name\": \"Zhuang, Chuang\"\r\n }\r\n }\r\n\r\n var getLanguageName = function(key) {\r\n var lang = isoLangs[key.toLowerCase()];\r\n return lang ? lang.name : undefined;\r\n }\r\n\r\n var getLanguageNativeName = function(key) {\r\n var lang = isoLangs[key.toLowerCase()];\r\n return lang ? lang.nativeName : undefined;\r\n }\r\n\r\n window.getLanguageName = getLanguageName;\r\n window.getLanguageNativeName = getLanguageNativeName;\r\n})();","Librarian.Lang.stateCodes = {\r\n \"Alabama\": \"AL\",\r\n \"Alaska\": \"AK\",\r\n \"Arizona\": \"AZ\",\r\n \"Arkansas\": \"AR\",\r\n \"California\": \"CA\",\r\n \"Colorado\": \"CO\",\r\n \"Connecticut\": \"CT\",\r\n \"Delaware\": \"DE\",\r\n \"District Of Columbia\": \"DC\",\r\n \"Florida\": \"FL\",\r\n \"Georgia\": \"GA\",\r\n \"Hawaii\": \"HI\",\r\n \"Idaho\": \"ID\",\r\n \"Illinois\": \"IL\",\r\n \"Indiana\": \"IN\",\r\n \"Iowa\": \"IA\",\r\n \"Kansas\": \"KS\",\r\n \"Kentucky\": \"KY\",\r\n \"Louisiana\": \"LA\",\r\n \"Maine\": \"ME\",\r\n \"Maryland\": \"MD\",\r\n \"Massachusetts\": \"MA\",\r\n \"Michigan\": \"MI\",\r\n \"Minnesota\": \"MN\",\r\n \"Mississippi\": \"MS\",\r\n \"Missouri\": \"MO\",\r\n \"Montana\": \"MT\",\r\n \"Nebraska\": \"NE\",\r\n \"Nevada\": \"NV\",\r\n \"New Hampshire\": \"NH\",\r\n \"New Jersey\": \"NJ\",\r\n \"New Mexico\": \"NM\",\r\n \"New York\": \"NY\",\r\n \"North Carolina\": \"NC\",\r\n \"North Dakota\": \"ND\",\r\n \"Ohio\": \"OH\",\r\n \"Oklahoma\": \"OK\",\r\n \"Oregon\": \"OR\",\r\n \"Pennsylvania\": \"PA\",\r\n \"Rhode Island\": \"RI\",\r\n \"South Carolina\": \"SC\",\r\n \"South Dakota\": \"SD\",\r\n \"Tennessee\": \"TN\",\r\n \"Texas\": \"TX\",\r\n \"Utah\": \"UT\",\r\n \"Vermont\": \"VT\",\r\n \"Virginia\": \"VA\",\r\n \"Washington\": \"WA\",\r\n \"West Virginia\": \"WV\",\r\n \"Wisconsin\": \"WI\",\r\n \"Wyoming\": \"WY\"\r\n}"]}