{"version":3,"sources":["AjaxForm.js","CustomValidators.js","DXFixes.js","Wizard.js","json2.js","globalize.js","jquery-ui-1.10.0.custom.js","GoogleFonts.js","slimScroll.js","FacebookSDK.js"],"names":["webooker","AjaxForm","loadingPanelName","popupMessageName","resultMessageDivID","formID","onComplete","onSuccess","onError","getLoadingPanel","window","_dXloadingPanelName","getValidationSummary","getForm","find","rebindValidation","form","$","validator","removeData","unobtrusive","parse","_dXpopupMessageName","_resultMessageDivID","_formID","_onComplete","_onSuccess","_onError","getPopUpMessage","onAjaxBegin","xhr","Show","onAjaxSuccess","data","status","Hide","dXpopupMessage","successDiv","val","SetContentHtml","setTimeout","onAjaxComplete","onAjaxFailure","error","alert","submit","popUpMessage","validate","valid","hide","show","addMethod","value","element","params","elementName","attr","dotPosition","lastIndexOf","prefix","substr","dependentProperty","dependentproperty","dependentPropertyVal","GetValue","exclusiveor","adapters","add","options","rules","messages","message","setDefaults","ignore","jQuery","methods","remote","param","editor","MVCx","GetEditorByElement","name","GetValueString","this","optional","previous","previousValue","settings","originalMessage","url","old","pending","startRequest","ajax","extend","mode","port","dataType","success","response","errors","submitted","formSubmitted","prepareElement","successList","push","showErrors","defaultMessage","isFunction","stopRequest","JSON","Wizard","_onActiveTabchanging","_onActiveTabchanged","_tabValidated","getTabControl","getNextButton","getPrevButton","getFinishButton","activeTabchanged","s","e","clearValidationSummary","tab","index","GetTabCount","activeTabChanging","GetActiveTabIndex","SetEnabled","disableAllTabsAfterActive","cancel","nextButtonClick","tabControl","SetActiveTab","GetTab","prevButtonClick","SetActiveTabIndex","finishButtonClick","i","removeClass","addClass","empty","hookTabControl","ActiveTabChanged","AddHandler","ActiveTabChanging","hookButtons","click","initialize","Initialize","regexHex","regexInfinity","regexParseFloat","regexTrim","arrayIndexOf","endsWith","isArray","isObject","startsWith","trim","truncate","zeroPad","appendPreOrPostMatch","expandFormat","formatDate","formatNumber","getTokenRegExp","getEra","getEraYear","parseExact","parseNegativePattern","expandNumber","expandYear","getDayIndex","getMonthIndex","getParseRegExp","outOfRange","toUpper","toUpperArray","Globalize","cultureSelector","prototype","init","require","exports","module","cultures","constructor","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","calendar","en","array","item","indexOf","length","copy","copyIsArray","clone","target","arguments","deep","src","Array","obj","Object","toString","call","replace","isNaN","Math","str","count","left","l","preMatch","strings","quoteCount","escaped","il","c","charAt","cal","format","len","culture","eraDate","ret","convert","Date","getTime","era","setFullYear","toLocaleString","sortable","hour","foundDay","checkedDay","converted","zeros","dayPartRegExp","tokenRegExp","padZeros","num","r","getPart","date","part","getFullYear","getMonth","getDate","fromGregorian","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","numberString","isFinite","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","m","regexpStr","regExp","low","high","arr","results","parseInfo","RegExp","hourOffset","month","weekDay","min","sec","msec","tzMinOffset","pmHour","j","jl","matchGroup","matchInt","offsets","minOffset","eraName","toLowerCase","result","defaultYear","toGregorian","setHours","adjustedMin","negativePattern","neg","pos","findClosestCulture","localize","key","radix","parseFloat","addCultureInfo","cultureName","baseCultureName","info","base","isNew","list","prioritized","parts","lang","pri","sort","a","b","cultureKey","parseDate","formats","prop","fraction","p","sign","signInfo","exponentPos","intAndFraction","decSep","decimalPos","integer","groupSep","altGroupSep","expSignInfo","uuid","runiqueId","focusable","isTabIndexNotNaN","map","img","nodeName","mapName","parentNode","href","visible","disabled","expr","filters","parents","addBack","filter","css","ui","version","keyCode","BACKSPACE","COMMA","DELETE","DOWN","END","ENTER","ESCAPE","HOME","LEFT","NUMPAD_ADD","NUMPAD_DECIMAL","NUMPAD_DIVIDE","NUMPAD_ENTER","NUMPAD_MULTIPLY","NUMPAD_SUBTRACT","PAGE_DOWN","PAGE_UP","PERIOD","RIGHT","SPACE","TAB","UP","fn","_focus","focus","delay","each","elem","apply","scrollParent","ie","eq","document","zIndex","position","parent","uniqueId","id","removeUniqueId","removeAttr","createPseudo","dataName","tabbable","tabIndex","isTabIndexNaN","outerWidth","jquery","side","type","orig","innerWidth","innerHeight","outerHeight","reduce","size","border","margin","selector","prevObject","camelCase","navigator","userAgent","support","selectstart","createElement","disableSelection","bind","event","preventDefault","enableSelection","unbind","plugin","option","set","proto","plugins","instance","args","nodeType","hasScroll","el","scroll","has","undefined","_cleanData","cleanData","elems","triggerHandler","widget","fullName","existingConstructor","basePrototype","proxiedPrototype","namespace","Widget","_createWidget","_proto","_childConstructors","_super","_superApply","returnValue","__super","__superApply","widgetEventPrefix","widgetName","widgetFullName","child","childPrototype","bridge","input","inputIndex","inputLength","hasOwnProperty","isPlainObject","object","isMethodCall","concat","methodValue","pushStack","get","_init","defaultElement","create","eventNamespace","_getCreateOptions","bindings","hoverable","_on","remove","destroy","style","ownerDocument","defaultView","parentWindow","_create","_trigger","_getCreateEventData","noop","_destroy","curOption","shift","pop","_setOptions","_setOption","toggleClass","enable","disable","suppressDisabledCheck","handlers","delegateElement","handler","handlerProxy","hasClass","guid","eventName","delegate","_off","undelegate","_delay","_hoverable","mouseenter","currentTarget","mouseleave","_focusable","focusin","focusout","callback","Event","originalEvent","trigger","isDefaultPrevented","method","defaultEffect","effectName","effect","hasOptions","isEmptyObject","duration","complete","effects","easing","queue","next","mouseHandled","mouseup","distance","_mouseInit","that","_mouseDown","stopImmediatePropagation","started","_mouseDestroy","_mouseMoveDelegate","_mouseUpDelegate","_mouseStarted","_mouseUp","_mouseDownEvent","btnIsLeft","which","elIsCancel","closest","_mouseCapture","mouseDelayMet","_mouseDelayTimer","_mouseDistanceMet","_mouseDelayMet","_mouseStart","_mouseMove","documentMode","button","_mouseDrag","_mouseStop","max","pageX","pageY","mouse","addClasses","appendTo","axis","connectToSortable","containment","cursor","cursorAt","grid","handle","helper","iframeFix","opacity","refreshPositions","revert","revertDuration","scope","scrollSensitivity","scrollSpeed","snap","snapMode","snapTolerance","stack","drag","stop","o","_getHandle","width","offsetWidth","height","offsetHeight","_createHelper","_cacheHelperProportions","ddmanager","_cacheMargins","cssPosition","positionAbs","top","margins","_getParentOffset","relative","_getRelativeOffset","originalPosition","_generatePosition","originalPageX","originalPageY","_adjustOffsetFromHelper","_setContainment","_clear","dropBehaviour","prepareOffsets","dragStart","noPropagation","_convertPositionTo","_uiHash","elementInDom","dropped","drop","animate","removeChild","dragStop","is","helperProportions","bottom","offsetParent","po","contains","scrollLeft","scrollTop","body","tagName","ce","scrollHeight","over","scrollWidth","relative_container","mod","scrollIsRootNode","co","cancelHelperRemoval","inst","uiSortable","sortables","shouldRevert","isOver","_helper","currentItem","innermostIntersecting","thisSortable","_intersectsWith","containerCache","fromOutside","placeholder","_cursor","_opacity","overflowOffset","scrolled","snapElements","String","items","$t","$o","ts","bs","ls","rs","first","x1","x2","y1","y2","snapping","snapItem","release","group","makeArray","_zIndex","n","toJSON","valueOf","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","Number","Boolean","cx","escapable","gap","indent","meta","\b","\t","\n","\f","\r","\"","\\","rep","quote","string","charCodeAt","holder","k","v","partial","mind","stringify","replacer","space","Error","","text","reviver","walk","eval","SyntaxError","WebFontConfig","google","families","wf","location","protocol","async","getElementsByTagName","insertBefore","slimScroll","wheelStep","color","alwaysVisible","disableFadeOut","railVisible","railColor","railOpacity","railClass","barClass","wrapperClass","allowPageScroll","touchScrollStep","isOverPanel","isOverBar","isDragg","queueHide","touchDif","barHeight","percentScroll","lastScroll","wrapper","rail","bar","_onWheel","divS","minBarHeight","releaseScroll","me","scrollContent","y","isWheel","isJump","delta","maxTop","offsetTop","showBar","hideBar","getBarHeight","msg","clearTimeout","fadeIn","fadeOut","overflow","display","border-radius","background","BorderRadius","MozBorderRadius","WebkitBorderRadius","posCss","wrap","append","draggable","hover","touches","wheelDelta","detail","addEventListener","attachEvent","attachWheel","slimscroll","fbAsyncInit","FB","appId","autoLogAppEvents","xfbml","fjs","getElementById","js"],"mappings":"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","file":"../client-client-scripts.min.js","sourcesContent":["var webooker = webooker || {};\n\nwebooker.AjaxForm = function (loadingPanelName, popupMessageName, resultMessageDivID, formID, onComplete, onSuccess, onError) {\n var _dXloadingPanelName = loadingPanelName,\n _dXpopupMessageName = popupMessageName,\n _resultMessageDivID = resultMessageDivID,\n _formID = formID,\n _onComplete = onComplete,\n _onSuccess = onSuccess,\n _onError = onError,\n\n getForm = function () {\n return $('#' + _formID);\n },\n\n getLoadingPanel = function () {\n return window[_dXloadingPanelName];\n },\n\n getPopUpMessage = function () {\n return window[_dXpopupMessageName];\n },\n\n getValidationSummary = function () {\n return getForm().find(\".validation-summary-errors\");\n },\n\n rebindValidation = function () {\n if ($.validator) {\n var form = getForm();\n\n form.removeData(\"validator\");\n $.validator.unobtrusive.parse(form);\n }\n },\n\n showSuccessMessage = function (successDiv) {\n var dXpopupMessage = getPopUpMessage();\n if (dXpopupMessage) {\n dXpopupMessage.SetContentHtml('
' + successDiv.val() + '
');\n dXpopupMessage.Show();\n setTimeout(function () {\n dXpopupMessage.Hide();\n }, 1500)\n }\n },\n\n // Public methods\n\n onAjaxBegin = function (xhr) {\n getLoadingPanel().Show();\n },\n\n onAjaxSuccess = function (data, status, xhr) {\n getLoadingPanel().Hide();\n\n var successDiv = $('#' + _resultMessageDivID);\n if (successDiv.val() !== 'false') {\n\n showSuccessMessage(successDiv);\n\n if (_onSuccess) {\n _onSuccess();\n }\n } else {\n if (_onError) {\n _onError();\n }\n }\n },\n\n onAjaxComplete = function (xhr, status) {\n getLoadingPanel().Hide();\n rebindValidation();\n\n if (_onComplete) {\n _onComplete();\n }\n },\n\n onAjaxFailure = function (xhr, status, error) {\n alert(error);\n },\n\n submit = function () {\n getLoadingPanel().Hide();\n var popUpMessage = getPopUpMessage();\n if (popUpMessage) {\n popUpMessage.Hide();\n }\n rebindValidation();\n\n // TODO: Remove me after transition to DevExpress 2012 2.5 or higher\n // [DataType(DataType.EmailAddress)] does not work properly atm.\n //var validationResult = ASPxClientEdit.ValidateEditorsInContainerById(_formID);\n\n var form = getForm();\n form.validate();\n if (form.valid() /*&& validationResult*/) {\n getValidationSummary().hide();\n form.submit();\n } else {\n getValidationSummary().show();\n }\n };\n return {\n onAjaxBegin: onAjaxBegin,\n onAjaxSuccess: onAjaxSuccess,\n onAjaxComplete: onAjaxComplete,\n onAjaxFailure: onAjaxFailure,\n submit: submit\n };\n};","(function ($) {\n if ($.validator) {\n $.validator.addMethod('oneoftworequired', function (value, element, params) {\n var elementName = $(element).attr('name');\n var dotPosition = elementName.lastIndexOf('.');\n var prefix = \"\";\n if (dotPosition !== -1) {\n prefix = elementName.substr(0, dotPosition + 1);\n }\n\n var dependentProperty = window[prefix + params.dependentproperty];\n\n // The property does not exist, so lets assume it is valid\n if (dependentProperty === undefined || dependentProperty === null) {\n return true;\n }\n var dependentPropertyVal = dependentProperty.GetValue();\n\n if (params.exclusiveor) {\n return (value !== null && dependentPropertyVal === null) ||\n (value === null && dependentPropertyVal !== null);\n } else {\n return (value !== null || dependentPropertyVal !== null);\n }\n });\n\n $.validator.unobtrusive.adapters.add(\n 'oneoftworequired',\n ['dependentproperty', 'exclusiveor'],\n function (options) {\n options.rules['oneoftworequired'] = options.params;\n options.messages['oneoftworequired'] = options.message;\n });\n\n $.validator.setDefaults({\n ignore: \":hidden\"\n });\n\n\n }\n})(jQuery);\n","// Fix for broken remote validation in DX 12.2.6\n// http://www.devexpress.com/Support/Center/Question/Details/B231635\n// remove me when fixed\nif ($.validator) {\n $.validator.methods.remote = function (value, element, param) {\n var editor = MVCx.GetEditorByElement(element);\n if (editor && param && param.data && param.data[editor.name])\n param.data[editor.name] = editor.GetValueString();\n\n if (this.optional(element))\n return \"dependency-mismatch\";\n\n var previous = this.previousValue(element);\n if (!this.settings.messages[element.name])\n this.settings.messages[element.name] = {};\n previous.originalMessage = this.settings.messages[element.name].remote;\n this.settings.messages[element.name].remote = previous.message;\n\n param = typeof param == \"string\" && { url: param } || param;\n\n if (previous.old !== value) {\n previous.old = value;\n var validator = this;\n this.startRequest(element);\n var data = {};\n data[element.name] = value;\n $.ajax($.extend(true, {\n url: param,\n mode: \"abort\",\n port: \"validate\" + element.name,\n dataType: \"json\",\n data: data,\n success: function (response) {\n validator.settings.messages[element.name].remote = previous.originalMessage;\n var valid = response === true;\n if (valid) {\n var submitted = validator.formSubmitted;\n validator.prepareElement(element);\n validator.formSubmitted = submitted;\n validator.successList.push(element);\n validator.showErrors();\n } else {\n var errors = {};\n var message = (previous.message = response || validator.defaultMessage(element, \"remote\"));\n errors[element.name] = $.isFunction(message) ? message(value) : message;\n validator.showErrors(errors);\n }\n previous.valid = valid;\n validator.stopRequest(element, valid);\n }\n }, param));\n return \"pending\";\n } else if (this.pending[element.name]) {\n return \"pending\";\n }\n return previous.valid;\n }\n}\n\n\n","var webooker = webooker || {};\n\nwebooker.Wizard = function (formId, tabControlName, nextButtonName, prevButtonName, finishButtonName,\n onActiveTabChanging, onActiveTabChanged) {\n\n var _formId = formId,\n _tabControlName = tabControlName,\n _nextButtonName = nextButtonName,\n _prevButtonName = prevButtonName,\n _finishButtonName = finishButtonName,\n _onActiveTabchanging = onActiveTabChanging,\n _onActiveTabchanged = onActiveTabChanged,\n _tabValidated = [];\n\n getForm = function () {\n return $('#' + _formId);\n },\n\n getTabControl = function () {\n return window[_tabControlName];\n },\n\n getNextButton = function () {\n return $('#' + _nextButtonName);\n },\n\n getPrevButton = function () {\n return $('#' + _prevButtonName);\n },\n\n getFinishButton = function () {\n return $('#' + _finishButtonName);\n },\n\n activeTabchanged = function (s, e) {\n var form = getForm();\n clearValidationSummary(form);\n\n if (_tabValidated[e.tab.index] === true) {\n form.validate();\n form.valid();\n }\n\n if (e.tab.index > 0) {\n getPrevButton().show()\n } else {\n getPrevButton().hide();\n }\n\n if (e.tab.index < (s.GetTabCount() - 1)) {\n getNextButton().show();\n } else {\n getNextButton().hide();\n }\n\n if (e.tab.index === (s.GetTabCount() - 1)) {\n getFinishButton().show();\n } else {\n getFinishButton().hide();\n }\n\n if (_onActiveTabchanged) {\n _onActiveTabchanged(form, e);\n }\n },\n\n activeTabChanging = function (s, e) {\n var form = getForm();\n\n // Going forward\n if (e.tab.index > s.GetActiveTabIndex()) {\n _tabValidated[s.GetActiveTabIndex()] = true;\n // validate current tab\n form.validate();\n if (form.valid()) {\n e.tab.SetEnabled(true);\n } else {\n disableAllTabsAfterActive();\n e.cancel = true;\n }\n }\n\n if (_onActiveTabchanging) {\n _onActiveTabchanging(form, e);\n }\n },\n\n nextButtonClick = function () {\n var tabControl = getTabControl();\n tabControl.SetActiveTab(tabControl.GetTab(tabControl.GetActiveTabIndex() + 1));\n },\n\n prevButtonClick = function () {\n var tabControl = getTabControl();\n tabControl.SetActiveTabIndex(tabControl.GetActiveTabIndex() - 1);\n },\n\n finishButtonClick = function () {\n var form = getForm();\n form.validate();\n if (form.valid()) {\n form.submit();\n }\n },\n\n disableAllTabsAfterActive = function () {\n var s = getTabControl();\n for (var i = s.GetActiveTabIndex() + 1; i < s.GetTabCount() ; i++) {\n var tab = s.GetTab(i);\n tab.SetEnabled(false);\n }\n },\n\n clearValidationSummary = function(form) {\n form.find(\"[data-valmsg-summary=true]\")\n .removeClass(\"validation-summary-errors\")\n .addClass(\"validation-summary-valid\")\n .find(\"ul\").empty();\n },\n \n hookTabControl = function () {\n var tabControl = getTabControl();\n tabControl.ActiveTabChanged.AddHandler(activeTabchanged);\n tabControl.ActiveTabChanging.AddHandler(activeTabChanging);\n },\n\n hookButtons = function () {\n getNextButton().click(nextButtonClick);\n getPrevButton().click(prevButtonClick);\n getFinishButton().click(finishButtonClick);\n },\n\n\n initialize = function () {\n hookTabControl();\n hookButtons();\n disableAllTabsAfterActive();\n }\n\n return {\n Initialize: initialize,\n };\n}","/*\n http://www.JSON.org/json2.js\n 2011-10-19\n\n Public Domain.\n\n NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.\n\n See http://www.JSON.org/js.html\n\n\n This code should be minified before deployment.\n See http://javascript.crockford.com/jsmin.html\n\n USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO\n NOT CONTROL.\n\n\n This file creates a global JSON object containing two methods: stringify\n and parse.\n\n JSON.stringify(value, replacer, space)\n value any JavaScript value, usually an object or array.\n\n replacer an optional parameter that determines how object\n values are stringified for objects. It can be a\n function or an array of strings.\n\n space an optional parameter that specifies the indentation\n of nested structures. If it is omitted, the text will\n be packed without extra whitespace. If it is a number,\n it will specify the number of spaces to indent at each\n level. If it is a string (such as '\\t' or ' '),\n it contains the characters used to indent at each level.\n\n This method produces a JSON text from a JavaScript value.\n\n When an object value is found, if the object contains a toJSON\n method, its toJSON method will be called and the result will be\n stringified. A toJSON method does not serialize: it returns the\n value represented by the name/value pair that should be serialized,\n or undefined if nothing should be serialized. The toJSON method\n will be passed the key associated with the value, and this will be\n bound to the value\n\n For example, this would serialize Dates as ISO strings.\n\n Date.prototype.toJSON = function (key) {\n function f(n) {\n // Format integers to have at least two digits.\n return n < 10 ? '0' + n : n;\n }\n\n return this.getUTCFullYear() + '-' +\n f(this.getUTCMonth() + 1) + '-' +\n f(this.getUTCDate()) + 'T' +\n f(this.getUTCHours()) + ':' +\n f(this.getUTCMinutes()) + ':' +\n f(this.getUTCSeconds()) + 'Z';\n };\n\n You can provide an optional replacer method. It will be passed the\n key and value of each member, with this bound to the containing\n object. The value that is returned from your method will be\n serialized. If your method returns undefined, then the member will\n be excluded from the serialization.\n\n If the replacer parameter is an array of strings, then it will be\n used to select the members to be serialized. It filters the results\n such that only members with keys listed in the replacer array are\n stringified.\n\n Values that do not have JSON representations, such as undefined or\n functions, will not be serialized. Such values in objects will be\n dropped; in arrays they will be replaced with null. You can use\n a replacer function to replace those with JSON values.\n JSON.stringify(undefined) returns undefined.\n\n The optional space parameter produces a stringification of the\n value that is filled with line breaks and indentation to make it\n easier to read.\n\n If the space parameter is a non-empty string, then that string will\n be used for indentation. If the space parameter is a number, then\n the indentation will be that many spaces.\n\n Example:\n\n text = JSON.stringify(['e', {pluribus: 'unum'}]);\n // text is '[\"e\",{\"pluribus\":\"unum\"}]'\n\n\n text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\\t');\n // text is '[\\n\\t\"e\",\\n\\t{\\n\\t\\t\"pluribus\": \"unum\"\\n\\t}\\n]'\n\n text = JSON.stringify([new Date()], function (key, value) {\n return this[key] instanceof Date ?\n 'Date(' + this[key] + ')' : value;\n });\n // text is '[\"Date(---current time---)\"]'\n\n\n JSON.parse(text, reviver)\n This method parses a JSON text to produce an object or array.\n It can throw a SyntaxError exception.\n\n The optional reviver parameter is a function that can filter and\n transform the results. It receives each of the keys and values,\n and its return value is used instead of the original value.\n If it returns what it received, then the structure is not modified.\n If it returns undefined then the member is deleted.\n\n Example:\n\n // Parse the text. Values that look like ISO date strings will\n // be converted to Date objects.\n\n myData = JSON.parse(text, function (key, value) {\n var a;\n if (typeof value === 'string') {\n a =\n/^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.\\d*)?)Z$/.exec(value);\n if (a) {\n return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],\n +a[5], +a[6]));\n }\n }\n return value;\n });\n\n myData = JSON.parse('[\"Date(09/09/2001)\"]', function (key, value) {\n var d;\n if (typeof value === 'string' &&\n value.slice(0, 5) === 'Date(' &&\n value.slice(-1) === ')') {\n d = new Date(value.slice(5, -1));\n if (d) {\n return d;\n }\n }\n return value;\n });\n\n\n This is a reference implementation. You are free to copy, modify, or\n redistribute.\n*/\n\n/*jslint evil: true, regexp: true */\n\n/*members \"\", \"\\b\", \"\\t\", \"\\n\", \"\\f\", \"\\r\", \"\\\"\", JSON, \"\\\\\", apply,\n call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,\n getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,\n lastIndex, length, parse, prototype, push, replace, slice, stringify,\n test, toJSON, toString, valueOf\n*/\n\n\n// Create a JSON object only if one does not already exist. We create the\n// methods in a closure to avoid creating global variables.\n\nvar JSON;\nif (!JSON) {\n JSON = {};\n}\n\n(function () {\n 'use strict';\n\n function f(n) {\n // Format integers to have at least two digits.\n return n < 10 ? '0' + n : n;\n }\n\n if (typeof Date.prototype.toJSON !== 'function') {\n\n Date.prototype.toJSON = function (key) {\n\n return isFinite(this.valueOf())\n ? this.getUTCFullYear() + '-' +\n f(this.getUTCMonth() + 1) + '-' +\n f(this.getUTCDate()) + 'T' +\n f(this.getUTCHours()) + ':' +\n f(this.getUTCMinutes()) + ':' +\n f(this.getUTCSeconds()) + 'Z'\n : null;\n };\n\n String.prototype.toJSON =\n Number.prototype.toJSON =\n Boolean.prototype.toJSON = function (key) {\n return this.valueOf();\n };\n }\n\n var cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n gap,\n indent,\n meta = { // table of character substitutions\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"' : '\\\\\"',\n '\\\\': '\\\\\\\\'\n },\n rep;\n\n\n function quote(string) {\n\n// If the string contains no control characters, no quote characters, and no\n// backslash characters, then we can safely slap some quotes around it.\n// Otherwise we must also replace the offending characters with safe escape\n// sequences.\n\n escapable.lastIndex = 0;\n return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n var c = meta[a];\n return typeof c === 'string'\n ? c\n : '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' : '\"' + string + '\"';\n }\n\n\n function str(key, holder) {\n\n// Produce a string from holder[key].\n\n var i, // The loop counter.\n k, // The member key.\n v, // The member value.\n length,\n mind = gap,\n partial,\n value = holder[key];\n\n// If the value has a toJSON method, call it to obtain a replacement value.\n\n if (value && typeof value === 'object' &&\n typeof value.toJSON === 'function') {\n value = value.toJSON(key);\n }\n\n// If we were called with a replacer function, then call the replacer to\n// obtain a replacement value.\n\n if (typeof rep === 'function') {\n value = rep.call(holder, key, value);\n }\n\n// What happens next depends on the value's type.\n\n switch (typeof value) {\n case 'string':\n return quote(value);\n\n case 'number':\n\n// JSON numbers must be finite. Encode non-finite numbers as null.\n\n return isFinite(value) ? String(value) : 'null';\n\n case 'boolean':\n case 'null':\n\n// If the value is a boolean or null, convert it to a string. Note:\n// typeof null does not produce 'null'. The case is included here in\n// the remote chance that this gets fixed someday.\n\n return String(value);\n\n// If the type is 'object', we might be dealing with an object or an array or\n// null.\n\n case 'object':\n\n// Due to a specification blunder in ECMAScript, typeof null is 'object',\n// so watch out for that case.\n\n if (!value) {\n return 'null';\n }\n\n// Make an array to hold the partial results of stringifying this object value.\n\n gap += indent;\n partial = [];\n\n// Is the value an array?\n\n if (Object.prototype.toString.apply(value) === '[object Array]') {\n\n// The value is an array. Stringify every element. Use null as a placeholder\n// for non-JSON values.\n\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || 'null';\n }\n\n// Join all of the elements together, separated with commas, and wrap them in\n// brackets.\n\n v = partial.length === 0\n ? '[]'\n : gap\n ? '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']'\n : '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n\n// If the replacer is an array, use it to select the members to be stringified.\n\n if (rep && typeof rep === 'object') {\n length = rep.length;\n for (i = 0; i < length; i += 1) {\n if (typeof rep[i] === 'string') {\n k = rep[i];\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n } else {\n\n// Otherwise, iterate through all of the keys in the object.\n\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n }\n\n// Join all of the member texts together, separated with commas,\n// and wrap them in braces.\n\n v = partial.length === 0\n ? '{}'\n : gap\n ? '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}'\n : '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n }\n\n// If the JSON object does not yet have a stringify method, give it one.\n\n if (typeof JSON.stringify !== 'function') {\n JSON.stringify = function (value, replacer, space) {\n\n// The stringify method takes a value and an optional replacer, and an optional\n// space parameter, and returns a JSON text. The replacer can be a function\n// that can replace values, or an array of strings that will select the keys.\n// A default replacer method can be provided. Use of the space parameter can\n// produce text that is more easily readable.\n\n var i;\n gap = '';\n indent = '';\n\n// If the space parameter is a number, make an indent string containing that\n// many spaces.\n\n if (typeof space === 'number') {\n for (i = 0; i < space; i += 1) {\n indent += ' ';\n }\n\n// If the space parameter is a string, it will be used as the indent string.\n\n } else if (typeof space === 'string') {\n indent = space;\n }\n\n// If there is a replacer, it must be a function or an array.\n// Otherwise, throw an error.\n\n rep = replacer;\n if (replacer && typeof replacer !== 'function' &&\n (typeof replacer !== 'object' ||\n typeof replacer.length !== 'number')) {\n throw new Error('JSON.stringify');\n }\n\n// Make a fake root object containing our value under the key of ''.\n// Return the result of stringifying the value.\n\n return str('', {'': value});\n };\n }\n\n\n// If the JSON object does not yet have a parse method, give it one.\n\n if (typeof JSON.parse !== 'function') {\n JSON.parse = function (text, reviver) {\n\n// The parse method takes a text and an optional reviver function, and returns\n// a JavaScript value if the text is a valid JSON text.\n\n var j;\n\n function walk(holder, key) {\n\n// The walk method is used to recursively walk the resulting structure so\n// that modifications can be made.\n\n var k, v, value = holder[key];\n if (value && typeof value === 'object') {\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = walk(value, k);\n if (v !== undefined) {\n value[k] = v;\n } else {\n delete value[k];\n }\n }\n }\n }\n return reviver.call(holder, key, value);\n }\n\n\n// Parsing happens in four stages. In the first stage, we replace certain\n// Unicode characters with escape sequences. JavaScript handles many characters\n// incorrectly, either silently deleting them, or treating them as line endings.\n\n text = String(text);\n cx.lastIndex = 0;\n if (cx.test(text)) {\n text = text.replace(cx, function (a) {\n return '\\\\u' +\n ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n });\n }\n\n// In the second stage, we run the text against regular expressions that look\n// for non-JSON patterns. We are especially concerned with '()' and 'new'\n// because they can cause invocation, and '=' because it can cause mutation.\n// But just to be safe, we want to reject all unexpected forms.\n\n// We split the second stage into 4 regexp operations in order to work around\n// crippling inefficiencies in IE's and Safari's regexp engines. First we\n// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we\n// replace all simple value tokens with ']' characters. Third, we delete all\n// open brackets that follow a colon or comma or that begin the text. Finally,\n// we look to see that the remaining characters are only whitespace or ']' or\n// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.\n\n if (/^[\\],:{}\\s]*$/\n .test(text.replace(/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')\n .replace(/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g, ']')\n .replace(/(?:^|:|,)(?:\\s*\\[)+/g, ''))) {\n\n// In the third stage we use the eval function to compile the text into a\n// JavaScript structure. The '{' operator is subject to a syntactic ambiguity\n// in JavaScript: it can begin a block or an object literal. We wrap the text\n// in parens to eliminate the ambiguity.\n\n j = eval('(' + text + ')');\n\n// In the optional fourth stage, we recursively walk the new structure, passing\n// each name/value pair to a reviver function for possible transformation.\n\n return typeof reviver === 'function'\n ? walk({'': j}, '')\n : j;\n }\n\n// If the text is not JSON parseable, then a SyntaxError is thrown.\n\n throw new SyntaxError('JSON.parse');\n };\n }\n}());\n","/*!\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","/*! jQuery UI - v1.10.0 - 2013-02-14\n* http://jqueryui.com\n* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.draggable.js\n* Copyright (c) 2013 jQuery Foundation and other contributors Licensed MIT */\n\n(function( $, undefined ) {\n\nvar uuid = 0,\n\truniqueId = /^ui-id-\\d+$/;\n\n// prevent duplicate loading\n// this is only a problem because we proxy existing functions\n// and we don't want to double proxy them\n$.ui = $.ui || {};\nif ( $.ui.version ) {\n\treturn;\n}\n\n$.extend( $.ui, {\n\tversion: \"1.10.0\",\n\n\tkeyCode: {\n\t\tBACKSPACE: 8,\n\t\tCOMMA: 188,\n\t\tDELETE: 46,\n\t\tDOWN: 40,\n\t\tEND: 35,\n\t\tENTER: 13,\n\t\tESCAPE: 27,\n\t\tHOME: 36,\n\t\tLEFT: 37,\n\t\tNUMPAD_ADD: 107,\n\t\tNUMPAD_DECIMAL: 110,\n\t\tNUMPAD_DIVIDE: 111,\n\t\tNUMPAD_ENTER: 108,\n\t\tNUMPAD_MULTIPLY: 106,\n\t\tNUMPAD_SUBTRACT: 109,\n\t\tPAGE_DOWN: 34,\n\t\tPAGE_UP: 33,\n\t\tPERIOD: 190,\n\t\tRIGHT: 39,\n\t\tSPACE: 32,\n\t\tTAB: 9,\n\t\tUP: 38\n\t}\n});\n\n// plugins\n$.fn.extend({\n\t_focus: $.fn.focus,\n\tfocus: function( delay, fn ) {\n\t\treturn typeof delay === \"number\" ?\n\t\t\tthis.each(function() {\n\t\t\t\tvar elem = this;\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t$( elem ).focus();\n\t\t\t\t\tif ( fn ) {\n\t\t\t\t\t\tfn.call( elem );\n\t\t\t\t\t}\n\t\t\t\t}, delay );\n\t\t\t}) :\n\t\t\tthis._focus.apply( this, arguments );\n\t},\n\n\tscrollParent: function() {\n\t\tvar scrollParent;\n\t\tif (($.ui.ie && (/(static|relative)/).test(this.css(\"position\"))) || (/absolute/).test(this.css(\"position\"))) {\n\t\t\tscrollParent = this.parents().filter(function() {\n\t\t\t\treturn (/(relative|absolute|fixed)/).test($.css(this,\"position\")) && (/(auto|scroll)/).test($.css(this,\"overflow\")+$.css(this,\"overflow-y\")+$.css(this,\"overflow-x\"));\n\t\t\t}).eq(0);\n\t\t} else {\n\t\t\tscrollParent = this.parents().filter(function() {\n\t\t\t\treturn (/(auto|scroll)/).test($.css(this,\"overflow\")+$.css(this,\"overflow-y\")+$.css(this,\"overflow-x\"));\n\t\t\t}).eq(0);\n\t\t}\n\n\t\treturn (/fixed/).test(this.css(\"position\")) || !scrollParent.length ? $(document) : scrollParent;\n\t},\n\n\tzIndex: function( zIndex ) {\n\t\tif ( zIndex !== undefined ) {\n\t\t\treturn this.css( \"zIndex\", zIndex );\n\t\t}\n\n\t\tif ( this.length ) {\n\t\t\tvar elem = $( this[ 0 ] ), position, value;\n\t\t\twhile ( elem.length && elem[ 0 ] !== document ) {\n\t\t\t\t// Ignore z-index if position is set to a value where z-index is ignored by the browser\n\t\t\t\t// This makes behavior of this function consistent across browsers\n\t\t\t\t// WebKit always returns auto if the element is positioned\n\t\t\t\tposition = elem.css( \"position\" );\n\t\t\t\tif ( position === \"absolute\" || position === \"relative\" || position === \"fixed\" ) {\n\t\t\t\t\t// IE returns 0 when zIndex is not specified\n\t\t\t\t\t// other browsers return a string\n\t\t\t\t\t// we ignore the case of nested elements with an explicit value of 0\n\t\t\t\t\t//
\n\t\t\t\t\tvalue = parseInt( elem.css( \"zIndex\" ), 10 );\n\t\t\t\t\tif ( !isNaN( value ) && value !== 0 ) {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telem = elem.parent();\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t},\n\n\tuniqueId: function() {\n\t\treturn this.each(function() {\n\t\t\tif ( !this.id ) {\n\t\t\t\tthis.id = \"ui-id-\" + (++uuid);\n\t\t\t}\n\t\t});\n\t},\n\n\tremoveUniqueId: function() {\n\t\treturn this.each(function() {\n\t\t\tif ( runiqueId.test( this.id ) ) {\n\t\t\t\t$( this ).removeAttr( \"id\" );\n\t\t\t}\n\t\t});\n\t}\n});\n\n// selectors\nfunction focusable( element, isTabIndexNotNaN ) {\n\tvar map, mapName, img,\n\t\tnodeName = element.nodeName.toLowerCase();\n\tif ( \"area\" === nodeName ) {\n\t\tmap = element.parentNode;\n\t\tmapName = map.name;\n\t\tif ( !element.href || !mapName || map.nodeName.toLowerCase() !== \"map\" ) {\n\t\t\treturn false;\n\t\t}\n\t\timg = $( \"img[usemap=#\" + mapName + \"]\" )[0];\n\t\treturn !!img && visible( img );\n\t}\n\treturn ( /input|select|textarea|button|object/.test( nodeName ) ?\n\t\t!element.disabled :\n\t\t\"a\" === nodeName ?\n\t\t\telement.href || isTabIndexNotNaN :\n\t\t\tisTabIndexNotNaN) &&\n\t\t// the element and all of its ancestors must be visible\n\t\tvisible( element );\n}\n\nfunction visible( element ) {\n\treturn $.expr.filters.visible( element ) &&\n\t\t!$( element ).parents().addBack().filter(function() {\n\t\t\treturn $.css( this, \"visibility\" ) === \"hidden\";\n\t\t}).length;\n}\n\n$.extend( $.expr[ \":\" ], {\n\tdata: $.expr.createPseudo ?\n\t\t$.expr.createPseudo(function( dataName ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn !!$.data( elem, dataName );\n\t\t\t};\n\t\t}) :\n\t\t// support: jQuery <1.8\n\t\tfunction( elem, i, match ) {\n\t\t\treturn !!$.data( elem, match[ 3 ] );\n\t\t},\n\n\tfocusable: function( element ) {\n\t\treturn focusable( element, !isNaN( $.attr( element, \"tabindex\" ) ) );\n\t},\n\n\ttabbable: function( element ) {\n\t\tvar tabIndex = $.attr( element, \"tabindex\" ),\n\t\t\tisTabIndexNaN = isNaN( tabIndex );\n\t\treturn ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );\n\t}\n});\n\n// support: jQuery <1.8\nif ( !$( \"\" ).outerWidth( 1 ).jquery ) {\n\t$.each( [ \"Width\", \"Height\" ], function( i, name ) {\n\t\tvar side = name === \"Width\" ? [ \"Left\", \"Right\" ] : [ \"Top\", \"Bottom\" ],\n\t\t\ttype = name.toLowerCase(),\n\t\t\torig = {\n\t\t\t\tinnerWidth: $.fn.innerWidth,\n\t\t\t\tinnerHeight: $.fn.innerHeight,\n\t\t\t\touterWidth: $.fn.outerWidth,\n\t\t\t\touterHeight: $.fn.outerHeight\n\t\t\t};\n\n\t\tfunction reduce( elem, size, border, margin ) {\n\t\t\t$.each( side, function() {\n\t\t\t\tsize -= parseFloat( $.css( elem, \"padding\" + this ) ) || 0;\n\t\t\t\tif ( border ) {\n\t\t\t\t\tsize -= parseFloat( $.css( elem, \"border\" + this + \"Width\" ) ) || 0;\n\t\t\t\t}\n\t\t\t\tif ( margin ) {\n\t\t\t\t\tsize -= parseFloat( $.css( elem, \"margin\" + this ) ) || 0;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn size;\n\t\t}\n\n\t\t$.fn[ \"inner\" + name ] = function( size ) {\n\t\t\tif ( size === undefined ) {\n\t\t\t\treturn orig[ \"inner\" + name ].call( this );\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\t$( this ).css( type, reduce( this, size ) + \"px\" );\n\t\t\t});\n\t\t};\n\n\t\t$.fn[ \"outer\" + name] = function( size, margin ) {\n\t\t\tif ( typeof size !== \"number\" ) {\n\t\t\t\treturn orig[ \"outer\" + name ].call( this, size );\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\t$( this).css( type, reduce( this, size, true, margin ) + \"px\" );\n\t\t\t});\n\t\t};\n\t});\n}\n\n// support: jQuery <1.8\nif ( !$.fn.addBack ) {\n\t$.fn.addBack = function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t};\n}\n\n// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413)\nif ( $( \"\" ).data( \"a-b\", \"a\" ).removeData( \"a-b\" ).data( \"a-b\" ) ) {\n\t$.fn.removeData = (function( removeData ) {\n\t\treturn function( key ) {\n\t\t\tif ( arguments.length ) {\n\t\t\t\treturn removeData.call( this, $.camelCase( key ) );\n\t\t\t} else {\n\t\t\t\treturn removeData.call( this );\n\t\t\t}\n\t\t};\n\t})( $.fn.removeData );\n}\n\n\n\n\n\n// deprecated\n$.ui.ie = !!/msie [\\w.]+/.exec( navigator.userAgent.toLowerCase() );\n\n$.support.selectstart = \"onselectstart\" in document.createElement( \"div\" );\n$.fn.extend({\n\tdisableSelection: function() {\n\t\treturn this.bind( ( $.support.selectstart ? \"selectstart\" : \"mousedown\" ) +\n\t\t\t\".ui-disableSelection\", function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t});\n\t},\n\n\tenableSelection: function() {\n\t\treturn this.unbind( \".ui-disableSelection\" );\n\t}\n});\n\n$.extend( $.ui, {\n\t// $.ui.plugin is deprecated. Use the proxy pattern instead.\n\tplugin: {\n\t\tadd: function( module, option, set ) {\n\t\t\tvar i,\n\t\t\t\tproto = $.ui[ module ].prototype;\n\t\t\tfor ( i in set ) {\n\t\t\t\tproto.plugins[ i ] = proto.plugins[ i ] || [];\n\t\t\t\tproto.plugins[ i ].push( [ option, set[ i ] ] );\n\t\t\t}\n\t\t},\n\t\tcall: function( instance, name, args ) {\n\t\t\tvar i,\n\t\t\t\tset = instance.plugins[ name ];\n\t\t\tif ( !set || !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor ( i = 0; i < set.length; i++ ) {\n\t\t\t\tif ( instance.options[ set[ i ][ 0 ] ] ) {\n\t\t\t\t\tset[ i ][ 1 ].apply( instance.element, args );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// only used by resizable\n\thasScroll: function( el, a ) {\n\n\t\t//If overflow is hidden, the element might have extra content, but the user wants to hide it\n\t\tif ( $( el ).css( \"overflow\" ) === \"hidden\") {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar scroll = ( a && a === \"left\" ) ? \"scrollLeft\" : \"scrollTop\",\n\t\t\thas = false;\n\n\t\tif ( el[ scroll ] > 0 ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// TODO: determine which cases actually cause this to happen\n\t\t// if the element doesn't have the scroll set, see if it's possible to\n\t\t// set the scroll\n\t\tel[ scroll ] = 1;\n\t\thas = ( el[ scroll ] > 0 );\n\t\tel[ scroll ] = 0;\n\t\treturn has;\n\t}\n});\n\n})( jQuery );\n(function( $, undefined ) {\n\nvar uuid = 0,\n\tslice = Array.prototype.slice,\n\t_cleanData = $.cleanData;\n$.cleanData = function( elems ) {\n\tfor ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {\n\t\ttry {\n\t\t\t$( elem ).triggerHandler( \"remove\" );\n\t\t// http://bugs.jquery.com/ticket/8235\n\t\t} catch( e ) {}\n\t}\n\t_cleanData( elems );\n};\n\n$.widget = function( name, base, prototype ) {\n\tvar fullName, existingConstructor, constructor, basePrototype,\n\t\t// proxiedPrototype allows the provided prototype to remain unmodified\n\t\t// so that it can be used as a mixin for multiple widgets (#8876)\n\t\tproxiedPrototype = {},\n\t\tnamespace = name.split( \".\" )[ 0 ];\n\n\tname = name.split( \".\" )[ 1 ];\n\tfullName = namespace + \"-\" + name;\n\n\tif ( !prototype ) {\n\t\tprototype = base;\n\t\tbase = $.Widget;\n\t}\n\n\t// create selector for plugin\n\t$.expr[ \":\" ][ fullName.toLowerCase() ] = function( elem ) {\n\t\treturn !!$.data( elem, fullName );\n\t};\n\n\t$[ namespace ] = $[ namespace ] || {};\n\texistingConstructor = $[ namespace ][ name ];\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\n\t\t// allow instantiation without \"new\" keyword\n\t\tif ( !this._createWidget ) {\n\t\t\treturn new constructor( options, element );\n\t\t}\n\n\t\t// allow instantiation without initializing for simple inheritance\n\t\t// must use \"new\" keyword (the code above always passes args)\n\t\tif ( arguments.length ) {\n\t\t\tthis._createWidget( options, element );\n\t\t}\n\t};\n\t// extend with the existing constructor to carry over any static properties\n\t$.extend( constructor, existingConstructor, {\n\t\tversion: prototype.version,\n\t\t// copy the object used to create the prototype in case we need to\n\t\t// redefine the widget later\n\t\t_proto: $.extend( {}, prototype ),\n\t\t// track widgets that inherit from this widget in case this widget is\n\t\t// redefined after a widget inherits from it\n\t\t_childConstructors: []\n\t});\n\n\tbasePrototype = new base();\n\t// we need to make the options hash a property directly on the new instance\n\t// otherwise we'll modify the options hash on the prototype that we're\n\t// inheriting from\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\n\t$.each( prototype, function( prop, value ) {\n\t\tif ( !$.isFunction( value ) ) {\n\t\t\tproxiedPrototype[ prop ] = value;\n\t\t\treturn;\n\t\t}\n\t\tproxiedPrototype[ prop ] = (function() {\n\t\t\tvar _super = function() {\n\t\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\n\t\t\t\t},\n\t\t\t\t_superApply = function( args ) {\n\t\t\t\t\treturn base.prototype[ prop ].apply( this, args );\n\t\t\t\t};\n\t\t\treturn function() {\n\t\t\t\tvar __super = this._super,\n\t\t\t\t\t__superApply = this._superApply,\n\t\t\t\t\treturnValue;\n\n\t\t\t\tthis._super = _super;\n\t\t\t\tthis._superApply = _superApply;\n\n\t\t\t\treturnValue = value.apply( this, arguments );\n\n\t\t\t\tthis._super = __super;\n\t\t\t\tthis._superApply = __superApply;\n\n\t\t\t\treturn returnValue;\n\t\t\t};\n\t\t})();\n\t});\n\tconstructor.prototype = $.widget.extend( basePrototype, {\n\t\t// TODO: remove support for widgetEventPrefix\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\n\t\t// don't prefix for widgets that aren't DOM-based\n\t\twidgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix : name\n\t}, proxiedPrototype, {\n\t\tconstructor: constructor,\n\t\tnamespace: namespace,\n\t\twidgetName: name,\n\t\twidgetFullName: fullName\n\t});\n\n\t// If this widget is being redefined then we need to find all widgets that\n\t// are inheriting from it and redefine all of them so that they inherit from\n\t// the new version of this widget. We're essentially trying to replace one\n\t// level in the prototype chain.\n\tif ( existingConstructor ) {\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\n\t\t\tvar childPrototype = child.prototype;\n\n\t\t\t// redefine the child widget using the same prototype that was\n\t\t\t// originally used, but inherit from the new version of the base\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor, child._proto );\n\t\t});\n\t\t// remove the list of existing child constructors from the old constructor\n\t\t// so the old child constructors can be garbage collected\n\t\tdelete existingConstructor._childConstructors;\n\t} else {\n\t\tbase._childConstructors.push( constructor );\n\t}\n\n\t$.widget.bridge( name, constructor );\n};\n\n$.widget.extend = function( target ) {\n\tvar input = slice.call( arguments, 1 ),\n\t\tinputIndex = 0,\n\t\tinputLength = input.length,\n\t\tkey,\n\t\tvalue;\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\n\t\tfor ( key in input[ inputIndex ] ) {\n\t\t\tvalue = input[ inputIndex ][ key ];\n\t\t\tif ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {\n\t\t\t\t// Clone objects\n\t\t\t\tif ( $.isPlainObject( value ) ) {\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\n\t\t\t\t\t\t$.widget.extend( {}, value );\n\t\t\t\t// Copy everything else by reference\n\t\t\t\t} else {\n\t\t\t\t\ttarget[ key ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n};\n\n$.widget.bridge = function( name, object ) {\n\tvar fullName = object.prototype.widgetFullName || name;\n\t$.fn[ name ] = function( options ) {\n\t\tvar isMethodCall = typeof options === \"string\",\n\t\t\targs = slice.call( arguments, 1 ),\n\t\t\treturnValue = this;\n\n\t\t// allow multiple hashes to be passed on init\n\t\toptions = !isMethodCall && args.length ?\n\t\t\t$.widget.extend.apply( null, [ options ].concat(args) ) :\n\t\t\toptions;\n\n\t\tif ( isMethodCall ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar methodValue,\n\t\t\t\t\tinstance = $.data( this, fullName );\n\t\t\t\tif ( !instance ) {\n\t\t\t\t\treturn $.error( \"cannot call methods on \" + name + \" prior to initialization; \" +\n\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\n\t\t\t\t}\n\t\t\t\tif ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === \"_\" ) {\n\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name + \" widget instance\" );\n\t\t\t\t}\n\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\n\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\n\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\n\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\n\t\t\t\t\t\tmethodValue;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tthis.each(function() {\n\t\t\t\tvar instance = $.data( this, fullName );\n\t\t\t\tif ( instance ) {\n\t\t\t\t\tinstance.option( options || {} )._init();\n\t\t\t\t} else {\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn returnValue;\n\t};\n};\n\n$.Widget = function( /* options, element */ ) {};\n$.Widget._childConstructors = [];\n\n$.Widget.prototype = {\n\twidgetName: \"widget\",\n\twidgetEventPrefix: \"\",\n\tdefaultElement: \"
\",\n\toptions: {\n\t\tdisabled: false,\n\n\t\t// callbacks\n\t\tcreate: null\n\t},\n\t_createWidget: function( options, element ) {\n\t\telement = $( element || this.defaultElement || this )[ 0 ];\n\t\tthis.element = $( element );\n\t\tthis.uuid = uuid++;\n\t\tthis.eventNamespace = \".\" + this.widgetName + this.uuid;\n\t\tthis.options = $.widget.extend( {},\n\t\t\tthis.options,\n\t\t\tthis._getCreateOptions(),\n\t\t\toptions );\n\n\t\tthis.bindings = $();\n\t\tthis.hoverable = $();\n\t\tthis.focusable = $();\n\n\t\tif ( element !== this ) {\n\t\t\t$.data( element, this.widgetFullName, this );\n\t\t\tthis._on( true, this.element, {\n\t\t\t\tremove: function( event ) {\n\t\t\t\t\tif ( event.target === element ) {\n\t\t\t\t\t\tthis.destroy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.document = $( element.style ?\n\t\t\t\t// element within the document\n\t\t\t\telement.ownerDocument :\n\t\t\t\t// element is window or document\n\t\t\t\telement.document || element );\n\t\t\tthis.window = $( this.document[0].defaultView || this.document[0].parentWindow );\n\t\t}\n\n\t\tthis._create();\n\t\tthis._trigger( \"create\", null, this._getCreateEventData() );\n\t\tthis._init();\n\t},\n\t_getCreateOptions: $.noop,\n\t_getCreateEventData: $.noop,\n\t_create: $.noop,\n\t_init: $.noop,\n\n\tdestroy: function() {\n\t\tthis._destroy();\n\t\t// we can probably remove the unbind calls in 2.0\n\t\t// all event bindings should go through this._on()\n\t\tthis.element\n\t\t\t.unbind( this.eventNamespace )\n\t\t\t// 1.9 BC for #7810\n\t\t\t// TODO remove dual storage\n\t\t\t.removeData( this.widgetName )\n\t\t\t.removeData( this.widgetFullName )\n\t\t\t// support: jquery <1.6.3\n\t\t\t// http://bugs.jquery.com/ticket/9413\n\t\t\t.removeData( $.camelCase( this.widgetFullName ) );\n\t\tthis.widget()\n\t\t\t.unbind( this.eventNamespace )\n\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t.removeClass(\n\t\t\t\tthis.widgetFullName + \"-disabled \" +\n\t\t\t\t\"ui-state-disabled\" );\n\n\t\t// clean up events and states\n\t\tthis.bindings.unbind( this.eventNamespace );\n\t\tthis.hoverable.removeClass( \"ui-state-hover\" );\n\t\tthis.focusable.removeClass( \"ui-state-focus\" );\n\t},\n\t_destroy: $.noop,\n\n\twidget: function() {\n\t\treturn this.element;\n\t},\n\n\toption: function( key, value ) {\n\t\tvar options = key,\n\t\t\tparts,\n\t\t\tcurOption,\n\t\t\ti;\n\n\t\tif ( arguments.length === 0 ) {\n\t\t\t// don't return a reference to the internal hash\n\t\t\treturn $.widget.extend( {}, this.options );\n\t\t}\n\n\t\tif ( typeof key === \"string\" ) {\n\t\t\t// handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\n\t\t\toptions = {};\n\t\t\tparts = key.split( \".\" );\n\t\t\tkey = parts.shift();\n\t\t\tif ( parts.length ) {\n\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\n\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\n\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\n\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\n\t\t\t\t}\n\t\t\t\tkey = parts.pop();\n\t\t\t\tif ( value === undefined ) {\n\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\n\t\t\t\t}\n\t\t\t\tcurOption[ key ] = value;\n\t\t\t} else {\n\t\t\t\tif ( value === undefined ) {\n\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\n\t\t\t\t}\n\t\t\t\toptions[ key ] = value;\n\t\t\t}\n\t\t}\n\n\t\tthis._setOptions( options );\n\n\t\treturn this;\n\t},\n\t_setOptions: function( options ) {\n\t\tvar key;\n\n\t\tfor ( key in options ) {\n\t\t\tthis._setOption( key, options[ key ] );\n\t\t}\n\n\t\treturn this;\n\t},\n\t_setOption: function( key, value ) {\n\t\tthis.options[ key ] = value;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.widget()\n\t\t\t\t.toggleClass( this.widgetFullName + \"-disabled ui-state-disabled\", !!value )\n\t\t\t\t.attr( \"aria-disabled\", value );\n\t\t\tthis.hoverable.removeClass( \"ui-state-hover\" );\n\t\t\tthis.focusable.removeClass( \"ui-state-focus\" );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tenable: function() {\n\t\treturn this._setOption( \"disabled\", false );\n\t},\n\tdisable: function() {\n\t\treturn this._setOption( \"disabled\", true );\n\t},\n\n\t_on: function( suppressDisabledCheck, element, handlers ) {\n\t\tvar delegateElement,\n\t\t\tinstance = this;\n\n\t\t// no suppressDisabledCheck flag, shuffle arguments\n\t\tif ( typeof suppressDisabledCheck !== \"boolean\" ) {\n\t\t\thandlers = element;\n\t\t\telement = suppressDisabledCheck;\n\t\t\tsuppressDisabledCheck = false;\n\t\t}\n\n\t\t// no element argument, shuffle and use this.element\n\t\tif ( !handlers ) {\n\t\t\thandlers = element;\n\t\t\telement = this.element;\n\t\t\tdelegateElement = this.widget();\n\t\t} else {\n\t\t\t// accept selectors, DOM elements\n\t\t\telement = delegateElement = $( element );\n\t\t\tthis.bindings = this.bindings.add( element );\n\t\t}\n\n\t\t$.each( handlers, function( event, handler ) {\n\t\t\tfunction handlerProxy() {\n\t\t\t\t// allow widgets to customize the disabled handling\n\t\t\t\t// - disabled as an array instead of boolean\n\t\t\t\t// - disabled class as method for disabling individual parts\n\t\t\t\tif ( !suppressDisabledCheck &&\n\t\t\t\t\t\t( instance.options.disabled === true ||\n\t\t\t\t\t\t\t$( this ).hasClass( \"ui-state-disabled\" ) ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t\t.apply( instance, arguments );\n\t\t\t}\n\n\t\t\t// copy the guid so direct unbinding works\n\t\t\tif ( typeof handler !== \"string\" ) {\n\t\t\t\thandlerProxy.guid = handler.guid =\n\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\n\t\t\t}\n\n\t\t\tvar match = event.match( /^(\\w+)\\s*(.*)$/ ),\n\t\t\t\teventName = match[1] + instance.eventNamespace,\n\t\t\t\tselector = match[2];\n\t\t\tif ( selector ) {\n\t\t\t\tdelegateElement.delegate( selector, eventName, handlerProxy );\n\t\t\t} else {\n\t\t\t\telement.bind( eventName, handlerProxy );\n\t\t\t}\n\t\t});\n\t},\n\n\t_off: function( element, eventName ) {\n\t\teventName = (eventName || \"\").split( \" \" ).join( this.eventNamespace + \" \" ) + this.eventNamespace;\n\t\telement.unbind( eventName ).undelegate( eventName );\n\t},\n\n\t_delay: function( handler, delay ) {\n\t\tfunction handlerProxy() {\n\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t.apply( instance, arguments );\n\t\t}\n\t\tvar instance = this;\n\t\treturn setTimeout( handlerProxy, delay || 0 );\n\t},\n\n\t_hoverable: function( element ) {\n\t\tthis.hoverable = this.hoverable.add( element );\n\t\tthis._on( element, {\n\t\t\tmouseenter: function( event ) {\n\t\t\t\t$( event.currentTarget ).addClass( \"ui-state-hover\" );\n\t\t\t},\n\t\t\tmouseleave: function( event ) {\n\t\t\t\t$( event.currentTarget ).removeClass( \"ui-state-hover\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_focusable: function( element ) {\n\t\tthis.focusable = this.focusable.add( element );\n\t\tthis._on( element, {\n\t\t\tfocusin: function( event ) {\n\t\t\t\t$( event.currentTarget ).addClass( \"ui-state-focus\" );\n\t\t\t},\n\t\t\tfocusout: function( event ) {\n\t\t\t\t$( event.currentTarget ).removeClass( \"ui-state-focus\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_trigger: function( type, event, data ) {\n\t\tvar prop, orig,\n\t\t\tcallback = this.options[ type ];\n\n\t\tdata = data || {};\n\t\tevent = $.Event( event );\n\t\tevent.type = ( type === this.widgetEventPrefix ?\n\t\t\ttype :\n\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\n\t\t// the original event may come from any element\n\t\t// so we need to reset the target on the new event\n\t\tevent.target = this.element[ 0 ];\n\n\t\t// copy original event properties over to the new event\n\t\torig = event.originalEvent;\n\t\tif ( orig ) {\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tif ( !( prop in event ) ) {\n\t\t\t\t\tevent[ prop ] = orig[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element.trigger( event, data );\n\t\treturn !( $.isFunction( callback ) &&\n\t\t\tcallback.apply( this.element[0], [ event ].concat( data ) ) === false ||\n\t\t\tevent.isDefaultPrevented() );\n\t}\n};\n\n$.each( { show: \"fadeIn\", hide: \"fadeOut\" }, function( method, defaultEffect ) {\n\t$.Widget.prototype[ \"_\" + method ] = function( element, options, callback ) {\n\t\tif ( typeof options === \"string\" ) {\n\t\t\toptions = { effect: options };\n\t\t}\n\t\tvar hasOptions,\n\t\t\teffectName = !options ?\n\t\t\t\tmethod :\n\t\t\t\toptions === true || typeof options === \"number\" ?\n\t\t\t\t\tdefaultEffect :\n\t\t\t\t\toptions.effect || defaultEffect;\n\t\toptions = options || {};\n\t\tif ( typeof options === \"number\" ) {\n\t\t\toptions = { duration: options };\n\t\t}\n\t\thasOptions = !$.isEmptyObject( options );\n\t\toptions.complete = callback;\n\t\tif ( options.delay ) {\n\t\t\telement.delay( options.delay );\n\t\t}\n\t\tif ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {\n\t\t\telement[ method ]( options );\n\t\t} else if ( effectName !== method && element[ effectName ] ) {\n\t\t\telement[ effectName ]( options.duration, options.easing, callback );\n\t\t} else {\n\t\t\telement.queue(function( next ) {\n\t\t\t\t$( this )[ method ]();\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback.call( element[ 0 ] );\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t});\n\t\t}\n\t};\n});\n\n})( jQuery );\n(function( $, undefined ) {\n\nvar mouseHandled = false;\n$( document ).mouseup( function() {\n\tmouseHandled = false;\n});\n\n$.widget(\"ui.mouse\", {\n\tversion: \"1.10.0\",\n\toptions: {\n\t\tcancel: \"input,textarea,button,select,option\",\n\t\tdistance: 1,\n\t\tdelay: 0\n\t},\n\t_mouseInit: function() {\n\t\tvar that = this;\n\n\t\tthis.element\n\t\t\t.bind(\"mousedown.\"+this.widgetName, function(event) {\n\t\t\t\treturn that._mouseDown(event);\n\t\t\t})\n\t\t\t.bind(\"click.\"+this.widgetName, function(event) {\n\t\t\t\tif (true === $.data(event.target, that.widgetName + \".preventClickEvent\")) {\n\t\t\t\t\t$.removeData(event.target, that.widgetName + \".preventClickEvent\");\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.started = false;\n\t},\n\n\t// TODO: make sure destroying one instance of mouse doesn't mess with\n\t// other instances of mouse\n\t_mouseDestroy: function() {\n\t\tthis.element.unbind(\".\"+this.widgetName);\n\t\tif ( this._mouseMoveDelegate ) {\n\t\t\t$(document)\n\t\t\t\t.unbind(\"mousemove.\"+this.widgetName, this._mouseMoveDelegate)\n\t\t\t\t.unbind(\"mouseup.\"+this.widgetName, this._mouseUpDelegate);\n\t\t}\n\t},\n\n\t_mouseDown: function(event) {\n\t\t// don't let more than one widget handle mouseStart\n\t\tif( mouseHandled ) { return; }\n\n\t\t// we may have missed mouseup (out of window)\n\t\t(this._mouseStarted && this._mouseUp(event));\n\n\t\tthis._mouseDownEvent = event;\n\n\t\tvar that = this,\n\t\t\tbtnIsLeft = (event.which === 1),\n\t\t\t// event.target.nodeName works around a bug in IE 8 with\n\t\t\t// disabled inputs (#7620)\n\t\t\telIsCancel = (typeof this.options.cancel === \"string\" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false);\n\t\tif (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.mouseDelayMet = !this.options.delay;\n\t\tif (!this.mouseDelayMet) {\n\t\t\tthis._mouseDelayTimer = setTimeout(function() {\n\t\t\t\tthat.mouseDelayMet = true;\n\t\t\t}, this.options.delay);\n\t\t}\n\n\t\tif (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n\t\t\tthis._mouseStarted = (this._mouseStart(event) !== false);\n\t\t\tif (!this._mouseStarted) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t// Click event may never have fired (Gecko & Opera)\n\t\tif (true === $.data(event.target, this.widgetName + \".preventClickEvent\")) {\n\t\t\t$.removeData(event.target, this.widgetName + \".preventClickEvent\");\n\t\t}\n\n\t\t// these delegates are required to keep context\n\t\tthis._mouseMoveDelegate = function(event) {\n\t\t\treturn that._mouseMove(event);\n\t\t};\n\t\tthis._mouseUpDelegate = function(event) {\n\t\t\treturn that._mouseUp(event);\n\t\t};\n\t\t$(document)\n\t\t\t.bind(\"mousemove.\"+this.widgetName, this._mouseMoveDelegate)\n\t\t\t.bind(\"mouseup.\"+this.widgetName, this._mouseUpDelegate);\n\n\t\tevent.preventDefault();\n\n\t\tmouseHandled = true;\n\t\treturn true;\n\t},\n\n\t_mouseMove: function(event) {\n\t\t// IE mouseup check - mouseup happened when mouse was out of window\n\t\tif ($.ui.ie && ( !document.documentMode || document.documentMode < 9 ) && !event.button) {\n\t\t\treturn this._mouseUp(event);\n\t\t}\n\n\t\tif (this._mouseStarted) {\n\t\t\tthis._mouseDrag(event);\n\t\t\treturn event.preventDefault();\n\t\t}\n\n\t\tif (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n\t\t\tthis._mouseStarted =\n\t\t\t\t(this._mouseStart(this._mouseDownEvent, event) !== false);\n\t\t\t(this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));\n\t\t}\n\n\t\treturn !this._mouseStarted;\n\t},\n\n\t_mouseUp: function(event) {\n\t\t$(document)\n\t\t\t.unbind(\"mousemove.\"+this.widgetName, this._mouseMoveDelegate)\n\t\t\t.unbind(\"mouseup.\"+this.widgetName, this._mouseUpDelegate);\n\n\t\tif (this._mouseStarted) {\n\t\t\tthis._mouseStarted = false;\n\n\t\t\tif (event.target === this._mouseDownEvent.target) {\n\t\t\t\t$.data(event.target, this.widgetName + \".preventClickEvent\", true);\n\t\t\t}\n\n\t\t\tthis._mouseStop(event);\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseDistanceMet: function(event) {\n\t\treturn (Math.max(\n\t\t\t\tMath.abs(this._mouseDownEvent.pageX - event.pageX),\n\t\t\t\tMath.abs(this._mouseDownEvent.pageY - event.pageY)\n\t\t\t) >= this.options.distance\n\t\t);\n\t},\n\n\t_mouseDelayMet: function(/* event */) {\n\t\treturn this.mouseDelayMet;\n\t},\n\n\t// These are placeholder methods, to be overriden by extending plugin\n\t_mouseStart: function(/* event */) {},\n\t_mouseDrag: function(/* event */) {},\n\t_mouseStop: function(/* event */) {},\n\t_mouseCapture: function(/* event */) { return true; }\n});\n\n})(jQuery);\n(function( $, undefined ) {\n\n$.widget(\"ui.draggable\", $.ui.mouse, {\n\tversion: \"1.10.0\",\n\twidgetEventPrefix: \"drag\",\n\toptions: {\n\t\taddClasses: true,\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectToSortable: false,\n\t\tcontainment: false,\n\t\tcursor: \"auto\",\n\t\tcursorAt: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\tiframeFix: false,\n\t\topacity: false,\n\t\trefreshPositions: false,\n\t\trevert: false,\n\t\trevertDuration: 500,\n\t\tscope: \"default\",\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tsnap: false,\n\t\tsnapMode: \"both\",\n\t\tsnapTolerance: 20,\n\t\tstack: false,\n\t\tzIndex: false,\n\n\t\t// callbacks\n\t\tdrag: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\t_create: function() {\n\n\t\tif (this.options.helper === \"original\" && !(/^(?:r|a|f)/).test(this.element.css(\"position\"))) {\n\t\t\tthis.element[0].style.position = \"relative\";\n\t\t}\n\t\tif (this.options.addClasses){\n\t\t\tthis.element.addClass(\"ui-draggable\");\n\t\t}\n\t\tif (this.options.disabled){\n\t\t\tthis.element.addClass(\"ui-draggable-disabled\");\n\t\t}\n\n\t\tthis._mouseInit();\n\n\t},\n\n\t_destroy: function() {\n\t\tthis.element.removeClass( \"ui-draggable ui-draggable-dragging ui-draggable-disabled\" );\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function(event) {\n\n\t\tvar o = this.options;\n\n\t\t// among others, prevent a drag on a resizable-handle\n\t\tif (this.helper || o.disabled || $(event.target).closest(\".ui-resizable-handle\").length > 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\t//Quit if we're not on a valid handle\n\t\tthis.handle = this._getHandle(event);\n\t\tif (!this.handle) {\n\t\t\treturn false;\n\t\t}\n\n\t\t$(o.iframeFix === true ? \"iframe\" : o.iframeFix).each(function() {\n\t\t\t$(\"
\")\n\t\t\t.css({\n\t\t\t\twidth: this.offsetWidth+\"px\", height: this.offsetHeight+\"px\",\n\t\t\t\tposition: \"absolute\", opacity: \"0.001\", zIndex: 1000\n\t\t\t})\n\t\t\t.css($(this).offset())\n\t\t\t.appendTo(\"body\");\n\t\t});\n\n\t\treturn true;\n\n\t},\n\n\t_mouseStart: function(event) {\n\n\t\tvar o = this.options;\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper(event);\n\n\t\tthis.helper.addClass(\"ui-draggable-dragging\");\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//If ddmanager is used for droppables, set the global draggable\n\t\tif($.ui.ddmanager) {\n\t\t\t$.ui.ddmanager.current = this;\n\t\t}\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//Store the helper's css position\n\t\tthis.cssPosition = this.helper.css(\"position\");\n\t\tthis.scrollParent = this.helper.scrollParent();\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.offset = this.positionAbs = this.element.offset();\n\t\tthis.offset = {\n\t\t\ttop: this.offset.top - this.margins.top,\n\t\t\tleft: this.offset.left - this.margins.left\n\t\t};\n\n\t\t$.extend(this.offset, {\n\t\t\tclick: { //Where the click happened, relative to the element\n\t\t\t\tleft: event.pageX - this.offset.left,\n\t\t\t\ttop: event.pageY - this.offset.top\n\t\t\t},\n\t\t\tparent: this._getParentOffset(),\n\t\t\trelative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper\n\t\t});\n\n\t\t//Generate the original position\n\t\tthis.originalPosition = this.position = this._generatePosition(event);\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\n\t\t//Adjust the mouse offset relative to the helper if \"cursorAt\" is supplied\n\t\t(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));\n\n\t\t//Set a containment if given in the options\n\t\tif(o.containment) {\n\t\t\tthis._setContainment();\n\t\t}\n\n\t\t//Trigger event + callbacks\n\t\tif(this._trigger(\"start\", event) === false) {\n\t\t\tthis._clear();\n\t\t\treturn false;\n\t\t}\n\n\t\t//Recache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//Prepare the droppable offsets\n\t\tif ($.ui.ddmanager && !o.dropBehaviour) {\n\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\t\t}\n\n\n\t\tthis._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position\n\n\t\t//If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.dragStart(this, event);\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function(event, noPropagation) {\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition(event);\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\t//Call plugins and callbacks and use the resulting position if something is returned\n\t\tif (!noPropagation) {\n\t\t\tvar ui = this._uiHash();\n\t\t\tif(this._trigger(\"drag\", event, ui) === false) {\n\t\t\t\tthis._mouseUp({});\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.position = ui.position;\n\t\t}\n\n\t\tif(!this.options.axis || this.options.axis !== \"y\") {\n\t\t\tthis.helper[0].style.left = this.position.left+\"px\";\n\t\t}\n\t\tif(!this.options.axis || this.options.axis !== \"x\") {\n\t\t\tthis.helper[0].style.top = this.position.top+\"px\";\n\t\t}\n\t\tif($.ui.ddmanager) {\n\t\t\t$.ui.ddmanager.drag(this, event);\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function(event) {\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tvar element,\n\t\t\tthat = this,\n\t\t\telementInDom = false,\n\t\t\tdropped = false;\n\t\tif ($.ui.ddmanager && !this.options.dropBehaviour) {\n\t\t\tdropped = $.ui.ddmanager.drop(this, event);\n\t\t}\n\n\t\t//if a drop comes from outside (a sortable)\n\t\tif(this.dropped) {\n\t\t\tdropped = this.dropped;\n\t\t\tthis.dropped = false;\n\t\t}\n\n\t\t//if the original element is no longer in the DOM don't bother to continue (see #8269)\n\t\telement = this.element[0];\n\t\twhile ( element && (element = element.parentNode) ) {\n\t\t\tif (element === document ) {\n\t\t\t\telementInDom = true;\n\t\t\t}\n\t\t}\n\t\tif ( !elementInDom && this.options.helper === \"original\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif((this.options.revert === \"invalid\" && !dropped) || (this.options.revert === \"valid\" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {\n\t\t\t$(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {\n\t\t\t\tif(that._trigger(\"stop\", event) !== false) {\n\t\t\t\t\tthat._clear();\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tif(this._trigger(\"stop\", event) !== false) {\n\t\t\t\tthis._clear();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseUp: function(event) {\n\t\t//Remove frame helpers\n\t\t$(\"div.ui-draggable-iframeFix\").each(function() {\n\t\t\tthis.parentNode.removeChild(this);\n\t\t});\n\n\t\t//If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)\n\t\tif( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.dragStop(this, event);\n\t\t}\n\n\t\treturn $.ui.mouse.prototype._mouseUp.call(this, event);\n\t},\n\n\tcancel: function() {\n\n\t\tif(this.helper.is(\".ui-draggable-dragging\")) {\n\t\t\tthis._mouseUp({});\n\t\t} else {\n\t\t\tthis._clear();\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t_getHandle: function(event) {\n\n\t\tvar handle = !this.options.handle || !$(this.options.handle, this.element).length ? true : false;\n\t\t$(this.options.handle, this.element)\n\t\t\t.find(\"*\")\n\t\t\t.addBack()\n\t\t\t.each(function() {\n\t\t\t\tif(this === event.target) {\n\t\t\t\t\thandle = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\treturn handle;\n\n\t},\n\n\t_createHelper: function(event) {\n\n\t\tvar o = this.options,\n\t\t\thelper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper === \"clone\" ? this.element.clone().removeAttr(\"id\") : this.element);\n\n\t\tif(!helper.parents(\"body\").length) {\n\t\t\thelper.appendTo((o.appendTo === \"parent\" ? this.element[0].parentNode : o.appendTo));\n\t\t}\n\n\t\tif(helper[0] !== this.element[0] && !(/(fixed|absolute)/).test(helper.css(\"position\"))) {\n\t\t\thelper.css(\"position\", \"absolute\");\n\t\t}\n\n\t\treturn helper;\n\n\t},\n\n\t_adjustOffsetFromHelper: function(obj) {\n\t\tif (typeof obj === \"string\") {\n\t\t\tobj = obj.split(\" \");\n\t\t}\n\t\tif ($.isArray(obj)) {\n\t\t\tobj = {left: +obj[0], top: +obj[1] || 0};\n\t\t}\n\t\tif (\"left\" in obj) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif (\"right\" in obj) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif (\"top\" in obj) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif (\"bottom\" in obj) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_getParentOffset: function() {\n\n\t\t//Get the offsetParent and cache its position\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tvar po = this.offsetParent.offset();\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that\n\t\t// the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag\n\t\tif(this.cssPosition === \"absolute\" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\t//This needs to be actually done for all browsers, since pageX/pageY includes this information\n\t\t//Ugly IE fix\n\t\tif((this.offsetParent[0] === document.body) ||\n\t\t\t(this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === \"html\" && $.ui.ie)) {\n\t\t\tpo = { top: 0, left: 0 };\n\t\t}\n\n\t\treturn {\n\t\t\ttop: po.top + (parseInt(this.offsetParent.css(\"borderTopWidth\"),10) || 0),\n\t\t\tleft: po.left + (parseInt(this.offsetParent.css(\"borderLeftWidth\"),10) || 0)\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\n\t\tif(this.cssPosition === \"relative\") {\n\t\t\tvar p = this.element.position();\n\t\t\treturn {\n\t\t\t\ttop: p.top - (parseInt(this.helper.css(\"top\"),10) || 0) + this.scrollParent.scrollTop(),\n\t\t\t\tleft: p.left - (parseInt(this.helper.css(\"left\"),10) || 0) + this.scrollParent.scrollLeft()\n\t\t\t};\n\t\t} else {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: (parseInt(this.element.css(\"marginLeft\"),10) || 0),\n\t\t\ttop: (parseInt(this.element.css(\"marginTop\"),10) || 0),\n\t\t\tright: (parseInt(this.element.css(\"marginRight\"),10) || 0),\n\t\t\tbottom: (parseInt(this.element.css(\"marginBottom\"),10) || 0)\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar over, c, ce,\n\t\t\to = this.options;\n\n\t\tif(o.containment === \"parent\") {\n\t\t\to.containment = this.helper[0].parentNode;\n\t\t}\n\t\tif(o.containment === \"document\" || o.containment === \"window\") {\n\t\t\tthis.containment = [\n\t\t\t\to.containment === \"document\" ? 0 : $(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left,\n\t\t\t\to.containment === \"document\" ? 0 : $(window).scrollTop() - this.offset.relative.top - this.offset.parent.top,\n\t\t\t\t(o.containment === \"document\" ? 0 : $(window).scrollLeft()) + $(o.containment === \"document\" ? document : window).width() - this.helperProportions.width - this.margins.left,\n\t\t\t\t(o.containment === \"document\" ? 0 : $(window).scrollTop()) + ($(o.containment === \"document\" ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t}\n\n\t\tif(!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor !== Array) {\n\t\t\tc = $(o.containment);\n\t\t\tce = c[0];\n\n\t\t\tif(!ce) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tover = ($(ce).css(\"overflow\") !== \"hidden\");\n\n\t\t\tthis.containment = [\n\t\t\t\t(parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingLeft\"),10) || 0),\n\t\t\t\t(parseInt($(ce).css(\"borderTopWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingTop\"),10) || 0),\n\t\t\t\t(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingRight\"),10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right,\n\t\t\t\t(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css(\"borderTopWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingBottom\"),10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom\n\t\t\t];\n\t\t\tthis.relative_container = c;\n\n\t\t} else if(o.containment.constructor === Array) {\n\t\t\tthis.containment = o.containment;\n\t\t}\n\n\t},\n\n\t_convertPositionTo: function(d, pos) {\n\n\t\tif(!pos) {\n\t\t\tpos = this.position;\n\t\t}\n\n\t\tvar mod = d === \"absolute\" ? 1 : -1,\n\t\t\tscroll = this.cssPosition === \"absolute\" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpos.top\t+\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\tthis.offset.relative.top * mod +\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.parent.top * mod -\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t( ( this.cssPosition === \"fixed\" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpos.left +\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\tthis.offset.relative.left * mod +\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.parent.left * mod\t-\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t( ( this.cssPosition === \"fixed\" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function(event) {\n\n\t\tvar containment, co, top, left,\n\t\t\to = this.options,\n\t\t\tscroll = this.cssPosition === \"absolute\" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent,\n\t\t\tscrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName),\n\t\t\tpageX = event.pageX,\n\t\t\tpageY = event.pageY;\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\tif(this.originalPosition) { //If we are not dragging yet, we won't check for options\n\t\t\tif(this.containment) {\n\t\t\tif (this.relative_container){\n\t\t\t\tco = this.relative_container.offset();\n\t\t\t\tcontainment = [ this.containment[0] + co.left,\n\t\t\t\t\tthis.containment[1] + co.top,\n\t\t\t\t\tthis.containment[2] + co.left,\n\t\t\t\t\tthis.containment[3] + co.top ];\n\t\t\t}\n\t\t\telse {\n\t\t\t\tcontainment = this.containment;\n\t\t\t}\n\n\t\t\t\tif(event.pageX - this.offset.click.left < containment[0]) {\n\t\t\t\t\tpageX = containment[0] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif(event.pageY - this.offset.click.top < containment[1]) {\n\t\t\t\t\tpageY = containment[1] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t\tif(event.pageX - this.offset.click.left > containment[2]) {\n\t\t\t\t\tpageX = containment[2] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif(event.pageY - this.offset.click.top > containment[3]) {\n\t\t\t\t\tpageY = containment[3] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(o.grid) {\n\t\t\t\t//Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950)\n\t\t\t\ttop = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY;\n\t\t\t\tpageY = containment ? ((top - this.offset.click.top >= containment[1] || top - this.offset.click.top > containment[3]) ? top : ((top - this.offset.click.top >= containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;\n\n\t\t\t\tleft = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX;\n\t\t\t\tpageX = containment ? ((left - this.offset.click.left >= containment[0] || left - this.offset.click.left > containment[2]) ? left : ((left - this.offset.click.left >= containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpageY -\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\tthis.offset.click.top\t-\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.relative.top -\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.parent.top +\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t( ( this.cssPosition === \"fixed\" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpageX -\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\tthis.offset.click.left -\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.relative.left -\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.parent.left +\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t( ( this.cssPosition === \"fixed\" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_clear: function() {\n\t\tthis.helper.removeClass(\"ui-draggable-dragging\");\n\t\tif(this.helper[0] !== this.element[0] && !this.cancelHelperRemoval) {\n\t\t\tthis.helper.remove();\n\t\t}\n\t\tthis.helper = null;\n\t\tthis.cancelHelperRemoval = false;\n\t},\n\n\t// From now on bulk stuff - mainly helpers\n\n\t_trigger: function(type, event, ui) {\n\t\tui = ui || this._uiHash();\n\t\t$.ui.plugin.call(this, type, [event, ui]);\n\t\t//The absolute position has to be recalculated after plugins\n\t\tif(type === \"drag\") {\n\t\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\t\t}\n\t\treturn $.Widget.prototype._trigger.call(this, type, event, ui);\n\t},\n\n\tplugins: {},\n\n\t_uiHash: function() {\n\t\treturn {\n\t\t\thelper: this.helper,\n\t\t\tposition: this.position,\n\t\t\toriginalPosition: this.originalPosition,\n\t\t\toffset: this.positionAbs\n\t\t};\n\t}\n\n});\n\n$.ui.plugin.add(\"draggable\", \"connectToSortable\", {\n\tstart: function(event, ui) {\n\n\t\tvar inst = $(this).data(\"ui-draggable\"), o = inst.options,\n\t\t\tuiSortable = $.extend({}, ui, { item: inst.element });\n\t\tinst.sortables = [];\n\t\t$(o.connectToSortable).each(function() {\n\t\t\tvar sortable = $.data(this, \"ui-sortable\");\n\t\t\tif (sortable && !sortable.options.disabled) {\n\t\t\t\tinst.sortables.push({\n\t\t\t\t\tinstance: sortable,\n\t\t\t\t\tshouldRevert: sortable.options.revert\n\t\t\t\t});\n\t\t\t\tsortable.refreshPositions();\t// Call the sortable's refreshPositions at drag start to refresh the containerCache since the sortable container cache is used in drag and needs to be up to date (this will ensure it's initialised as well as being kept in step with any changes that might have happened on the page).\n\t\t\t\tsortable._trigger(\"activate\", event, uiSortable);\n\t\t\t}\n\t\t});\n\n\t},\n\tstop: function(event, ui) {\n\n\t\t//If we are still over the sortable, we fake the stop event of the sortable, but also remove helper\n\t\tvar inst = $(this).data(\"ui-draggable\"),\n\t\t\tuiSortable = $.extend({}, ui, { item: inst.element });\n\n\t\t$.each(inst.sortables, function() {\n\t\t\tif(this.instance.isOver) {\n\n\t\t\t\tthis.instance.isOver = 0;\n\n\t\t\t\tinst.cancelHelperRemoval = true; //Don't remove the helper in the draggable instance\n\t\t\t\tthis.instance.cancelHelperRemoval = false; //Remove it in the sortable instance (so sortable plugins like revert still work)\n\n\t\t\t\t//The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: \"valid/invalid\"\n\t\t\t\tif(this.shouldRevert) {\n\t\t\t\t\tthis.instance.options.revert = true;\n\t\t\t\t}\n\n\t\t\t\t//Trigger the stop of the sortable\n\t\t\t\tthis.instance._mouseStop(event);\n\n\t\t\t\tthis.instance.options.helper = this.instance.options._helper;\n\n\t\t\t\t//If the helper has been the original item, restore properties in the sortable\n\t\t\t\tif(inst.options.helper === \"original\") {\n\t\t\t\t\tthis.instance.currentItem.css({ top: \"auto\", left: \"auto\" });\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tthis.instance.cancelHelperRemoval = false; //Remove the helper in the sortable instance\n\t\t\t\tthis.instance._trigger(\"deactivate\", event, uiSortable);\n\t\t\t}\n\n\t\t});\n\n\t},\n\tdrag: function(event, ui) {\n\n\t\tvar inst = $(this).data(\"ui-draggable\"), that = this;\n\n\t\t$.each(inst.sortables, function() {\n\n\t\t\tvar innermostIntersecting = false,\n\t\t\t\tthisSortable = this;\n\n\t\t\t//Copy over some variables to allow calling the sortable's native _intersectsWith\n\t\t\tthis.instance.positionAbs = inst.positionAbs;\n\t\t\tthis.instance.helperProportions = inst.helperProportions;\n\t\t\tthis.instance.offset.click = inst.offset.click;\n\n\t\t\tif(this.instance._intersectsWith(this.instance.containerCache)) {\n\t\t\t\tinnermostIntersecting = true;\n\t\t\t\t$.each(inst.sortables, function () {\n\t\t\t\t\tthis.instance.positionAbs = inst.positionAbs;\n\t\t\t\t\tthis.instance.helperProportions = inst.helperProportions;\n\t\t\t\t\tthis.instance.offset.click = inst.offset.click;\n\t\t\t\t\tif (this !== thisSortable &&\n\t\t\t\t\t\tthis.instance._intersectsWith(this.instance.containerCache) &&\n\t\t\t\t\t\t$.ui.contains(thisSortable.instance.element[0], this.instance.element[0])\n\t\t\t\t\t) {\n\t\t\t\t\t\tinnermostIntersecting = false;\n\t\t\t\t\t}\n\t\t\t\t\treturn innermostIntersecting;\n\t\t\t\t});\n\t\t\t}\n\n\n\t\t\tif(innermostIntersecting) {\n\t\t\t\t//If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once\n\t\t\t\tif(!this.instance.isOver) {\n\n\t\t\t\t\tthis.instance.isOver = 1;\n\t\t\t\t\t//Now we fake the start of dragging for the sortable instance,\n\t\t\t\t\t//by cloning the list group item, appending it to the sortable and using it as inst.currentItem\n\t\t\t\t\t//We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn't create a new one)\n\t\t\t\t\tthis.instance.currentItem = $(that).clone().removeAttr(\"id\").appendTo(this.instance.element).data(\"ui-sortable-item\", true);\n\t\t\t\t\tthis.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it\n\t\t\t\t\tthis.instance.options.helper = function() { return ui.helper[0]; };\n\n\t\t\t\t\tevent.target = this.instance.currentItem[0];\n\t\t\t\t\tthis.instance._mouseCapture(event, true);\n\t\t\t\t\tthis.instance._mouseStart(event, true, true);\n\n\t\t\t\t\t//Because the browser event is way off the new appended portlet, we modify a couple of variables to reflect the changes\n\t\t\t\t\tthis.instance.offset.click.top = inst.offset.click.top;\n\t\t\t\t\tthis.instance.offset.click.left = inst.offset.click.left;\n\t\t\t\t\tthis.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left;\n\t\t\t\t\tthis.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top;\n\n\t\t\t\t\tinst._trigger(\"toSortable\", event);\n\t\t\t\t\tinst.dropped = this.instance.element; //draggable revert needs that\n\t\t\t\t\t//hack so receive/update callbacks work (mostly)\n\t\t\t\t\tinst.currentItem = inst.element;\n\t\t\t\t\tthis.instance.fromOutside = inst;\n\n\t\t\t\t}\n\n\t\t\t\t//Provided we did all the previous steps, we can fire the drag event of the sortable on every draggable drag, when it intersects with the sortable\n\t\t\t\tif(this.instance.currentItem) {\n\t\t\t\t\tthis.instance._mouseDrag(event);\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t//If it doesn't intersect with the sortable, and it intersected before,\n\t\t\t\t//we fake the drag stop of the sortable, but make sure it doesn't remove the helper by using cancelHelperRemoval\n\t\t\t\tif(this.instance.isOver) {\n\n\t\t\t\t\tthis.instance.isOver = 0;\n\t\t\t\t\tthis.instance.cancelHelperRemoval = true;\n\n\t\t\t\t\t//Prevent reverting on this forced stop\n\t\t\t\t\tthis.instance.options.revert = false;\n\n\t\t\t\t\t// The out event needs to be triggered independently\n\t\t\t\t\tthis.instance._trigger(\"out\", event, this.instance._uiHash(this.instance));\n\n\t\t\t\t\tthis.instance._mouseStop(event, true);\n\t\t\t\t\tthis.instance.options.helper = this.instance.options._helper;\n\n\t\t\t\t\t//Now we remove our currentItem, the list group clone again, and the placeholder, and animate the helper back to it's original size\n\t\t\t\t\tthis.instance.currentItem.remove();\n\t\t\t\t\tif(this.instance.placeholder) {\n\t\t\t\t\t\tthis.instance.placeholder.remove();\n\t\t\t\t\t}\n\n\t\t\t\t\tinst._trigger(\"fromSortable\", event);\n\t\t\t\t\tinst.dropped = false; //draggable revert needs that\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t});\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"cursor\", {\n\tstart: function() {\n\t\tvar t = $(\"body\"), o = $(this).data(\"ui-draggable\").options;\n\t\tif (t.css(\"cursor\")) {\n\t\t\to._cursor = t.css(\"cursor\");\n\t\t}\n\t\tt.css(\"cursor\", o.cursor);\n\t},\n\tstop: function() {\n\t\tvar o = $(this).data(\"ui-draggable\").options;\n\t\tif (o._cursor) {\n\t\t\t$(\"body\").css(\"cursor\", o._cursor);\n\t\t}\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"opacity\", {\n\tstart: function(event, ui) {\n\t\tvar t = $(ui.helper), o = $(this).data(\"ui-draggable\").options;\n\t\tif(t.css(\"opacity\")) {\n\t\t\to._opacity = t.css(\"opacity\");\n\t\t}\n\t\tt.css(\"opacity\", o.opacity);\n\t},\n\tstop: function(event, ui) {\n\t\tvar o = $(this).data(\"ui-draggable\").options;\n\t\tif(o._opacity) {\n\t\t\t$(ui.helper).css(\"opacity\", o._opacity);\n\t\t}\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"scroll\", {\n\tstart: function() {\n\t\tvar i = $(this).data(\"ui-draggable\");\n\t\tif(i.scrollParent[0] !== document && i.scrollParent[0].tagName !== \"HTML\") {\n\t\t\ti.overflowOffset = i.scrollParent.offset();\n\t\t}\n\t},\n\tdrag: function( event ) {\n\n\t\tvar i = $(this).data(\"ui-draggable\"), o = i.options, scrolled = false;\n\n\t\tif(i.scrollParent[0] !== document && i.scrollParent[0].tagName !== \"HTML\") {\n\n\t\t\tif(!o.axis || o.axis !== \"x\") {\n\t\t\t\tif((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) {\n\t\t\t\t\ti.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed;\n\t\t\t\t} else if(event.pageY - i.overflowOffset.top < o.scrollSensitivity) {\n\t\t\t\t\ti.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!o.axis || o.axis !== \"y\") {\n\t\t\t\tif((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) {\n\t\t\t\t\ti.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed;\n\t\t\t\t} else if(event.pageX - i.overflowOffset.left < o.scrollSensitivity) {\n\t\t\t\t\ti.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif(!o.axis || o.axis !== \"x\") {\n\t\t\t\tif(event.pageY - $(document).scrollTop() < o.scrollSensitivity) {\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);\n\t\t\t\t} else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) {\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!o.axis || o.axis !== \"y\") {\n\t\t\t\tif(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) {\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);\n\t\t\t\t} else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) {\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {\n\t\t\t$.ui.ddmanager.prepareOffsets(i, event);\n\t\t}\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"snap\", {\n\tstart: function() {\n\n\t\tvar i = $(this).data(\"ui-draggable\"),\n\t\t\to = i.options;\n\n\t\ti.snapElements = [];\n\n\t\t$(o.snap.constructor !== String ? ( o.snap.items || \":data(ui-draggable)\" ) : o.snap).each(function() {\n\t\t\tvar $t = $(this),\n\t\t\t\t$o = $t.offset();\n\t\t\tif(this !== i.element[0]) {\n\t\t\t\ti.snapElements.push({\n\t\t\t\t\titem: this,\n\t\t\t\t\twidth: $t.outerWidth(), height: $t.outerHeight(),\n\t\t\t\t\ttop: $o.top, left: $o.left\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t},\n\tdrag: function(event, ui) {\n\n\t\tvar ts, bs, ls, rs, l, r, t, b, i, first,\n\t\t\tinst = $(this).data(\"ui-draggable\"),\n\t\t\to = inst.options,\n\t\t\td = o.snapTolerance,\n\t\t\tx1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,\n\t\t\ty1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;\n\n\t\tfor (i = inst.snapElements.length - 1; i >= 0; i--){\n\n\t\t\tl = inst.snapElements[i].left;\n\t\t\tr = l + inst.snapElements[i].width;\n\t\t\tt = inst.snapElements[i].top;\n\t\t\tb = t + inst.snapElements[i].height;\n\n\t\t\t//Yes, I know, this is insane ;)\n\t\t\tif(!((l-d < x1 && x1 < r+d && t-d < y1 && y1 < b+d) || (l-d < x1 && x1 < r+d && t-d < y2 && y2 < b+d) || (l-d < x2 && x2 < r+d && t-d < y1 && y1 < b+d) || (l-d < x2 && x2 < r+d && t-d < y2 && y2 < b+d))) {\n\t\t\t\tif(inst.snapElements[i].snapping) {\n\t\t\t\t\t(inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));\n\t\t\t\t}\n\t\t\t\tinst.snapElements[i].snapping = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif(o.snapMode !== \"inner\") {\n\t\t\t\tts = Math.abs(t - y2) <= d;\n\t\t\t\tbs = Math.abs(b - y1) <= d;\n\t\t\t\tls = Math.abs(l - x2) <= d;\n\t\t\t\trs = Math.abs(r - x1) <= d;\n\t\t\t\tif(ts) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo(\"relative\", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top;\n\t\t\t\t}\n\t\t\t\tif(bs) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo(\"relative\", { top: b, left: 0 }).top - inst.margins.top;\n\t\t\t\t}\n\t\t\t\tif(ls) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left;\n\t\t\t\t}\n\t\t\t\tif(rs) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: r }).left - inst.margins.left;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfirst = (ts || bs || ls || rs);\n\n\t\t\tif(o.snapMode !== \"outer\") {\n\t\t\t\tts = Math.abs(t - y1) <= d;\n\t\t\t\tbs = Math.abs(b - y2) <= d;\n\t\t\t\tls = Math.abs(l - x1) <= d;\n\t\t\t\trs = Math.abs(r - x2) <= d;\n\t\t\t\tif(ts) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo(\"relative\", { top: t, left: 0 }).top - inst.margins.top;\n\t\t\t\t}\n\t\t\t\tif(bs) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo(\"relative\", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top;\n\t\t\t\t}\n\t\t\t\tif(ls) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: l }).left - inst.margins.left;\n\t\t\t\t}\n\t\t\t\tif(rs) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!inst.snapElements[i].snapping && (ts || bs || ls || rs || first)) {\n\t\t\t\t(inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));\n\t\t\t}\n\t\t\tinst.snapElements[i].snapping = (ts || bs || ls || rs || first);\n\n\t\t}\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"stack\", {\n\tstart: function() {\n\n\t\tvar min,\n\t\t\to = $(this).data(\"ui-draggable\").options,\n\t\t\tgroup = $.makeArray($(o.stack)).sort(function(a,b) {\n\t\t\t\treturn (parseInt($(a).css(\"zIndex\"),10) || 0) - (parseInt($(b).css(\"zIndex\"),10) || 0);\n\t\t\t});\n\n\t\tif (!group.length) { return; }\n\n\t\tmin = parseInt(group[0].style.zIndex, 10) || 0;\n\t\t$(group).each(function(i) {\n\t\t\tthis.style.zIndex = min + i;\n\t\t});\n\n\t\tthis[0].style.zIndex = min + group.length;\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"zIndex\", {\n\tstart: function(event, ui) {\n\t\tvar t = $(ui.helper), o = $(this).data(\"ui-draggable\").options;\n\t\tif(t.css(\"zIndex\")) {\n\t\t\to._zIndex = t.css(\"zIndex\");\n\t\t}\n\t\tt.css(\"zIndex\", o.zIndex);\n\t},\n\tstop: function(event, ui) {\n\t\tvar o = $(this).data(\"ui-draggable\").options;\n\t\tif(o._zIndex) {\n\t\t\t$(ui.helper).css(\"zIndex\", o._zIndex);\n\t\t}\n\t}\n});\n\n})(jQuery);\n","WebFontConfig = {\n google: { families: ['Source Sans Pro:200:latin-ext', 'Open+Sans:400,700:latin-ext'] }\n};\n(function () {\n var wf = document.createElement('script');\n wf.src = ('https:' == document.location.protocol ? 'https' : 'http') +\n '://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js';\n wf.type = 'text/javascript';\n wf.async = 'true';\n var s = document.getElementsByTagName('script')[0];\n s.parentNode.insertBefore(wf, s);\n})();\n","/*! Copyright (c) 2011 Piotr Rochala (http://rocha.la)\n * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)\n * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\n *\n * Version: 0.6.5\n * \n */\n(function($) {\n\n jQuery.fn.extend({\n slimScroll: function(options) {\n\n var defaults = {\n wheelStep : 20,\n width : 'auto',\n height : '250px',\n size : '7px',\n color: '#000',\n position : 'right',\n distance : '1px',\n start : 'top',\n opacity : .4,\n alwaysVisible : false,\n disableFadeOut: false,\n railVisible : false,\n railColor : '#333',\n railOpacity : '0.2',\n railClass : 'slimScrollRail',\n barClass : 'slimScrollBar',\n wrapperClass : 'slimScrollDiv',\n allowPageScroll: false,\n scroll: 0,\n touchScrollStep: 200\n };\n\n var o = $.extend(defaults, options);\n\n // do it for every element that matches selector\n this.each(function(){\n\n var isOverPanel, isOverBar, isDragg, queueHide, touchDif, \n barHeight, percentScroll, lastScroll,\n divS = '
',\n minBarHeight = 30,\n releaseScroll = false;\n\n // used in event handlers and for better minification\n var me = $(this);\n\n //ensure we are not binding it again\n if (me.parent().hasClass('slimScrollDiv'))\n {\n //check if we should scroll existing instance\n if (scroll)\n {\n //find bar and rail\n bar = me.parent().find('.slimScrollBar');\n rail = me.parent().find('.slimScrollRail');\n\n //scroll by given amount of pixels\n scrollContent( me.scrollTop() + parseInt(scroll), false, true);\n }\n\n return;\n }\n\n // wrap content\n var wrapper = $(divS)\n .addClass(o.wrapperClass)\n .css({\n position: 'relative',\n overflow: 'hidden',\n width: o.width,\n height: o.height\n });\n\n // update style for the div\n me.css({\n overflow: 'hidden',\n width: o.width,\n height: o.height\n });\n\n // create scrollbar rail\n var rail = $(divS)\n .addClass(o.railClass)\n .css({\n width: o.size,\n height: '100%',\n position: 'absolute',\n top: 0,\n display: (o.alwaysVisible && o.railVisible) ? 'block' : 'none',\n 'border-radius': o.size,\n background: o.railColor,\n opacity: o.railOpacity,\n zIndex: 90\n });\n\n // create scrollbar\n var bar = $(divS)\n .addClass(o.barClass)\n .css({\n background: o.color,\n width: o.size,\n position: 'absolute',\n top: 0,\n opacity: o.opacity,\n display: o.alwaysVisible ? 'block' : 'none',\n 'border-radius' : o.size,\n BorderRadius: o.size,\n MozBorderRadius: o.size,\n WebkitBorderRadius: o.size,\n zIndex: 99\n });\n\n // set position\n var posCss = (o.position == 'right') ? { right: o.distance } : { left: o.distance };\n rail.css(posCss);\n bar.css(posCss);\n\n // wrap it\n me.wrap(wrapper);\n\n // append to parent div\n me.parent().append(bar);\n me.parent().append(rail);\n\n // make it draggable\n bar.draggable({ \n axis: 'y', \n containment: 'parent',\n start: function() { isDragg = true; },\n stop: function() { isDragg = false; hideBar(); },\n drag: function(e) \n { \n // scroll content\n scrollContent(0, $(this).position().top, false);\n }\n });\n\n // on rail over\n rail.hover(function(){\n showBar();\n }, function(){\n hideBar();\n });\n\n // on bar over\n bar.hover(function(){\n isOverBar = true;\n }, function(){\n isOverBar = false;\n });\n\n // show on parent mouseover\n me.hover(function(){\n isOverPanel = true;\n showBar();\n hideBar();\n }, function(){\n isOverPanel = false;\n hideBar();\n });\n\n // support for mobile\n me.bind('touchstart', function(e,b){\n if (e.originalEvent.touches.length)\n {\n // record where touch started\n touchDif = e.originalEvent.touches[0].pageY;\n } \n });\n\n me.bind('touchmove', function(e){\n // prevent scrolling the page\n e.originalEvent.preventDefault();\n if (e.originalEvent.touches.length)\n {\n // see how far user swiped\n var diff = (touchDif - e.originalEvent.touches[0].pageY) / o.touchScrollStep;\n // scroll content\n scrollContent(diff, true);\n }\n });\n\n var _onWheel = function(e)\n {\n // use mouse wheel only when mouse is over\n if (!isOverPanel) { return; }\n\n var e = e || window.event;\n\n var delta = 0;\n if (e.wheelDelta) { delta = -e.wheelDelta/120; }\n if (e.detail) { delta = e.detail / 3; }\n\n // scroll content\n scrollContent(delta, true);\n\n // stop window scroll\n if (e.preventDefault && !releaseScroll) { e.preventDefault(); }\n if (!releaseScroll) { e.returnValue = false; }\n }\n\n function scrollContent(y, isWheel, isJump)\n {\n var delta = y;\n\n if (isWheel)\n {\n // move bar with mouse wheel\n delta = parseInt(bar.css('top')) + y * parseInt(o.wheelStep) / 100 * bar.outerHeight();\n\n // move bar, make sure it doesn't go out\n var maxTop = me.outerHeight() - bar.outerHeight();\n delta = Math.min(Math.max(delta, 0), maxTop);\n\n // scroll the scrollbar\n bar.css({ top: delta + 'px' });\n }\n\n // calculate actual scroll amount\n percentScroll = parseInt(bar.css('top')) / (me.outerHeight() - bar.outerHeight());\n delta = percentScroll * (me[0].scrollHeight - me.outerHeight());\n\n if (isJump)\n {\n delta = y;\n var offsetTop = delta / me[0].scrollHeight * me.outerHeight();\n bar.css({ top: offsetTop + 'px' });\n }\n\n // scroll content\n me.scrollTop(delta);\n\n // ensure bar is visible\n showBar();\n\n // trigger hide when scroll is stopped\n hideBar();\n }\n\n var attachWheel = function()\n {\n if (window.addEventListener)\n {\n this.addEventListener('DOMMouseScroll', _onWheel, false );\n this.addEventListener('mousewheel', _onWheel, false );\n } \n else\n {\n document.attachEvent(\"onmousewheel\", _onWheel)\n }\n }\n\n // attach scroll events\n attachWheel();\n\n function getBarHeight()\n {\n // calculate scrollbar height and make sure it is not too small\n barHeight = Math.max((me.outerHeight() / me[0].scrollHeight) * me.outerHeight(), minBarHeight);\n bar.css({ height: barHeight + 'px' });\n }\n\n // set up initial height\n getBarHeight();\n\n function showBar()\n {\n // recalculate bar height\n getBarHeight();\n clearTimeout(queueHide);\n\n // when bar reached top or bottom\n if (percentScroll == ~~ percentScroll)\n {\n //release wheel \n releaseScroll = o.allowPageScroll;\n \n // publish approporiate event\n if (lastScroll != percentScroll)\n {\n var msg = (~~percentScroll == 0) ? 'top' : 'bottom'; \n me.trigger('slimscroll', msg);\n }\n }\n lastScroll = percentScroll;\n\n // show only when required\n if(barHeight >= me.outerHeight()) {\n //allow window scroll\n releaseScroll = true;\n return;\n }\n bar.stop(true,true).fadeIn('fast');\n if (o.railVisible) { rail.stop(true,true).fadeIn('fast'); }\n }\n\n function hideBar()\n {\n // only hide when options allow it\n if (!o.alwaysVisible)\n {\n queueHide = setTimeout(function(){\n if (!(o.disableFadeOut && isOverPanel) && !isOverBar && !isDragg)\n { \n bar.fadeOut('slow');\n rail.fadeOut('slow');\n }\n }, 1000);\n }\n }\n\n // check start position\n if (o.start == 'bottom') \n {\n // scroll content to bottom\n bar.css({ top: me.outerHeight() - bar.outerHeight() });\n scrollContent(0, true);\n }\n else if (typeof o.start == 'object')\n {\n // scroll content\n scrollContent($(o.start).position().top, null, true);\n\n // make sure bar stays hidden\n if (!o.alwaysVisible) { bar.hide(); }\n }\n });\n \n // maintain chainability\n return this;\n }\n });\n\n jQuery.fn.extend({\n slimscroll: jQuery.fn.slimScroll\n });\n\n})(jQuery);","window.fbAsyncInit = function () {\n FB.init({\n appId: '521980442808105',\n autoLogAppEvents: true,\n xfbml: true,\n version: 'v5.0'\n });\n};\n\n(function (d, s, id) {\n var js, fjs = d.getElementsByTagName(s)[0];\n if (d.getElementById(id)) { return; }\n js = d.createElement(s); js.id = id;\n js.src = \"//connect.facebook.net/cs_CZ/sdk.js\";\n fjs.parentNode.insertBefore(js, fjs);\n}(document, 'script', 'facebook-jssdk'));"]}