{"version":3,"sources":["node_modules/globalize/lib/globalize.js","facade/js/js-compat.js","facade/js/jquery-qstring.js","node_modules/@rwap/jquery-ui-touch-punch/jquery.ui.touch-punch.js","facade/js/jquery-cookie.js","facade/js/jquery-popup.js","facade/js/jquery-sticky.js","facade/js/jquery-toolaction.js","facade/js/jquery-quicksearch.js","facade/js/jquery-highlight.js","facade/js/jquery-colorpicker.js","facade/js/js-checkfiletype.js","facade/js/jquery-filepicker.js","facade/js/jquery-theadscroll.js","facade/js/jquery-inittz.js","facade/js/jquery-komodel.js","facade/js/fs-initdp.js","facade/js/fs-form.js","facade/js/fs-initgrids.js","facade/appinit.js","facade/js/fs.js"],"names":["window","Globalize","regexHex","regexInfinity","regexParseFloat","regexTrim","arrayIndexOf","endsWith","extend","isArray","isFunction","isObject","startsWith","trim","truncate","zeroPad","appendPreOrPostMatch","expandFormat","formatDate","formatNumber","getTokenRegExp","getEra","getEraYear","parseExact","parseNegativePattern","expandNumber","expandYear","getDayIndex","getMonthIndex","getParseRegExp","outOfRange","toUpper","toUpperArray","cultureSelector","prototype","init","require","module","cultures","constructor","this","name","englishName","nativeName","isRTL","language","numberFormat","pattern","decimals","groupSizes","NaN","negativeInfinity","positiveInfinity","percent","symbol","currency","calendars","standard","firstDay","days","names","namesAbbr","namesShort","months","AM","PM","eras","start","offset","twoDigitYearMax","patterns","d","D","t","T","f","F","M","Y","S","messages","calendar","en","array","item","indexOf","i","length","value","substr","options","src","copy","copyIsArray","clone","target","arguments","deep","_typeof","Array","obj","Object","toString","call","replace","isNaN","Math","str","count","left","l","preMatch","strings","quoteCount","escaped","il","c","charAt","push","cal","format","len","culture","ret","convert","eraDate","Date","getTime","era","setFullYear","toLocaleString","sortable","hour","foundDay","checkedDay","converted","zeros","dayPartRegExp","tokenRegExp","padZeros","num","r","s","getPart","date","part","getFullYear","getMonth","getDate","fromGregorian","index","lastIndex","ar","exec","slice","current","clength","getDay","monthsGenitive","test","getHours","getMinutes","getSeconds","getMilliseconds","getTimezoneOffset","floor","abs","join","number","precision","formatInfo","curSize","curGroupIndex","factor","pow","rounded","round","isFinite","numberString","right","split","exponent","parseInt","stringIndex","sep","Infinity","nf","toUpperCase","patternParts","ticks","year","now","curr","abbr","upperDays","_upperDays","monthsGen","upperMonths","_upperMonths","upperMonthsGen","_upperMonthsGen","re","_parseRegExp","reFormat","match","expFormat","regexp","groups","add","m","parseRegExp","regExp","low","high","arr","results","parseInfo","RegExp","hourOffset","month","weekDay","min","sec","msec","tzMinOffset","pmHour","j","jl","matchGroup","matchInt","offsets","minOffset","eraName","toLowerCase","defaultYear","result","toGregorian","setHours","adjustedMin","negativePattern","neg","pos","findClosestCulture","localize","key","radix","parseFloat","addCultureInfo","cultureName","baseCultureName","info","base","isNew","lang","list","prioritized","pri","parts","sort","a","b","lastIndexOf","cultureKey","parseDate","formats","prop","signInfo","sign","intAndFraction","exponentPos","integer","fraction","decSep","decimalPos","groupSep","altGroupSep","p","expSignInfo","global","o","x","undefined","Type","_formatRE","String","compare","s1","s2","ignoreCase","concat","fromChar","ch","v","substring","_htmlDecMap","_htmlDecRE","_htmlEncMap","_htmlEncRE","contains","includes","toArray","htmlDecode","_str","htmlEncode","padLeft","padStart","padRight","padEnd","insert","remove","ua","navigator","userAgent","isIOS","Qstring","qs","$","parse","mspointer","msPointerEnabled","touch","document","TouchEvent","DocumentTouch","maxTouchPoints","msMaxTouchPoints","ui","mouse","touchHandled","_touchStartBound","_touchMoveBound","_touchEndBound","mouseProto","_mouseInit","_mouseDestroy","lastClickTime","_touchStart","event","self","_startedMove","timeStamp","_startPos","getTouchCoords","_mouseCapture","originalEvent","changedTouches","_touchMoved","simulateMouseEvent","_touchMove","_touchEnd","timeMoving","endPos","y","touchType","support","element","style","msTouchAction","bind","on","touchstart","touchmove","touchend","off","pageX","pageY","simulatedType","touches","is","cancelable","preventDefault","simulatedEvent","MouseEvent","bubbles","view","screenX","screenY","clientX","clientY","dispatchEvent","factory","jQuery","each","exists","get","defval","getValues","set","clear","location","search","de","decodeURIComponent","args","arg","encodeURIComponent","k","qstring","cookie","expires","path","domain","secure","ck","seconds","setSeconds","toUTCString","fn","popup","trigger","position","hideCallback","e","hide","data","addClass","trg","parent","my","at","of","show","jpos","top","css","setTimeout","one","placeholderKey","setPos","elt","viewPort","ofp","offsetParent","syncPos","eltRect","isDoc","anchor","anc","ancRect","width","height","outerWidth","outerHeight","pref","max","bottom","isEmptyObject","stop","placeholder","placeholderClass","visibility","display","insertAfter","css1","initPos","removeData","removeClass","parentNode","removeChild","delayRemoveClone","doScroll","w","scrollLeft","scrollTop","doResize","syncSize","placeholderStrategy","fixSize","cloneNode","fixHeight","menuFromObjectArray","ul","href","class","confirmation","text","attr","li","append","testContent","textContent","innerText","defaultFindHook","container","children","ww","toggle","unhighlight","highlight","tableFindHook","_children","find","suppressEnter","keyCode","sticky","fitFar","fnScroll","fnResize","scrollIntoView","eq","block","behavior","select","me","mePort","eltPort","dy","scrollBy","toolaction","from","appendMenuTo","body","menuFactory","button","menu","hasNonDef","defItem","defUrl","defConfirm","getMenu","closest","after","next","uniqueId","appendTo","evt","darr","confirm","stopImmediatePropagation","getButtonClickFn","node","nodeName","className","nodeType","createElement","wordNode","splitText","wordClone","appendChild","replaceChild","childNodes","tagName","settings","firstChild","normalize","end","words","caseSensitive","wordsOnly","grep","word","map","flag","defaults","selector","quicksearch","timer","oldvalue","clearTimeout","Color","contrast","_rgba","createValidator","typeOrExt","file","type","colorpicker","namedColors","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","defaultColors","cp","focus","id","random","val","tbody","tr","cc","title","textColor","color","stopPropagation","ee","sync","setUI","background","cid","tddef","label","labelMultiple","labelNoFile","labelUndo","labelRemove","labelConfirm","labelWrongType","filepicker","param","removeSelectedFile","setFileName","removePreSelectedFile","filename","fileurl","allowremove","checked","onremove","multiple","url","allowRemove","size","empty","remover","unit","ext","prepend","html","toFixed","onSetFileName","files","accept","suppressTypeCheck","invalidFile","input","acceptedTypes","validators","some","checkFileTypes","alert","dataset","message","nextSibling","n","TD","Res","btn","wrap","click","optionsDataKey","sectionClass","scrollData","THeadScroll","table","frow","scX","scY","h","zIndex","trows","rows","comparer","binarySearch","tHead","offsetHeight","rt","offsetTop","tsec","prev","fbodies","cloned","replaceAll","cells","scrollGroups","tho","thn","tro","trn","expando","ensureVisible","winTop","newTop","winBottom","innerHeight","eltTop","eltBottom","grid","gridTop","gridTopOffset","tHeadScroll","th","winTZ","olsonTZ","PST8PDT","MST7MDT","CST6CDT","EST5EDT","selectByTextPrefix","oo","selected","defaultSelected","initTZ","tz","Intl","DateTimeFormat","resolvedOptions","timeZone","tzString","getTZString","originalDatePicker","ko","bindingHandlers","initKOForm","model","els","elements","el","db","getAttribute","mm","makeArray","def","observableArray","observable","applyBindings","getCalendarOptions","g","ci","monthNames","monthNamesShort","dayNames","dayNamesShort","dayNamesMin","dateFormat","$1","dddd","ddd","dd","MMMM","MMM","MM","yyyy","yyy","yy","showMonthAfterYear","getDatePickerOptions","opts","showAnim","showOn","constrainInput","buttonText","showOtherMonths","selectOtherMonths","prevText","nextText","classes","newDatePicker","apply","hasClass","allOptions","overrideDatePicker","$target","datepicker","valueAccessor","allBindingsAccessor","viewModel","bindingContext","utils","arrayMap","update","unwrap","accessor","dependsOn","opt","arrayFilter","makeFilter","filter","updateValue","elementValue","valueSetter","splice","registerEventHandler","lastModified","komodel","recordItemSelector","getHash","findLabel","toggleInvalid","lbl","invalid","form","_i","hasValue","toggleClass","isMacOS","lteIE7","ctx","isCollapsed","disableButtons","enable","onbeforeunload","disabled","noop","findForm","Event","postback","actions","confirmText","postbackaction","ff","actualSize","serializeArray","checkSize","maxAllowedContentLength","FS","Form","submit","postbackCell","action","currentcellid","checkRows","state","subset","not","_updateButtons","cursor","_c","ids","ele","fix","which","jt","currentTarget","nodef","currentrowid","postbackanchor","postbackRow","postbackSection","metaKey","ctrlKey","isNewTab","dflt","isSafari","addScript","scripts","addScriptImpl","shift","script","onload","onreadystatechange","readyState","async","head","mq","mediaQuery","matchMedia","matches","initGrids","doNotProcessHash","scrollOptions","safariFixCallback","grids","hash","forms"],"mappings":"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","file":"fscorlib.min.js","sourcesContent":["/*!\n * Globalize\n *\n * http://github.com/jquery/globalize\n *\n * Copyright Software Freedom Conservancy, Inc.\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n */\n\n(function( window, undefined ) {\n\nvar Globalize,\n\t// private variables\n\tregexHex,\n\tregexInfinity,\n\tregexParseFloat,\n\tregexTrim,\n\t// private JavaScript utility functions\n\tarrayIndexOf,\n\tendsWith,\n\textend,\n\tisArray,\n\tisFunction,\n\tisObject,\n\tstartsWith,\n\ttrim,\n\ttruncate,\n\tzeroPad,\n\t// private Globalization utility functions\n\tappendPreOrPostMatch,\n\texpandFormat,\n\tformatDate,\n\tformatNumber,\n\tgetTokenRegExp,\n\tgetEra,\n\tgetEraYear,\n\tparseExact,\n\tparseNegativePattern;\n\n// Global variable (Globalize) or CommonJS module (globalize)\nGlobalize = function( cultureSelector ) {\n\treturn new Globalize.prototype.init( cultureSelector );\n};\n\nif ( typeof require !== \"undefined\" &&\n\ttypeof exports !== \"undefined\" &&\n\ttypeof module !== \"undefined\" ) {\n\t// Assume CommonJS\n\tmodule.exports = Globalize;\n} else {\n\t// Export as global variable\n\twindow.Globalize = Globalize;\n}\n\nGlobalize.cultures = {};\n\nGlobalize.prototype = {\n\tconstructor: Globalize,\n\tinit: function( cultureSelector ) {\n\t\tthis.cultures = Globalize.cultures;\n\t\tthis.cultureSelector = cultureSelector;\n\n\t\treturn this;\n\t}\n};\nGlobalize.prototype.init.prototype = Globalize.prototype;\n\n// 1. When defining a culture, all fields are required except the ones stated as optional.\n// 2. Each culture should have a \".calendars\" object with at least one calendar named \"standard\"\n// which serves as the default calendar in use by that culture.\n// 3. Each culture should have a \".calendar\" object which is the current calendar being used,\n// it may be dynamically changed at any time to one of the calendars in \".calendars\".\nGlobalize.cultures[ \"default\" ] = {\n\t// A unique name for the culture in the form -\n\tname: \"en\",\n\t// the name of the culture in the english language\n\tenglishName: \"English\",\n\t// the name of the culture in its own language\n\tnativeName: \"English\",\n\t// whether the culture uses right-to-left text\n\tisRTL: false,\n\t// \"language\" is used for so-called \"specific\" cultures.\n\t// For example, the culture \"es-CL\" means \"Spanish, in Chili\".\n\t// It represents the Spanish-speaking culture as it is in Chili,\n\t// which might have different formatting rules or even translations\n\t// than Spanish in Spain. A \"neutral\" culture is one that is not\n\t// specific to a region. For example, the culture \"es\" is the generic\n\t// Spanish culture, which may be a more generalized version of the language\n\t// that may or may not be what a specific culture expects.\n\t// For a specific culture like \"es-CL\", the \"language\" field refers to the\n\t// neutral, generic culture information for the language it is using.\n\t// This is not always a simple matter of the string before the dash.\n\t// For example, the \"zh-Hans\" culture is netural (Simplified Chinese).\n\t// And the \"zh-SG\" culture is Simplified Chinese in Singapore, whose lanugage\n\t// field is \"zh-CHS\", not \"zh\".\n\t// This field should be used to navigate from a specific culture to it's\n\t// more general, neutral culture. If a culture is already as general as it\n\t// can get, the language may refer to itself.\n\tlanguage: \"en\",\n\t// numberFormat defines general number formatting rules, like the digits in\n\t// each grouping, the group separator, and how negative numbers are displayed.\n\tnumberFormat: {\n\t\t// [negativePattern]\n\t\t// Note, numberFormat.pattern has no \"positivePattern\" unlike percent and currency,\n\t\t// but is still defined as an array for consistency with them.\n\t\t// negativePattern: one of \"(n)|-n|- n|n-|n -\"\n\t\tpattern: [ \"-n\" ],\n\t\t// number of decimal places normally shown\n\t\tdecimals: 2,\n\t\t// string that separates number groups, as in 1,000,000\n\t\t\",\": \",\",\n\t\t// string that separates a number from the fractional portion, as in 1.99\n\t\t\".\": \".\",\n\t\t// array of numbers indicating the size of each number group.\n\t\t// TODO: more detailed description and example\n\t\tgroupSizes: [ 3 ],\n\t\t// symbol used for positive numbers\n\t\t\"+\": \"+\",\n\t\t// symbol used for negative numbers\n\t\t\"-\": \"-\",\n\t\t// symbol used for NaN (Not-A-Number)\n\t\t\"NaN\": \"NaN\",\n\t\t// symbol used for Negative Infinity\n\t\tnegativeInfinity: \"-Infinity\",\n\t\t// symbol used for Positive Infinity\n\t\tpositiveInfinity: \"Infinity\",\n\t\tpercent: {\n\t\t\t// [negativePattern, positivePattern]\n\t\t\t// negativePattern: one of \"-n %|-n%|-%n|%-n|%n-|n-%|n%-|-% n|n %-|% n-|% -n|n- %\"\n\t\t\t// positivePattern: one of \"n %|n%|%n|% n\"\n\t\t\tpattern: [ \"-n %\", \"n %\" ],\n\t\t\t// number of decimal places normally shown\n\t\t\tdecimals: 2,\n\t\t\t// array of numbers indicating the size of each number group.\n\t\t\t// TODO: more detailed description and example\n\t\t\tgroupSizes: [ 3 ],\n\t\t\t// string that separates number groups, as in 1,000,000\n\t\t\t\",\": \",\",\n\t\t\t// string that separates a number from the fractional portion, as in 1.99\n\t\t\t\".\": \".\",\n\t\t\t// symbol used to represent a percentage\n\t\t\tsymbol: \"%\"\n\t\t},\n\t\tcurrency: {\n\t\t\t// [negativePattern, positivePattern]\n\t\t\t// negativePattern: one of \"($n)|-$n|$-n|$n-|(n$)|-n$|n-$|n$-|-n $|-$ n|n $-|$ n-|$ -n|n- $|($ n)|(n $)\"\n\t\t\t// positivePattern: one of \"$n|n$|$ n|n $\"\n\t\t\tpattern: [ \"($n)\", \"$n\" ],\n\t\t\t// number of decimal places normally shown\n\t\t\tdecimals: 2,\n\t\t\t// array of numbers indicating the size of each number group.\n\t\t\t// TODO: more detailed description and example\n\t\t\tgroupSizes: [ 3 ],\n\t\t\t// string that separates number groups, as in 1,000,000\n\t\t\t\",\": \",\",\n\t\t\t// string that separates a number from the fractional portion, as in 1.99\n\t\t\t\".\": \".\",\n\t\t\t// symbol used to represent currency\n\t\t\tsymbol: \"$\"\n\t\t}\n\t},\n\t// calendars defines all the possible calendars used by this culture.\n\t// There should be at least one defined with name \"standard\", and is the default\n\t// calendar used by the culture.\n\t// A calendar contains information about how dates are formatted, information about\n\t// the calendar's eras, a standard set of the date formats,\n\t// translations for day and month names, and if the calendar is not based on the Gregorian\n\t// calendar, conversion functions to and from the Gregorian calendar.\n\tcalendars: {\n\t\tstandard: {\n\t\t\t// name that identifies the type of calendar this is\n\t\t\tname: \"Gregorian_USEnglish\",\n\t\t\t// separator of parts of a date (e.g. \"/\" in 11/05/1955)\n\t\t\t\"/\": \"/\",\n\t\t\t// separator of parts of a time (e.g. \":\" in 05:44 PM)\n\t\t\t\":\": \":\",\n\t\t\t// the first day of the week (0 = Sunday, 1 = Monday, etc)\n\t\t\tfirstDay: 0,\n\t\t\tdays: {\n\t\t\t\t// full day names\n\t\t\t\tnames: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ],\n\t\t\t\t// abbreviated day names\n\t\t\t\tnamesAbbr: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ],\n\t\t\t\t// shortest day names\n\t\t\t\tnamesShort: [ \"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\" ]\n\t\t\t},\n\t\t\tmonths: {\n\t\t\t\t// full month names (13 months for lunar calendards -- 13th month should be \"\" if not lunar)\n\t\t\t\tnames: [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\", \"\" ],\n\t\t\t\t// abbreviated month names\n\t\t\t\tnamesAbbr: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\", \"\" ]\n\t\t\t},\n\t\t\t// AM and PM designators in one of these forms:\n\t\t\t// The usual view, and the upper and lower case versions\n\t\t\t// [ standard, lowercase, uppercase ]\n\t\t\t// The culture does not use AM or PM (likely all standard date formats use 24 hour time)\n\t\t\t// null\n\t\t\tAM: [ \"AM\", \"am\", \"AM\" ],\n\t\t\tPM: [ \"PM\", \"pm\", \"PM\" ],\n\t\t\teras: [\n\t\t\t\t// eras in reverse chronological order.\n\t\t\t\t// name: the name of the era in this culture (e.g. A.D., C.E.)\n\t\t\t\t// start: when the era starts in ticks (gregorian, gmt), null if it is the earliest supported era.\n\t\t\t\t// offset: offset in years from gregorian calendar\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"A.D.\",\n\t\t\t\t\t\"start\": null,\n\t\t\t\t\t\"offset\": 0\n\t\t\t\t}\n\t\t\t],\n\t\t\t// when a two digit year is given, it will never be parsed as a four digit\n\t\t\t// year greater than this year (in the appropriate era for the culture)\n\t\t\t// Set it as a full year (e.g. 2029) or use an offset format starting from\n\t\t\t// the current year: \"+19\" would correspond to 2029 if the current year 2010.\n\t\t\ttwoDigitYearMax: 2029,\n\t\t\t// set of predefined date and time patterns used by the culture\n\t\t\t// these represent the format someone in this culture would expect\n\t\t\t// to see given the portions of the date that are shown.\n\t\t\tpatterns: {\n\t\t\t\t// short date pattern\n\t\t\t\td: \"M/d/yyyy\",\n\t\t\t\t// long date pattern\n\t\t\t\tD: \"dddd, MMMM dd, yyyy\",\n\t\t\t\t// short time pattern\n\t\t\t\tt: \"h:mm tt\",\n\t\t\t\t// long time pattern\n\t\t\t\tT: \"h:mm:ss tt\",\n\t\t\t\t// long date, short time pattern\n\t\t\t\tf: \"dddd, MMMM dd, yyyy h:mm tt\",\n\t\t\t\t// long date, long time pattern\n\t\t\t\tF: \"dddd, MMMM dd, yyyy h:mm:ss tt\",\n\t\t\t\t// month/day pattern\n\t\t\t\tM: \"MMMM dd\",\n\t\t\t\t// month/year pattern\n\t\t\t\tY: \"yyyy MMMM\",\n\t\t\t\t// S is a sortable format that does not vary by culture\n\t\t\t\tS: \"yyyy\\u0027-\\u0027MM\\u0027-\\u0027dd\\u0027T\\u0027HH\\u0027:\\u0027mm\\u0027:\\u0027ss\"\n\t\t\t}\n\t\t\t// optional fields for each calendar:\n\t\t\t/*\n\t\t\tmonthsGenitive:\n\t\t\t\tSame as months but used when the day preceeds the month.\n\t\t\t\tOmit if the culture has no genitive distinction in month names.\n\t\t\t\tFor an explaination of genitive months, see http://blogs.msdn.com/michkap/archive/2004/12/25/332259.aspx\n\t\t\tconvert:\n\t\t\t\tAllows for the support of non-gregorian based calendars. This convert object is used to\n\t\t\t\tto convert a date to and from a gregorian calendar date to handle parsing and formatting.\n\t\t\t\tThe two functions:\n\t\t\t\t\tfromGregorian( date )\n\t\t\t\t\t\tGiven the date as a parameter, return an array with parts [ year, month, day ]\n\t\t\t\t\t\tcorresponding to the non-gregorian based year, month, and day for the calendar.\n\t\t\t\t\ttoGregorian( year, month, day )\n\t\t\t\t\t\tGiven the non-gregorian year, month, and day, return a new Date() object\n\t\t\t\t\t\tset to the corresponding date in the gregorian calendar.\n\t\t\t*/\n\t\t}\n\t},\n\t// For localized strings\n\tmessages: {}\n};\n\nGlobalize.cultures[ \"default\" ].calendar = Globalize.cultures[ \"default\" ].calendars.standard;\n\nGlobalize.cultures.en = Globalize.cultures[ \"default\" ];\n\nGlobalize.cultureSelector = \"en\";\n\n//\n// private variables\n//\n\nregexHex = /^0x[a-f0-9]+$/i;\nregexInfinity = /^[+\\-]?infinity$/i;\nregexParseFloat = /^[+\\-]?\\d*\\.?\\d*(e[+\\-]?\\d+)?$/;\nregexTrim = /^\\s+|\\s+$/g;\n\n//\n// private JavaScript utility functions\n//\n\narrayIndexOf = function( array, item ) {\n\tif ( array.indexOf ) {\n\t\treturn array.indexOf( item );\n\t}\n\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\tif ( array[i] === item ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\nendsWith = function( value, pattern ) {\n\treturn value.substr( value.length - pattern.length ) === pattern;\n};\n\nextend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( isObject(copy) || (copyIsArray = isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && isObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\nisArray = Array.isArray || function( obj ) {\n\treturn Object.prototype.toString.call( obj ) === \"[object Array]\";\n};\n\nisFunction = function( obj ) {\n\treturn Object.prototype.toString.call( obj ) === \"[object Function]\";\n};\n\nisObject = function( obj ) {\n\treturn Object.prototype.toString.call( obj ) === \"[object Object]\";\n};\n\nstartsWith = function( value, pattern ) {\n\treturn value.indexOf( pattern ) === 0;\n};\n\ntrim = function( value ) {\n\treturn ( value + \"\" ).replace( regexTrim, \"\" );\n};\n\ntruncate = function( value ) {\n\tif ( isNaN( value ) ) {\n\t\treturn NaN;\n\t}\n\treturn Math[ value < 0 ? \"ceil\" : \"floor\" ]( value );\n};\n\nzeroPad = function( str, count, left ) {\n\tvar l;\n\tfor ( l = str.length; l < count; l += 1 ) {\n\t\tstr = ( left ? (\"0\" + str) : (str + \"0\") );\n\t}\n\treturn str;\n};\n\n//\n// private Globalization utility functions\n//\n\nappendPreOrPostMatch = function( preMatch, strings ) {\n\t// appends pre- and post- token match strings while removing escaped characters.\n\t// Returns a single quote count which is used to determine if the token occurs\n\t// in a string literal.\n\tvar quoteCount = 0,\n\t\tescaped = false;\n\tfor ( var i = 0, il = preMatch.length; i < il; i++ ) {\n\t\tvar c = preMatch.charAt( i );\n\t\tswitch ( c ) {\n\t\t\tcase \"\\'\":\n\t\t\t\tif ( escaped ) {\n\t\t\t\t\tstrings.push( \"\\'\" );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tquoteCount++;\n\t\t\t\t}\n\t\t\t\tescaped = false;\n\t\t\t\tbreak;\n\t\t\tcase \"\\\\\":\n\t\t\t\tif ( escaped ) {\n\t\t\t\t\tstrings.push( \"\\\\\" );\n\t\t\t\t}\n\t\t\t\tescaped = !escaped;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tstrings.push( c );\n\t\t\t\tescaped = false;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\treturn quoteCount;\n};\n\nexpandFormat = function( cal, format ) {\n\t// expands unspecified or single character date formats into the full pattern.\n\tformat = format || \"F\";\n\tvar pattern,\n\t\tpatterns = cal.patterns,\n\t\tlen = format.length;\n\tif ( len === 1 ) {\n\t\tpattern = patterns[ format ];\n\t\tif ( !pattern ) {\n\t\t\tthrow \"Invalid date format string \\'\" + format + \"\\'.\";\n\t\t}\n\t\tformat = pattern;\n\t}\n\telse if ( len === 2 && format.charAt(0) === \"%\" ) {\n\t\t// %X escape format -- intended as a custom format string that is only one character, not a built-in format.\n\t\tformat = format.charAt( 1 );\n\t}\n\treturn format;\n};\n\nformatDate = function( value, format, culture ) {\n\tvar cal = culture.calendar,\n\t\tconvert = cal.convert,\n\t\tret;\n\n\tif ( !format || !format.length || format === \"i\" ) {\n\t\tif ( culture && culture.name.length ) {\n\t\t\tif ( convert ) {\n\t\t\t\t// non-gregorian calendar, so we cannot use built-in toLocaleString()\n\t\t\t\tret = formatDate( value, cal.patterns.F, culture );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvar eraDate = new Date( value.getTime() ),\n\t\t\t\t\tera = getEra( value, cal.eras );\n\t\t\t\teraDate.setFullYear( getEraYear(value, cal, era) );\n\t\t\t\tret = eraDate.toLocaleString();\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tret = value.toString();\n\t\t}\n\t\treturn ret;\n\t}\n\n\tvar eras = cal.eras,\n\t\tsortable = format === \"s\";\n\tformat = expandFormat( cal, format );\n\n\t// Start with an empty string\n\tret = [];\n\tvar hour,\n\t\tzeros = [ \"0\", \"00\", \"000\" ],\n\t\tfoundDay,\n\t\tcheckedDay,\n\t\tdayPartRegExp = /([^d]|^)(d|dd)([^d]|$)/g,\n\t\tquoteCount = 0,\n\t\ttokenRegExp = getTokenRegExp(),\n\t\tconverted;\n\n\tfunction padZeros( num, c ) {\n\t\tvar r, s = num + \"\";\n\t\tif ( c > 1 && s.length < c ) {\n\t\t\tr = ( zeros[c - 2] + s);\n\t\t\treturn r.substr( r.length - c, c );\n\t\t}\n\t\telse {\n\t\t\tr = s;\n\t\t}\n\t\treturn r;\n\t}\n\n\tfunction hasDay() {\n\t\tif ( foundDay || checkedDay ) {\n\t\t\treturn foundDay;\n\t\t}\n\t\tfoundDay = dayPartRegExp.test( format );\n\t\tcheckedDay = true;\n\t\treturn foundDay;\n\t}\n\n\tfunction getPart( date, part ) {\n\t\tif ( converted ) {\n\t\t\treturn converted[ part ];\n\t\t}\n\t\tswitch ( part ) {\n\t\t\tcase 0:\n\t\t\t\treturn date.getFullYear();\n\t\t\tcase 1:\n\t\t\t\treturn date.getMonth();\n\t\t\tcase 2:\n\t\t\t\treturn date.getDate();\n\t\t\tdefault:\n\t\t\t\tthrow \"Invalid part value \" + part;\n\t\t}\n\t}\n\n\tif ( !sortable && convert ) {\n\t\tconverted = convert.fromGregorian( value );\n\t}\n\n\tfor ( ; ; ) {\n\t\t// Save the current index\n\t\tvar index = tokenRegExp.lastIndex,\n\t\t\t// Look for the next pattern\n\t\t\tar = tokenRegExp.exec( format );\n\n\t\t// Append the text before the pattern (or the end of the string if not found)\n\t\tvar preMatch = format.slice( index, ar ? ar.index : format.length );\n\t\tquoteCount += appendPreOrPostMatch( preMatch, ret );\n\n\t\tif ( !ar ) {\n\t\t\tbreak;\n\t\t}\n\n\t\t// do not replace any matches that occur inside a string literal.\n\t\tif ( quoteCount % 2 ) {\n\t\t\tret.push( ar[0] );\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar current = ar[ 0 ],\n\t\t\tclength = current.length;\n\n\t\tswitch ( current ) {\n\t\t\tcase \"ddd\":\n\t\t\t\t//Day of the week, as a three-letter abbreviation\n\t\t\tcase \"dddd\":\n\t\t\t\t// Day of the week, using the full name\n\t\t\t\tvar names = ( clength === 3 ) ? cal.days.namesAbbr : cal.days.names;\n\t\t\t\tret.push( names[value.getDay()] );\n\t\t\t\tbreak;\n\t\t\tcase \"d\":\n\t\t\t\t// Day of month, without leading zero for single-digit days\n\t\t\tcase \"dd\":\n\t\t\t\t// Day of month, with leading zero for single-digit days\n\t\t\t\tfoundDay = true;\n\t\t\t\tret.push(\n\t\t\t\t\tpadZeros( getPart(value, 2), clength )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"MMM\":\n\t\t\t\t// Month, as a three-letter abbreviation\n\t\t\tcase \"MMMM\":\n\t\t\t\t// Month, using the full name\n\t\t\t\tvar part = getPart( value, 1 );\n\t\t\t\tret.push(\n\t\t\t\t\t( cal.monthsGenitive && hasDay() ) ?\n\t\t\t\t\t( cal.monthsGenitive[ clength === 3 ? \"namesAbbr\" : \"names\" ][ part ] ) :\n\t\t\t\t\t( cal.months[ clength === 3 ? \"namesAbbr\" : \"names\" ][ part ] )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"M\":\n\t\t\t\t// Month, as digits, with no leading zero for single-digit months\n\t\t\tcase \"MM\":\n\t\t\t\t// Month, as digits, with leading zero for single-digit months\n\t\t\t\tret.push(\n\t\t\t\t\tpadZeros( getPart(value, 1) + 1, clength )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"y\":\n\t\t\t\t// Year, as two digits, but with no leading zero for years less than 10\n\t\t\tcase \"yy\":\n\t\t\t\t// Year, as two digits, with leading zero for years less than 10\n\t\t\tcase \"yyyy\":\n\t\t\t\t// Year represented by four full digits\n\t\t\t\tpart = converted ? converted[ 0 ] : getEraYear( value, cal, getEra(value, eras), sortable );\n\t\t\t\tif ( clength < 4 ) {\n\t\t\t\t\tpart = part % 100;\n\t\t\t\t}\n\t\t\t\tret.push(\n\t\t\t\t\tpadZeros( part, clength )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"h\":\n\t\t\t\t// Hours with no leading zero for single-digit hours, using 12-hour clock\n\t\t\tcase \"hh\":\n\t\t\t\t// Hours with leading zero for single-digit hours, using 12-hour clock\n\t\t\t\thour = value.getHours() % 12;\n\t\t\t\tif ( hour === 0 ) hour = 12;\n\t\t\t\tret.push(\n\t\t\t\t\tpadZeros( hour, clength )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"H\":\n\t\t\t\t// Hours with no leading zero for single-digit hours, using 24-hour clock\n\t\t\tcase \"HH\":\n\t\t\t\t// Hours with leading zero for single-digit hours, using 24-hour clock\n\t\t\t\tret.push(\n\t\t\t\t\tpadZeros( value.getHours(), clength )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"m\":\n\t\t\t\t// Minutes with no leading zero for single-digit minutes\n\t\t\tcase \"mm\":\n\t\t\t\t// Minutes with leading zero for single-digit minutes\n\t\t\t\tret.push(\n\t\t\t\t\tpadZeros( value.getMinutes(), clength )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"s\":\n\t\t\t\t// Seconds with no leading zero for single-digit seconds\n\t\t\tcase \"ss\":\n\t\t\t\t// Seconds with leading zero for single-digit seconds\n\t\t\t\tret.push(\n\t\t\t\t\tpadZeros( value.getSeconds(), clength )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"t\":\n\t\t\t\t// One character am/pm indicator (\"a\" or \"p\")\n\t\t\tcase \"tt\":\n\t\t\t\t// Multicharacter am/pm indicator\n\t\t\t\tpart = value.getHours() < 12 ? ( cal.AM ? cal.AM[0] : \" \" ) : ( cal.PM ? cal.PM[0] : \" \" );\n\t\t\t\tret.push( clength === 1 ? part.charAt(0) : part );\n\t\t\t\tbreak;\n\t\t\tcase \"f\":\n\t\t\t\t// Deciseconds\n\t\t\tcase \"ff\":\n\t\t\t\t// Centiseconds\n\t\t\tcase \"fff\":\n\t\t\t\t// Milliseconds\n\t\t\t\tret.push(\n\t\t\t\t\tpadZeros( value.getMilliseconds(), 3 ).substr( 0, clength )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"z\":\n\t\t\t\t// Time zone offset, no leading zero\n\t\t\tcase \"zz\":\n\t\t\t\t// Time zone offset with leading zero\n\t\t\t\thour = value.getTimezoneOffset() / 60;\n\t\t\t\tret.push(\n\t\t\t\t\t( hour <= 0 ? \"+\" : \"-\" ) + padZeros( Math.floor(Math.abs(hour)), clength )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"zzz\":\n\t\t\t\t// Time zone offset with leading zero\n\t\t\t\thour = value.getTimezoneOffset() / 60;\n\t\t\t\tret.push(\n\t\t\t\t\t( hour <= 0 ? \"+\" : \"-\" ) + padZeros( Math.floor(Math.abs(hour)), 2 ) +\n\t\t\t\t\t// Hard coded \":\" separator, rather than using cal.TimeSeparator\n\t\t\t\t\t// Repeated here for consistency, plus \":\" was already assumed in date parsing.\n\t\t\t\t\t\":\" + padZeros( Math.abs(value.getTimezoneOffset() % 60), 2 )\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"g\":\n\t\t\tcase \"gg\":\n\t\t\t\tif ( cal.eras ) {\n\t\t\t\t\tret.push(\n\t\t\t\t\t\tcal.eras[ getEra(value, eras) ].name\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\tcase \"/\":\n\t\t\tret.push( cal[\"/\"] );\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow \"Invalid date format pattern \\'\" + current + \"\\'.\";\n\t\t}\n\t}\n\treturn ret.join( \"\" );\n};\n\n// formatNumber\n(function() {\n\tvar expandNumber;\n\n\texpandNumber = function( number, precision, formatInfo ) {\n\t\tvar groupSizes = formatInfo.groupSizes,\n\t\t\tcurSize = groupSizes[ 0 ],\n\t\t\tcurGroupIndex = 1,\n\t\t\tfactor = Math.pow( 10, precision ),\n\t\t\trounded = Math.round( number * factor ) / factor;\n\n\t\tif ( !isFinite(rounded) ) {\n\t\t\trounded = number;\n\t\t}\n\t\tnumber = rounded;\n\n\t\tvar numberString = number+\"\",\n\t\t\tright = \"\",\n\t\t\tsplit = numberString.split( /e/i ),\n\t\t\texponent = split.length > 1 ? parseInt( split[1], 10 ) : 0;\n\t\tnumberString = split[ 0 ];\n\t\tsplit = numberString.split( \".\" );\n\t\tnumberString = split[ 0 ];\n\t\tright = split.length > 1 ? split[ 1 ] : \"\";\n\n\t\tvar l;\n\t\tif ( exponent > 0 ) {\n\t\t\tright = zeroPad( right, exponent, false );\n\t\t\tnumberString += right.slice( 0, exponent );\n\t\t\tright = right.substr( exponent );\n\t\t}\n\t\telse if ( exponent < 0 ) {\n\t\t\texponent = -exponent;\n\t\t\tnumberString = zeroPad( numberString, exponent + 1, true );\n\t\t\tright = numberString.slice( -exponent, numberString.length ) + right;\n\t\t\tnumberString = numberString.slice( 0, -exponent );\n\t\t}\n\n\t\tif ( precision > 0 ) {\n\t\t\tright = formatInfo[ \".\" ] +\n\t\t\t\t( (right.length > precision) ? right.slice(0, precision) : zeroPad(right, precision) );\n\t\t}\n\t\telse {\n\t\t\tright = \"\";\n\t\t}\n\n\t\tvar stringIndex = numberString.length - 1,\n\t\t\tsep = formatInfo[ \",\" ],\n\t\t\tret = \"\";\n\n\t\twhile ( stringIndex >= 0 ) {\n\t\t\tif ( curSize === 0 || curSize > stringIndex ) {\n\t\t\t\treturn numberString.slice( 0, stringIndex + 1 ) + ( ret.length ? (sep + ret + right) : right );\n\t\t\t}\n\t\t\tret = numberString.slice( stringIndex - curSize + 1, stringIndex + 1 ) + ( ret.length ? (sep + ret) : \"\" );\n\n\t\t\tstringIndex -= curSize;\n\n\t\t\tif ( curGroupIndex < groupSizes.length ) {\n\t\t\t\tcurSize = groupSizes[ curGroupIndex ];\n\t\t\t\tcurGroupIndex++;\n\t\t\t}\n\t\t}\n\n\t\treturn numberString.slice( 0, stringIndex + 1 ) + sep + ret + right;\n\t};\n\n\tformatNumber = function( value, format, culture ) {\n\t\tif ( !isFinite(value) ) {\n\t\t\tif ( value === Infinity ) {\n\t\t\t\treturn culture.numberFormat.positiveInfinity;\n\t\t\t}\n\t\t\tif ( value === -Infinity ) {\n\t\t\t\treturn culture.numberFormat.negativeInfinity;\n\t\t\t}\n\t\t\treturn culture.numberFormat[ \"NaN\" ];\n\t\t}\n\t\tif ( !format || format === \"i\" ) {\n\t\t\treturn culture.name.length ? value.toLocaleString() : value.toString();\n\t\t}\n\t\tformat = format || \"D\";\n\n\t\tvar nf = culture.numberFormat,\n\t\t\tnumber = Math.abs( value ),\n\t\t\tprecision = -1,\n\t\t\tpattern;\n\t\tif ( format.length > 1 ) precision = parseInt( format.slice(1), 10 );\n\n\t\tvar current = format.charAt( 0 ).toUpperCase(),\n\t\t\tformatInfo;\n\n\t\tswitch ( current ) {\n\t\t\tcase \"D\":\n\t\t\t\tpattern = \"n\";\n\t\t\t\tnumber = truncate( number );\n\t\t\t\tif ( precision !== -1 ) {\n\t\t\t\t\tnumber = zeroPad( \"\" + number, precision, true );\n\t\t\t\t}\n\t\t\t\tif ( value < 0 ) number = \"-\" + number;\n\t\t\t\tbreak;\n\t\t\tcase \"N\":\n\t\t\t\tformatInfo = nf;\n\t\t\t\t/* falls through */\n\t\t\tcase \"C\":\n\t\t\t\tformatInfo = formatInfo || nf.currency;\n\t\t\t\t/* falls through */\n\t\t\tcase \"P\":\n\t\t\t\tformatInfo = formatInfo || nf.percent;\n\t\t\t\tpattern = value < 0 ? formatInfo.pattern[ 0 ] : ( formatInfo.pattern[1] || \"n\" );\n\t\t\t\tif ( precision === -1 ) precision = formatInfo.decimals;\n\t\t\t\tnumber = expandNumber( number * (current === \"P\" ? 100 : 1), precision, formatInfo );\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow \"Bad number format specifier: \" + current;\n\t\t}\n\n\t\tvar patternParts = /n|\\$|-|%/g,\n\t\t\tret = \"\";\n\t\tfor ( ; ; ) {\n\t\t\tvar index = patternParts.lastIndex,\n\t\t\t\tar = patternParts.exec( pattern );\n\n\t\t\tret += pattern.slice( index, ar ? ar.index : pattern.length );\n\n\t\t\tif ( !ar ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tswitch ( ar[0] ) {\n\t\t\t\tcase \"n\":\n\t\t\t\t\tret += number;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"$\":\n\t\t\t\t\tret += nf.currency.symbol;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"-\":\n\t\t\t\t\t// don't make 0 negative\n\t\t\t\t\tif ( /[1-9]/.test(number) ) {\n\t\t\t\t\t\tret += nf[ \"-\" ];\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%\":\n\t\t\t\t\tret += nf.percent.symbol;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t};\n\n}());\n\ngetTokenRegExp = function() {\n\t// regular expression for matching date and time tokens in format strings.\n\treturn (/\\/|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z|gg|g/g);\n};\n\ngetEra = function( date, eras ) {\n\tif ( !eras ) return 0;\n\tvar start, ticks = date.getTime();\n\tfor ( var i = 0, l = eras.length; i < l; i++ ) {\n\t\tstart = eras[ i ].start;\n\t\tif ( start === null || ticks >= start ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn 0;\n};\n\ngetEraYear = function( date, cal, era, sortable ) {\n\tvar year = date.getFullYear();\n\tif ( !sortable && cal.eras ) {\n\t\t// convert normal gregorian year to era-shifted gregorian\n\t\t// year by subtracting the era offset\n\t\tyear -= cal.eras[ era ].offset;\n\t}\n\treturn year;\n};\n\n// parseExact\n(function() {\n\tvar expandYear,\n\t\tgetDayIndex,\n\t\tgetMonthIndex,\n\t\tgetParseRegExp,\n\t\toutOfRange,\n\t\ttoUpper,\n\t\ttoUpperArray;\n\n\texpandYear = function( cal, year ) {\n\t\t// expands 2-digit year into 4 digits.\n\t\tif ( year < 100 ) {\n\t\t\tvar now = new Date(),\n\t\t\t\tera = getEra( now ),\n\t\t\t\tcurr = getEraYear( now, cal, era ),\n\t\t\t\ttwoDigitYearMax = cal.twoDigitYearMax;\n\t\t\ttwoDigitYearMax = typeof twoDigitYearMax === \"string\" ? new Date().getFullYear() % 100 + parseInt( twoDigitYearMax, 10 ) : twoDigitYearMax;\n\t\t\tyear += curr - ( curr % 100 );\n\t\t\tif ( year > twoDigitYearMax ) {\n\t\t\t\tyear -= 100;\n\t\t\t}\n\t\t}\n\t\treturn year;\n\t};\n\n\tgetDayIndex = function\t( cal, value, abbr ) {\n\t\tvar ret,\n\t\t\tdays = cal.days,\n\t\t\tupperDays = cal._upperDays;\n\t\tif ( !upperDays ) {\n\t\t\tcal._upperDays = upperDays = [\n\t\t\t\ttoUpperArray( days.names ),\n\t\t\t\ttoUpperArray( days.namesAbbr ),\n\t\t\t\ttoUpperArray( days.namesShort )\n\t\t\t];\n\t\t}\n\t\tvalue = toUpper( value );\n\t\tif ( abbr ) {\n\t\t\tret = arrayIndexOf( upperDays[1], value );\n\t\t\tif ( ret === -1 ) {\n\t\t\t\tret = arrayIndexOf( upperDays[2], value );\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tret = arrayIndexOf( upperDays[0], value );\n\t\t}\n\t\treturn ret;\n\t};\n\n\tgetMonthIndex = function( cal, value, abbr ) {\n\t\tvar months = cal.months,\n\t\t\tmonthsGen = cal.monthsGenitive || cal.months,\n\t\t\tupperMonths = cal._upperMonths,\n\t\t\tupperMonthsGen = cal._upperMonthsGen;\n\t\tif ( !upperMonths ) {\n\t\t\tcal._upperMonths = upperMonths = [\n\t\t\t\ttoUpperArray( months.names ),\n\t\t\t\ttoUpperArray( months.namesAbbr )\n\t\t\t];\n\t\t\tcal._upperMonthsGen = upperMonthsGen = [\n\t\t\t\ttoUpperArray( monthsGen.names ),\n\t\t\t\ttoUpperArray( monthsGen.namesAbbr )\n\t\t\t];\n\t\t}\n\t\tvalue = toUpper( value );\n\t\tvar i = arrayIndexOf( abbr ? upperMonths[1] : upperMonths[0], value );\n\t\tif ( i < 0 ) {\n\t\t\ti = arrayIndexOf( abbr ? upperMonthsGen[1] : upperMonthsGen[0], value );\n\t\t}\n\t\treturn i;\n\t};\n\n\tgetParseRegExp = function( cal, format ) {\n\t\t// converts a format string into a regular expression with groups that\n\t\t// can be used to extract date fields from a date string.\n\t\t// check for a cached parse regex.\n\t\tvar re = cal._parseRegExp;\n\t\tif ( !re ) {\n\t\t\tcal._parseRegExp = re = {};\n\t\t}\n\t\telse {\n\t\t\tvar reFormat = re[ format ];\n\t\t\tif ( reFormat ) {\n\t\t\t\treturn reFormat;\n\t\t\t}\n\t\t}\n\n\t\t// expand single digit formats, then escape regular expression characters.\n\t\tvar expFormat = expandFormat( cal, format ).replace( /([\\^\\$\\.\\*\\+\\?\\|\\[\\]\\(\\)\\{\\}])/g, \"\\\\\\\\$1\" ),\n\t\t\tregexp = [ \"^\" ],\n\t\t\tgroups = [],\n\t\t\tindex = 0,\n\t\t\tquoteCount = 0,\n\t\t\ttokenRegExp = getTokenRegExp(),\n\t\t\tmatch;\n\n\t\t// iterate through each date token found.\n\t\twhile ( (match = tokenRegExp.exec(expFormat)) !== null ) {\n\t\t\tvar preMatch = expFormat.slice( index, match.index );\n\t\t\tindex = tokenRegExp.lastIndex;\n\n\t\t\t// don't replace any matches that occur inside a string literal.\n\t\t\tquoteCount += appendPreOrPostMatch( preMatch, regexp );\n\t\t\tif ( quoteCount % 2 ) {\n\t\t\t\tregexp.push( match[0] );\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// add a regex group for the token.\n\t\t\tvar m = match[ 0 ],\n\t\t\t\tlen = m.length,\n\t\t\t\tadd;\n\t\t\tswitch ( m ) {\n\t\t\t\tcase \"dddd\": case \"ddd\":\n\t\t\t\tcase \"MMMM\": case \"MMM\":\n\t\t\t\tcase \"gg\": case \"g\":\n\t\t\t\t\tadd = \"(\\\\D+)\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"tt\": case \"t\":\n\t\t\t\t\tadd = \"(\\\\D*)\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"yyyy\":\n\t\t\t\tcase \"fff\":\n\t\t\t\tcase \"ff\":\n\t\t\t\tcase \"f\":\n\t\t\t\t\tadd = \"(\\\\d{\" + len + \"})\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"dd\": case \"d\":\n\t\t\t\tcase \"MM\": case \"M\":\n\t\t\t\tcase \"yy\": case \"y\":\n\t\t\t\tcase \"HH\": case \"H\":\n\t\t\t\tcase \"hh\": case \"h\":\n\t\t\t\tcase \"mm\": case \"m\":\n\t\t\t\tcase \"ss\": case \"s\":\n\t\t\t\t\tadd = \"(\\\\d\\\\d?)\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"zzz\":\n\t\t\t\t\tadd = \"([+-]?\\\\d\\\\d?:\\\\d{2})\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"zz\": case \"z\":\n\t\t\t\t\tadd = \"([+-]?\\\\d\\\\d?)\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"/\":\n\t\t\t\t\tadd = \"(\\\\/)\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow \"Invalid date format pattern \\'\" + m + \"\\'.\";\n\t\t\t}\n\t\t\tif ( add ) {\n\t\t\t\tregexp.push( add );\n\t\t\t}\n\t\t\tgroups.push( match[0] );\n\t\t}\n\t\tappendPreOrPostMatch( expFormat.slice(index), regexp );\n\t\tregexp.push( \"$\" );\n\n\t\t// allow whitespace to differ when matching formats.\n\t\tvar regexpStr = regexp.join( \"\" ).replace( /\\s+/g, \"\\\\s+\" ),\n\t\t\tparseRegExp = { \"regExp\": regexpStr, \"groups\": groups };\n\n\t\t// cache the regex for this format.\n\t\treturn re[ format ] = parseRegExp;\n\t};\n\n\toutOfRange = function( value, low, high ) {\n\t\treturn value < low || value > high;\n\t};\n\n\ttoUpper = function( value ) {\n\t\t// \"he-IL\" has non-breaking space in weekday names.\n\t\treturn value.split( \"\\u00A0\" ).join( \" \" ).toUpperCase();\n\t};\n\n\ttoUpperArray = function( arr ) {\n\t\tvar results = [];\n\t\tfor ( var i = 0, l = arr.length; i < l; i++ ) {\n\t\t\tresults[ i ] = toUpper( arr[i] );\n\t\t}\n\t\treturn results;\n\t};\n\n\tparseExact = function( value, format, culture ) {\n\t\t// try to parse the date string by matching against the format string\n\t\t// while using the specified culture for date field names.\n\t\tvalue = trim( value );\n\t\tvar cal = culture.calendar,\n\t\t\t// convert date formats into regular expressions with groupings.\n\t\t\t// use the regexp to determine the input format and extract the date fields.\n\t\t\tparseInfo = getParseRegExp( cal, format ),\n\t\t\tmatch = new RegExp( parseInfo.regExp ).exec( value );\n\t\tif ( match === null ) {\n\t\t\treturn null;\n\t\t}\n\t\t// found a date format that matches the input.\n\t\tvar groups = parseInfo.groups,\n\t\t\tera = null, year = null, month = null, date = null, weekDay = null,\n\t\t\thour = 0, hourOffset, min = 0, sec = 0, msec = 0, tzMinOffset = null,\n\t\t\tpmHour = false;\n\t\t// iterate the format groups to extract and set the date fields.\n\t\tfor ( var j = 0, jl = groups.length; j < jl; j++ ) {\n\t\t\tvar matchGroup = match[ j + 1 ];\n\t\t\tif ( matchGroup ) {\n\t\t\t\tvar current = groups[ j ],\n\t\t\t\t\tclength = current.length,\n\t\t\t\t\tmatchInt = parseInt( matchGroup, 10 );\n\t\t\t\tswitch ( current ) {\n\t\t\t\t\tcase \"dd\": case \"d\":\n\t\t\t\t\t\t// Day of month.\n\t\t\t\t\t\tdate = matchInt;\n\t\t\t\t\t\t// check that date is generally in valid range, also checking overflow below.\n\t\t\t\t\t\tif ( outOfRange(date, 1, 31) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"MMM\": case \"MMMM\":\n\t\t\t\t\t\tmonth = getMonthIndex( cal, matchGroup, clength === 3 );\n\t\t\t\t\t\tif ( outOfRange(month, 0, 11) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"M\": case \"MM\":\n\t\t\t\t\t\t// Month.\n\t\t\t\t\t\tmonth = matchInt - 1;\n\t\t\t\t\t\tif ( outOfRange(month, 0, 11) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"y\": case \"yy\":\n\t\t\t\t\tcase \"yyyy\":\n\t\t\t\t\t\tyear = clength < 4 ? expandYear( cal, matchInt ) : matchInt;\n\t\t\t\t\t\tif ( outOfRange(year, 0, 9999) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"h\": case \"hh\":\n\t\t\t\t\t\t// Hours (12-hour clock).\n\t\t\t\t\t\thour = matchInt;\n\t\t\t\t\t\tif ( hour === 12 ) hour = 0;\n\t\t\t\t\t\tif ( outOfRange(hour, 0, 11) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"H\": case \"HH\":\n\t\t\t\t\t\t// Hours (24-hour clock).\n\t\t\t\t\t\thour = matchInt;\n\t\t\t\t\t\tif ( outOfRange(hour, 0, 23) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"m\": case \"mm\":\n\t\t\t\t\t\t// Minutes.\n\t\t\t\t\t\tmin = matchInt;\n\t\t\t\t\t\tif ( outOfRange(min, 0, 59) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"s\": case \"ss\":\n\t\t\t\t\t\t// Seconds.\n\t\t\t\t\t\tsec = matchInt;\n\t\t\t\t\t\tif ( outOfRange(sec, 0, 59) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"tt\": case \"t\":\n\t\t\t\t\t\t// AM/PM designator.\n\t\t\t\t\t\t// see if it is standard, upper, or lower case PM. If not, ensure it is at least one of\n\t\t\t\t\t\t// the AM tokens. If not, fail the parse for this format.\n\t\t\t\t\t\tpmHour = cal.PM && ( matchGroup === cal.PM[0] || matchGroup === cal.PM[1] || matchGroup === cal.PM[2] );\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!pmHour && (\n\t\t\t\t\t\t\t\t!cal.AM || ( matchGroup !== cal.AM[0] && matchGroup !== cal.AM[1] && matchGroup !== cal.AM[2] )\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"f\":\n\t\t\t\t\t\t// Deciseconds.\n\t\t\t\t\tcase \"ff\":\n\t\t\t\t\t\t// Centiseconds.\n\t\t\t\t\tcase \"fff\":\n\t\t\t\t\t\t// Milliseconds.\n\t\t\t\t\t\tmsec = matchInt * Math.pow( 10, 3 - clength );\n\t\t\t\t\t\tif ( outOfRange(msec, 0, 999) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"ddd\":\n\t\t\t\t\t\t// Day of week.\n\t\t\t\t\tcase \"dddd\":\n\t\t\t\t\t\t// Day of week.\n\t\t\t\t\t\tweekDay = getDayIndex( cal, matchGroup, clength === 3 );\n\t\t\t\t\t\tif ( outOfRange(weekDay, 0, 6) ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"zzz\":\n\t\t\t\t\t\t// Time zone offset in +/- hours:min.\n\t\t\t\t\t\tvar offsets = matchGroup.split( /:/ );\n\t\t\t\t\t\tif ( offsets.length !== 2 ) return null;\n\t\t\t\t\t\thourOffset = parseInt( offsets[0], 10 );\n\t\t\t\t\t\tif ( outOfRange(hourOffset, -12, 13) ) return null;\n\t\t\t\t\t\tvar minOffset = parseInt( offsets[1], 10 );\n\t\t\t\t\t\tif ( outOfRange(minOffset, 0, 59) ) return null;\n\t\t\t\t\t\ttzMinOffset = ( hourOffset * 60 ) + ( startsWith(matchGroup, \"-\") ? -minOffset : minOffset );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"z\": case \"zz\":\n\t\t\t\t\t\t// Time zone offset in +/- hours.\n\t\t\t\t\t\thourOffset = matchInt;\n\t\t\t\t\t\tif ( outOfRange(hourOffset, -12, 13) ) return null;\n\t\t\t\t\t\ttzMinOffset = hourOffset * 60;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"g\": case \"gg\":\n\t\t\t\t\t\tvar eraName = matchGroup;\n\t\t\t\t\t\tif ( !eraName || !cal.eras ) return null;\n\t\t\t\t\t\teraName = trim( eraName.toLowerCase() );\n\t\t\t\t\t\tfor ( var i = 0, l = cal.eras.length; i < l; i++ ) {\n\t\t\t\t\t\t\tif ( eraName === cal.eras[i].name.toLowerCase() ) {\n\t\t\t\t\t\t\t\tera = i;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// could not find an era with that name\n\t\t\t\t\t\tif ( era === null ) return null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tvar result = new Date(), defaultYear, convert = cal.convert;\n\t\tdefaultYear = convert ? convert.fromGregorian( result )[ 0 ] : result.getFullYear();\n\t\tif ( year === null ) {\n\t\t\tyear = defaultYear;\n\t\t}\n\t\telse if ( cal.eras ) {\n\t\t\t// year must be shifted to normal gregorian year\n\t\t\t// but not if year was not specified, its already normal gregorian\n\t\t\t// per the main if clause above.\n\t\t\tyear += cal.eras[( era || 0 )].offset;\n\t\t}\n\t\t// set default day and month to 1 and January, so if unspecified, these are the defaults\n\t\t// instead of the current day/month.\n\t\tif ( month === null ) {\n\t\t\tmonth = 0;\n\t\t}\n\t\tif ( date === null ) {\n\t\t\tdate = 1;\n\t\t}\n\t\t// now have year, month, and date, but in the culture's calendar.\n\t\t// convert to gregorian if necessary\n\t\tif ( convert ) {\n\t\t\tresult = convert.toGregorian( year, month, date );\n\t\t\t// conversion failed, must be an invalid match\n\t\t\tif ( result === null ) return null;\n\t\t}\n\t\telse {\n\t\t\t// have to set year, month and date together to avoid overflow based on current date.\n\t\t\tresult.setFullYear( year, month, date );\n\t\t\t// check to see if date overflowed for specified month (only checked 1-31 above).\n\t\t\tif ( result.getDate() !== date ) return null;\n\t\t\t// invalid day of week.\n\t\t\tif ( weekDay !== null && result.getDay() !== weekDay ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\t// if pm designator token was found make sure the hours fit the 24-hour clock.\n\t\tif ( pmHour && hour < 12 ) {\n\t\t\thour += 12;\n\t\t}\n\t\tresult.setHours( hour, min, sec, msec );\n\t\tif ( tzMinOffset !== null ) {\n\t\t\t// adjust timezone to utc before applying local offset.\n\t\t\tvar adjustedMin = result.getMinutes() - ( tzMinOffset + result.getTimezoneOffset() );\n\t\t\t// Safari limits hours and minutes to the range of -127 to 127. We need to use setHours\n\t\t\t// to ensure both these fields will not exceed this range.\tadjustedMin will range\n\t\t\t// somewhere between -1440 and 1500, so we only need to split this into hours.\n\t\t\tresult.setHours( result.getHours() + parseInt(adjustedMin / 60, 10), adjustedMin % 60 );\n\t\t}\n\t\treturn result;\n\t};\n}());\n\nparseNegativePattern = function( value, nf, negativePattern ) {\n\tvar neg = nf[ \"-\" ],\n\t\tpos = nf[ \"+\" ],\n\t\tret;\n\tswitch ( negativePattern ) {\n\t\tcase \"n -\":\n\t\t\tneg = \" \" + neg;\n\t\t\tpos = \" \" + pos;\n\t\t\t/* falls through */\n\t\tcase \"n-\":\n\t\t\tif ( endsWith(value, neg) ) {\n\t\t\t\tret = [ \"-\", value.substr(0, value.length - neg.length) ];\n\t\t\t}\n\t\t\telse if ( endsWith(value, pos) ) {\n\t\t\t\tret = [ \"+\", value.substr(0, value.length - pos.length) ];\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"- n\":\n\t\t\tneg += \" \";\n\t\t\tpos += \" \";\n\t\t\t/* falls through */\n\t\tcase \"-n\":\n\t\t\tif ( startsWith(value, neg) ) {\n\t\t\t\tret = [ \"-\", value.substr(neg.length) ];\n\t\t\t}\n\t\t\telse if ( startsWith(value, pos) ) {\n\t\t\t\tret = [ \"+\", value.substr(pos.length) ];\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"(n)\":\n\t\t\tif ( startsWith(value, \"(\") && endsWith(value, \")\") ) {\n\t\t\t\tret = [ \"-\", value.substr(1, value.length - 2) ];\n\t\t\t}\n\t\t\tbreak;\n\t}\n\treturn ret || [ \"\", value ];\n};\n\n//\n// public instance functions\n//\n\nGlobalize.prototype.findClosestCulture = function( cultureSelector ) {\n\treturn Globalize.findClosestCulture.call( this, cultureSelector );\n};\n\nGlobalize.prototype.format = function( value, format, cultureSelector ) {\n\treturn Globalize.format.call( this, value, format, cultureSelector );\n};\n\nGlobalize.prototype.localize = function( key, cultureSelector ) {\n\treturn Globalize.localize.call( this, key, cultureSelector );\n};\n\nGlobalize.prototype.parseInt = function( value, radix, cultureSelector ) {\n\treturn Globalize.parseInt.call( this, value, radix, cultureSelector );\n};\n\nGlobalize.prototype.parseFloat = function( value, radix, cultureSelector ) {\n\treturn Globalize.parseFloat.call( this, value, radix, cultureSelector );\n};\n\nGlobalize.prototype.culture = function( cultureSelector ) {\n\treturn Globalize.culture.call( this, cultureSelector );\n};\n\n//\n// public singleton functions\n//\n\nGlobalize.addCultureInfo = function( cultureName, baseCultureName, info ) {\n\n\tvar base = {},\n\t\tisNew = false;\n\n\tif ( typeof cultureName !== \"string\" ) {\n\t\t// cultureName argument is optional string. If not specified, assume info is first\n\t\t// and only argument. Specified info deep-extends current culture.\n\t\tinfo = cultureName;\n\t\tcultureName = this.culture().name;\n\t\tbase = this.cultures[ cultureName ];\n\t} else if ( typeof baseCultureName !== \"string\" ) {\n\t\t// baseCultureName argument is optional string. If not specified, assume info is second\n\t\t// argument. Specified info deep-extends specified culture.\n\t\t// If specified culture does not exist, create by deep-extending default\n\t\tinfo = baseCultureName;\n\t\tisNew = ( this.cultures[ cultureName ] == null );\n\t\tbase = this.cultures[ cultureName ] || this.cultures[ \"default\" ];\n\t} else {\n\t\t// cultureName and baseCultureName specified. Assume a new culture is being created\n\t\t// by deep-extending an specified base culture\n\t\tisNew = true;\n\t\tbase = this.cultures[ baseCultureName ];\n\t}\n\n\tthis.cultures[ cultureName ] = extend(true, {},\n\t\tbase,\n\t\tinfo\n\t);\n\t// Make the standard calendar the current culture if it's a new culture\n\tif ( isNew ) {\n\t\tthis.cultures[ cultureName ].calendar = this.cultures[ cultureName ].calendars.standard;\n\t}\n};\n\nGlobalize.findClosestCulture = function( name ) {\n\tvar match;\n\tif ( !name ) {\n\t\treturn this.findClosestCulture( this.cultureSelector ) || this.cultures[ \"default\" ];\n\t}\n\tif ( typeof name === \"string\" ) {\n\t\tname = name.split( \",\" );\n\t}\n\tif ( isArray(name) ) {\n\t\tvar lang,\n\t\t\tcultures = this.cultures,\n\t\t\tlist = name,\n\t\t\ti, l = list.length,\n\t\t\tprioritized = [];\n\t\tfor ( i = 0; i < l; i++ ) {\n\t\t\tname = trim( list[i] );\n\t\t\tvar pri, parts = name.split( \";\" );\n\t\t\tlang = trim( parts[0] );\n\t\t\tif ( parts.length === 1 ) {\n\t\t\t\tpri = 1;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tname = trim( parts[1] );\n\t\t\t\tif ( name.indexOf(\"q=\") === 0 ) {\n\t\t\t\t\tname = name.substr( 2 );\n\t\t\t\t\tpri = parseFloat( name );\n\t\t\t\t\tpri = isNaN( pri ) ? 0 : pri;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tpri = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\tprioritized.push({ lang: lang, pri: pri });\n\t\t}\n\t\tprioritized.sort(function( a, b ) {\n\t\t\tif ( a.pri < b.pri ) {\n\t\t\t\treturn 1;\n\t\t\t} else if ( a.pri > b.pri ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\treturn 0;\n\t\t});\n\t\t// exact match\n\t\tfor ( i = 0; i < l; i++ ) {\n\t\t\tlang = prioritized[ i ].lang;\n\t\t\tmatch = cultures[ lang ];\n\t\t\tif ( match ) {\n\t\t\t\treturn match;\n\t\t\t}\n\t\t}\n\n\t\t// neutral language match\n\t\tfor ( i = 0; i < l; i++ ) {\n\t\t\tlang = prioritized[ i ].lang;\n\t\t\tdo {\n\t\t\t\tvar index = lang.lastIndexOf( \"-\" );\n\t\t\t\tif ( index === -1 ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// strip off the last part. e.g. en-US => en\n\t\t\t\tlang = lang.substr( 0, index );\n\t\t\t\tmatch = cultures[ lang ];\n\t\t\t\tif ( match ) {\n\t\t\t\t\treturn match;\n\t\t\t\t}\n\t\t\t}\n\t\t\twhile ( 1 );\n\t\t}\n\n\t\t// last resort: match first culture using that language\n\t\tfor ( i = 0; i < l; i++ ) {\n\t\t\tlang = prioritized[ i ].lang;\n\t\t\tfor ( var cultureKey in cultures ) {\n\t\t\t\tvar culture = cultures[ cultureKey ];\n\t\t\t\tif ( culture.language == lang ) {\n\t\t\t\t\treturn culture;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\telse if ( typeof name === \"object\" ) {\n\t\treturn name;\n\t}\n\treturn match || null;\n};\n\nGlobalize.format = function( value, format, cultureSelector ) {\n\tvar culture = this.findClosestCulture( cultureSelector );\n\tif ( value instanceof Date ) {\n\t\tvalue = formatDate( value, format, culture );\n\t}\n\telse if ( typeof value === \"number\" ) {\n\t\tvalue = formatNumber( value, format, culture );\n\t}\n\treturn value;\n};\n\nGlobalize.localize = function( key, cultureSelector ) {\n\treturn this.findClosestCulture( cultureSelector ).messages[ key ] ||\n\t\tthis.cultures[ \"default\" ].messages[ key ];\n};\n\nGlobalize.parseDate = function( value, formats, culture ) {\n\tculture = this.findClosestCulture( culture );\n\n\tvar date, prop, patterns;\n\tif ( formats ) {\n\t\tif ( typeof formats === \"string\" ) {\n\t\t\tformats = [ formats ];\n\t\t}\n\t\tif ( formats.length ) {\n\t\t\tfor ( var i = 0, l = formats.length; i < l; i++ ) {\n\t\t\t\tvar format = formats[ i ];\n\t\t\t\tif ( format ) {\n\t\t\t\t\tdate = parseExact( value, format, culture );\n\t\t\t\t\tif ( date ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tpatterns = culture.calendar.patterns;\n\t\tfor ( prop in patterns ) {\n\t\t\tdate = parseExact( value, patterns[prop], culture );\n\t\t\tif ( date ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn date || null;\n};\n\nGlobalize.parseInt = function( value, radix, cultureSelector ) {\n\treturn truncate( Globalize.parseFloat(value, radix, cultureSelector) );\n};\n\nGlobalize.parseFloat = function( value, radix, cultureSelector ) {\n\t// radix argument is optional\n\tif ( typeof radix !== \"number\" ) {\n\t\tcultureSelector = radix;\n\t\tradix = 10;\n\t}\n\n\tvar culture = this.findClosestCulture( cultureSelector );\n\tvar ret = NaN,\n\t\tnf = culture.numberFormat;\n\n\tif ( value.indexOf(culture.numberFormat.currency.symbol) > -1 ) {\n\t\t// remove currency symbol\n\t\tvalue = value.replace( culture.numberFormat.currency.symbol, \"\" );\n\t\t// replace decimal seperator\n\t\tvalue = value.replace( culture.numberFormat.currency[\".\"], culture.numberFormat[\".\"] );\n\t}\n\n\t//Remove percentage character from number string before parsing\n\tif ( value.indexOf(culture.numberFormat.percent.symbol) > -1){\n\t\tvalue = value.replace( culture.numberFormat.percent.symbol, \"\" );\n\t}\n\n\t// remove spaces: leading, trailing and between - and number. Used for negative currency pt-BR\n\tvalue = value.replace( / /g, \"\" );\n\n\t// allow infinity or hexidecimal\n\tif ( regexInfinity.test(value) ) {\n\t\tret = parseFloat( value );\n\t}\n\telse if ( !radix && regexHex.test(value) ) {\n\t\tret = parseInt( value, 16 );\n\t}\n\telse {\n\n\t\t// determine sign and number\n\t\tvar signInfo = parseNegativePattern( value, nf, nf.pattern[0] ),\n\t\t\tsign = signInfo[ 0 ],\n\t\t\tnum = signInfo[ 1 ];\n\n\t\t// #44 - try parsing as \"(n)\"\n\t\tif ( sign === \"\" && nf.pattern[0] !== \"(n)\" ) {\n\t\t\tsignInfo = parseNegativePattern( value, nf, \"(n)\" );\n\t\t\tsign = signInfo[ 0 ];\n\t\t\tnum = signInfo[ 1 ];\n\t\t}\n\n\t\t// try parsing as \"-n\"\n\t\tif ( sign === \"\" && nf.pattern[0] !== \"-n\" ) {\n\t\t\tsignInfo = parseNegativePattern( value, nf, \"-n\" );\n\t\t\tsign = signInfo[ 0 ];\n\t\t\tnum = signInfo[ 1 ];\n\t\t}\n\n\t\tsign = sign || \"+\";\n\n\t\t// determine exponent and number\n\t\tvar exponent,\n\t\t\tintAndFraction,\n\t\t\texponentPos = num.indexOf( \"e\" );\n\t\tif ( exponentPos < 0 ) exponentPos = num.indexOf( \"E\" );\n\t\tif ( exponentPos < 0 ) {\n\t\t\tintAndFraction = num;\n\t\t\texponent = null;\n\t\t}\n\t\telse {\n\t\t\tintAndFraction = num.substr( 0, exponentPos );\n\t\t\texponent = num.substr( exponentPos + 1 );\n\t\t}\n\t\t// determine decimal position\n\t\tvar integer,\n\t\t\tfraction,\n\t\t\tdecSep = nf[ \".\" ],\n\t\t\tdecimalPos = intAndFraction.indexOf( decSep );\n\t\tif ( decimalPos < 0 ) {\n\t\t\tinteger = intAndFraction;\n\t\t\tfraction = null;\n\t\t}\n\t\telse {\n\t\t\tinteger = intAndFraction.substr( 0, decimalPos );\n\t\t\tfraction = intAndFraction.substr( decimalPos + decSep.length );\n\t\t}\n\t\t// handle groups (e.g. 1,000,000)\n\t\tvar groupSep = nf[ \",\" ];\n\t\tinteger = integer.split( groupSep ).join( \"\" );\n\t\tvar altGroupSep = groupSep.replace( /\\u00A0/g, \" \" );\n\t\tif ( groupSep !== altGroupSep ) {\n\t\t\tinteger = integer.split( altGroupSep ).join( \"\" );\n\t\t}\n\t\t// build a natively parsable number string\n\t\tvar p = sign + integer;\n\t\tif ( fraction !== null ) {\n\t\t\tp += \".\" + fraction;\n\t\t}\n\t\tif ( exponent !== null ) {\n\t\t\t// exponent itself may have a number patternd\n\t\t\tvar expSignInfo = parseNegativePattern( exponent, nf, \"-n\" );\n\t\t\tp += \"e\" + ( expSignInfo[0] || \"+\" ) + expSignInfo[ 1 ];\n\t\t}\n\t\tif ( regexParseFloat.test(p) ) {\n\t\t\tret = parseFloat( p );\n\t\t}\n\t}\n\treturn ret;\n};\n\nGlobalize.culture = function( cultureSelector ) {\n\t// setter\n\tif ( typeof cultureSelector !== \"undefined\" ) {\n\t\tthis.cultureSelector = cultureSelector;\n\t}\n\t// getter\n\treturn this.findClosestCulture( cultureSelector ) || this.cultures[ \"default\" ];\n};\n\n}( this ));\n","(function(global) {\r\n\r\n\t\"use strict\";\r\n\r\n\t// emu for tdclient.js\r\n\tif(global.Type === undefined) global.Type = {};\r\n\r\n\tfunction extend(o, p) {\r\n\t\tfor(var x in p) {\r\n\t\t\tif(o[x] === undefined)\r\n\t\t\t\to[x] = p[x];\r\n\t\t}\r\n\t}\r\n\r\n\tvar _formatRE = /(\\{[^}{]+\\})/g;\r\n\r\n\t// String extensions\r\n\textend(String, {\r\n\r\n\t\tcompare: function String$compare(s1, s2, ignoreCase) {\r\n\t\t\ts1 = s1 || \"\";\r\n\t\t\ts2 = s2 || \"\";\r\n\t\t\tif(ignoreCase) {\r\n\t\t\t\ts1 = s1.toUpperCase();\r\n\t\t\t\ts2 = s2.toUpperCase();\r\n\t\t\t}\r\n\t\t\treturn s1 == s2 ? 0 : s1 < s2 ? -1 : 1;\r\n\t\t},\r\n\r\n\t\tconcat: function String$concat(/*arg1, arg2, argN*/) {\r\n\t\t\treturn arguments.length == 2 ? arguments[0] + arguments[1] : Array.prototype.join.call(arguments, \"\");\r\n\t\t},\r\n\r\n\t\tfromChar: function String$fromChar(ch, count) {\r\n\t\t\treturn count ? new Array(count + 1).join(ch) : ch;\r\n\t\t},\r\n\r\n\t\tformat: function String$format(format/*, value1, value2, valueN*/) {\r\n\t\t\tvar a = arguments;\r\n\t\t\treturn format.replace(_formatRE, function(str, m) {\r\n\t\t\t\tvar v = a[parseInt(m.substring(1)) + 1];\r\n\t\t\t\treturn v != null ? v.toString() : \"\";\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\r\n\t// String prototype extensions\r\n\tvar _htmlDecMap = { '&': '&', '<': '<', '>': '>', '"': '\"' };\r\n\tvar _htmlDecRE = /(&|<|>|")/gi;\r\n\tvar _htmlEncMap = { '&': '&', '<': '<', '>': '>', '\"': '"' };\r\n\tvar _htmlEncRE = /([&<>\"])/g;\r\n\r\n\textend(String.prototype, {\r\n\r\n\t\tcontains: String.prototype.includes,\r\n\r\n\t\ttoArray: function String$toArray() {\r\n\t\t\treturn this.split('');\r\n\t\t},\r\n\r\n\t\thtmlDecode: function String$htmlDecode() {\r\n\t\t\treturn this.replace(_htmlDecRE, function(_str, m) { return _htmlDecMap[m]; });\r\n\t\t},\r\n\r\n\t\thtmlEncode: function String$htmlEncode() {\r\n\t\t\treturn this.replace(_htmlEncRE, function (_str, m) { return _htmlEncMap[m]; });\r\n\t\t},\r\n\r\n\t\tpadLeft: String.prototype.padStart,\r\n\r\n\t\tpadRight: String.prototype.padEnd,\r\n\r\n\t\tinsert: function String$insert(index, value) {\r\n\t\t\tif(!value) return this;\r\n\t\t\tif(!index) return value + this;\r\n\t\t\treturn this.substring(0, index) + value + this.substring(index);\r\n\t\t},\r\n\r\n\t\tremove: function String$remove(index, count) {\r\n\t\t\tif(!count || ((index + count) > this.length))\r\n\t\t\t\treturn this.substring(0, index);\r\n\t\t\treturn this.substring(0, index) + this.substring(index + count);\r\n\t\t}\r\n\t});\r\n\r\n\tvar ua = navigator.userAgent;\r\n\tglobal.isIOS = /iP(ad|od|hone)/.test(ua) && /AppleWebKit\\//.test(ua) && !/CriOS\\//.test(ua);\r\n})(window);","import $ from \"jquery\";\r\n\r\nfunction Qstring(qs) {\r\n\t///\t\r\n\t///\t$.qstring([qs]) - creates querystring object\r\n\t///\t\r\n\t///\t\r\n\t///\t\r\n\tif(this === $)\r\n\t\treturn new Qstring(qs);\r\n\tthis.parse(qs);\r\n}\r\n\r\nQstring.prototype = {\r\n\r\n\teach: function(f) {\r\n\t\t///\t\r\n\t\t///\teach(f) - iterates over querystring items, calling function f on each\r\n\t\t///\t\r\n\t\t///\t\r\n\t\tx: for(var key in this.p) {\r\n\t\t\tvar y = this.p[key];\r\n\t\t\tfor(var i = 0; i < y.length; i++)\r\n\t\t\t\tif(f(key, y[i]) === false)\r\n\t\t\t\t\tbreak x;\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\texists: function(name) {\r\n\t\t///\t\r\n\t\t///\texists(name) - checks whether parameter exists\r\n\t\t///\t\r\n\t\t///\t\r\n\t\t///\t\r\n\t\treturn this.p[name] != null;\r\n\t},\r\n\r\n\tget: function(name, defval) {\r\n\t\t///\t\r\n\t\t///\tget(name[, defval]) - gets the value of parameter, uses defval if not found\r\n\t\t///\t\r\n\t\t///\t\r\n\t\t///\t\r\n\t\t///\t\r\n\t\tvar result = this.p[name];\r\n\t\treturn (result != null) ? result.join(\",\") : defval;\r\n\t},\r\n\r\n\tgetValues: function(name) {\r\n\t\t///\t\r\n\t\t///\tgetValues(name) - gets multiple values as array, or empty array\r\n\t\t///\t\r\n\t\t///\t\r\n\t\t///\t\r\n\t\treturn (this.p[name] || []).concat();\r\n\t},\r\n\r\n\tadd: function(name, value) {\r\n\t\t///\t\r\n\t\t///\tadd(name, value) - adds a value\r\n\t\t///\t\r\n\t\t///\t\r\n\t\t///\t\r\n\t\tif(value != null)\r\n\t\t\tthis.p[name] = (this.p[name] || []).concat(value);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tset: function(name, value) {\r\n\t\t///\t\r\n\t\t///\tset(name, value) - [re]sets single value\r\n\t\t///\t\r\n\t\t///\t\r\n\t\t///\t\r\n\t\tif(value != null)\r\n\t\t\tthis.p[name] = [].concat(value);\r\n\t\telse\r\n\t\t\tdelete this.p[name];\r\n\t\treturn this;\r\n\t},\r\n\r\n\tremove: function(name) {\r\n\t\t///\t\r\n\t\t///\tremove(name) - removes value\r\n\t\t///\t\r\n\t\t///\t\r\n\t\treturn this.set(name, null);\r\n\t},\r\n\r\n\tclear: function() {\r\n\t\t///\t\r\n\t\t///\tclear() - clears all values\r\n\t\t///\t\r\n\t\tthis.p = {};\r\n\t\treturn this;\r\n\t},\r\n\r\n\tparse: function(qs) {\r\n\t\t///\t\r\n\t\t///\tparse([qs]) - parses query string\r\n\t\t///\t\r\n\t\t/// query string\r\n\t\tthis.clear();\r\n\t\tif(qs == null)\r\n\t\t\tqs = location.search;\r\n\t\tif(qs.length > 0 && qs.charAt(0) == \"?\")\r\n\t\t\tqs = qs.substring(1);\r\n\t\tif(qs.length === 0)\r\n\t\t\treturn;\r\n\t\tvar de = decodeURIComponent;\r\n\t\tvar args = qs.split(\"+\").join(\" \").split(\"&\");\r\n\t\tfor(var i = 0; i < args.length; i++) {\r\n\t\t\tvar arg = args[i].split(\"=\");\r\n\t\t\tvar name = de(arg[0]);\r\n\t\t\tvar value = arg.length == 2 ? de(arg[1]) : \"\";\r\n\t\t\tthis.add(name, value);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\ttoString: function() {\r\n\t\t///\t\r\n\t\t///\ttoString(qs) - returns query string\r\n\t\t///\t\r\n\t\t///\t\r\n\t\tvar en = encodeURIComponent, result = [];\r\n\t\tthis.each(function(k, v) {\r\n\t\t\tresult.push(en(k) + \"=\" + en(v));\r\n\t\t});\r\n\t\treturn result.join(\"&\");\r\n\t}\r\n};\r\n\r\n$.qstring = Qstring;\r\n","/*!\n * jQuery UI Touch Punch 1.1.5 as modified by RWAP Software\n * based on original touchpunch v0.2.3 which has not been updated since 2014\n *\n * Updates by RWAP Software to take account of various suggested changes on the original code issues\n *\n * Original: https://github.com/furf/jquery-ui-touch-punch\n * Copyright 2011–2014, Dave Furfero\n * Dual licensed under the MIT or GPL Version 2 licenses.\n *\n * Fork: https://github.com/RWAP/jquery-ui-touch-punch\n *\n * Depends:\n * jquery.ui.widget.js\n * jquery.ui.mouse.js\n */\n\n(function( factory ) {\n if ( typeof define === \"function\" && define.amd ) {\n\n // AMD. Register as an anonymous module.\n define([ \"jquery\", \"jquery-ui\" ], factory );\n } else {\n\n // Browser globals\n factory( jQuery );\n }\n}(function ($) {\n\n // Detect touch support - Windows Surface devices and other touch devices\n $.mspointer = window.navigator.msPointerEnabled;\t\t\n $.touch = ( 'ontouchstart' in document\n \t|| 'ontouchstart' in window\n \t|| window.TouchEvent\n \t|| (window.DocumentTouch && document instanceof DocumentTouch)\n \t|| navigator.maxTouchPoints > 0\n \t|| navigator.msMaxTouchPoints > 0\n );\n\n // Ignore browsers without touch or mouse support\n if ((!$.touch && !$.mspointer) || !$.ui.mouse) {\n\treturn;\n }\n\n let mouseProto = $.ui.mouse.prototype,\n _mouseInit = mouseProto._mouseInit,\n _mouseDestroy = mouseProto._mouseDestroy,\n touchHandled, lastClickTime = 0;\n\n /**\n * Get the x,y position of a touch event\n * @param {Object} event A touch event\n */\n function getTouchCoords (event) {\n return {\n x: event.originalEvent.changedTouches[0].pageX,\n y: event.originalEvent.changedTouches[0].pageY\n };\n }\n\n /**\n * Simulate a mouse event based on a corresponding touch event\n * @param {Object} event A touch event\n * @param {String} simulatedType The corresponding mouse event\n */\n function simulateMouseEvent (event, simulatedType) {\n\n // Ignore multi-touch events\n if (event.originalEvent.touches.length > 1) {\n return;\n }\n\n //Ignore input or textarea elements so user can still enter text\n if ($(event.target).is(\"input\") || $(event.target).is(\"textarea\")) {\n return;\n }\n\n // Prevent \"Ignored attempt to cancel a touchmove event with cancelable=false\" errors\n if (event.cancelable) {\n event.preventDefault();\n }\n\n let touch = event.originalEvent.changedTouches[0],\n simulatedEvent = new MouseEvent(simulatedType, {\n bubbles: true,\n cancelable: true,\n view:window,\n screenX:touch.screenX,\n screenY:touch.screenY,\n clientX:touch.clientX,\n clientY:touch.clientY\n });\n\n // Dispatch the simulated event to the target element\n event.target.dispatchEvent(simulatedEvent);\n }\n\n /**\n * Handle the jQuery UI widget's touchstart events\n * @param {Object} event The widget element's touchstart event\n */\n mouseProto._touchStart = function (event) {\n\n let self = this;\n\n // Interaction time\n this._startedMove = event.timeStamp;\n\n // Track movement to determine if interaction was a click\n self._startPos = getTouchCoords(event);\n\n // Ignore the event if another widget is already being handled\n if (touchHandled || !self._mouseCapture(event.originalEvent.changedTouches[0])) {\n return;\n }\n\n // Set the flag to prevent other widgets from inheriting the touch event\n touchHandled = true;\n\n // Track movement to determine if interaction was a click\n self._touchMoved = false;\n\n // Simulate the mouseover event\n simulateMouseEvent(event, 'mouseover');\n\n // Simulate the mousemove event\n simulateMouseEvent(event, 'mousemove');\n\n // Simulate the mousedown event\n simulateMouseEvent(event, 'mousedown');\n };\n\n /**\n * Handle the jQuery UI widget's touchmove events\n * @param {Object} event The document's touchmove event\n */\n mouseProto._touchMove = function (event) {\n\n // Ignore event if not handled\n if (!touchHandled) {\n return;\n }\n\n // Interaction was moved\n this._touchMoved = true;\n\n // Simulate the mousemove event\n simulateMouseEvent(event, 'mousemove');\n };\n\n /**\n * Handle the jQuery UI widget's touchend events\n * @param {Object} event The document's touchend event\n */\n mouseProto._touchEnd = function (event) {\n\n // Ignore event if not handled\n if (!touchHandled) {\n return;\n }\n\n // Simulate the mouseup event\n simulateMouseEvent(event, 'mouseup');\n\n // Simulate the mouseout event\n simulateMouseEvent(event, 'mouseout');\n\n // If the touch interaction did not move, it should trigger a click\n // Check for this in two ways - length of time of simulation and distance moved\n // Allow for Apple Stylus to be used also\n let timeMoving = event.timeStamp - this._startedMove;\n if (!this._touchMoved || timeMoving < 500) {\n // Simulate the click event\n if( event.timeStamp - lastClickTime < 400 )\n simulateMouseEvent(event, 'dblclick');\n else\n simulateMouseEvent(event, 'click');\n lastClickTime = event.timeStamp;\t \n } else {\n let endPos = getTouchCoords(event);\n if ((Math.abs(endPos.x - this._startPos.x) < 10) && (Math.abs(endPos.y - this._startPos.y) < 10)) {\n\n // If the touch interaction did not move, it should trigger a click\n if (!this._touchMoved || event.originalEvent.changedTouches[0].touchType === 'stylus') {\n // Simulate the click event\n simulateMouseEvent(event, 'click');\n }\n }\n }\n\n // Unset the flag to determine the touch movement stopped\n this._touchMoved = false;\n\n // Unset the flag to allow other widgets to inherit the touch event\n touchHandled = false;\n };\n\n let _touchStartBound;\n let _touchMoveBound;\n let _touchEndBound\n\n /**\n * A duck punch of the $.ui.mouse _mouseInit method to support touch events.\n * This method extends the widget with bound touch event handlers that\n * translate touch events to mouse events and pass them to the widget's\n * original mouse event handling methods.\n */\n mouseProto._mouseInit = function () {\n\n let self = this;\n\t \n // Microsoft Surface Support = remove original touch Action\n if ($.support.mspointer) {\n self.element[0].style.msTouchAction = 'none';\n }\t\n\n _touchStartBound = mouseProto._touchStart.bind(self);\n _touchMoveBound = mouseProto._touchMove.bind(self);\n _touchEndBound = mouseProto._touchEnd.bind(self);\t \n\n // Delegate the touch handlers to the widget's element\n self.element.on({\n touchstart: _touchStartBound,\n touchmove: _touchMoveBound,\n touchend: _touchEndBound\n });\n\n // Call the original $.ui.mouse init method\n _mouseInit.call(self);\n };\n\n /**\n * Remove the touch event handlers\n */\n mouseProto._mouseDestroy = function () {\n\n let self = this;\n\n // Delegate the touch handlers to the widget's element\n self.element.off({\n touchstart: _touchStartBound,\n touchmove: _touchMoveBound,\n touchend: _touchEndBound\n });\n\n // Call the original $.ui.mouse destroy method\n _mouseDestroy.call(self);\n };\n\n}));\n","import $ from \"jquery\";\r\n\r\n/**\r\n * $.cookie(name) - Gets cookie value, or undefined;\r\n * $.cookie(name, value[, options/expire, path, domain, secure]) - Sets the cookie;\r\n * $.cookie(name, null) - Clears the cookie;\r\n * \r\n * @param {string} name\r\n * @param {string?|null} value\r\n * @param {Date|number|null} expires\r\n * @param {string?} path\r\n * @param {string?} domain\r\n * @param {boolean?} secure\r\n * @returns string\r\n */\r\n\r\nfunction cookie(name, value, expires, path, domain, secure) {\r\n\tif(arguments.length == 1) {\r\n\t\tvar args = document.cookie.split(';');\r\n\t\tfor(var i = 0; i < args.length; i++) {\r\n\t\t\tvar arg = args[i].split('=');\r\n\t\t\tif(arg.length == 2) {\r\n\t\t\t\tif(name == decodeURIComponent(arg[0]).trim())\r\n\t\t\t\t\treturn decodeURIComponent(arg[1]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\telse {\r\n\t\tif(value == null) { value = \"\"; expires = -1; }\r\n\t\t// this is an object with settings.\r\n\t\tif(expires != null && typeof expires == \"object\" && !(expires instanceof Date)) {\r\n\t\t\tpath = expires.path;\r\n\t\t\tdomain = expires.domain;\r\n\t\t\tsecure = expires.secure;\r\n\t\t\texpires = expires.expires;\r\n\t\t}\r\n\t\tvar ck = [];\r\n\t\tck.push(encodeURIComponent(name) + \"=\" + encodeURIComponent(value));\r\n\t\tif(expires != null) {\r\n\t\t\tif(typeof expires == \"number\") {\r\n\t\t\t\tvar seconds = expires;\r\n\t\t\t\texpires = new Date();\r\n\t\t\t\texpires.setSeconds(expires.getSeconds() + seconds);\r\n\t\t\t}\r\n\t\t\tck.push(\"expires=\" + expires.toUTCString());\r\n\t\t}\r\n\t\tif(path)\r\n\t\t\tck.push(\"path=\" + path);\r\n\t\tif(domain)\r\n\t\t\tck.push(\"domain=\" + domain);\r\n\t\tif(secure)\r\n\t\t\tck.push(\"secure\");\r\n\t\tdocument.cookie = ck.join(\";\");\r\n\t}\r\n}\r\n\r\n$.cookie = cookie;","import $ from \"jquery\";\r\n\r\n$.fn.popup = function (trigger, position, hideCallback) {\r\n\treturn this.each(function () {\r\n\t\tvar e = $(this);\r\n\t\tfunction hide() {\r\n\t\t\te.hide();\r\n\t\t\tif (hideCallback) hideCallback(e);\r\n\t\t}\r\n\r\n\t\tif (e.data(\"ui-popup-attached\"))\r\n\t\t\treturn;\r\n\t\te.data(\"ui-popup-attached\", true);\r\n\t\te.addClass(\"ui-popup\");\r\n\t\tvar trg = typeof trigger === \"function\" ? trigger(e) : trigger == \"parent\" ? e.parent() : $(trigger);\r\n\t\ttrg.on(\"click\", function (x) {\r\n\t\t\tif (trg.is(\":disabled\"))\r\n\t\t\t\treturn false;\r\n\t\t\tx.preventDefault();\r\n\t\t\tif (e.is(\":visible\")) {\r\n\t\t\t\treturn hide();\r\n\t\t\t}\r\n\t\t\tvar pos = $.extend({}, { my: \"left top\", at: \"left bottom\", of: this }, position);\r\n\t\t\te.show().position(pos);\r\n\t\t\t/* do not let popup have negative offset */\r\n\t\t\tvar offset = e.offset();\r\n\t\t\tvar jpos = e.position();\r\n\t\t\tif (offset.left < 0) jpos.left -= offset.left;\r\n\t\t\tif (offset.top < 0) jpos.top -= offset.top;\r\n\t\t\te.css(jpos);\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\t$(document).one(\"click\", hide);\r\n\t\t\t}, 0);\r\n\t\t});\r\n\t});\r\n};","import $ from \"jquery\";\r\n\r\nvar placeholderKey = \"scrollfit.placeholder\";\r\n\r\nvar setPos = window.isIOS ?\r\nfunction(elt, css, viewPort) {\r\n\t// use absolute positioning for iOS as \"fixed\" is weird\r\n\tvar ofp = elt[0].offsetParent;\r\n\tofp = ofp != null ? $(ofp).offset() : { left: 0, top: 0 };\r\n\tcss.position = \"absolute\";\r\n\tcss.left += viewPort.left - ofp.left;\r\n\tcss.top += viewPort.top - ofp.top;\r\n\telt.css(css);\r\n} :\r\nfunction(elt, css) {\r\n\telt.css(css);\r\n};\r\n\r\nfunction initPos(elt, clone, css, viewPort) {\r\n\telt.css({ display: \"none\" });\r\n\tclone.css({ display: \"\" });\r\n\t$.extend(css, { width: clone.width(), height: clone.height() });\r\n\tvar css1 = $.extend({}, css, { display: \"\" });\r\n\tsetPos(elt, css1, viewPort);\r\n}\r\n\r\nfunction syncPos(elt, options, viewPort) {\r\n\telt = $(elt);\r\n\tvar eltRect;\r\n\tvar isDoc = options.anchor === \"window\";\r\n\tvar anc = options.anchor === \"parent\" ? elt.parent()\r\n\t\t: isDoc ? $(document)\r\n\t\t\t: $(options.anchor);\r\n\tvar ancRect = $.extend({ left: 0, top: 0 }, isDoc ? {} : anc.offset(), { width: anc.width(), height: anc.height() });\r\n\tvar clone = elt.data(placeholderKey);\r\n\tif(clone != null) {\r\n\t\tclone = $(clone);\r\n\t\teltRect = $.extend(clone.offset(), { width: clone.outerWidth(), height: clone.outerHeight() });\r\n\t} else {\r\n\t\teltRect = $.extend(elt.offset(), { width: elt.outerWidth(), height: elt.outerHeight() });\r\n\t}\r\n\r\n\tvar css = {}, pref;\r\n\r\n\t// is there a place to scroll\r\n\tif(eltRect.left + eltRect.width <= ancRect.left + ancRect.width) {\r\n\t\tif(options.left != null) {\r\n\t\t\tif(eltRect.left < viewPort.left + options.left) {\r\n\t\t\t\tcss.left = Math.min(options.left, ancRect.left + ancRect.width - (viewPort.left + eltRect.width));\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(options.right != null) {\r\n\t\t\tpref = Math.min(\r\n\t\t\t\t\tMath.max(\r\n\t\t\t\t\t\tancRect.left - viewPort.left,\r\n\t\t\t\t\t\tviewPort.width - options.right - eltRect.width),\r\n\t\t\t\t\tancRect.left + ancRect.width - (viewPort.left + eltRect.width));\r\n\t\t\tif(options.left != null)\r\n\t\t\t\tpref = Math.min(css.left != null ? css.left : Math.max(options.left, eltRect.left - viewPort.left), pref);\r\n\t\t\tcss.left = pref;\r\n\t\t}\r\n\t}\r\n\tif(eltRect.top + eltRect.height <= ancRect.top + ancRect.height) {\r\n\t\tif(options.top != null) {\r\n\t\t\tif(eltRect.top < viewPort.top + options.top) {\r\n\t\t\t\tcss.top = Math.min(options.top, ancRect.top + ancRect.height - (viewPort.top + eltRect.height));\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(options.bottom != null) {\r\n\t\t\tpref = Math.min(\r\n\t\t\t\t\tMath.max(\r\n\t\t\t\t\t\tancRect.top - viewPort.top,\r\n\t\t\t\t\t\tviewPort.height - options.bottom - eltRect.height),\r\n\t\t\t\t\tancRect.top + ancRect.height - (viewPort.top + eltRect.height));\r\n\t\t\tif(options.top != null) {\r\n\t\t\t\tif(css.top != null) {\r\n\t\t\t\t\tcss.top = Math.min(css.top, pref);\r\n\t\t\t\t} else if(options.top > eltRect.top - viewPort.top) {\r\n\t\t\t\t\tcss.top = options.top;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t\tcss.top = pref;\r\n\t\t}\r\n\t}\r\n\t// we have at least one position calculated, calculate another\r\n\tif(css.top != null && css.left == null) {\r\n\t\tcss.left = eltRect.left - viewPort.left;\r\n\t} else if(css.left != null && css.top == null) {\r\n\t\tcss.top = eltRect.top - viewPort.top;\r\n\t}\r\n\r\n\tif(!$.isEmptyObject(css)) {\r\n\t\tif(clone == null) {\r\n\t\t\tclone = options.placeholder(elt).addClass(options.placeholderClass).css({ \"visibility\": \"hidden\", \"display\": \"none\" }).insertAfter(elt);\r\n\t\t\telt.data(placeholderKey, clone[0]).addClass(\"ui-sticky\");\r\n\t\t\t$.extend(css, { position: \"fixed\" });\r\n\t\t\tinitPos(elt, clone, css, viewPort);\r\n\t\t} else {\r\n\t\t\tsetPos(elt, css, viewPort);\r\n\t\t}\r\n\t} else if(clone != null) {\r\n\t\tstop(elt);\r\n\t}\r\n}\r\n\r\nfunction syncSize(elt, options, viewPort) {\r\n\telt = $(elt);\r\n\tvar clone = elt.data(placeholderKey);\r\n\tif(clone != null) {\r\n\t\tclone = $(clone);\r\n\t\telt.css({ width: clone.width(), height: clone.height() });\r\n\t\tsyncPos(elt, options, viewPort);\r\n\t}\r\n}\r\n\r\nfunction delayRemoveClone(clone) {\r\n\treturn function() { clone.parentNode.removeChild(clone); };\r\n}\r\n\r\nfunction stop(elt) {\r\n\telt = $(elt);\r\n\tvar clone = elt.data(placeholderKey);\r\n\tif(clone != null) {\r\n\t\tclone.style.display = \"none\";\r\n\t\telt.removeData(placeholderKey).removeClass(\"ui-sticky\").css({ position: \"\", left: \"\", top: \"\", width: \"\", height: \"\" });\r\n\t\tsetTimeout(delayRemoveClone(clone), 1);\r\n\t}\r\n}\r\n\r\nfunction doScroll(options) {\r\n\t/* jshint validthis: true */\r\n\tvar w = $(window);\r\n\tvar viewPort = {\r\n\t\tleft: w.scrollLeft(),\r\n\t\ttop: w.scrollTop(),\r\n\t\twidth: w.width(),\r\n\t\theight: w.height()\r\n\t};\r\n\tthis.each(function() { syncPos(this, options, viewPort); });\r\n}\r\n\r\nfunction doResize(options) {\r\n\t/* jshint validthis: true */\r\n\tvar w = $(window);\r\n\tvar viewPort = {\r\n\t\tleft: w.scrollLeft(),\r\n\t\ttop: w.scrollTop(),\r\n\t\twidth: w.width(),\r\n\t\theight: w.height()\r\n\t};\r\n\tthis.each(function() { syncSize(this, options, viewPort); });\r\n}\r\n\r\nvar placeholderStrategy = {\r\n\tfixSize: function(elt) {\r\n\t\treturn $(elt[0].cloneNode(false)).css({ width: elt.width(), height: elt.height() });\r\n\t},\r\n\tfixHeight: function(elt) {\r\n\t\treturn $(elt[0].cloneNode(false)).css({ height: elt.height() });\r\n\t},\r\n\tclone: function(elt) {\r\n\t\treturn elt.clone(false);\r\n\t}\r\n};\r\n\r\n$.fn.sticky = function(options) {\r\n\tif(options !== \"stop\") {\r\n\t\toptions = $.extend({\r\n\t\t\tfitFar: false,\r\n\t\t\tplaceholderClass: \"ui-sticky-placeholder\",\r\n\t\t\tanchor: \"parent\",\r\n\t\t\tplaceholder: \"clone\"\r\n\t\t}, options);\r\n\r\n\t\toptions.placeholder = placeholderStrategy[options.placeholder] || options.placeholder;\r\n\t\tif(typeof options.placeholder !== \"function\")\r\n\t\t\tthrow \"placeholder is not a function or predefined constant\";\r\n\t}\r\n\r\n\tvar fnScroll = doScroll.bind(this, options);\r\n\tvar fnResize = doResize.bind(this, options);\r\n\r\n\tif(options === \"stop\") {\r\n\t\t$(window).off(\"scroll\", fnScroll).off(\"resize\", fnResize);\r\n\t\treturn this.each(stop);\r\n\t}\r\n\t$(window).on(\"scroll\", fnScroll).on(\"resize\", fnResize);\r\n\treturn this;\r\n};\r\n\r\n$.scrollIntoView = function(elt, options) {\r\n\r\n\telt = $(elt).eq(0);\r\n\tif(!elt.length)\r\n\t\treturn;\r\n\r\n\tif(options === undefined)\r\n\t\toptions = true;\r\n\tif(options === true || options === false)\r\n\t\toptions = { block: options ? \"start\" : \"end\" };\r\n\r\n\toptions = $.extend({}, { behavior: \"auto\", block: \"start\", select: \".ui-sticky\" }, options);\r\n\r\n\tvar w = $(window);\r\n\r\n\t// do it two times. position, update stickies, position\r\n\r\n\tfunction doScroll() {\r\n\r\n\t\tvar viewPort = {\r\n\t\t\t// left: w.scrollLeft(),\r\n\t\t\ttop: w.scrollTop(),\r\n\t\t\t// width: w.width(),\r\n\t\t\theight: w.height()\r\n\t\t};\r\n\r\n\t\t$(options.select).each(function() {\r\n\t\t\tvar me = $(this);\r\n\r\n\t\t\tvar mePort = me.offset();\r\n\t\t\t// mePort.width = me.outerWidth();\r\n\t\t\tmePort.height = me.outerHeight();\r\n\r\n\t\t\t// vertically on screen\r\n\t\t\tif(mePort.top + mePort.height > viewPort.top && mePort.top < viewPort.top + viewPort.height) {\r\n\t\t\t\tif(mePort.top <= viewPort.top) // top align\r\n\t\t\t\t\tviewPort.top += mePort.height;\r\n\t\t\t\tviewPort.height -= mePort.height;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvar eltPort = elt.offset();\r\n\t\t// eltPort.width = elt.outerWidth();\r\n\t\teltPort.height = elt.outerHeight();\r\n\r\n\t\tif(eltPort.top < viewPort.top || eltPort.top + eltPort.height > viewPort.top + viewPort.height) {\r\n\t\t\tvar dy = viewPort.top - eltPort.top;\r\n\t\t\tif(options.block === \"end\") {\r\n\t\t\t\tdy += viewPort.height - eltPort.height;\r\n\t\t\t}\r\n\t\t\tif(dy !== 0) {\r\n\t\t\t\twindow.scrollBy(0, -dy);\r\n\t\t\t\t$(window).trigger(\"scroll\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tdoScroll();\r\n\tsetTimeout(function() { doScroll(); }, 100);\r\n};\r\n","import $ from \"jquery\";\r\nimport \"./jquery-popup\";\r\n\r\nfunction menuFromObjectArray(o) {\r\n\tvar i, l, ul = $(\"