{"version":3,"sources":["autocomplete.js","canvasPictureHelper.js","clear.js","buttons.js","calendar.js","errorValidationScript.js","helperScript.js","datalist.js","golfbox.ui-validation.js","inputValidationScript.js","input.js","maps.js","navigation.js","participants.js","tags.js","utility.js","ux.js"],"names":["AutoComplete","Controller","$","document","on","this","value","length","resultsid","id","removeClass","addClass","results","children","event","obj","active","find","hasActive","keyCode","preventDefault","next","first","prev","trigger","blur","CanvasPictureHelper","Clear","_","click","$this","is","setTimeout","call","window","buttons","gbcalendar","secureDate","date","moment","isMoment","toDate","offset","getTimezoneOffset","Date","isWithinTimeframe","timeframeStart","timeframeEnd","start","end","loading_indicator","_loadCache","_cache","localStorage","_localStorage","getItem","key","JSON","parse","item","data","_persist","setItem","stringify","_clean","events","ns","limit","output","_eventMap","_cleanCount","_limitCount","i","_event","_c","className","hasOwnProperty","evt","stored","console","log","toISOString","eventSources","update","calendar","cached","result","_fetch","loading","lessons","isFetching","blockings","groups","shops","locks","when","fullCalendar","fc_event","any","e","then","all","ajax","url","silent","startDate","view","_data","extend","fetchResourcesParams","fetchLocationsParams","gb","toSortable","timezone","val","Object","keys","indexOf","type","dataType","async","beforeSend","lastestFetchDate","valueOf","clearRefetch","success","startRefetch","updated","_fromCache","removes","storedDate","getOwnPropertyNames","_store","calendarOptions","calendarID","localeFormats","shortDate","schedulerLicenseKey","lazyFetching","height","defaultView","editable","isAdmin","selectable","allDaySlot","locale","fixedWeekCount","navLinks","navLinkWeekClick","navLinkDayClick","listDayFormat","listDayAltFormat","selectHelper","selectConstraint","undefined","unselectAuto","header","left","center","right","footer","columnHeaderText","_moment","format","localeData","longDateFormat","replace","views","agendaDay","duration","days","buttonText","translator","translate","titleFormat","agendaTwoDay","gbListDay","gbListWeek","week","gbTimelineDay","day","customButtons","calendarIntegration","text","location","href","host","ui","spinner","hide","windowResize","selectOverlap","rendering","resourceId","overlap","eventOverlap","stillEvent","selectAllow","selectInfo","diff","stripZone","select","jsEvent","resource","html","FullCalendar","locales","mediumTimeFormat","_start","_end","_resource","$calendar","start_as_date","filter","$modal","$null_option","attr","$lesson_options","disabled","checked","$ok_button","parents","removeAttr","disabled_lessons","bh_end","bh_clicked","dow","businessHours","bh","startAsISO","endAsISO","hasClass","option","lesson_resources","split","lesson_duration","lesson_end","add","parseInt","option_has_resource","j","toggleClass","toLowerCase","locationId","selected","prop","first_lesson","not","parent","off","focus","app_type","from","to","method","resourceGuid","complete","jqXHR","status","responseJSON","IsAuthenticated","Success","blocking_type","$lesson_types","$blocking_options","delay","empty","_this","$self","resources","callback","_calendar","param","bgEvents","res","loc_businesshours","concat","k","bg_event","_color","color","backgroundColors","push","locationName","css","moment_now","eventRender","element","_is","course","lesson","blocking","shop","lock","fc_wrapper","fc_title","detach","bu_resources","append","map","name","join","locationColor","event_icon","unreadMessage","participants","event_participants","Math","min","par","wrapper","economyEnabled","isPaid","insertAfter","fc_content","fc_time","prepend","remove","fc_event_top","fc_event_top_left","fc_event_top_right","event_resource","image","description","txt","createElement","innerHTML","viewRender","el","filterToolbar","calendarFilters","$resource_filter","scrollIntoView","calendarSettings","scaleOption","weekNumberTitle","weekNumberPart","match","titleParts","title","weekNo","pop","create","resourceRender","resourceObj","labelTds","bgs","last_resource","eventDrop","delta","revertFunc","deltaAsMinutes","asMinutes","resourceIds","message","fail","eventDragStart","org","ghost","clone","eventDragStop","weekNumberCalculation","groupByResource","groupByDateAndResource","weekNumbers","nowIndicator","minTime","maxTime","slotDuration","loadPermissible","func","$hover_events","enabled","timeout","clearTimeout","show","each","dragging","init","options","_isAdmin","_culture","_economyEnabled","culture","extendedCalendarOptions","test","hourFormat","oldVisible","ready","setInterval","clearInterval","error","dir","isTouch","size","optgroups","resource_selected","scrollTop","offsetTop","dom_event","calculated_height","true_height","bottom","parseFloat","datepicker","table_header","placeholder","outerHeight","insertBefore","visible","position","width","outerWidth","prototype","OnLoadImageLoadEvent","def","Deferred","imageObj","onload","imageHeightRatio","imageWidthRatio","imageX","imageY","imageWidth","imageHeight","imageRight","imageBottom","draw","canvasOffset","canvasElementId","offsetX","offsetY","top","resolve","promise","FetchImgBase64String","_canvas","_context","getContext","_orgImage","Image","src","imageSrc","min_length","_scaling","destWidth","destHeight","destX","destY","drawImage","toDataURL","hitImage","x","y","handleMouseUp","draggingImage","handleMouseOut","handleMouseDown","startX","clientX","startY","clientY","handleMouseMove","mouseX","mouseY","dx","dy","context","clearRect","canvas","IsEmptyPicture","ResetCanvas","toString","getElementById","clearForm","form","_form","reset","input","selector","clear","self","defaultify","_defaultValue","inputs","destroyable","textareas","selects","ErrrorValidation","Helper","queue","queueInProgress","doWork","instances","data_animation","batch","shift","index","batchSize","splice","animate","max","pow","stopQueue","err","startQueue","toggleElement","runQueue","table","target","$batch","flush","_columns","_header","_rows","_empty","oldTop","table_header_clone","emptyRow","_instance","columns","rows","row","ID","currentIndex","direction","newDirection","ths","siblings","_that","doSort","v","eq","inside","datalistID","filterID","column","defer","initFilters","filters","newFilter","col","doFilter","sorted_rows","row_key","own_data","Cells","Data","sorted_index","binarySearch","$fragment","createDocumentFragment","reverse","$tbody","sorted_row","array","current_index","current_item","min_index","max_index","cmp","compare","a","b","_filters","has_filter_value","filter_key","rowKey","cells","hasMatch","cellKey","cell","matchFilter","Visible","removed_rows","filter_value","linq","DataType","datalist","GetOldLabel","oldLabel","StoreOldLabel","AddError","inputWrapper","labelElement","errorMessage","AddSuccess","inputElement","successMessage","ResetAll","resetInput","ResetErrorBox","errorBoxElement","SuccessShowHide","FailedShowHide","ErrorValidationToggle","display","hidden","AddClass","golfbox","navigator","__formatErrorText","errorText","clientId","tmp","trim","resolveName","validation","getUniqNumber","o","items","errors","renderArea","done","always","_isValid","pos","isFunction","isValid","validate","that","process","formatText","getErrorText","interval","render","alert","customValidator","regExpValidator","targetId","pattern","allowEmpty","RegExp","regexlib","page","lcid","isValidRegExp","emailValidator","inRangeValidator","cc","toDecimal","toNumeric","compareValidator","targetId1","targetId2","operator","o1","o2","v1","v2","toHcp","isCompareValid","dateValidator","padZeros","getDaysInMonth","month","year","n","parts","daysInMonth","getDateParts","timeValidator","decimalValidator","intDecimals","numberValidator","isNumberValid","maxlenghtValidator","requiredValidator","radioValidator","targetName","checkboxValidator","targetIds","isArray","c","pincodeValidator","hcpValidator","tmpHcp","isHcpValid","memberNumberValidator","golfIdValidator","golfSePasswordValidator","digit","substr","isGolfSePasswordValid","ajaxValidator","getJSON","get","post","jQuery","AjaxHelper","datatype","typeRequest","failed","isSending","disableSendingOneAtATime","cache","DisableButtonUntilRequestFinished","doDisabled","jqueryElement","ResetDropdownToDefault","dropdownJqueryElement","defaultSelected","ResizeModalBox","Height","FetchCityByZipCodeAndCountry","zipcode","country","reject","SearchFilterSave","sfData","disable","helperController","InputValidation","valueAsFloat","toFixed","tagName","setAttribute","stopPropagation","charCode","$dragndrop","isDragAndDropSupported","files","$form","closest","$uploading","formData","FormData","contentType","processData","validDocument","verified","$verificationSuccess","fileType","reader","FileReader","readAsDataURL","last","$verificationError","originalEvent","dataTransfer","$parent","iterations","$label","labelContent","indexOfHtml","substring","IsValid","maxLength","IsNotEmpty","LengthIsValid","DoesMatch","input1","input2","IsNumber","isNumeric","inputValidator","store","maps","markers","zoom","lat","lng","coord","google","LatLng","Map","Marker","address","getLocationByAddress","$element","lastHeight","checkForChanges","getCenter","panTo","updateByAddress","mapid","long","updateByLatLong","cordinates","setCenter","setMap","Geocoder","geocode","streetNumber","streetName","city","state","GeocoderStatus","OK","geometry","getCurrentGPS","geolocation","getCurrentPosition","coords","latitude","longitude","menuResize","menuContainer","menu","Participants","latency","rules","minRequired","_row","nextAll","l","min_participant","memberLookupModalID_test","Tags","lookupClose","memberLookupModalID","resetSearch","focusInput","lookupQuery","which","lookupSearch","toggleview","addNewCustoner","newData","memberNumber","fullName","primaryEmail","primaryMobile","sendInvoice","addrow","updateCustomer","updateCurrentrow","targetToSearchBy","$result","searchby","query","lastName","currentBusIsoCode","toUpperCase","warningModalID","$table","modal_no_results","firstAndLastName","searchBy","model_noMembersFound","modal_my_customers_accord_header","modal_results","modal_ohter_players_accord_header","sort","modal_member_no","modal_fullname","modal_email","modal_phone","modal_hcp","model_localMembers","model_externalMembers","hcp","$item","isLocal","participant","indexindex","updateRow","externalId","playerGuid","orderGUID","count","after","renderInvoice","model_invoice","model_discound","button_trashcan","lookupMemberClick","$target","lookup","opdateParticitantsCount","loadData","guid","localeCompare","updateAutocomplete","propertyName","scope","resultText","regex","arr","tagValue","BuildTags","parentElement","util","search","tag","_self","parseHTML","elm","appendTo","tagsController","Utility","submit","forms","validateForm","onclick","button","eval","logging","chkReq","group","validGroup","clearNames","toReplace","utility","UX","box","ux"],"mappings":"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","file":"site.js","sourcesContent":["var AutoComplete;\r\n(function (AutoComplete) {\r\n var Controller = (function () {\r\n function Controller() {\r\n $(document).on('focus', '.autocomplete input:not([disabled=\"disabled\"]):not([readonly=\"readonly\"])', function () {\r\n if (this.value.length > 1) {\r\n var resultsid = 'autocompleteResults_' + this.id;\r\n $('#' + resultsid).removeClass('inactive').addClass('active');\r\n }\r\n }).on('blur', '.autocomplete input', function () {\r\n if (this.value.length > 1) {\r\n var resultsid = 'autocompleteResults_' + this.id;\r\n $('#' + resultsid).addClass('inactive').removeClass('active');\r\n }\r\n }).on('input', '.autocomplete input', function () {\r\n var results = $('#autocompleteResults_' + this.id);\r\n if (this.value.length > 1 && results.children().length > 0) {\r\n results.removeClass('inactive').addClass('active');\r\n } else {\r\n results.addClass('inactive').removeClass('active');\r\n }\r\n }).on('keydown', '.autocomplete input', function (event) {\r\n if (this.value.length > 1) {\r\n var resultsid = 'autocompleteResults_' + this.id;\r\n var obj = $('#' + resultsid);\r\n var active = obj.find('.active');\r\n var hasActive = active.length === 1;\r\n\r\n switch (event.keyCode) {\r\n case 40: // down\r\n event.preventDefault();\r\n if (!hasActive) {\r\n obj.children().first().addClass('active');\r\n } else if (hasActive && active.next().length === 1) {\r\n active.next().addClass('active');\r\n active.removeClass('active');\r\n }\r\n\r\n break;\r\n case 38: // up\r\n event.preventDefault();\r\n if (hasActive) {\r\n if (active.prev().length === 1) {\r\n active.prev().addClass('active');\r\n }\r\n active.removeClass('active');\r\n }\r\n\r\n break;\r\n case 13: // enter\r\n case 9 : // tab\r\n if (hasActive) {\r\n event.preventDefault();\r\n $(active).trigger('mousedown');\r\n }\r\n this.blur();\r\n\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n\r\n return Controller;\r\n })();\r\n AutoComplete.Controller = Controller;\r\n})(AutoComplete || (AutoComplete = {}));\r\nvar AutoComplete = new AutoComplete.Controller();","var CanvasPictureHelper;\r\n(function (CanvasPictureHelper) {\r\n var Controller = (function () {\r\n function Controller(canvasElementId) {\r\n this.canvasElementId = canvasElementId.toString();\r\n this.IsEmptyPicture = true;\r\n this.imageX = 0;\r\n this.imageY = 0;\r\n this.imageWidth = 100;\r\n this.imageHeight = 100;\r\n this.imageWidthRatio = 100;\r\n this.imageHeightRatio = 100;\r\n this.imageRight = 0;\r\n this.imageBottom = 0;\r\n this.startX = 0;\r\n this.startY = 0;\r\n this.draggingImage = false;\r\n this.canvas = document.getElementById(this.canvasElementId);\r\n if (!this.canvas)\r\n return;\r\n this.context = this.canvas.getContext(\"2d\");\r\n this.imageObj = new Image();\r\n this.canvasOffset = $(\"#\" + this.canvasElementId).offset();\r\n this.offsetX = this.canvasOffset.left;\r\n this.offsetY = this.canvasOffset.top;\r\n this.imageSrc = null;\r\n\r\n var _this = this;\r\n }\r\n\r\n Controller.prototype.OnLoadImageLoadEvent = function () {\r\n var _this = this;\r\n var def = $.Deferred();\r\n\r\n _this.imageObj.onload = function () {\r\n if (_this.imageObj.width >= _this.imageObj.height) {\r\n _this.imageHeightRatio = 100;\r\n _this.imageWidthRatio = (_this.imageObj.width / _this.imageObj.height) * _this.imageHeightRatio;\r\n } else {\r\n _this.imageWidthRatio = 100;\r\n _this.imageHeightRatio = (_this.imageObj.height / _this.imageObj.width) * _this.imageWidthRatio;\r\n }\r\n _this.imageX = 0;\r\n _this.imageY = 0;\r\n _this.imageWidth = _this.imageObj.width;\r\n _this.imageHeight = _this.imageObj.height;\r\n _this.imageRight = _this.imageX + _this.imageWidth;\r\n _this.imageBottom = _this.imageY + _this.imageHeight;\r\n _this.draw();\r\n _this.canvasOffset = $(\"#\" + _this.canvasElementId).offset();\r\n _this.offsetX = _this.canvasOffset.left;\r\n _this.offsetY = _this.canvasOffset.top;\r\n def.resolve();\r\n };\r\n return def.promise();\r\n };\r\n\r\n Controller.prototype.FetchImgBase64String = function () {\r\n let _canvas = document.createElement('canvas');\r\n let _context = _canvas.getContext(\"2d\");\r\n let _orgImage = new Image();\r\n _orgImage.src = this.imageSrc;\r\n\r\n let min_length = Math.min(_orgImage.height, _orgImage.width);\r\n\r\n _canvas.height = _orgImage.height;\r\n _canvas.width = _orgImage.width;\r\n\r\n let _scaling = min_length / 100; // scaling for 100x100px canvas for moving offset\r\n\r\n let destWidth = _canvas.width * (this.imageWidthRatio / 100);\r\n let destHeight = _canvas.height * (this.imageHeightRatio / 100);\r\n let destX = this.imageX * _scaling / (_orgImage.width / destWidth);\r\n let destY = this.imageY * _scaling / (_orgImage.height / destHeight);\r\n\r\n _context.drawImage(_orgImage, 0, 0, _orgImage.width, _orgImage.height, destX, destY, destWidth, destHeight);\r\n return _canvas.toDataURL();\r\n };\r\n\r\n\r\n Controller.prototype.hitImage = function (x, y) {\r\n var _this = this;\r\n return (x > _this.imageX && x < _this.imageX + _this.imageWidth && y > _this.imageY && y < _this.imageY + _this.imageHeight);\r\n };\r\n\r\n Controller.prototype.handleMouseUp = function (e) {\r\n var _this = this;\r\n _this.draggingImage = false;\r\n _this.draw(true, false);\r\n };\r\n\r\n Controller.prototype.handleMouseOut = function (e) {\r\n var _this = this;\r\n _this.handleMouseUp(e);\r\n };\r\n\r\n Controller.prototype.handleMouseDown = function (e) {\r\n var _this = this;\r\n _this.startX = parseInt(e.clientX - _this.offsetX);\r\n _this.startY = parseInt(e.clientY - _this.offsetY);\r\n _this.draggingImage = _this.hitImage(_this.startX, _this.startY);\r\n };\r\n\r\n Controller.prototype.handleMouseMove = function (e) {\r\n var _this = this;\r\n if (_this.draggingImage) {\r\n var mouseX = parseInt(e.clientX - _this.offsetX);\r\n var mouseY = parseInt(e.clientY - _this.offsetY);\r\n var dx = mouseX - _this.startX;\r\n var dy = mouseY - _this.startY;\r\n _this.imageX += dx;\r\n _this.imageY += dy;\r\n\r\n if (_this.imageX > 0)\r\n _this.imageX = 0;\r\n if (_this.imageX < -_this.imageWidthRatio + 100)\r\n _this.imageX = -_this.imageWidthRatio + 100;\r\n\r\n if (_this.imageY > 0)\r\n _this.imageY = 0;\r\n if (_this.imageY < -_this.imageHeightRatio + 100)\r\n _this.imageY = -_this.imageHeightRatio + 100;\r\n\r\n _this.imageRight += dx;\r\n _this.imageBottom += dy;\r\n _this.startX = mouseX;\r\n _this.startY = mouseY;\r\n _this.draw(false, true);\r\n }\r\n };\r\n\r\n Controller.prototype.draw = function () {\r\n var _this = this;\r\n if ($(_this.imageObj).attr(\"src\") === \"\")\r\n return;\r\n _this.context.clearRect(0, 0, _this.canvas.width, _this.canvas.height);\r\n\r\n\r\n _this.context.drawImage(_this.imageObj, 0, 0, _this.imageObj.width, _this.imageObj.height, _this.imageX, _this.imageY, _this.imageWidthRatio, _this.imageHeightRatio);\r\n _this.IsEmptyPicture = false;\r\n };\r\n\r\n Controller.prototype.ResetCanvas = function () {\r\n var _this = this;\r\n $(_this.imageObj).attr(\"src\", \"/Style/Images/gb_no_profile_pic_100x100.png\");\r\n _this.context.clearRect(0, 0, _this.canvas.width, _this.canvas.height);\r\n _this.IsEmptyPicture = true;\r\n };\r\n\r\n return Controller;\r\n })();\r\n CanvasPictureHelper.Controller = Controller;\r\n})(CanvasPictureHelper || (CanvasPictureHelper = {}));","var Clear;\r\n(function (Clear) {\r\n var Controller = (function () {\r\n function Controller() {\r\n\r\n }\r\n\r\n var obliviate = function (self) {\r\n $(self).remove();\r\n };\r\n\r\n var empty = function (self) {\r\n $(self).empty();\r\n };\r\n\r\n var clear = function (self) {\r\n self.value = '';\r\n };\r\n\r\n var uncheck = function (self) {\r\n self.checked = false;\r\n };\r\n\r\n var defaultify = function (self) {\r\n var _defaultValue = $(self).data('default');\r\n if (_defaultValue != 'undefined' && _defaultValue !== undefined) {\r\n $(self).val(_defaultValue + \"\");\r\n }\r\n };\r\n\r\n var reset = function (selector) {\r\n var element = $(selector);\r\n var inputs = element.find('input');\r\n var destroyable = element.find('.destroyable');\r\n var textareas = element.find('textarea');\r\n var selects = element.find('select');\r\n\r\n inputs.each(function () {\r\n switch (this.type) {\r\n case 'text':\r\n clear(this);\r\n defaultify(this);\r\n break;\r\n case 'checkbox':\r\n uncheck(this);\r\n break;\r\n case 'number':\r\n defaultify(this);\r\n break;\r\n case 'time':\r\n defaultify(this);\r\n break;\r\n }\r\n });\r\n\r\n textareas.each(function () {\r\n empty(this);\r\n clear(this);\r\n });\r\n\r\n destroyable.each(function () {\r\n obliviate(this);\r\n });\r\n\r\n selects.each(function () {\r\n defaultify(this);\r\n });\r\n };\r\n\r\n Controller.prototype.clearForm = Controller.clearForm = Controller.form = function (_form) {\r\n reset('form[name=\"' + _form + '\"]');\r\n };\r\n\r\n Controller.prototype.input = Controller.input = function (selector) {\r\n reset(selector);\r\n };\r\n\r\n return Controller;\r\n })();\r\n Clear.Controller = Controller;\r\n})(Clear || (Clear = {}));\r\nvar Clear = new Clear.Controller();","!function () {\r\n var _ = {};\r\n\r\n _.handleClick = function (click) {\r\n let $this = $(this);\r\n if (!$this.is('[disabled]')) {\r\n $this.addClass('clicked');\r\n setTimeout(() => { $this.removeClass('clicked'); }, 500);\r\n if (typeof click === 'function') {\r\n click.call(this);\r\n }\r\n }\r\n };\r\n\r\n window.buttons = _;\r\n}();","!function () {\r\n var _ = {};\r\n window.gbcalendar = _;\r\n\r\n let secureDate = function (date) {\r\n if (moment.isMoment(date)) {\r\n date = date.toDate();\r\n }\r\n let offset = date.getTimezoneOffset();\r\n date = new Date(+date + (offset * 60000));\r\n return date;\r\n };\r\n\r\n let isWithinTimeframe = function (timeframeStart, timeframeEnd, start, end) {\r\n return !(end < timeframeStart || start > timeframeEnd);\r\n };\r\n\r\n _.eventSources = (() => {\r\n let _loadCache = () => {\r\n let _cache = {};\r\n\r\n if (!window.localStorage) {\r\n return _cache;\r\n }\r\n\r\n let _localStorage = window.localStorage.getItem('calendarEvents');\r\n\r\n if (_localStorage && localStorage.length) {\r\n _cache = JSON.parse(_localStorage);\r\n\r\n for (let key in _cache) {\r\n let item = _cache[key];\r\n if (!item || !item.data) {\r\n delete _cache[key];\r\n }\r\n }\r\n }\r\n \r\n return _cache;\r\n };\r\n let _persist = (_cache) => { window.localStorage && window.localStorage.setItem('calendarEvents', JSON.stringify(_cache)); };\r\n let _clean = (events, ns, start, end) => {\r\n start = secureDate(start);\r\n end = secureDate(end);\r\n\r\n let limit = new Date() - 3600000; // one hour\r\n let output = [];\r\n let _cache = _loadCache();\r\n let _eventMap = {};\r\n let _cleanCount = 0;\r\n let _limitCount = 0;\r\n\r\n for (var i = 0; i < events.length; i++) {\r\n let _event = events[i];\r\n _eventMap[_event.id] = _event;\r\n }\r\n\r\n if (!ns) {\r\n for (let key in _cache) {\r\n // remove missing events from cache\r\n let _c = _cache[key];\r\n if (isWithinTimeframe(start, end, moment(`${_c.data.start}`).toDate(), moment(`${_c.data.end}`).toDate()) && !(key in _eventMap)) {\r\n output[output.length] = _c;\r\n delete _cache[key];\r\n ++_cleanCount;\r\n }\r\n }\r\n } else {\r\n for (let key in _cache) {\r\n // remove missing events from cache\r\n let _c = _cache[key];\r\n if (_c.data.className === ns && isWithinTimeframe(start, end, moment(`${_c.data.start}`).toDate(), moment(`${_c.data.end}`).toDate()) && !(key in _eventMap)) {\r\n output[output.length] = _c;\r\n delete _cache[key];\r\n ++_cleanCount;\r\n }\r\n }\r\n }\r\n\r\n for (let key in _cache) {\r\n if (!_cache.hasOwnProperty(key)) continue;\r\n let evt = _cache[key];\r\n if (!+evt.stored || evt.stored < limit) {\r\n delete _cache[key];\r\n ++_limitCount;\r\n }\r\n }\r\n\r\n _limitCount && console.log(`cache@cleaned limit (${_limitCount})`);\r\n _cleanCount && console.log(`cache@cleaned (${_cleanCount}): [${ns}] ${(new Date(start)).toISOString()} - ${(new Date(end)).toISOString()}`);\r\n _persist(_cache);\r\n return output;\r\n };\r\n let _store = (events) => {\r\n let storedDate = new Date();\r\n let _cache = _loadCache();\r\n\r\n for (let key in events) {\r\n let evt = events[key];\r\n _cache[evt.id] = {\r\n data: evt,\r\n stored: +storedDate\r\n };\r\n }\r\n\r\n console.log(`cache@stored (${Object.getOwnPropertyNames(_cache).length})`);\r\n _persist(_cache);\r\n };\r\n let _fetch = (start, end) => {\r\n start = secureDate(start);\r\n end = secureDate(end);\r\n\r\n let result = [];\r\n let limit = new Date() - 3600000; // one hour\r\n let _cache = _loadCache();\r\n let _limitCount = 0;\r\n\r\n for (let key in _cache) {\r\n if (!_cache.hasOwnProperty(key)) continue;\r\n let evt = _cache[key];\r\n if (!+evt.stored || evt.stored < limit) {\r\n delete _cache[key];\r\n ++_limitCount;\r\n } else {\r\n if (isWithinTimeframe(start, end, moment(`${evt.data.start}`).toDate(), moment(`${evt.data.end}`).toDate())) {\r\n result[result.length] = evt.data;\r\n }\r\n }\r\n }\r\n _limitCount && console.log(`cache@cleaned limit (${_limitCount})`);\r\n console.log(`cache@loaded (${result.length}): ${(new Date(start)).toISOString()} - ${(new Date(end)).toISOString()}`);\r\n _persist(_cache);\r\n return result;\r\n };\r\n\r\n return {\r\n update: function (calendar, start, end) {\r\n let cached = _fetch(start, end);\r\n if (cached && cached.length) {\r\n _.loading.lessons.isFetching =\r\n _.loading.blockings.isFetching =\r\n _.loading.groups.isFetching =\r\n _.loading.shops.isFetching =\r\n _.loading.locks.isFetching = true;\r\n\r\n $.when(calendar.fullCalendar('removeEvents', function (fc_event) {\r\n return cached.any((e) => {\r\n return e.id === fc_event.id;\r\n });\r\n })).then(() => {\r\n calendar.fullCalendar('renderEvents', cached);\r\n });\r\n \r\n this.all(calendar, true);\r\n } else {\r\n this.all(calendar, false);\r\n }\r\n },\r\n ajax: function (url, ns, calendar, silent) {\r\n var startDate = new Date();\r\n let view = calendar.fullCalendar('getView');\r\n let _data = $.extend(fetchResourcesParams(), fetchLocationsParams(), { start: gb.date.toSortable(view.start.toDate()), end: gb.date.toSortable(view.end.toDate()), timezone: $('select[name=TimeZone] option:selected').val() });\r\n \r\n if (!_data ||\r\n !_data.start ||\r\n !_data.end ||\r\n (Object.keys && !Object.keys(_data).any((e) => { return e.indexOf('resources') !== -1; }))) {\r\n return;\r\n }\r\n\r\n $.ajax({\r\n url: url,\r\n type: 'POST',\r\n dataType: 'json',\r\n data: _data,\r\n async: silent,\r\n beforeSend: function (jqXHR) {\r\n console.log(`events@loading: [${ns}] ${view.start.toDate().toISOString()} - ${view.start.toDate().toISOString()}`);\r\n if (!ns) {\r\n _.loading.lessons.isFetching =\r\n _.loading.blockings.isFetching =\r\n _.loading.groups.isFetching =\r\n _.loading.shops.isFetching =\r\n _.loading.locks.isFetching = true;\r\n\r\n _.loading.lessons.lastestFetchDate = new Date(startDate.valueOf());\r\n _.loading.blockings.lastestFetchDate = new Date(startDate.valueOf());\r\n _.loading.groups.lastestFetchDate = new Date(startDate.valueOf());\r\n _.loading.shops.lastestFetchDate = new Date(startDate.valueOf());\r\n _.loading.locks.lastestFetchDate = new Date(startDate.valueOf());\r\n\r\n _.loading.lessons.clearRefetch();\r\n _.loading.blockings.clearRefetch();\r\n _.loading.groups.clearRefetch();\r\n _.loading.shops.clearRefetch();\r\n _.loading.locks.clearRefetch();\r\n } else {\r\n _.loading[ns].lastestFetchDate = new Date(startDate.valueOf());\r\n !silent && (_.loading[ns].isFetching = true);\r\n _.loading[ns].clearRefetch();\r\n }\r\n if (!silent) _.loading.update();\r\n },\r\n success: function (data, textStatus, jqXHR) {\r\n if (!ns) {\r\n _.loading.lessons.isFetching =\r\n _.loading.blockings.isFetching =\r\n _.loading.groups.isFetching =\r\n _.loading.shops.isFetching =\r\n _.loading.locks.isFetching = false;\r\n\r\n _.loading.lessons.startRefetch();\r\n _.loading.blockings.startRefetch();\r\n _.loading.groups.startRefetch();\r\n _.loading.shops.startRefetch();\r\n _.loading.locks.startRefetch();\r\n } else {\r\n if (+(_.loading[ns].lastestFetchDate) !== +startDate) {\r\n return;\r\n }\r\n\r\n _.loading[ns].isFetching = false;\r\n _.loading[ns].startRefetch();\r\n }\r\n\r\n if (data && data.length) {\r\n console.log(`events@loaded (${data.length}): [${ns}] ${view.start.toDate().toISOString()} - ${view.start.toDate().toISOString()}`);\r\n let updated = [];\r\n let _cache = _loadCache();\r\n\r\n for (let key in data) {\r\n let _event = data[key];\r\n let _fromCache = _cache[_event.id];\r\n if (!_fromCache || !_fromCache.data || JSON.stringify(_event) !== JSON.stringify(_fromCache.data)) {\r\n updated[updated.length] = _event;\r\n }\r\n }\r\n\r\n let removes = _clean(data, ns, view.start, view.end);\r\n\r\n setTimeout(function() {\r\n $.when(calendar.fullCalendar('removeEvents', function (fc_event) {\r\n let remove =\r\n (updated.any((e) => {\r\n return e.id === fc_event.id;\r\n })\r\n ||\r\n removes.any((e) => {\r\n return e.data.id === fc_event.id;\r\n }));\r\n return remove;\r\n })).then(() => {\r\n calendar.fullCalendar('renderEvents', updated);\r\n if (!silent) _.loading.update();\r\n });\r\n }, 10);\r\n\r\n console.log(`cache@updated (${updated.length})`);\r\n _store(updated);\r\n } else {\r\n let removes = _clean([], ns, view.start, view.end);\r\n setTimeout(() => {\r\n calendar.fullCalendar('removeEvents', function (fc_event) {\r\n return removes.any((e) => {\r\n return e.data.id === fc_event.id;\r\n });\r\n });\r\n });\r\n }\r\n }\r\n });\r\n },\r\n lessons: function (calendar, silent) {\r\n this.ajax('/Calendar/GetLessonEventsFromTo', 'lessons', calendar, silent);\r\n },\r\n blockings: function (calendar, silent) {\r\n this.ajax('/Calendar/GetBlockingEventsFromTo', 'blockings', calendar, silent);\r\n },\r\n groups: function (calendar, silent) {\r\n this.ajax('/Calendar/GetCourseEventsFromTo', 'groups', calendar, silent);\r\n },\r\n shops: function (calendar, silent) {\r\n this.ajax('/Calendar/GetShopEventsFromTo', 'shops', calendar, silent);\r\n },\r\n locks: function (calendar, silent) {\r\n this.ajax('/Calendar/GetLocksFromTo', 'locks', calendar, silent);\r\n },\r\n all: function (calendar, silent) {\r\n this.ajax('/Calendar/AllEvents', null, calendar, silent);\r\n }\r\n };\r\n })();\r\n\r\n _.loading = (() => {\r\n let loading_indicator = null;\r\n\r\n return {\r\n loadPermissible: function (func, type) {\r\n let $hover_events = $('.fc-event:hover, .fc-list-item:hover', _.loading.calendar);\r\n\r\n if ($hover_events.length > 0) {\r\n $hover_events.off('.loading-' + type).on('mouseout.loading-' + type, function () { $hover_events.off('.loading-' + type); func(); });\r\n } else {\r\n func();\r\n }\r\n },\r\n enabled: true,\r\n calendar: null,\r\n lessons: {\r\n lastestFetchDate: null,\r\n isFetching: false,\r\n timeout: null,\r\n startRefetch: function () {\r\n if (_.loading.enabled) {\r\n this.timeout = setTimeout(function () {\r\n _.loading.loadPermissible(function () { _.eventSources.lessons($(_.loading.calendar), true); }, 'lessons');\r\n }, 60000); // 60 sec\r\n }\r\n },\r\n clearRefetch: function () {\r\n clearTimeout(this.timeout);\r\n }\r\n },\r\n blockings: {\r\n lastestFetchDate: null,\r\n isFetching: false,\r\n timeout: null,\r\n startRefetch: function () {\r\n if (_.loading.enabled) {\r\n this.timeout = setTimeout(function () {\r\n _.loading.loadPermissible(function () { _.eventSources.blockings($(_.loading.calendar), true); }, 'blockings');\r\n }, 300000); // 5 min\r\n }\r\n },\r\n clearRefetch: function () {\r\n clearTimeout(this.timeout);\r\n }\r\n },\r\n groups: {\r\n lastestFetchDate: null,\r\n isFetching: false,\r\n timeout: null,\r\n startRefetch: function () {\r\n if (_.loading.enabled) {\r\n this.timeout = setTimeout(function () {\r\n _.loading.loadPermissible(function () { _.eventSources.groups($(_.loading.calendar), true); }, 'groups');\r\n\r\n }, 300000); // 5 min\r\n }\r\n },\r\n clearRefetch: function () {\r\n clearTimeout(this.timeout);\r\n }\r\n },\r\n shops: {\r\n lastestFetchDate: null,\r\n isFetching: false,\r\n timeout: null,\r\n startRefetch: function () {\r\n if (_.loading.enabled) {\r\n this.timeout = setTimeout(function () {\r\n _.loading.loadPermissible(function () { _.eventSources.shops($(_.loading.calendar), true); }, 'shops');\r\n }, 60000); // 60 sec\r\n }\r\n },\r\n clearRefetch: function () {\r\n clearTimeout(this.timeout);\r\n }\r\n },\r\n locks: {\r\n lastestFetchDate: null,\r\n isFetching: false,\r\n timeout: null,\r\n startRefetch: function () {\r\n if (_.loading.enabled) {\r\n this.timeout = setTimeout(function () {\r\n _.loading.loadPermissible(function () { _.eventSources.locks($(_.loading.calendar), true); }, 'locks');\r\n }, 60000); // 60 sec\r\n }\r\n },\r\n clearRefetch: function () {\r\n clearTimeout(this.timeout);\r\n }\r\n },\r\n resources: {\r\n lastestFetchDate: null,\r\n isFetching: false\r\n },\r\n update: function () {\r\n if (!loading_indicator || !loading_indicator.length) {\r\n loading_indicator = $('#calendarLoadingIndicator');\r\n\r\n if (!loading_indicator || !loading_indicator.length) {\r\n loading_indicator = $(_.loading.calendar).find('.fc-header-toolbar .fc-right').prepend('').find('#calendarLoadingIndicator');\r\n }\r\n }\r\n\r\n let isFetching =\r\n this.lessons.isFetching ||\r\n this.blockings.isFetching ||\r\n this.groups.isFetching ||\r\n this.shops.isFetching ||\r\n this.locks.isFetching ||\r\n this.resources.isFetching;\r\n\r\n if (!isFetching) {\r\n gb.ui.spinner.hide($('.loadingSpinner', _.loading.calendar));\r\n } else {\r\n gb.ui.spinner.show($('.loadingSpinner', _.loading.calendar));\r\n }\r\n\r\n loading_indicator.toggleClass('hidden', !isFetching);\r\n\r\n return isFetching;\r\n }\r\n };\r\n })();\r\n\r\n var isAdmin = false;\r\n var economyEnabled = false;\r\n var backgroundColors = ['#16A085', '#F39C12', '#27AE60', '#C0392B', '#E67E22', '#8E44AD', '#8E44AD', '#D14EC0'];\r\n var calendarFilters = null;\r\n var fetchLocationsParams = function () {\r\n var data = {};\r\n\r\n $('select[name=\"locations\"] option:not([value=\"null\"]):selected').each(function (i) {\r\n data[\"locations[\" + i + \"]\"] = this.value;\r\n });\r\n\r\n return data;\r\n };\r\n var fetchResourcesParams = function () {\r\n var data = {};\r\n\r\n $('select[name=\"resources\"] option:selected').each(function (i) {\r\n data[\"resources[\" + i + \"]\"] = this.value;\r\n });\r\n\r\n return data;\r\n };\r\n var calendarOptions = function (calendarID) {\r\n var localeFormats = {\r\n shortDate: null\r\n };\r\n\r\n return {\r\n schedulerLicenseKey: '0451907029-fcs-1517999442',\r\n lazyFetching: true,\r\n height: 'auto',\r\n defaultView: 'agendaWeek',\r\n editable: isAdmin,\r\n selectable: true,\r\n allDaySlot: false,\r\n locale: 'en',\r\n fixedWeekCount: false,\r\n navLinks: true,\r\n navLinkWeekClick: 'agendaWeek',\r\n navLinkDayClick: 'agendaDay',\r\n listDayFormat: 'dddd',\r\n listDayAltFormat: 'DD. MMMM YYYY',\r\n selectHelper: isAdmin,\r\n selectConstraint: isAdmin ? undefined : 'businessHours',\r\n unselectAuto: true,\r\n header: {\r\n left: 'prev today',\r\n center: 'title',\r\n right: 'next'\r\n },\r\n footer: {\r\n left: (isAdmin ? 'agendaDay,agendaTwoDay,agendaWeek,month gbListDay,gbListWeek' : ''),\r\n right: (isAdmin ? 'calendarIntegration' : '')\r\n },\r\n columnHeaderText: function (_moment) {\r\n var format = localeFormats.shortDate || (localeFormats.shortDate = 'ddd ' + _moment.localeData().longDateFormat('l').replace(/Y/g, '').replace(/^\\W|\\W$|\\W\\W/, ''));\r\n return _moment.format(format);\r\n },\r\n views: {\r\n agendaDay: {\r\n type: 'agenda',\r\n duration: { days: 1 },\r\n buttonText: '1 ' + translator.translate('day', 'Day'),\r\n titleFormat: 'dddd - D. MMM. YYYY'\r\n },\r\n agendaTwoDay: {\r\n type: 'agenda',\r\n duration: { days: 2 },\r\n buttonText: '2 ' + translator.translate('days', 'Days')\r\n },\r\n gbListDay: {\r\n type: 'list',\r\n duration: { days: 1 },\r\n buttonText: translator.translate('list_day', 'List day'),\r\n titleFormat: 'D. MMM. YYYY W'\r\n },\r\n gbListWeek: {\r\n type: 'list',\r\n duration: { week: 1 },\r\n buttonText: translator.translate('list_week', 'List week'),\r\n titleFormat: 'D. MMM. YYYY W'\r\n },\r\n gbTimelineDay: {\r\n type: 'timeline',\r\n duration: { day: 1 },\r\n buttonText: translator.translate('timeline_day', 'Timeline day'),\r\n }\r\n },\r\n customButtons: {\r\n calendarIntegration: {\r\n text: translator.translate('calendarintegration', 'Calendarintegration'),\r\n click: function (jqEvent) {\r\n window.location.href = `https://${window.location.host}/Pro/iCalendar/GetFeed/${$('select[name=\"resources\"] option:selected').first().val()}`;\r\n gb.ui.spinner.hide($('.loadingSpinner'));\r\n }\r\n }\r\n },\r\n windowResize: function (view) {\r\n // https://fullcalendar.io/docs/current_date/duration/\r\n // https://fullcalendar.io/docs/views/changeView/\r\n },\r\n selectOverlap: function (event) {\r\n return event.rendering === 'background' || !event.resourceId || event.overlap;\r\n },\r\n eventOverlap: function (stillEvent, movingEvent) {\r\n return stillEvent.rendering === 'background' || !stillEvent.resourceId || stillEvent.overlap;\r\n },\r\n selectAllow: function (selectInfo) {\r\n if (isAdmin || selectInfo.start.diff(moment().stripZone()) > 0) {\r\n return true;\r\n } else {\r\n console.log('past!');\r\n return false;\r\n }\r\n },\r\n select: function (start, end, jsEvent, view, resource) {\r\n $(\"#newAppointmentTime-date\").html(start.format('Do MMMM YYYY'));\r\n $(\"#newAppointmentTime-time-start\").html(start.format(FullCalendar.locales[$(calendarID).fullCalendar('option', 'locale')].mediumTimeFormat));\r\n\r\n let $calendar = $(calendarID);\r\n let start_as_date = start.toDate();\r\n let events = $calendar.fullCalendar('getResourceEvents', resource).filter(e => { return e.start.toDate() > start_as_date && e.rendering !== 'background'; });\r\n let $modal = $('#createNewAppointmentModal');\r\n let $null_option = $('select[name=\"lesson\"] option[value=\"null\"]').addClass('hidden').attr('disabled', true);\r\n let $lesson_options = $('select[name=\"lesson\"] option:not([value=\"null\"])', $modal).attr({ 'disabled': false, 'checked': false }).trigger('change');\r\n let $ok_button = $null_option.parents('#createNewAppointmentModal').find('.ok-button').removeAttr('disabled');\r\n let $lesson_radio = $('input[name=\"appointment_type\"][value=\"lesson\"]').removeClass('no-submit');\r\n let disabled_lessons = 0;\r\n let bh_end = null;\r\n let bh_clicked = null;\r\n\r\n let dow = start.day();\r\n for (let i = 0; i < resource.businessHours.length; i++) {\r\n let bh = resource.businessHours[i];\r\n if (bh.dow.any(e => e == dow) && moment(bh.startAsISO).stripZone().diff(start) <= 0 && moment(bh.endAsISO).stripZone().diff(start) > 0) {\r\n // selected inside this businesshour\r\n bh_clicked = bh;\r\n bh_end = moment(bh.endAsISO).stripZone();\r\n break;\r\n }\r\n }\r\n\r\n if ($calendar.hasClass('rebooking')) {\r\n window.location.href = \"/Pro/Calendar/Appointment/\" + $calendar.data('rebooking') + \"/Rebook/\" + gb.date.toSortable(start.toDate()) + \"/\" + resource.id + \"/\" + $('select[name=TimeZone] option:selected').val();\r\n return false;\r\n }\r\n\r\n\r\n // Everything is reset before this point\r\n for (let i = 0; i < $lesson_options.length; i++) {\r\n let option = $lesson_options[i];\r\n let lesson_resources = $(option).data('resources').split(',');\r\n let lesson_duration = $(option).data('calendar-duration');\r\n let lesson_end = moment(start).add(parseInt(lesson_duration), 'minutes');\r\n\r\n let option_has_resource = false;\r\n for (let j = 0; j < lesson_resources.length; j++) {\r\n if (resource.id === lesson_resources[j]) {\r\n option_has_resource = true;\r\n }\r\n }\r\n $(option).toggleClass('hidden', !option_has_resource);\r\n\r\n if (!isAdmin && lesson_end > bh_end) {\r\n $(option).attr('disabled', true);\r\n disabled_lessons++;\r\n continue;\r\n }\r\n\r\n for (let j = 0; j < events.length; j++) {\r\n if (lesson_end > events[j].start) {\r\n $(option).attr('disabled', true);\r\n disabled_lessons++;\r\n break;\r\n }\r\n }\r\n if (bh_clicked && !($(option).data('locations').toLowerCase().indexOf(bh_clicked.locationId) >= 0)) {\r\n $(option).attr('disabled', true);\r\n }\r\n }\r\n\r\n $modal.removeClass('hidden');\r\n\r\n\r\n if (disabled_lessons === $lesson_options.length) { // No lessons bookable\r\n $null_option.removeClass('hidden').attr({ 'disabled': false, 'selected': true }).prop({ 'disabled': false, 'selected': true });\r\n $ok_button.attr('disabled', true);\r\n $('input[name=\"appointment_type\"][value=\"lesson\"]').addClass('no-submit');\r\n } else if ($lesson_options && $lesson_options.length) {\r\n let first_lesson = $lesson_options.not('[disabled], .hidden').first();\r\n $lesson_options.parent().val(first_lesson.val());\r\n\r\n let lesson_duration = first_lesson.data((isAdmin ? 'calendar-duration' : 'duration'));\r\n $(\"#newAppointmentTime-time-end\").html(moment(start).add(parseInt(lesson_duration), 'minutes').format(FullCalendar.locales[$(calendarID).fullCalendar('option', 'locale')].mediumTimeFormat));\r\n }\r\n\r\n $('select[name=\"lesson\"]').off('change').on('change', (function (_start) {\r\n return function () {\r\n let lesson_duration = $('option[value=\"' + this.value + '\"]', this).data((isAdmin ? 'calendar-duration' : 'duration'));\r\n $(\"#newAppointmentTime-time-end\").html(moment(_start).add(parseInt(lesson_duration), 'minutes').format(FullCalendar.locales[$(calendarID).fullCalendar('option', 'locale')].mediumTimeFormat));\r\n };\r\n })(start));\r\n\r\n setTimeout(function () { $('select[name=\"lesson\"]').focus(); }, 100);\r\n\r\n $('#createAppointmentButton').off('click').on('click', (function (_start, _end, _resource) {\r\n return function () {\r\n let $self = $(this);\r\n if (!$self.is('[disabled]')) {\r\n let app_type = $('input[name=\"appointment_type\"]:checked');\r\n let url = '/';\r\n let from = gb.date.toSortable(_start.toDate());\r\n let to = gb.date.toSortable(_end.toDate());\r\n\r\n switch (app_type.val()) {\r\n default:\r\n case 'lesson':\r\n to = gb.date.toSortable(moment(start).add(parseInt($('select[name=\"lesson\"] option:selected').data('calendar-duration')), 'minutes').toDate());\r\n if (isAdmin) {\r\n url += `Pro/Calendar/AppointmentLesson/${_resource.id}/${from}/${to}/${$('select[name=\"lesson\"]').val()}/${$('select[name=TimeZone] option:selected').val()}`;\r\n } else {\r\n url += `Player/Bookings/${_resource.id}/${from}/${to}/${$('select[name=\"lesson\"]').val()}/${$('select[name=\"locations\"] option:selected').val()}`;\r\n }\r\n if (bh_clicked) {\r\n $.ajax({\r\n url: '/Calendar/Lock',\r\n method: 'POST',\r\n dataType: 'json',\r\n data: {\r\n resourceGuid: resource.id,\r\n start: from,\r\n end: to,\r\n timezone: $('select[name=TimeZone] option:selected').val()\r\n },\r\n complete: function (jqXHR) {\r\n if ((jqXHR && jqXHR.status === 200 && jqXHR.responseJSON) && (!jqXHR.responseJSON.IsAuthenticated || jqXHR.responseJSON.Success)) {\r\n window.location.href = url;\r\n }\r\n }\r\n });\r\n } else {\r\n window.location.href = url;\r\n }\r\n break;\r\n case 'group_lesson':\r\n url += `Pro/Calendar/Course/Edit/${from}/${to}/${_resource.id}/${$('select[name=TimeZone] option:selected').val()}`;\r\n\r\n if (bh_clicked !== null) {\r\n url += `/${bh_clicked.locationId}`;\r\n }\r\n window.location.href = url;\r\n break;\r\n case 'blocking':\r\n let blocking_type = $('input[name=\"blocking_option\"]:checked').val();\r\n\r\n if (blocking_type === 'quick_blocking') {\r\n url += `Pro/Calendar/Blocking/Quick/${from}/${to}/${_resource.id}/${$('select[name=TimeZone] option:selected').val()}`;\r\n } else if (blocking_type === 'new_blocking') {\r\n url += `Pro/Calendar/Blocking/Edit/${from}/${to}/${_resource.id}/${$('select[name=TimeZone] option:selected').val()}`;\r\n }\r\n window.location.href = url;\r\n break;\r\n case 'shop':\r\n url += `Pro/Calendar/Shop/Booking/Edit/${from}/${to}/${_resource.id}/${$('select[name=TimeZone] option:selected').val()}`;\r\n window.location.href = url;\r\n break;\r\n }\r\n }\r\n };\r\n })(start, end, resource));\r\n\r\n let $lesson_types = $('#lesson-types');\r\n let $blocking_options = $('#blocking-options');\r\n\r\n $('input[name=\"appointment_type\"]').off('change').on('change', (function (_start, _end, _resource) {\r\n return function () {\r\n if (this.checked) {\r\n let delay = 0;\r\n\r\n if (this.value === 'blocking') {\r\n $(\"#newAppointmentTime-time-end\").html(_end.format('H:mm'));\r\n if ($lesson_types.hasClass('expanded')) {\r\n delay = 200;\r\n $lesson_types.removeClass('expanded');\r\n }\r\n } else if (this.value === 'lesson') {\r\n $('select[name=\"lesson\"]').trigger('change');\r\n if ($blocking_options.hasClass('expanded')) {\r\n delay = 200;\r\n $blocking_options.removeClass('expanded');\r\n }\r\n } else if (this.value === 'group_lesson') {\r\n $(\"#newAppointmentTime-time-end\").empty();\r\n } else if (this.value === 'shop') {\r\n $(\"#newAppointmentTime-time-end\").empty();\r\n }\r\n\r\n let _this = this;\r\n setTimeout(function () {\r\n $lesson_types.toggleClass('expanded', _this.value === 'lesson');\r\n $blocking_options.toggleClass('expanded', _this.value === 'blocking');\r\n }, delay);\r\n\r\n var $self = $(this);\r\n\r\n if ($self.hasClass('no-submit')) {\r\n $self.parents('#createNewAppointmentModal').find('.ok-button').attr('disabled', true);\r\n } else {\r\n $self.parents('#createNewAppointmentModal').find('.ok-button').removeAttr('disabled');\r\n }\r\n }\r\n };\r\n })(start, end, resource)).trigger('change');\r\n },\r\n resources: function (callback) {\r\n if ($('select[name=\"resources\"] option:selected').length) {\r\n var startDate = new Date();\r\n _.loading.resources.lastestFetchDate = new Date(startDate.valueOf());\r\n _.loading.resources.isFetching = true;\r\n let _calendar = $(calendarID);\r\n\r\n $.ajax({\r\n url: '/Calendar/GetResourcesSettings?' + $.param(fetchResourcesParams()),\r\n type: 'POST',\r\n dataType: 'json',\r\n async: true,\r\n complete: function (data) {\r\n if (data && data.responseJSON) {\r\n _calendar.fullCalendar('option', data.responseJSON);\r\n let view = _calendar.fullCalendar('getView');\r\n\r\n setTimeout(() => {\r\n $.ajax({\r\n url: '/Calendar/GetResources?'\r\n + $.param($.extend(fetchResourcesParams(), fetchLocationsParams()))\r\n + '&start=' + gb.date.toSortable(view.start.toDate())\r\n + '&end=' + gb.date.toSortable(view.end.toDate())\r\n + '&timezone=' + $('select[name=TimeZone] option:selected').val(),\r\n type: 'POST',\r\n dataType: 'json',\r\n complete: function (data) {\r\n console.log(`calendar@resources loaded`);\r\n if (+(_.loading.resources.lastestFetchDate) === +startDate) { // This is the latest request\r\n if (data && data.status === 200 && data.responseJSON) {\r\n let resources = data.responseJSON;\r\n let bgEvents = [];\r\n for (let i = 0; i < resources.length; i++) {\r\n let res = resources[i];\r\n if (res.children && res.children.length) {\r\n for (let j = 0; j < res.children.length; j++) {\r\n let loc_businesshours = res.children[j].businessHours;\r\n res.businessHours = res.businessHours.concat(loc_businesshours);\r\n if (isAdmin) {\r\n for (let k = 0; k < loc_businesshours.length; k++) {\r\n let bg_event = loc_businesshours[k];\r\n let _color = bg_event.color ? bg_event.color : (backgroundColors.length > j ? backgroundColors[j] : null);\r\n\r\n bgEvents.push({\r\n id: 'availability',\r\n locationId: bg_event.locationId,\r\n locationName: bg_event.locationName,\r\n start: bg_event.startAsISO,\r\n end: bg_event.endAsISO,\r\n color: _color,\r\n rendering: 'background',\r\n resourceId: res.id,\r\n overlap: true\r\n });\r\n\r\n $('.location-identity[data-location=\"' + bg_event.locationId + '\"] .location-identity-color').css('background-color', _color);\r\n }\r\n } else if (!isAdmin) {\r\n let moment_now = moment().stripZone();\r\n res.businessHours = res.businessHours.filter(e => { return (moment(e.endAsISO).diff(moment_now) > 0); });\r\n }\r\n }\r\n res.children = []; // We dont support locations yet\r\n } else if (res.businessHours && res.businessHours.length) {\r\n for (let k = 0; k < res.businessHours.length; k++) {\r\n let bg_event = res.businessHours[k];\r\n let _color = bg_event.color ? bg_event.color : (backgroundColors.length > j ? backgroundColors[j] : null);\r\n\r\n bgEvents.push({\r\n id: 'availability',\r\n locationId: bg_event.locationId,\r\n locationName: bg_event.locationName,\r\n start: bg_event.startAsISO,\r\n end: bg_event.endAsISO,\r\n color: _color,\r\n rendering: 'background',\r\n resourceId: res.id\r\n });\r\n\r\n $('.location-identity[data-location=\"' + bg_event.locationId + '\"] .location-identity-color').css('background-color', _color);\r\n }\r\n }\r\n\r\n if (!res.businessHours || !res.businessHours.length) {\r\n res.businessHours = { // no availability\r\n dow: [0, 1, 2, 3, 4, 5, 6],\r\n start: '24:00',\r\n end: '00:00'\r\n };\r\n }\r\n }\r\n _calendar.fullCalendar('removeEvents', e => e.id === 'availability');\r\n if (bgEvents) {\r\n _calendar.fullCalendar('renderEvents', bgEvents);\r\n }\r\n callback(data.responseJSON);\r\n setTimeout(() => { _.loading.update(); }, 1); // Lag is to wait for view rendering\r\n }\r\n }\r\n\r\n setTimeout(() => { _.eventSources.update(_calendar, view.start.toDate(), view.end.toDate()); }, 1);\r\n }\r\n });\r\n }, 1);\r\n }\r\n _.loading.resources.isFetching = false;\r\n }\r\n });\r\n }\r\n },\r\n eventRender: function (event, element, view) {\r\n if (event.id && event.rendering !== 'background') {\r\n element.data('id', event.id).attr('data-id', event.id);\r\n\r\n let _is = {\r\n course: false,\r\n lesson: false,\r\n blocking: false,\r\n shop: false,\r\n lock: false\r\n };\r\n\r\n if (view.type === 'list' ||\r\n view.type === 'gbListDay' ||\r\n view.type === 'gbListWeek') {\r\n let fc_wrapper = $('');\r\n\r\n let fc_list_item_col = $('
');\r\n let fc_title = element.find(\".fc-list-item-title\").detach();\r\n fc_title = $('
' + fc_title.html() + '
');\r\n\r\n if (event.bu_resources) {\r\n fc_title.append(\"
\" + event.bu_resources.map(e => e.name).join(', ') + \"
\");\r\n }\r\n\r\n fc_wrapper.append(fc_title);\r\n\r\n if (event.locationName) {\r\n fc_wrapper.append('
' + event.locationName + '
');\r\n }\r\n\r\n let event_icon = $('
');\r\n if (event.className.any(e => e === 'shop-event')) {\r\n _is.shop = true;\r\n event_icon.addClass('icon-payment_register');\r\n } else if (event.className.any(e => e === 'lesson-event')) {\r\n _is.lesson = true;\r\n event_icon.addClass('icon-golf_iron');\r\n if (event.unreadMessage) {\r\n element.addClass('unread-message');\r\n }\r\n } else if (event.className.any(e => e === 'course-event')) {\r\n _is.course = true;\r\n event_icon.addClass('icon-golf_bag');\r\n } else if (event.className.any(e => e === 'blocking-event')) {\r\n _is.blocking = true;\r\n event_icon.addClass('icon-mini_no');\r\n } else if (event.className.any(e => e === 'lock-event')) {\r\n _is.lock = true;\r\n event_icon.addClass('icon-padlock_locked');\r\n }\r\n\r\n if (_is.course | _is.lesson) { // Add participants\r\n if (event.participants) {\r\n let event_participants = $('');\r\n\r\n for (let i = 0; i < event.participants.length; i++) {\r\n let par = event.participants[i];\r\n let wrapper = $('
  • ');\r\n let name = $('' + par.name + '');\r\n\r\n if (economyEnabled) {\r\n wrapper.append($(''));\r\n }\r\n\r\n wrapper.append(name);\r\n event_participants.append(wrapper);\r\n }\r\n\r\n event_participants.insertAfter(fc_title);\r\n }\r\n }\r\n\r\n fc_wrapper.append(event_icon);\r\n element.append(fc_wrapper);\r\n } else {\r\n let fc_content = $('.fc-content', element);\r\n let fc_time = $('.fc-time', fc_content);\r\n let fc_title = $('.fc-title', element);\r\n let event_icon = $('
    ');\r\n\r\n if (event.className.any(e => e === 'shop-event')) {\r\n _is.shop = true;\r\n event_icon.addClass('icon-payment_register');\r\n\r\n if (!event.className.any(e => e === 'non-selectable')) {\r\n fc_title.remove();\r\n\r\n let fc_event_top = $('
    ');\r\n let fc_event_top_left = $('
    ');\r\n let fc_event_top_right = $('
    ');\r\n\r\n fc_event_top.append(fc_event_top_left);\r\n fc_event_top.append(fc_event_top_right);\r\n\r\n fc_event_top_right.append(event_icon);\r\n\r\n if (event.bu_resources) {\r\n for (let i = 0; i < event.bu_resources.length; i++) {\r\n let event_resource = $('
    ');\r\n let res = event.bu_resources[i];\r\n\r\n event_resource.append('');\r\n event_resource.append('' + res.name + '');\r\n fc_event_top_left.append(event_resource);\r\n }\r\n }\r\n\r\n fc_content.prepend(fc_event_top);\r\n } else {\r\n fc_content.prepend(event_icon);\r\n }\r\n } else if (event.className.any(e => e === 'lesson-event')) {\r\n _is.lesson = true;\r\n\r\n if (event.unreadMessage) {\r\n element.addClass('unread-message');\r\n } else {\r\n event_icon.addClass('icon-golf_iron');\r\n fc_content.prepend(event_icon);\r\n }\r\n } else if (event.className.any(e => e === 'course-event')) {\r\n _is.course = true;\r\n event_icon.addClass('icon-golf_bag');\r\n fc_content.prepend(event_icon);\r\n } else if (event.className.any(e => e === 'blocking-event')) {\r\n _is.blocking = true;\r\n event_icon.addClass('icon-mini_no');\r\n fc_content.prepend(event_icon);\r\n\r\n if (event.description) {\r\n let txt = document.createElement('textarea');\r\n txt.innerHTML = event.description;\r\n\r\n $('
    ' + txt.value + '
    ').insertAfter(fc_title);\r\n }\r\n } else if (event.className.any(e => e === 'lock-event')) {\r\n _is.lock = true;\r\n event_icon.addClass('icon-padlock_locked');\r\n fc_content.prepend(event_icon);\r\n }\r\n\r\n if (!_is.shop || event.className.any(e => e === 'non-selectable')) {\r\n fc_time.detach().insertAfter(fc_title);\r\n }\r\n\r\n if (_is.course | _is.lesson) { // Add participants\r\n if (event.participants) {\r\n let event_participants = $('
    ');\r\n\r\n for (let i = 0; i < event.participants.length; i++) {\r\n let par = event.participants[i];\r\n let wrapper = $('
    ');\r\n let name = $('' + par.name + '');\r\n\r\n if (economyEnabled) {\r\n wrapper.append($(''));\r\n }\r\n\r\n wrapper.append(name);\r\n event_participants.append(wrapper);\r\n }\r\n\r\n event_participants.insertAfter(event_icon);\r\n }\r\n }\r\n }\r\n } else if (event.id && event.rendering === 'background' && event.id === 'availability') {\r\n element.data({\r\n 'locationId': event.locationId,\r\n 'locationName': event.locationName\r\n }).attr({\r\n 'locationId': event.locationId,\r\n 'locationName': event.locationName\r\n });\r\n }\r\n },\r\n viewRender: function (view, element) {\r\n var header = view.calendar.header.el[0];\r\n\r\n if (header) {\r\n var filterToolbar = $('.fc-toolbar-filter');\r\n if (!filterToolbar || !filterToolbar.length) {\r\n filterToolbar = $('
    ');\r\n filterToolbar.insertAfter(header);\r\n filterToolbar.append((calendarFilters || (calendarFilters = $('#calendar-filters').detach())).children());\r\n\r\n var $resource_filter = $('select[name=\"resources\"]', filterToolbar);\r\n\r\n if ($resource_filter.hasClass('highlight')) {\r\n $resource_filter[0].scrollIntoView();\r\n }\r\n }\r\n\r\n if (isAdmin) {\r\n var calendarSettings = $('.fc-calendar-settings', header);\r\n if (!calendarSettings || !calendarSettings.length) {\r\n calendarSettings = $('');\r\n $('.fc-right', header).prepend(calendarSettings);\r\n }\r\n\r\n var scaleOption = $('.fc-scale-option', header);\r\n if (!scaleOption || !scaleOption.length) {\r\n scaleOption = $('');\r\n $('.fc-right', header).prepend(scaleOption);\r\n }\r\n }\r\n }\r\n\r\n var weekNumberTitle = $('.fc-week-number span, .fc-week-number a', view.calendar.el);\r\n if (weekNumberTitle && weekNumberTitle.length) {\r\n for (var i = 0; i < weekNumberTitle.length; i++) {\r\n var weekNumberPart = $(weekNumberTitle[i]).html().match(/\\d*$/);\r\n $(weekNumberTitle[i]).html(translator.translate('week', 'Week') + ' ' + weekNumberPart);\r\n }\r\n }\r\n\r\n if (view.type === 'list' ||\r\n view.type === 'gbListDay' ||\r\n view.type === 'gbListWeek') {\r\n\r\n var titleParts = view.title.split(' ');\r\n var weekNo = titleParts.pop(); // Week is last\r\n\r\n view.title = titleParts.join(' ') + '  (' + translator.translate('week', 'Week') + ' ' + weekNo + ')';\r\n\r\n if (header) {\r\n $('.fc-center h2', header).html(view.title);\r\n }\r\n $('.locations-list').addClass('hidden');\r\n } else {\r\n $('.locations-list').removeClass('hidden');\r\n }\r\n\r\n if (!element.find('.loadingSpinner').length) {\r\n element.prepend(gb.ui.spinner.create());\r\n }\r\n\r\n setTimeout(function () { $(document).trigger('scroll'); }, 100); // Sticky header\r\n },\r\n resourceRender: function (resourceObj, labelTds, bodyTds) {\r\n labelTds.on('click', function () {\r\n $('select[name=\"resources\"]').val(labelTds.data('resourceId')).trigger('change');\r\n });\r\n\r\n if ($(calendarID).fullCalendar('option', 'groupByResource') || ($(calendarID).fullCalendar('option', 'groupByDateAndResource') && $(calendarID).fullCalendar('getView').name === 'agendaDay')) {\r\n var bgs = $('.fc-bg td.fc-day', calendarID);\r\n var last_resource = null;\r\n for (var i = 0; i < bgs.length; i++) {\r\n if (last_resource === null) {\r\n last_resource = $(bgs[i]).data('resource-id');\r\n } else if (last_resource != $(bgs[i]).data('resource-id')) {\r\n last_resource = $(bgs[i]).addClass('alternate-border').data('resource-id');\r\n }\r\n }\r\n }\r\n },\r\n eventDrop: function (event, delta, revertFunc, jsEvent, ui, view) {\r\n $.ajax({\r\n url: '/Calendar/UpdateAppointment',\r\n type: 'POST',\r\n data: {\r\n id: event.id,\r\n deltaAsMinutes: delta.asMinutes(),\r\n resources: (event.resourceIds ? event.resourceIds.join(',') : event.resourceId)\r\n },\r\n success: function (data) {\r\n let status = \"\";\r\n let message = \"\";\r\n if (data.success) {\r\n status = \"success\";\r\n message = \"\";\r\n } else {\r\n status = \"error\";\r\n message = \"\";\r\n message += data.message;\r\n revertFunc();\r\n }\r\n\r\n let element = $('.fc-event[data-id=\"' + event.id + '\"]');\r\n\r\n element.prepend('
    ' + message + '
    ');\r\n element.addClass((!data.success ? 'expanded ' : '') + status);\r\n\r\n setTimeout(function () {\r\n element.removeClass('fc-state-hover error success expanded').find('.fc-event-message').remove();\r\n }, data.success ? 2200 : 6000);\r\n },\r\n fail: function (data) {\r\n revertFunc();\r\n }\r\n });\r\n },\r\n eventDragStart: function (event, jsEvent, ui, view) {\r\n let org = $('.fc-event[data-id=\"' + event.id + '\"]');\r\n let ghost = org.clone(true).addClass('ghost').removeClass('fc-state-hover');\r\n ghost.css('bottom', ghost.data('bottom'));\r\n ghost.insertAfter(org);\r\n $(calendarID).addClass('dragging');\r\n },\r\n eventDragStop: function (event, jsEvent, ui, view) {\r\n $(calendarID).removeClass('dragging');\r\n $('.fc-event.ghost[data-id=\"' + event.id + '\"]').remove();\r\n },\r\n weekNumberCalculation: 'ISO',\r\n //snapDuration: { minutes: 5 },\r\n\r\n // Settings chosen by current profile\r\n groupByResource: true,\r\n groupByDateAndResource: false,\r\n weekNumbers: true,\r\n nowIndicator: true,\r\n\r\n // Dynamic settings by resources chosen\r\n minTime: '00:00:00',\r\n maxTime: '24:00:00',\r\n slotDuration: '00:30:00'\r\n };\r\n };\r\n var extendLocales = function (culture) {\r\n var _24Hformat = 'HH:mm';\r\n var _12Hformat = 'hh:mma';\r\n\r\n culture = culture.toLowerCase();\r\n\r\n FullCalendar.locales['da']['slotLabelFormat'] = _24Hformat;\r\n\r\n if (!(culture in FullCalendar.locales) && culture.split('-')[0] in FullCalendar.locales) {\r\n culture = culture.split('-')[0];\r\n }\r\n\r\n if (/H/.test(FullCalendar.locales[culture].hourFormat)) {\r\n FullCalendar.locales[culture]['slotLabelFormat'] = _24Hformat;\r\n } else {\r\n FullCalendar.locales[culture]['slotLabelFormat'] = _12Hformat;\r\n FullCalendar.locales[culture]['timeFormat'] = 'hh:mma';\r\n }\r\n\r\n return culture;\r\n };\r\n let dragging = false; // Used for touch devices\r\n\r\n _.init = function (id, options, _isAdmin, _culture, _economyEnabled) {\r\n isAdmin = _isAdmin;\r\n economyEnabled = _economyEnabled;\r\n var extendedCalendarOptions = $.extend(true, {}, calendarOptions(id), options);\r\n extendedCalendarOptions.locale = extendLocales(_culture);\r\n _.loading.calendar = id;\r\n var $calendar = null;\r\n $(document).ready(function () {\r\n var init = null;\r\n init = setInterval(function () {\r\n try {\r\n $calendar = $(id).fullCalendar(extendedCalendarOptions);\r\n clearInterval(init);\r\n } catch (error) {\r\n console.dir(error);\r\n }\r\n }, 100);\r\n }).on('mouseenter', 'select[name=\"resources\"]', function () {\r\n if (isAdmin && !gb.isTouch()) {\r\n var $self = $(this);\r\n var size = 0;\r\n var optgroups = $('optgroup', $self);\r\n var options = $('option', $self);\r\n\r\n if (optgroups && optgroups.length) {\r\n size += optgroups.length;\r\n }\r\n\r\n if (options && options.length) {\r\n size += options.length;\r\n }\r\n\r\n $self.css('height', (size * 18) + 'px');\r\n }\r\n }).on('mouseleave', 'select[name=\"resources\"]', function () {\r\n var $self = $(this);\r\n if (isAdmin && !gb.isTouch()) {\r\n $self.css('height', '');\r\n }\r\n setTimeout(function () {\r\n $self.trigger('scrollTo');\r\n }, 500);\r\n }).on('blur scrollTo', 'select[name=\"resources\"]', function () {\r\n let resource_selected = $(this).find('option:selected');\r\n if (resource_selected && resource_selected.length) {\r\n this.scrollTop = $(this).find('option:selected')[0].offsetTop;\r\n }\r\n }).on('change', 'input[name=\"Date\"]', function () {\r\n $calendar.fullCalendar('gotoDate', this.value);\r\n }).on('mouseenter mouseleave touchend', id + ':not(.dragging) .fc-event:not(.expanded)', function (dom_event) {\r\n var $this = $(this);\r\n // Don't do anything if touchend is fired after dragging by touch\r\n if (dom_event.type === 'touchend' && dragging) {\r\n return;\r\n }\r\n\r\n if (dom_event && dom_event.type === 'touchend') {\r\n $('.fc-event.fc-state-hover', id).not(this).trigger('mouseleave');\r\n\r\n if (!$this.hasClass('fc-state-hover')) {\r\n dom_event.preventDefault(); // This is preventing touch from firing click event\r\n setTimeout(function () {\r\n $this.trigger('mouseleave');\r\n }, 4000);\r\n }\r\n }\r\n\r\n var calculated_height = null;\r\n var true_height = null;\r\n var bottom = null;\r\n\r\n if (!$this.data(\"calculated_height\")) {\r\n calculated_height = parseFloat($this.height());\r\n true_height = parseFloat($this.find('.fc-content').height());\r\n bottom = $this.css('bottom');\r\n\r\n $this.data({\r\n 'calculated_height': calculated_height,\r\n 'true_height': true_height,\r\n 'bottom': bottom\r\n });\r\n } else {\r\n calculated_height = $this.data('calculated_height');\r\n true_height = $this.data('true_height');\r\n bottom = $this.data('bottom');\r\n }\r\n\r\n if (dom_event.type === 'mouseenter' || dom_event.type === 'touchend') {\r\n $this.addClass('fc-state-hover').parent().addClass('active');\r\n\r\n if (true_height > calculated_height) {\r\n $this.css('bottom', '-=' + (true_height - calculated_height));\r\n }\r\n } else {\r\n $this.removeClass('fc-state-hover').parent().removeClass('active');\r\n\r\n if (true_height > calculated_height) {\r\n $this.css('bottom', bottom);\r\n }\r\n }\r\n }).on('mousedown', '.fc-calendar-settings, .fc-scale-option', function () {\r\n $(this).addClass('fc-state-down');\r\n }).on('mouseup mouseout', '.fc-calendar-settings, .fc-scale-option', function () {\r\n $(this).removeClass('fc-state-down');\r\n }).on('click', '.fc-prev-button, .fc-next-button', function () {\r\n $calendar.fullCalendar('refetchResources');\r\n var _moment = $calendar.fullCalendar('getDate');\r\n $('input[name=\"Date\"] + input.datepicker').datepicker('setDate', _moment.toDate());\r\n }).on('click', '.fc-timelineDay-button, .fc-agendaDay-button, .fc-agendaTwoDay-button, .fc-agendaWeek-button, .fc-month-button, .fc-gbListDay-button, .fc-gbListWeek-button, .fc-week-number span, .fc-week-number a, .fc-day-header a, .fc-resource-cell', function () {\r\n $calendar.fullCalendar('refetchResources');\r\n $calendar.fullCalendar('refetchEvents');\r\n }).on('change', 'select[name=\"resources\"], select[name=\"locations\"], input[name=\"Date\"], select[name=\"TimeZone\"]', function () {\r\n $calendar.fullCalendar('refetchResources');\r\n $calendar.fullCalendar('refetchEvents');\r\n }).on('mouseup', '.fc-today-button:not(.fc-state-disabled)', function () {\r\n setTimeout(function () {\r\n $calendar.fullCalendar('refetchResources');\r\n var _moment = $calendar.fullCalendar('getDate');\r\n $('input[name=\"Date\"] + input.datepicker').datepicker('setDate', _moment.toDate());\r\n $('.fc-today-button').trigger('save-filters');\r\n }, 100);\r\n }).on('click', '.fc-agendaWeek-button, .fc-week-number span, .fc-week-number a, .fc-day-header a, .fc-resource-cell', function () {\r\n var _moment = $calendar.fullCalendar('getDate');\r\n $('input[name=\"Date\"] + input.datepicker').datepicker('setDate', _moment.toDate());\r\n });\r\n\r\n $(document).add(id).on('scroll load resize', (function () {\r\n let oldVisible = null;\r\n\r\n return function () {\r\n let table_header = $('thead.fc-head:eq(0)', $calendar);\r\n let placeholder = $('#sticky-header-placeholder');\r\n\r\n if (!placeholder.length) {\r\n placeholder = $('
    ').css({ height: table_header.outerHeight() });\r\n placeholder.insertBefore(table_header);\r\n }\r\n\r\n if (table_header.length && placeholder.length) {\r\n let visible = false;\r\n\r\n if (table_header.hasClass('sticky')) {\r\n visible = gb.ui.position(placeholder).visible();\r\n } else {\r\n visible = gb.ui.position(table_header).visible();\r\n }\r\n\r\n if (visible !== oldVisible || (!table_header.hasClass('sticky') && !visible)) {\r\n oldVisible = visible;\r\n\r\n placeholder.css({ height: table_header.outerHeight() });\r\n\r\n placeholder.toggleClass('hidden', visible);\r\n table_header.toggleClass('sticky', !visible);\r\n\r\n if (!visible) {\r\n table_header.css({ width: placeholder.outerWidth() });\r\n } else {\r\n table_header.css({ width: '' });\r\n }\r\n }\r\n }\r\n };\r\n })());\r\n\r\n // Used to prevent \"hover\" on touch devices after scrolling\r\n $(document).on(\"touchmove\", function () {\r\n dragging = true;\r\n }).on(\"touchstart\", function () {\r\n dragging = false;\r\n });\r\n };\r\n}();","var ErrrorValidation;\r\n(function (ErrrorValidation) {\r\n var Controller = (function () {\r\n function Controller() {\r\n this.oldLabel = {};\r\n var _this = this;\r\n }\r\n\r\n Controller.prototype.GetOldLabel = function (key) {\r\n var _this = this;\r\n return _this.oldLabel[key];\r\n }\r\n\r\n Controller.prototype.StoreOldLabel = function (key, value) {\r\n var _this = this;\r\n _this.oldLabel[key] = value;\r\n }\r\n\r\n Controller.prototype.AddError = function (inputWrapper, labelElement, errorMessage) {\r\n var input = inputWrapper.find('.inputBox');\r\n input.addClass('inputError');\r\n labelElement.addClass('labelError');\r\n if (errorMessage !== \"\")\r\n labelElement.text(errorMessage);\r\n var iconContainer = inputWrapper.find('i');\r\n iconContainer.css('display', 'inline');\r\n }\r\n\r\n Controller.prototype.AddSuccess = function (inputElement, labelElement, successMessage) {\r\n inputElement.addClass('inputSuccess');\r\n labelElement.addClass('labelSuccess');\r\n labelElement.text(successMessage);\r\n }\r\n\r\n Controller.prototype.ResetAll = function (inputWrapper, labelElement, resetInput) {\r\n var _this = this;\r\n var inputElement = inputWrapper.find('.inputBox');\r\n inputElement.removeClass('inputSuccess');\r\n inputElement.removeClass('inputError');\r\n labelElement.removeClass('labelError');\r\n labelElement.removeClass('labelSuccess');\r\n for (var i = 0; i < labelElement.length; i++) {\r\n $(labelElement[i]).text(_this.oldLabel[$(labelElement[i]).attr('id')]);\r\n }\r\n var iconContainer = inputWrapper.find('i');\r\n iconContainer.hide();\r\n if (resetInput)\r\n inputElement.val(\"\");\r\n }\r\n\r\n Controller.prototype.ResetErrorBox = function (errorBoxElement) {\r\n errorBoxElement.removeClass('active');\r\n }\r\n\r\n\r\n Controller.prototype.SuccessShowHide = function (removeClass, addClass) {\r\n var _this = this;\r\n\r\n $('#successOverlays').removeClass(removeClass);\r\n $('#successTriangle').removeClass(removeClass);\r\n $('.feedBackBoxSuccess').removeClass(removeClass);\r\n $('#successOverlays').addClass(addClass);\r\n $('#successTriangle').addClass(addClass);\r\n $('.feedBackBoxSuccess').addClass(addClass);\r\n }\r\n\r\n Controller.prototype.FailedShowHide = function (removeClass, addClass) {\r\n $('#failedOverlays').removeClass(removeClass);\r\n $('#failedTriangle').removeClass(removeClass);\r\n $('.feedBackBoxFailed').removeClass(removeClass);\r\n $('#failedOverlays').addClass(addClass);\r\n $('#failedTriangle').addClass(addClass);\r\n $('.feedBackBoxFailed').addClass(addClass);\r\n }\r\n\r\n Controller.prototype.ErrorValidationToggle = function (display, hidden) {\r\n $(hidden).AddClass('hidden');\r\n if (typeof display == 'Array') {\r\n $('#' + display.join(', #')).removeClass('hidden');\r\n } else {\r\n $('.' + display).removeClass('hidden');\r\n }\r\n }\r\n return Controller;\r\n })();\r\n ErrrorValidation.Controller = Controller;\r\n})(ErrrorValidation || (ErrrorValidation = {}));","var Helper;\r\n(function(Helper) {\r\n var Controller = (function() {\r\n function Controller(disable) {\r\n this.def = \"\";\r\n this.isSending = false;\r\n this.disableSendingOneAtATime = disable == undefined ? false : disable;\r\n var _this = this;\r\n }\r\n\r\n Controller.prototype.AjaxHelper = function(url, datatype, data, typeRequest, success, failed) {\r\n var _this = this;\r\n _this.def = $.Deferred();\r\n if (!_this.isSending) {\r\n if (!_this.disableSendingOneAtATime)\r\n _this.isSending = true;\r\n $.ajax(url, {\r\n cache : false,\r\n type : typeRequest,\r\n data : data,\r\n dataType : datatype\r\n }).done(function(data) {\r\n success(data);\r\n }).fail(function(data) {\r\n failed(data);\r\n }).always(function() {\r\n _this.isSending = false;\r\n _this.def.resolve();\r\n });\r\n }\r\n return _this.def.promise();\r\n }\r\n\r\n Controller.prototype.DisableButtonUntilRequestFinished = function(doDisabled, jqueryElement) {\r\n if (doDisabled)\r\n $(jqueryElement).addClass('disableRequest');\r\n else\r\n $(jqueryElement).removeClass('disableRequest');\r\n }\r\n\r\n\r\n Controller.prototype.ResetDropdownToDefault = function(dropdownJqueryElement) {\r\n $(dropdownJqueryElement + ' option').prop('selected', function() {\r\n return this.defaultSelected;\r\n });\r\n }\r\n\r\n Controller.prototype.ResizeModalBox = function() {\r\n $('.modalBox').Height($(window).height());\r\n }\r\n\r\n Controller.prototype.FetchCityByZipCodeAndCountry = function(zipcode, country) {\r\n var _this = this;\r\n var def = $.Deferred();\r\n _this.AjaxHelper(\"/api/golfbox/FetchCityByZipCode?country=\" + country + \"&zipcode=\" + zipcode, \"json\", \"\", \"GET\",\r\n function success(data) {\r\n if (data === \"\")\r\n def.reject();\r\n def.resolve(data);\r\n },\r\n function failed() {\r\n def.reject();\r\n });\r\n return def.promise();\r\n }\r\n\r\n Controller.prototype.SearchFilterSave = function(sfData) {\r\n var _this = this;\r\n var def = $.Deferred();\r\n _this.AjaxHelper(\"/SearchFilterSave\", \"json\", sfData, \"POST\",\r\n function success(data) {\r\n def.resolve(data);\r\n },\r\n function failed(data) {\r\n def.reject(data);\r\n });\r\n return def.promise();\r\n }\r\n\r\n return Controller;\r\n })();\r\n Helper.Controller = Controller;\r\n})(Helper || (Helper = {}));\r\n\r\nvar helperController = new Helper.Controller();","!function () {\r\n var _ = {};\r\n\r\n var instances = {};\r\n\r\n var data_animation = (function () {\r\n var queue = [];\r\n var queueInProgress = false;\r\n var maxWorkInterval = 30; // ms\r\n var batchMultiplier = 0.2;\r\n\r\n var animate = function (batch, type) {\r\n if (type === 'show') {\r\n let $batch = $('').add(batch.map(function (e) { return e.element[0]; }));\r\n $batch.removeClass('removed hidden').addClass('added');\r\n animate($batch.parent().children().filter(':not(.removed)'), 'update');\r\n } else if (type === 'hide') {\r\n let $batch = $('').add(batch.map(function (e) { return e.element[0]; }));\r\n $batch.removeClass('added odd even').addClass('removed');\r\n setTimeout(function () {\r\n $batch.addClass('hidden');\r\n }, 600);\r\n animate($batch.parent().children().filter(':not(.removed)'), 'update');\r\n } else if (type === 'update') {\r\n // even/odd is zero indexed\r\n batch.filter(':odd').removeClass('odd').addClass('even');\r\n batch.filter(':even').removeClass('even').addClass('odd');\r\n } else if (type === 'append') {\r\n // what to do?\r\n }\r\n };\r\n\r\n var startQueue = function () {\r\n if (!queueInProgress) {\r\n queueInProgress = true;\r\n setTimeout(doWork, 1);\r\n //console.dir(new Date());\r\n //console.log('queue started');\r\n }\r\n };\r\n\r\n var stopQueue = function (flush) {\r\n queueInProgress = false;\r\n //console.dir(new Date());\r\n //console.log('queue stopped');\r\n\r\n if (flush === true) {\r\n queue = [];\r\n }\r\n };\r\n\r\n var doWork = function () {\r\n if (queueInProgress) {\r\n //console.log('Queue: ' + queue.length);\r\n try {\r\n if (queue && queue.length > 0) {\r\n var batch = [];\r\n\r\n batch.push(queue.shift());\r\n var index = 0;\r\n var type = batch[index].type;\r\n var batchSize = queue.length * batchMultiplier;\r\n\r\n while (batch.length < batchSize && index < queue.length - 1) {\r\n if (queue[index].type === type) {\r\n batch.push(queue.splice(index, 1)[0]);\r\n } else {\r\n index++;\r\n }\r\n }\r\n\r\n animate(batch, type);\r\n var timeout = Math.max((Math.pow(0.98, queue.length) * maxWorkInterval), 1);\r\n setTimeout(doWork, timeout);\r\n } else {\r\n stopQueue();\r\n }\r\n } catch (err) {\r\n //console.dir(err);\r\n stopQueue();\r\n }\r\n }\r\n };\r\n\r\n return {\r\n startQueue: startQueue,\r\n stopQueue: stopQueue,\r\n toggleElement: function (element, visible, runQueue) {\r\n queue.push({\r\n element: element,\r\n type: visible ? 'show' : 'hide'\r\n });\r\n\r\n if (runQueue !== false) {\r\n startQueue();\r\n }\r\n },\r\n update: function (table) {\r\n animate($(table).find('tbody tr'), 'update');\r\n },\r\n append: function (target, element) {\r\n queue.push({\r\n element: element,\r\n type: visible ? 'show' : 'hide'\r\n });\r\n }\r\n };\r\n })();\r\n\r\n _.init = function (id, _columns, _header, _rows, _empty) {\r\n var emptyRow = $('' + _empty + '');\r\n var _instance = null;\r\n if (!instances[id]) {\r\n _instance = instances[id] = {\r\n columns: _columns,\r\n header: _header,\r\n rows: _rows,\r\n empty: emptyRow,\r\n table: $('#' + id)\r\n };\r\n } else {\r\n _instance = $.extend(instances[id], {\r\n columns: _columns,\r\n header: _header,\r\n rows: _rows,\r\n empty: emptyRow,\r\n table: $('#' + id)\r\n });\r\n }\r\n\r\n for (var i = 0; i < _rows.length; i++) {\r\n var row = _rows[i];\r\n row.element = $('#' + _rows[i].ID);\r\n row.currentIndex = i;\r\n }\r\n\r\n _instance.table.off('click', 'thead th.sortable:not(.unavailable)').on('click', 'thead th.sortable:not(.unavailable)', function () {\r\n var self = $(this);\r\n var direction = self.data('sort-direction');\r\n var newDirection = '';\r\n var down = 'down', up = 'up';\r\n\r\n if (direction.length === 0 || direction === up) {\r\n newDirection = down;\r\n } else if (direction === down) {\r\n newDirection = up;\r\n }\r\n\r\n var ths = _instance.table.find('thead th:nth-child(' + (self.index()+1) +')');\r\n ths.data('sort-direction', newDirection);\r\n ths.attr('data-sort-direction', newDirection);\r\n ths.find('.datalist-sort-arrow').removeClass(direction).addClass(newDirection);\r\n\r\n $(ths).siblings('.sortable').each(function () {\r\n var _that = $(this);\r\n _that.data('sort-direction', '');\r\n _that.attr('data-sort-direction', '');\r\n _that.find('.datalist-sort-arrow').removeClass('down').removeClass('up');\r\n });\r\n\r\n setTimeout(function () { doSort(id, self.data('col'), self.data('data-type'), newDirection); }, 1);\r\n });\r\n\r\n $('article').on('scroll load resize', (function () {\r\n let oldTop = null;\r\n let table_header = _instance.table.find('thead');\r\n let table_header_clone = table_header\r\n .clone(true)\r\n .addClass('clone sticky hidden')\r\n .insertAfter(table_header);\r\n\r\n table_header.find('th').each(function (k, v) {\r\n table_header_clone.find('th').eq(k).css({ width: $(v).outerWidth(false) });\r\n });\r\n\r\n return function (event) {\r\n let last_row_position = gb.ui.position(_instance.table.find('tbody tr:last-child'));\r\n if (!last_row_position.inside.top) {\r\n oldTop = true;\r\n table_header_clone.toggleClass('hidden', true);\r\n return;\r\n }\r\n\r\n let position = gb.ui.position(table_header);\r\n if (position.inside.top !== oldTop) {\r\n oldTop = position.inside.top;\r\n\r\n table_header_clone.toggleClass('hidden', position.inside.top);\r\n }\r\n };\r\n })());\r\n };\r\n\r\n _.filter = function (datalistID, filterID, column, value, defer) {\r\n var newFilter = {\r\n col: column,\r\n val: value\r\n };\r\n\r\n var initFilters = function () {\r\n instances[datalistID].filters = {};\r\n instances[datalistID].filters[filterID] = newFilter;\r\n };\r\n\r\n if (!instances[datalistID]) {\r\n instances[datalistID] = {};\r\n initFilters();\r\n } else {\r\n if (!instances[datalistID].filters) {\r\n initFilters();\r\n } else {\r\n if (!instances[datalistID].filters[filterID]) {\r\n instances[datalistID].filters[filterID] = newFilter;\r\n } else {\r\n var filter = instances[datalistID].filters[filterID];\r\n $.extend(true, filter, newFilter);\r\n }\r\n }\r\n }\r\n !defer && doFilter(datalistID);\r\n };\r\n\r\n var doSort = function (datalistID, column, type, direction) {\r\n var _instance = instances[datalistID];\r\n var sorted_rows = [];\r\n\r\n for (var row_key in _instance.rows) {\r\n var row = _instance.rows[row_key];\r\n var own_data = row.Cells[column].Data;\r\n\r\n var sorted_index = binarySearch(sorted_rows, own_data, column, type);\r\n\r\n sorted_rows.splice(sorted_index, 0, row);\r\n row.currentIndex = row.element.index();\r\n }\r\n\r\n var $fragment = $(document.createDocumentFragment());\r\n\r\n if (direction === 'up') {\r\n sorted_rows = sorted_rows.reverse();\r\n }\r\n\r\n var $tbody = _instance.table.find('tbody').detach().empty();\r\n\r\n for (var i = 0; i < sorted_rows.length; i++) {\r\n var sorted_row = sorted_rows[i];\r\n\r\n //if (i < sorted_row.currentIndex) { // moved up\r\n // sorted_row.element.removeClass('sorted-down').addClass('sorted-up');\r\n //} else if (i > sorted_row.currentIndex) { // morved down\r\n // sorted_row.element.removeClass('sorted-up').addClass('sorted-down');\r\n //} else {\r\n // sorted_row.element.removeClass('sorted-down sorted-up');\r\n //}\r\n sorted_row.currentIndex = i;\r\n $fragment.append(sorted_row.element);\r\n }\r\n\r\n $tbody.append($fragment);\r\n _instance.table.append($tbody);\r\n\r\n data_animation.update(_instance.table);\r\n };\r\n\r\n var binarySearch = function (array, item, column, type) {\r\n var min_index = 0;\r\n var max_index = array.length - 1;\r\n var current_index;\r\n var current_item;\r\n\r\n while (min_index <= max_index) {\r\n current_index = (max_index + min_index) >> 1;\r\n current_item = array[current_index].Cells[column].Data;\r\n\r\n var cmp = compare(item, current_item, type);\r\n\r\n if (cmp > 0) {\r\n min_index = current_index + 1;\r\n } else if (cmp < 0) {\r\n max_index = current_index - 1;\r\n } else {\r\n return current_index;\r\n }\r\n }\r\n\r\n return min_index | 0;\r\n }\r\n\r\n var compare = function (a, b, type) {\r\n if (b === null || typeof b === 'undefined' || b === \"@null\") {\r\n return -1;\r\n }\r\n\r\n if (a === null || typeof a === 'undefined' || a === \"@null\") {\r\n return 1;\r\n }\r\n\r\n switch (type) {\r\n case 'Text':\r\n case 'Money':\r\n case 'Number':\r\n case 'Date':\r\n case 'DateTime':\r\n case 'Time':\r\n default:\r\n return (a < b ? -1 : (a > b ? 1 : 0));\r\n }\r\n }\r\n\r\n var doFilter = function (datalistID) {\r\n var _instance = instances[datalistID];\r\n var _filters = _instance.filters;\r\n\r\n var has_filter_value = false;\r\n for (var filter_key in _filters) {\r\n if (_filters[filter_key].val.length) {\r\n has_filter_value = true;\r\n break;\r\n }\r\n }\r\n\r\n if (has_filter_value) {\r\n for (var key in _filters) {\r\n var filter = _filters[key];\r\n\r\n var moveToHidden = [];\r\n\r\n if (filter.val.length > 0) {\r\n if (filter.col === 'All') {\r\n for (let rowKey in _instance.rows) {\r\n let row = _instance.rows[rowKey];\r\n let cells = row.Cells;\r\n let hasMatch = false;\r\n\r\n for (var cellKey in cells) {\r\n var cell = cells[cellKey];\r\n if (matchFilter(cell, filter.val)) {\r\n hasMatch = true;\r\n break;\r\n }\r\n }\r\n\r\n if ((hasMatch && !row.Visible) ||\r\n (!hasMatch && row.Visible)) {\r\n row.Visible = !row.Visible;\r\n data_animation.toggleElement(row.element, hasMatch, true);\r\n }\r\n }\r\n } else {\r\n for (let rowKey in _instance.rows) {\r\n let row = _instance.rows[rowKey];\r\n let cell = row.Cells[filter.col];\r\n let hasMatch = matchFilter(cell, filter.val);\r\n\r\n if ((hasMatch && !row.Visible) ||\r\n (!hasMatch && row.Visible)) {\r\n row.Visible = !row.Visible;\r\n data_animation.toggleElement(row.element, hasMatch, true);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n var removed_rows = _instance.rows.filter(function (row) { return !row.Visible });\r\n\r\n for (let key in removed_rows) {\r\n let row = removed_rows[key];\r\n data_animation.toggleElement(row.element, (row.Visible = true), true);\r\n }\r\n }\r\n };\r\n\r\n var matchFilter = function (cell, filter_value) {\r\n return (!gb.linq(cell.DataType).any([4, 6]) && cell.Data !== null &&\r\n cell.Data.toString().toLowerCase().indexOf(filter_value.toLowerCase()) > -1);\r\n };\r\n\r\n window.datalist = _;\r\n}();","/**\r\n * @preserve golfbox.ui-validation.js\r\n */\r\n(function($, window, undefined) {\r\n\tif (window.golfbox.ui === undefined)\r\n\t\twindow.golfbox.ui = {};\r\n\r\n\tvar document = window.document,\r\n\t\tnavigator = window.navigator,\r\n\t\tlocation = window.location,\r\n\t\tgolfbox = window.golfbox,\r\n\t\t_ = golfbox.ui;\r\n\r\n var __formatErrorText = function(err) {\r\n\r\n if(err.errorText.toLowerCase().indexOf('%fieldname%') >= 0)\r\n return err.errorText.replace(/%fieldname%/ig, '\"' + resolveName() +'\"').replace(/\"\"/g, '\"');\r\n return err.errorText;\r\n\r\n function resolveName() {\r\n var target = $(err.clientId);\r\n var tmp = '';\r\n \r\n tmp = $.trim(target.attr('fieldname'));\r\n if(tmp.length > 0) {\r\n return tmp;\r\n }\r\n\r\n tmp = $.trim(target.data('fieldname'));\r\n if(tmp.length > 0) {\r\n return tmp;\r\n }\r\n\r\n tmp = $('label[for=\"' + target.attr('id') + '\"]');\r\n if(tmp.length > 0) {\r\n return tmp.first().html();\r\n }\r\n\r\n tmp = $(err.clientId.replace(/#/g, '#lbl_'));\r\n if(tmp.length > 0) {\r\n return tmp.first().html();\r\n }\r\n\r\n tmp = $(err.clientId.replace(/#/g, '#lbl'));\r\n if(tmp.length > 0) {\r\n return tmp.first().html();\r\n }\r\n\r\n tmp = target.parent('label');\r\n if(tmp.length > 0) {\r\n tmp = tmp.first();\r\n if(tmp.hasClass('wrap')) {\r\n tmp = tmp.children('span');\r\n if(tmp.length > 0) {\r\n return tmp.first().html();\r\n }\r\n }\r\n }\r\n\r\n return 'fieldname not found';\r\n }\r\n }\r\n /*DEATH TO BAD CODE*/\r\n\t/*var __formatErrorText = function(x) {\r\n\t\tvar e = x,\r\n\t\t\tt = e.errorText || '',\r\n\t\t\tfname = 'fieldname not found';\r\n\r\n\t\tif (t.toLowerCase().indexOf('%fieldname%') >= 0) {\r\n\t\t\tif (e.clientId && $(e.clientId).length > 0) {\r\n\t\t\t\tvar o = $(e.clientId);\r\n\r\n\t\t\t\tif ($.trim(o.attr('fieldname')).length > 0) {\r\n\t\t\t\t\tfname = $.trim(o.attr('fieldname'));\r\n\t\t\t\t} else if ($.trim(o.data('fieldname')).length > 0) {\r\n\t\t\t\t\tfname = $.trim(o.data('fieldname'));\r\n\t\t\t\t} else if ($('label[for=\"' + o.attr('id') + '\"]').length > 0) {\r\n\t\t\t\t\tfname = $('label[for=\"' + o.attr('id') + '\"]').html();\r\n\t\t\t\t} else if ($(e.clientId.replace(/#/g, '#lbl_')).length > 0) {\r\n\t\t\t\t\tfname = $(e.clientId.replace(/#/g, '#lbl_')).html();\r\n\t\t\t\t} else if ($(e.clientId.replace(/#/g, '#lbl')).length > 0) {\r\n\t\t\t\t\tfname = $(e.clientId.replace(/#/g, '#lbl')).html();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t\r\n\t\t}\r\n\r\n\t\treturn t;\r\n\t};*/\r\n\r\n\t_.validation = function(prop) {\r\n\t\tvar funcObj = function(prop, id) {\r\n\t\t\tthis.items = [];\r\n\t\t\tthis.errors = [];\r\n\t\t\tthis.renderArea = prop.renderArea || undefined;\r\n\r\n\t\t\t// validate event\r\n\t\t\tthis.fail = prop.fail || undefined;\r\n\t\t\tthis.done = prop.done || undefined;\r\n\t\t\tthis.always = prop.always || undefined;\r\n\r\n\t\t\tvar _isValid = undefined;\r\n\r\n\t\t\tthis.add = function(o, pos) {\r\n\t\t\t\tthis.items.splice(typeof pos === 'number' ? pos : this.items.length, 0, o);\r\n\t\t\t\treturn o;\r\n\t\t\t};\r\n\r\n\t\t\tthis.reset = function() {\r\n\t\t\t\tthis.items = this.errors = [];\r\n\t\t\t\t_isValid = undefined;\r\n\t\t\t\t$.isFunction(prop.reset) && prop.reset.call(this);\r\n\t\t\t};\r\n\r\n\t\t\tthis.isValid = function() {\r\n\t\t\t\treturn _isValid;\r\n\t\t\t};\r\n\r\n\t\t\tthis.validate = function(fail, done, always) {\r\n\t\t\t\tvar that = this;\r\n\r\n\t\t\t\tthat.errors = [];\r\n\t\t\t\t_isValid = undefined;\r\n\r\n\t\t\t\tvar process = function(o) {\r\n\t\t\t\t\tvar e = {\r\n\t\t\t\t\t\tclientId : o.clientId,\r\n\t\t\t\t\t\tisValid : o.isValid,\r\n\t\t\t\t\t\terrorText : o.errorText,\r\n\t\t\t\t\t\tformatText : undefined\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tif (!e.isValid) {\r\n\t\t\t\t\t\tvar i = that.errors.push(e);\r\n\t\t\t\t\t\te.formatText = that.getErrorText(i - 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tvar init = function(i) {\r\n\t\t\t\t\tvar o = that.items[i];\r\n\r\n\t\t\t\t\tif (o.validate && $.isFunction(o.validate)) {\r\n\t\t\t\t\t\to.validate.call(that);\r\n\r\n\t\t\t\t\t\tif (o.isValid === undefined) {\r\n\t\t\t\t\t\t\tvar interval = setInterval(function() {\r\n\t\t\t\t\t\t\t\tif (o.isValid === undefined)\r\n\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\tinterval = clearInterval(interval);\r\n\t\t\t\t\t\t\t\tprocess(o);\r\n\r\n\t\t\t\t\t\t\t\tif (i + 1 < that.items.length) {\r\n\t\t\t\t\t\t\t\t\tinit(i + 1);\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t_isValid = that.errors.length == 0 ? true : false;\r\n\r\n\t\t\t\t\t\t\t\t\t(that.errors.length >= 1 && $.isFunction(that.fail)) && that.fail(that.items, that.errors);\r\n\t\t\t\t\t\t\t\t\t(that.errors.length == 0 && $.isFunction(that.done)) && that.done(that.items, that.errors);\r\n\t\t\t\t\t\t\t\t\t($.isFunction(that.always)) && that.always(that.items, that.errors);\r\n\t\t\t\t\t\t\t\t\t(that.errors.length >= 1 && $.isFunction(fail)) && fail(that.items, that.errors);\r\n\t\t\t\t\t\t\t\t\t(that.errors.length == 0 && $.isFunction(done)) && done(that.items, that.errors);\r\n\t\t\t\t\t\t\t\t\t($.isFunction(always)) && always(that.items, that.errors);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}, 100);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tprocess(o);\r\n\r\n\t\t\t\t\t\t\tif (i + 1 < that.items.length) {\r\n\t\t\t\t\t\t\t\tinit(i + 1);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t_isValid = that.errors.length == 0 ? true : false;\r\n\r\n\t\t\t\t\t\t\t\t(that.errors.length >= 1 && $.isFunction(that.fail)) && that.fail(that.items, that.errors);\r\n\t\t\t\t\t\t\t\t(that.errors.length == 0 && $.isFunction(that.done)) && that.done(that.items, that.errors);\r\n\t\t\t\t\t\t\t\t($.isFunction(that.always)) && that.always(that.items, that.errors);\r\n\t\t\t\t\t\t\t\t(that.errors.length >= 1 && $.isFunction(fail)) && fail(that.items, that.errors);\r\n\t\t\t\t\t\t\t\t(that.errors.length == 0 && $.isFunction(done)) && done(that.items, that.errors);\r\n\t\t\t\t\t\t\t\t($.isFunction(always)) && always(that.items, that.errors);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif (that.items.length > 0) {\r\n\t\t\t\t\tinit(0);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t_isValid = true;\r\n\r\n\t\t\t\t\t(that.errors.length >= 1 && $.isFunction(that.fail)) && that.fail(that.items, that.errors);\r\n\t\t\t\t\t(that.errors.length == 0 && $.isFunction(that.done)) && that.done(that.items, that.errors);\r\n\t\t\t\t\t($.isFunction(that.always)) && that.always(that.items, that.errors);\r\n\t\t\t\t\t(that.errors.length >= 1 && $.isFunction(fail)) && fail(that.items, that.errors);\r\n\t\t\t\t\t(that.errors.length == 0 && $.isFunction(done)) && done(that.items, that.errors);\r\n\t\t\t\t\t($.isFunction(always)) && always(that.items, that.errors);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn _isValid;\r\n\t\t\t};\r\n\r\n\t\t\tthis.getErrorText = function(x) {\r\n\t\t\t\treturn __formatErrorText(typeof x === 'number' ? this.errors[x] : x);\r\n\t\t\t};\r\n\r\n\t\t\tthis.render = function () {\r\n\t\t\t\tvar that = this;\r\n\r\n\t\t\t\tif ($.isFunction(prop.render)) {\r\n\t\t\t\t prop.render.call(that);\r\n\t\t\t\t that.renderArea[0].scrollIntoView();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar errors = [];\r\n\r\n\t\t\t\tfor (var i = 0; i < that.errors.length; i++) {\r\n\t\t\t\t\tvar txt = that.getErrorText(i);\r\n\t\t\t\t\terrors.push(txt);\r\n\t\t\t\t}\r\n\r\n\t\t\t\talert(errors.join('\\n'));\r\n\t\t\t};\r\n\t\t};\r\n\r\n\t\tvar id = (prop && prop.id) ? prop.id : golfbox.getUniqNumber();\r\n\t\tvar o = new funcObj(prop || {}, id);\r\n\t\t_['validation' + id] = o;\r\n\t\treturn o;\r\n\t};\r\n\r\n\t_.customValidator = function(func) {\r\n\t\tvar funcObj = function(func) {\r\n\t\t\tthis.clientId = undefined;\r\n\t\t\tthis.isValid = undefined;\r\n\t\t\tthis.errorText = 'customValidator not valid';\r\n\r\n\t\t\tvar that = this;\r\n\r\n\t\t\tthis.validate = function() {\r\n\t\t\t\t/*\r\n\t\t\t\t * NOTE IN THIS METHOD\r\n\t\t\t\t * 'this' keyword is reference to the validation object when calling from (golfbox.ui.validation()).validate()\r\n\t\t\t\t * 'that' keyword is reference to the funcObj object\r\n\t\t\t\t */\r\n\r\n\t\t\t\t$.isFunction(func) && func.call(that);\r\n\t\t\t\tthat.formatText = $.isFunction(this.getErrorText) ? undefined : __formatErrorText(that);\r\n\r\n\t\t\t\treturn that.isValid;\r\n\t\t\t};\r\n\t\t};\r\n\r\n\t\treturn new funcObj(func);\r\n\t};\r\n\r\n\t_.regExpValidator = function(targetId, errorText, pattern, allowEmpty) {\r\n\t\tvar isValidRegExp = function(value) {\r\n\t\t\tif (pattern instanceof RegExp)\r\n\t\t\t\treturn pattern.test(value || '');\r\n\r\n\t\t\tvar o = (golfbox.ui.regexlib) ? golfbox.ui.regexlib['pack_' + golfbox.page.lcid] : null;\r\n\r\n\t\t\tif (o) return o(pattern).test(value || '');\r\n\r\n\t\t\talert('Please import golfbox.ui.regexlib, validation failed.');\r\n\t\t\treturn false;\r\n\t\t};\r\n\r\n\t\treturn _.customValidator(function() {\r\n\t\t\tvar o = $(targetId),\r\n\t\t\t\tv = $.trim(o.val());\r\n\r\n\t\t\tthis.clientId = targetId;\r\n\t\t\tthis.isValid = (allowEmpty && v == '') ? true : isValidRegExp(v);\r\n\t\t\tthis.errorText = errorText || 'regExpValidator not valid';\r\n\t\t});\r\n\t};\r\n\r\n\t_.emailValidator = function(targetId, errorText, allowEmpty) {\r\n\t\t// The Official Standard: RFC 2822\r\n\t\tvar pattern = /^[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9]*[\\w\\.-]*[a-zA-Z0-9]\\.[a-zA-Z][a-zA-Z\\.]*[a-zA-Z]$/;\r\n\t\treturn _.regExpValidator(targetId, errorText || 'emailValidator not valid', pattern, allowEmpty);\r\n\t};\r\n\r\n\t_.inRangeValidator = function(targetId, errorText, min, max, allowEmpty) {\r\n\t\tvar isInRange = function(value) {\r\n\t\t\tvar i = (value.indexOf(',') > -1 || value.indexOf('.') > -1) ? golfbox.cc.toDecimal(value) : golfbox.cc.toNumeric(value);\r\n\t\t\treturn (i >= min && i <= max);\r\n\t\t};\r\n\r\n\t\treturn _.customValidator(function() {\r\n\t\t\tvar o = $(targetId),\r\n\t\t\t\tv = $.trim(o.val());\r\n\r\n\t\t\tthis.clientId = targetId;\r\n\t\t\tthis.isValid = (allowEmpty && v == '') ? true : ((!allowEmpty && v == '') ? false : isInRange(v));\r\n\t\t\tthis.errorText = errorText || 'inRangeValidator not valid';\r\n\t\t});\r\n\t};\r\n\r\n\t_.compareValidator = function(targetId1, targetId2, errorText, operator, type) {\r\n\t\tvar isCompareValid = function(a, b) {\r\n\t\t\tvar v1, v2;\r\n\r\n\t\t\tswitch ((type || '').toLowerCase()) {\r\n\t\t\t\tcase 'integer':\r\n\t\t\t\tcase 'number':\r\n\t\t\t\t\tv1 = (a.indexOf(',') > -1 || a.indexOf('.') > -1) ? golfbox.cc.toDecimal(a) : golfbox.cc.toNumeric(a);\r\n\t\t\t\t\tv2 = (b.indexOf(',') > -1 || b.indexOf('.') > -1) ? golfbox.cc.toDecimal(b) : golfbox.cc.toNumeric(b);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'string':\r\n\t\t\t\t\tv1 = a.toString();\r\n\t\t\t\t\tv2 = b.toString();\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'handicap':\r\n\t\t\t\tcase 'hcp':\r\n\t\t\t\t\tv1 = golfbox.cc.toHcp(a);\r\n\t\t\t\t\tv2 = golfbox.cc.toHcp(b);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'date':\r\n\t\t\t\t\tv1 = golfbox.cc.toDate(a);\r\n\t\t\t\t\tv2 = golfbox.cc.toDate(b);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tv1 = a.toString();\r\n\t\t\t\t\tv2 = b.toString();\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tswitch (operator) {\r\n\t\t\t\tcase '!=' : return v1 != v2;\r\n\t\t\t\tcase '<>' : return v1 != v2;\r\n\t\t\t\tcase '>' : return v1 > v2;\r\n\t\t\t\tcase '>=' : return v1 >= v2;\r\n\t\t\t\tcase '<' : return v1 < v2;\r\n\t\t\t\tcase '<=' : return v1 <= v2;\r\n\t\t\t\tcase '=' : return v1 == v2;\r\n\t\t\t\tcase '==' : return v1 == v2;\r\n\t\t\t}\r\n\r\n\t\t\treturn v1 == v2;\r\n\t\t};\r\n\r\n\t\treturn _.customValidator(function() {\r\n\t\t\tvar o1 = $(targetId1),\r\n\t\t\t\to2 = $(targetId2),\r\n\t\t\t\tv1 = $.trim(o1.val()),\r\n\t\t\t\tv2 = $.trim(o2.val());\r\n\r\n\t\t\tthis.isValid = isCompareValid(v1, v2);\r\n\t\t\tthis.errorText = errorText || 'compareValidator not valid';\r\n\t\t});\r\n\t};\r\n\r\n\t_.dateValidator = function(targetId, errorText, allowEmpty) {\r\n\t\tvar padZeros = function(v) {\r\n\t\t\tif (v < 10)\r\n\t\t\t\treturn '0' + v;\r\n\t\t\treturn v;\r\n\t\t};\r\n\r\n\t\tvar isLeapYear = function(val) {\r\n\t\t\tvar n = val;\r\n\t\t\tif (n < 99)\r\n\t\t\t\tn = (n < 20) ? parseInt('20' + padZeros(n)) : parseInt('19' + padZeros(n));\r\n\t\t\tif (n % 400 == 0)\r\n\t\t\t\treturn true;\r\n\t\t\tif (n % 100 == 0)\r\n\t\t\t\treturn false;\r\n\t\t\tif (n % 4 == 0)\r\n\t\t\t\treturn true;\r\n\t\t\treturn false;\r\n\t\t};\r\n\r\n\t\tvar getDaysInMonth = function(month, year) {\r\n\t\t\tif (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)\r\n\t\t\t\treturn 31;\r\n\t\t\tif (month == 4 || month == 6 || month == 9 || month == 11)\r\n\t\t\t\treturn 30;\r\n\t\t\tif (month == 2)\r\n\t\t\t\treturn isLeapYear(year) ? 29 : 28;\r\n\t\t\treturn 0;\r\n\t\t};\r\n\r\n\t\tvar isDateValid = function(value) {\r\n\t\t\tvar parts = golfbox.cc.getDateParts(value),\r\n\t\t\t\tdaysInMonth = getDaysInMonth(parts[1], parts[0]);\r\n\t\t\treturn (parts[2] <= daysInMonth && parts[1] <= 12 && parts[0] <= 2099 && parts[0] >= 1900);\r\n\t\t};\r\n\r\n\t\treturn _.customValidator(function() {\r\n\t\t\tvar o = $(targetId),\r\n\t\t\t\tv = $.trim(o.val());\r\n\r\n\t\t\tif (allowEmpty && v == '') {\r\n\t\t\t\tthis.isValid = true;\r\n\t\t\t} else {\r\n\t\t\t\tif (!golfbox.ui.regexlib['pack_' + golfbox.page.lcid]('date').test(v)) {\r\n\t\t\t\t\tthis.isValid = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.isValid = isDateValid(v);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.clientId = targetId;\r\n\t\t\tthis.errorText = errorText || 'dateValidator not valid';\r\n\t\t});\r\n\t};\r\n\r\n\t_.timeValidator = function(targetId, errorText, allowEmpty) {\r\n\t\tvar pattern = /^[0-2][0-9]:[0-5][0-9]$/;\r\n\t\treturn _.regExpValidator(targetId, errorText || 'timeValidator not valid', pattern, allowEmpty);\r\n\t};\r\n\r\n\t_.decimalValidator = function(targetId, errorText, intDecimals, allowEmpty) {\r\n\t\tvar getPattern = function() {\r\n\t\t\tif (intDecimals === 1)\r\n\t\t\t\treturn /^-?\\d+((,|\\.)\\d{1,1})?$/;\r\n\t\t\tif (intDecimals === 3)\r\n\t\t\t\treturn /^-?\\d+((,|\\.)\\d{1,3})?$/;\r\n\t\t\tif (intDecimals === 4)\r\n\t\t\t\treturn /^-?\\d+((,|\\.)\\d{1,4})?$/;\r\n\t\t\treturn /^-?\\d+((,|\\.)\\d{1,2})?$/;\r\n\t\t};\r\n\r\n\t\treturn _.regExpValidator(targetId, errorText || 'decimalValidator not valid', getPattern(), (typeof intDecimals === 'boolean' && allowEmpty === undefined) ? intDecimals : allowEmpty);\r\n\t};\r\n\r\n\t_.numberValidator = function(targetId, errorText, min, max, allowEmpty) {\r\n\t\tvar isNumberValid = function(value) {\r\n\t\t\tif (/^-?\\d+$/.test(value || '')) {\r\n\t\t\t\tvar v = (+value),\r\n\t\t\t\t\ta = typeof min === 'number' ? min : undefined,\r\n\t\t\t\t\tb = typeof max === 'number' ? max : undefined;\r\n\t\t\t\tif (a !== undefined && b !== undefined)\r\n\t\t\t\t\treturn (v < a || v > b) ? false : true;\r\n\t\t\t\tif (a !== undefined)\r\n\t\t\t\t\treturn (v < a) ? false : true;\r\n\t\t\t\tif (b !== undefined)\r\n\t\t\t\t\treturn (v > b) ? false : true;\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t};\r\n\r\n\t\treturn _.customValidator(function() {\r\n\t\t\tvar o = $(targetId),\r\n\t\t\t\tv = $.trim(o.val());\r\n\r\n\t\t\tif (typeof min === 'boolean' && allowEmpty === undefined)\r\n\t\t\t\tallowEmpty = min;\r\n\r\n\t\t\tthis.clientId = targetId;\r\n\t\t\tthis.isValid = (allowEmpty && v == '') ? true : isNumberValid(v);\r\n\t\t\tthis.errorText = errorText || 'numberValidator not valid';\r\n\t\t});\r\n\t};\r\n\r\n\t_.maxlenghtValidator = function(targetId, errorText, max, allowEmpty) {\r\n\t\tvar isWithinLimit = function(value) {\r\n\t\t\treturn (value > max) ? false : true;\r\n\t\t};\r\n\r\n\t\treturn _.customValidator(function() {\r\n\t\t\tvar o = $(targetId),\r\n\t\t\t\tv = ($.trim(o.val()) + '').length;\r\n\r\n\t\t\tthis.clientId = targetId;\r\n\t\t\tthis.isValid = (allowEmpty && v == 0) ? true : (v == 0) ? false : isWithinLimit(v);\r\n\t\t\tthis.errorText = errorText || 'maxlenghtValidator not valid';\r\n\t\t});\r\n\t};\r\n\r\n\t_.requiredValidator = function(targetId, errorText) {\r\n\t\treturn _.customValidator(function() {\r\n\t\t\tvar o = $(targetId),\r\n\t\t\t\tv = $.trim(o.val());\r\n\r\n\t\t\tthis.clientId = targetId;\r\n\t\t\tthis.isValid = (v != '');\r\n\t\t\tthis.errorText = errorText || 'requiredValidator not valid';\r\n\t\t});\r\n\t};\r\n\r\n\t_.radioValidator = function(targetName, errorText) {\r\n\t\treturn _.customValidator(function() {\r\n\t\t\tthis.isValid = ($('input[name=\\'' + targetName + '\\']:checked').length > 0);\r\n\t\t\tthis.errorText = errorText || 'radioValidator not valid';\r\n\t\t});\r\n\t};\r\n\r\n\t_.checkboxValidator = function(targetIds, errorText, min, max) {\r\n\t\treturn _.customValidator(function() {\r\n\t\t\tvar o = $.isArray(targetIds) ? $(targetIds.join(',')) : $(targetIds),\r\n\t\t\t\ta = (typeof min === 'number') ? min : 1,\r\n\t\t\t\tb = (typeof max === 'number') ? max : o.length,\r\n\t\t\t\tc = 0;\r\n\r\n\t\t\to.each(function() {\r\n\t\t\t\tc = $(this).prop('checked') ? c + 1 : c;\r\n\t\t\t});\r\n\r\n\t\t\tthis.clientId = o.length > 1 ? this.clientId : targetIds;\r\n\t\t\tthis.isValid = (c >= a && c <= b);\r\n\t\t\tthis.errorText = errorText || 'checkboxValidator not valid';\r\n\t\t});\r\n\t};\r\n\r\n\t_.pincodeValidator = function(targetId, errorText, allowEmpty) {\r\n\t\tvar pattern = /^\\d{4}$/;\r\n\t\treturn _.regExpValidator(targetId, errorText || 'pincodeValidator not valid', pattern, allowEmpty);\r\n\t};\r\n\r\n\t_.hcpValidator = function(targetId, errorText, allowEmpty) {\r\n\t\tvar isHcpValid = function(value) {\r\n\t\t\tif (/^(-|\\+)?\\d{1,3}((,|\\.)\\d)?$/.test(value || '') == false)\r\n\t\t\t\treturn false;\r\n\r\n\t\t\tvar tmpHcp = golfbox.cc.toHcp(value);\r\n\t\t\treturn (tmpHcp >= -99.9 && tmpHcp <= 999.9);\r\n\t\t};\r\n\r\n\t\treturn _.customValidator(function() {\r\n\t\t\tvar o = $(targetId),\r\n\t\t\t\tv = $.trim(o.val());\r\n\r\n\t\t\tthis.clientId = targetId;\r\n\t\t\tthis.isValid = (allowEmpty && v == '') ? true : isHcpValid(v);\r\n\t\t\tthis.errorText = errorText || 'hcpValidator not valid';\r\n\t\t});\r\n\t};\r\n\r\n\t_.memberNumberValidator = function(targetId, errorText, allowEmpty) {\r\n\t\tvar isMemberNumberValid = function(value) {\r\n\t\t\treturn /^\\d{1,4}-\\d{1,}$/.test(value || '');\r\n\t\t};\r\n\r\n\t\treturn _.customValidator(function() {\r\n\t\t\tvar o = $(targetId),\r\n\t\t\t\tv = $.trim(o.val());\r\n\r\n\t\t\tthis.clientId = targetId;\r\n\t\t\tthis.isValid = (allowEmpty && v == '') ? true : isMemberNumberValid(v);\r\n\t\t\tthis.errorText = errorText || 'memberNumberValidator not valid';\r\n\t\t});\r\n\t};\r\n\r\n\t_.golfIdValidator = function(targetId, errorText, allowEmpty) {\r\n\t\tvar isGolfIdValid = function(value) {\r\n\t\t\treturn /^\\d{6}-\\d{3}$/.test(value || '');\r\n\t\t};\r\n\r\n\t\treturn _.customValidator(function() {\r\n\t\t\tvar o = $(targetId),\r\n\t\t\t\tv = $.trim(o.val());\r\n\r\n\t\t\tthis.clientId = targetId;\r\n\t\t\tthis.isValid = (allowEmpty && v == '') ? true : isGolfIdValid(v);\r\n\t\t\tthis.errorText = errorText || 'golfIdValidator not valid';\r\n\t\t});\r\n\t};\r\n\r\n\t_.golfSePasswordValidator = function(targetId, errorText, allowEmpty) {\r\n\t\tvar isGolfSePasswordValid = function(value) {\r\n\t\t\t/*\r\n\t\t\t * Valid format: 4 digits\r\n\t\t\t * Valid format: Min. 6 characters, letters a-z, upper and lower case + 0-9.\r\n\t\t\t * Must contain at least two digits, example: aBc03F\r\n\t\t\t */\r\n\r\n\t\t\tif (/^\\d{4}$/.test(value || ''))\r\n\t\t\t\treturn true;\r\n\t\t\tif (/^[A-Za-z0-9]{6,}$/.test(value || '')) {\r\n\t\t\t\tvar digit = 0;\r\n\t\t\t\tfor (var i = 0; i < value.length; i++) {\r\n\t\t\t\t\tif (/^\\d$/.test(value.substr(i, 1)))\r\n\t\t\t\t\t\tdigit++;\r\n\t\t\t\t}\r\n\t\t\t\tif (digit >= 2)\r\n\t\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t};\r\n\r\n\t\treturn _.customValidator(function() {\r\n\t\t\tvar o = $(targetId),\r\n\t\t\t\tv = $.trim(o.val());\r\n\r\n\t\t\tthis.clientId = targetId;\r\n\t\t\tthis.isValid = (allowEmpty && v == '') ? true : isGolfSePasswordValid(v);\r\n\t\t\tthis.errorText = errorText || 'golfSePasswordValidator not valid';\r\n\t\t});\r\n\t};\r\n\r\n\t_.ajaxValidator = function(targetId, errorText, url, type, allowEmpty) {\r\n\t\treturn _.customValidator(function() {\r\n\t\t\tvar o = $(targetId),\r\n\t\t\t\tv = $.trim(o.val());\r\n\r\n\t\t\tif (allowEmpty && v == '') {\r\n\t\t\t\tthis.isValid = true;\r\n\t\t\t} else {\r\n\t\t\t\tvar that = this;\r\n\r\n\t\t\t\tif (type === 'json') {\r\n\t\t\t\t\tgolfbox.ajax.getJSON(url, v, function(data) {\r\n\t\t\t\t\t\tthat.isValid = (data) ? true : false;\r\n\t\t\t\t\t});\r\n\t\t\t\t} else if (type === 'get') {\r\n\t\t\t\t\tgolfbox.ajax.get(url, v, function(data) {\r\n\t\t\t\t\t\tthat.isValid = (data) ? true : false;\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tgolfbox.ajax.post(url, v, function(data) {\r\n\t\t\t\t\t\tthat.isValid = (data) ? true : false;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.clientId = targetId;\r\n\t\t\tthis.errorText = errorText || 'ajaxValidator not valid';\r\n\t\t});\r\n\t};\r\n\r\n})(jQuery, window);","var InputValidation;\r\n(function (InputValidation) {\r\n var Controller = (function () {\r\n function Controller() {\r\n }\r\n\r\n Controller.prototype.IsValid = function (input, maxLength) {\r\n if (input === null || input === undefined)\r\n return false;\r\n\r\n if (input === \"\")\r\n return false;\r\n if (input.length > maxLength)\r\n return false;\r\n return true;\r\n }\r\n\r\n Controller.prototype.IsNotEmpty = function (input) {\r\n return input === \"\" ? false : true;\r\n }\r\n\r\n Controller.prototype.LengthIsValid = function (input, maxLength) {\r\n return input.length > maxLength ? false : true;\r\n }\r\n\r\n Controller.prototype.DoesMatch = function (input1, input2) {\r\n if (input1 === input2)\r\n return true;\r\n return false;\r\n }\r\n\r\n Controller.prototype.IsNumber = function(input) {\r\n if (!$.isNumeric(input))\r\n return false;\r\n return true;\r\n }\r\n\r\n return Controller;\r\n })();\r\n InputValidation.Controller = Controller;\r\n})(InputValidation || (InputValidation = {}));\r\nvar inputValidator = new InputValidation.Controller();","(function () {\r\n $(document).on('blur', 'input[type=\"number\"]:not(.nullable)', function (event) {\r\n var self = $(this);\r\n\r\n if (self.attr('min') && parseFloat(this.value) < parseFloat(self.attr('min'))) {\r\n self.val(self.attr('min'));\r\n }\r\n\r\n if (self.attr('max') && parseFloat(this.value) > parseFloat(self.attr('max'))) {\r\n self.val(self.attr('max'));\r\n }\r\n\r\n var valueAsFloat = parseFloat(this.value);\r\n\r\n switch (self.data('type')) {\r\n case 'decimal':\r\n case 'float':\r\n case 'double':\r\n self.val(valueAsFloat.toFixed(2));\r\n break;\r\n case 'integer':\r\n case 'byte':\r\n case 'long':\r\n case 'short':\r\n self.val(parseInt(valueAsFloat));\r\n break;\r\n }\r\n }).on('keypress', 'input, select, textarea', function (event) {\r\n if (this.tagName.toLowerCase() == 'input' && this.type.toLowerCase() == 'number' && event.keyCode == 44) { // keyCode 44 is \",\"\r\n return;\r\n }\r\n var self = this;\r\n setTimeout(function () { self.setAttribute('value', self.value); }, 1);\r\n }).on('keydown', 'input[readonly], select[readonly], textarea[readonly]', function (e) {\r\n e.stopPropagation();\r\n return false;\r\n }).on('keypress', 'input[type=\"number\"]', function (event) {\r\n if (event.keyCode == 13) {\r\n this.blur();\r\n }\r\n }).on('keydown', 'input, textarea', function (event) {\r\n var key = event.keyCode || event.charCode;\r\n\r\n if (key == 8 || key == 46) {\r\n var self = this;\r\n setTimeout(function () { self.setAttribute('value', self.value); }, 1);\r\n }\r\n }).on('blur', 'input, textarea', function (event) {\r\n var self = this;\r\n setTimeout(function () { self.setAttribute('value', self.value); }, 1);\r\n });\r\n\r\n $(window).on('load', function (event) {\r\n $('*[data-val-required][value=\"\"]:not([type=\"hidden\"]):eq(0)').focus();\r\n\r\n $('select:not(.loading):not(:has(option))').css('border-color', '#c0392b');\r\n\r\n let $dragndrop = $('.dragndrop');\r\n if ($dragndrop && $dragndrop.length) {\r\n let isDragAndDropSupported = gb.isDragAndDropSupported();\r\n\r\n $dragndrop.each((index, element) => {\r\n let files = null;\r\n console.log(files)\r\n let $self = $(element);\r\n let $form = $self.closest('form').on('submit', (e) => {\r\n e.preventDefault();\r\n\r\n if (files) {\r\n let $uploading = $self.find('.dragndrop_uploading').empty();\r\n $uploading.append($uploading.data('text') + ' ' + files[0].name + '');\r\n $self.addClass('uploading').removeClass('success error');\r\n $('.verification').removeClass('verified unverified').prev('.step').addClass('disabled');\r\n\r\n let formData = new FormData();\r\n\r\n formData.append('file', files[0]);\r\n $.ajax({\r\n url: $form.attr('action'),\r\n type: $form.attr('method'),\r\n data: formData,\r\n dataType: 'json',\r\n cache: false,\r\n contentType: false,\r\n processData: false,\r\n complete: function () {\r\n $self.removeClass('uploading');\r\n },\r\n success: function (data) {\r\n $self.addClass(data.validDocument == true ? 'success' : 'error');\r\n $('.verification').prev('.step').removeClass('disabled');\r\n\r\n if (data.validDocument) {\r\n !function (element) {\r\n element.html('' + files[0].name + ' ' + element.data('text') + '');\r\n }($self.find('.dragndrop_success'));\r\n\r\n if (data.verified) { // No errors\r\n let $verificationSuccess = $('.verification-success');\r\n $verificationSuccess.empty().html('
    ' + data.message + '
    ' + $verificationSuccess.data('text') + '
    ');\r\n $('.verification').addClass('verified');\r\n $self.removeClass('error uploading');\r\n if (data.fileType == \"image\") {\r\n var reader = new FileReader();\r\n reader.readAsDataURL(files[0]);\r\n reader.onload = function (e) {\r\n $('#custom-mail-logo').removeClass('hidden')\r\n $('#custom-mail-logo').attr('src', e.target.result);\r\n\r\n //used in customMail\r\n $('.logo-wrapper').children().first().children().last().addClass('hidden');\r\n $('.logo-wrapper > .icon-trash_can').removeClass('hidden');\r\n }\r\n }\r\n } else {\r\n let $verificationError = $('.verification-error');\r\n $verificationError.empty().html('
    ' + data.message + '
    ' + $verificationError.data('text') + '
    ' + (data.errors ? '' : ''));\r\n $('.verification').addClass('unverified');\r\n $self.removeClass('error uploading success');\r\n }\r\n } else {\r\n !function (element) {\r\n element.html('' + files[0].name + ' ' + element.data('text') + '');\r\n }($self.find('.dragndrop_error'));\r\n $self.removeClass('success uploading');\r\n }\r\n\r\n $self.closest('.modalbox').find('.ok-button').attr('disabled', (!data.verified || !data.validDocument));\r\n },\r\n error: function () {\r\n $self.addClass('error').removeClass('success uploading');\r\n }\r\n });\r\n }\r\n });\r\n\r\n $form.find('input[type=file]').on('change', (event) => {\r\n files = event.target.files;\r\n $form.trigger('submit');\r\n });\r\n\r\n if (isDragAndDropSupported) {\r\n $self.addClass('dragndrop-supported');\r\n\r\n $form.on('drag dragstart dragend dragover dragenter dragleave drop', function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n })\r\n .on('dragover dragenter', function () {\r\n $self.addClass('has-dragover');\r\n })\r\n .on('dragleave dragend drop', function () {\r\n $self.removeClass('has-dragover');\r\n })\r\n .on('drop', function (e) {\r\n files = e.originalEvent.dataTransfer.files;\r\n $form.trigger('submit');\r\n });\r\n }\r\n });\r\n }\r\n });\r\n})();\r\n\r\n$(function (event) {\r\n $('input[required]:not([type=\"radio\"]):not([type=\"checkbox\"]):not([type=\"hidden\"]), input[data-val-required]:not([type=\"radio\"]):not([type=\"checkbox\"]):not([type=\"hidden\"]), select[required], select[data-val-required], textarea[required], textarea[data-val-required]').each(function () {\r\n let $parent = $(this).parent();\r\n let iterations = 0;\r\n while ($parent && $parent.length && (iterations++ < 4)) {\r\n let $label = $parent.children('.labelForInput');\r\n if ($label && $label.length && !$label.data('has-asterisk')) {\r\n let labelContent = $label.data('has-asterisk', 'true').html();\r\n let indexOfHtml = labelContent.indexOf('<');\r\n\r\n if (indexOfHtml !== -1) {\r\n $label.html(labelContent.substring(0, indexOfHtml) + ' * ' + labelContent.substring(indexOfHtml));\r\n } else {\r\n $label.append(' *');\r\n }\r\n break;\r\n } else {\r\n $parent = $parent.parent();\r\n }\r\n }\r\n });\r\n});","gb.defer(function () {\r\n let _ = {};\r\n let store = {\r\n maps: {},\r\n markers: []\r\n };\r\n\r\n let formatAddress = function (address) {\r\n let result = \"\";\r\n\r\n if (address.streetNumber) {\r\n result += address.streetNumber;\r\n result += ', ';\r\n }\r\n\r\n if (address.streetName) {\r\n result += address.streetName;\r\n result += ', ';\r\n }\r\n\r\n if (address.city) {\r\n result += address.city;\r\n result += ', ';\r\n }\r\n\r\n if (address.state) {\r\n result += address.state;\r\n result += ', ';\r\n }\r\n\r\n if (address.zipcode) {\r\n result += address.zipcode;\r\n result += ', ';\r\n }\r\n\r\n if (address.country) {\r\n result += address.country;\r\n }\r\n\r\n return result;\r\n };\r\n\r\n _.init = function (options) {\r\n options = $.extend({\r\n zoom: 13\r\n }, options);\r\n\r\n if (options.lat && options.lng) {\r\n let coord = new google.maps.LatLng(options.lat, options.lng);\r\n store.maps[options.id] = new google.maps.Map(document.getElementById(options.id), {\r\n zoom: options.zoom,\r\n center: coord\r\n });\r\n store.markers.push(new google.maps.Marker({\r\n map: store.maps[options.id],\r\n position: coord\r\n }));\r\n } else if (options.address) {\r\n _.getLocationByAddress(options.address, function (lat, lng) {\r\n let coord = new google.maps.LatLng(lat, lng);\r\n store.maps[options.id] = new google.maps.Map(document.getElementById(options.id), {\r\n zoom: options.zoom,\r\n center: coord\r\n });\r\n store.markers.push(new google.maps.Marker({\r\n map: store.maps[options.id],\r\n position: coord\r\n }));\r\n });\r\n } else {\r\n store.maps[options.id] = new google.maps.Map(document.getElementById(options.id), {\r\n zoom: 1,\r\n center: new google.maps.LatLng(0, 0)\r\n });\r\n }\r\n\r\n let $element = $('#' + options.id);\r\n let lastHeight = $element.height();\r\n\r\n (function checkForChanges() {\r\n if ($element.height() != lastHeight) {\r\n lastHeight = $element.height();\r\n console.log(lastHeight);\r\n let map = store.maps[options.id];\r\n let center = map.getCenter();\r\n google.maps.event.trigger(map, \"resize\");\r\n map.panTo(center);\r\n }\r\n\r\n setTimeout(checkForChanges, 500);\r\n })();\r\n };\r\n\r\n _.updateByAddress = function (mapid, address) {\r\n _.getLocationByAddress(address, function (lat, long) {\r\n _.updateByLatLong(mapid, lat, long);\r\n });\r\n };\r\n\r\n _.updateByLatLong = function (mapid, lat, long) {\r\n let map = store.maps[mapid];\r\n let cordinates = new google.maps.LatLng(lat, long);\r\n\r\n map.setCenter(cordinates);\r\n\r\n for (var i = 0; i < store.markers.length; i++) {\r\n store.markers[i].setMap(null);\r\n }\r\n\r\n store.markers.push(new google.maps.Marker({\r\n map: map,\r\n position: cordinates\r\n }));\r\n };\r\n\r\n _.getLocationByAddress = function (address, callback) {\r\n (new google.maps.Geocoder()).geocode({ 'address': formatAddress(address) }, function (results, status) {\r\n let result = null;\r\n if (status === google.maps.GeocoderStatus.OK) {\r\n result = results[0].geometry.location;\r\n $('input[name=\"GolfClubLatitude\"]').val(result.lat());\r\n $('input[name=\"GolfClubLongtitude\"]').val(result.lng());\r\n } else {\r\n result = new google.maps.LatLng(0, 0);\r\n }\r\n\r\n $.isFunction(callback) && callback(result.lat(), result.lng());\r\n });\r\n };\r\n\r\n _.getCurrentGPS = function (callback) {\r\n // Try W3C Geolocation (Preferred)\r\n if (navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition(function (position) {\r\n callback(position.coords.latitude, position.coords.longitude);\r\n }, function () {\r\n callback(0, 0);\r\n });\r\n } else { // Browser doesn't support Geolocation\r\n callback(0, 0);\r\n }\r\n };\r\n\r\n window.maps = _;\r\n});","(function () {\r\n var menu,\r\n menuContainer;\r\n var menuResize = function () {\r\n menuContainer.css('height', ($(window).outerHeight() - 60) + 'px');\r\n };\r\n\r\n $(window).on('load', function () {\r\n menu = $('#mobile-menu');\r\n menuContainer = menu.find('#mobile-menu-container');\r\n\r\n menuResize();\r\n\r\n menu.on('click', function () {\r\n menu.toggleClass('active');\r\n });\r\n\r\n menuContainer.on('click', function (event) {\r\n event.stopPropagation();\r\n });\r\n\r\n $('.menu-element:not(.menu-element-back)').on('click', function (event) {\r\n $(this).toggleClass('active').siblings().removeClass('active');\r\n event.stopPropagation();\r\n });\r\n\r\n $('.menu-element-language-' + menu.data('language')).addClass('active');\r\n\r\n $(window).on('scroll', function () {\r\n menu.removeClass('active');\r\n });\r\n }).on('resize', menuResize);\r\n})();","var Participants =\r\n (function () {\r\n return {\r\n min: null,\r\n max: null,\r\n latency: 1000, /* in ms */\r\n rules: {\r\n minRequired: true\r\n },\r\n\r\n remove: function (self) {\r\n $('.participants div').last().removeClass('hidden');\r\n var _row = $(self).closest('.row');\r\n var form = _row.closest('form');\r\n var nextAll = _row.nextAll();\r\n\r\n nextAll.each(function (k, v) {\r\n let index = $(v).index() - 2;\r\n \r\n $(v).data('index', index)\r\n .attr('data-index', index)\r\n .find('input')\r\n .each(function (j, l) {\r\n var input = $(l);\r\n console.log(\"newname: \" + input.attr('name').replace(/\\[[0-9]+\\]/, '[' + index + ']'));\r\n input.attr('name', input.attr('name').replace(/\\[[0-9]+\\]/, '[' + index + ']'));\r\n });\r\n });\r\n\r\n _row.remove();\r\n\r\n setTimeout(function () {\r\n var min_participant = $('[name=\\'Participants[' + (Participants.min - 1) + '].Email\\']');\r\n\r\n if (Participants.rules.minRequired && (!min_participant || !min_participant.length)) {\r\n form.find('.save-button').attr('disabled', true).prop('disabled', true);\r\n } else {\r\n form.trigger('validate');\r\n }\r\n }, 10);\r\n }\r\n };\r\n })();\r\n\r\nfunction lookupClose(memberLookupModalID) {\r\n $('#new_customer_memberno').val(\"\");\r\n $('#new_customer_name').val(\"\");\r\n $('#new_customer_email').val(\"\");\r\n $('#new_customer_phone').val(\"\");\r\n $('#new_customer_sendInvoice').prop(\"checked\", false);\r\n resetSearch();\r\n $('.modalBoxContainer').addClass('hidden');\r\n}\r\n\r\nfunction focusInput(target) {\r\n if ($(target).val() !== \"\") {\r\n $(target).parent().siblings().children('input').attr('disabled', true);\r\n } else {\r\n $('.input').attr('disabled', false);\r\n }\r\n}\r\n\r\nfunction lookupQuery(target, event, memberLookupModalID) {\r\n var e = event.which || event.keyCode;\r\n\r\n e === 13 && lookupSearch(target, memberLookupModalID);\r\n}\r\n\r\nfunction toggleview(key) {\r\n if (key === \"create\") {\r\n $('#create-member').removeClass('hidden').addClass('active');\r\n $('.search-tab').removeClass('active');\r\n $('.create-tab').addClass('active');\r\n $('#lookup-member').addClass('hidden').removeClass('active');\r\n $('#new_customer_name').focus();\r\n } else {\r\n $('#create-member').addClass('hidden').removeClass('active');\r\n $('.search-tab').addClass('active');\r\n $('.create-tab').removeClass('active');\r\n $('#lookup-member').removeClass('hidden').addClass('active');\r\n $('#lookup-member-search-input').focus();\r\n }\r\n}\r\n\r\nfunction addNewCustoner(self) {\r\n var newData = {\r\n memberNumber: $('#new_customer_memberno').val(),\r\n fullName: $('#new_customer_name').val(),\r\n primaryEmail: $('#new_customer_email').val(),\r\n primaryMobile: $('#new_customer_phone').val(),\r\n sendInvoice: $('#new_customer_sendInvoice').prop(\"checked\")\r\n };\r\n if (newData.fullName !== \"\" && (newData.primaryEmail + newData.primaryMobile) !== \"\") {\r\n addrow(newData);\r\n var li = $('#new_customer_memberno').closest('.modalBoxContainer');\r\n lookupClose(li.get(0));\r\n }\r\n}\r\n\r\nfunction updateCustomer(self) {\r\n var newData = {\r\n memberNumber: $('#update_new_customer_memberno').val(),\r\n fullName: $('#update_new_customer_name').val(),\r\n primaryEmail: $('#update_new_customer_email').val(),\r\n primaryMobile: $('#update_new_customer_phone').val()\r\n };\r\n\r\n if (newData.fullName !== \"\" && (newData.primaryEmail + newData.primaryMobile) !== \"\") {\r\n updateCurrentrow(newData);\r\n var li = $('#new_customer_memberno').closest('.modalBoxContainer');\r\n lookupClose(li.get(0));\r\n }\r\n}\r\n\r\nfunction targetToSearchBy() {\r\n if ($('#search_by_name').prop(\"checked\")) {\r\n return 1;\r\n } else if ($('#search_by_email').prop(\"checked\")) {\r\n return 2;\r\n } else if ($('#search_by_member_no').prop(\"checked\")) {\r\n return 3;\r\n } else if ($('#search_by_phone').prop(\"checked\")) {\r\n return 4;\r\n }\r\n}\r\n\r\nfunction lookupSearch(target, memberLookupModalID) {\r\n if (target === \"\") {\r\n target = $('#lookup-member-search-input').get(0);\r\n }\r\n\r\n var $result = $('#asd');\r\n var searchby = targetToSearchBy();\r\n var query = $(target).val();\r\n let lastName = $('#lookup-member-search-input-lastname').val();\r\n if (!searchby || query.length < 2) {\r\n return;\r\n }\r\n\r\n if (currentBusIsoCode.toUpperCase() === \"SE\" && searchby === 1) {\r\n if (query.length < 2 || lastName.length < 2) {\r\n $('#' + warningModalID).removeClass('hidden');\r\n return;\r\n }\r\n }\r\n\r\n var $table = $('#lookup-member-result-scroll');\r\n $('#my_customers_accord').empty().html(\"
    \" + modal_no_results + \"
    \");\r\n $('#other_players_accord').empty();\r\n $table.append('
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ');\r\n\r\n let firstAndLastName = [query, lastName];\r\n $.post('/Profile/Lookup', { value: query, searchBy: searchby, firstAndLastName: firstAndLastName }, function (data) {\r\n $('#my_customers_accord').empty();\r\n $('#lookup-spinner-wrapper').remove();\r\n $result.empty();\r\n\r\n if (data.error) {\r\n $('#my_customers_accord').empty().html('
    ' + model_noMembersFound + '
    ');\r\n $('#other_players_accord').empty();\r\n $('#my_customers_accord_header').find('.accordion-header-text').text(modal_my_customers_accord_header + \" (\" + $('#my_customers_accord').children().length + \" \" + modal_results + \")\");\r\n if ($('#my_customers_accord').children().length === 1 && $('#my_customers_accord').children().get(0).id === \"empty\") {\r\n $('#my_customers_accord_header').find('.accordion-header-text').text(modal_my_customers_accord_header + \" (0 \" + modal_results + \")\");\r\n }\r\n $('#other_players_accord_header').find('.accordion-header-text').text(modal_ohter_players_accord_header + \" (\" + $('#other_players_accord').children().length + \" \" + modal_results + \")\");\r\n return;\r\n }\r\n\r\n data.sort(function (x, y) {\r\n var a = $.trim(x.fullName).toLowerCase();\r\n var b = $.trim(y.fullName).toLowerCase();\r\n\r\n if (a < b)\r\n return -1;\r\n if (a > b)\r\n return 1;\r\n return 0;\r\n });\r\n $.each(data, function (i, v) {\r\n\r\n var row = \"\";\r\n if (i === 0) {\r\n row = \"
    \"\r\n + \"
    \" + modal_member_no + \"
    \"\r\n + \"
    \" + modal_fullname + \"
    \"\r\n + \"
    \" + modal_email + \"
    \"\r\n + \"
    \" + modal_phone + \"
    \"\r\n + \"
    \" + modal_hcp + \"
    \"\r\n + \"
    \";\r\n $result.append(row);\r\n $result.append(\"
    \");\r\n $result.append(\"
    \");\r\n $('#local-members').append(\"
    \" + model_localMembers + \"
    \");\r\n $('#external-members').append(\"
    \" + model_externalMembers + \"
    \");\r\n }\r\n\r\n row = \"
    \"\r\n + \"
    \" + (v.memberNumber || \"---\") + \"
    \"\r\n + \"
    \" + (v.fullName || \"---\") + \"
    \"\r\n + \"
    \" + (v.primaryEmail || \"---\") + \"
    \"\r\n + \"
    \" + (v.primaryMobile || \"---\") + \"
    \"\r\n + \"
    \" + (v.hcp || \"---\") + \"
    \"\r\n + \"
    \";\r\n\r\n if (row.length === 0)\r\n return;\r\n\r\n memberLookupModalID_test = memberLookupModalID;\r\n var $item = $('' + row + '');\r\n $item.data('lookup', v);\r\n if (v.isLocal) {\r\n $('#my_customers_accord').append($item);\r\n } else {\r\n $('#other_players_accord').append($item);\r\n }\r\n });\r\n $('#my_customers_accord_header').find('.accordion-header-text').text(modal_my_customers_accord_header + \" (\" + $('#my_customers_accord').children().length + \" \" + modal_results + \")\");\r\n if ($('#my_customers_accord').children().length === 1 && $('#my_customers_accord').children().get(0).id === \"empty\") {\r\n $('#my_customers_accord_header').find('.accordion-header-text').text(modal_my_customers_accord_header + \" (0 \" + modal_results + \")\");\r\n }\r\n $('#other_players_accord_header').find('.accordion-header-text').text(modal_ohter_players_accord_header + \" (\" + $('#other_players_accord').children().length + \" \" + modal_results + \")\");\r\n if ($('#my_customers_accord').children().length > 0) {\r\n $('#other_players_accord_header')\r\n .removeClass('active')\r\n .find('.accordion-body');\r\n $('#my_customers_accord_header')\r\n .addClass('active')\r\n .find('.accordion-body');\r\n } else if ($('#my_customers_accord').children().length === 0 && $('#other_players_accord').children().length > 0) {\r\n $('#my_customers_accord').add(\"
    \" + modal_no_results + \"
    \");\r\n $('#my_customers_accord_header')\r\n .removeClass('active')\r\n .find('.accordion-body');\r\n $('#other_players_accord_header')\r\n .addClass('active')\r\n .find('.accordion-body');\r\n } else if ($('#my_customers_accord').children().length === 0 && $('#other_players_accord').children().length === 0) {\r\n $('#my_customers_accord').add(\"
    \" + modal_no_results + \"
    \");\r\n $('#other_players_accord_header')\r\n .removeClass('active')\r\n .find('.accordion-body');\r\n $('#my_customers_accord_header')\r\n .addClass('active')\r\n .find('.accordion-body');\r\n }\r\n }).fail(function () {\r\n $('#my_customers_accord').empty().html('
    ' + model_noMembersFound + '
    ');\r\n $('#other_players_accord').empty();\r\n $('#my_customers_accord_header').find('.accordion-header-text').text(modal_my_customers_accord_header + \" (\" + $('#my_customers_accord').children().length + \" \" + modal_results + \")\");\r\n if ($('#my_customers_accord').children().length === 1 && $('#my_customers_accord').children().get(0).id === \"empty\") {\r\n $('#my_customers_accord_header').find('.accordion-header-text').text(modal_my_customers_accord_header + \" (0 \" + modal_results + \")\");\r\n }\r\n $('#other_players_accord_header').find('.accordion-header-text').text(modal_ohter_players_accord_header + \" (\" + $('#other_players_accord').children().length + \" \" + modal_results + \")\");\r\n });\r\n}\r\n\r\nvar memberLookupModalID_test;\r\n\r\nfunction updateCurrentrow(participant) {\r\n var indexindex = updateRow;\r\n $('[name=\\'Participants[' + indexindex + '].ExternalId\\']').val(participant.externalId !== \"\" ? participant.externalId : \"\");\r\n $('[name=\\'Participants[' + indexindex + '].PlayerGuid\\']').val(participant.playerGuid || \"00000000-0000-0000-0000-000000000000\");\r\n $('[name=\\'Participants[' + indexindex + '].OrderGUID\\']').val(participant.orderGUID || \"00000000-0000-0000-0000-000000000000\");\r\n $('[name=\\'Participants[' + indexindex + '].MemberId\\']').val(participant.memberNumber || \"\");\r\n $('[name=\\'Participants[' + indexindex + '].fullName\\']').val(participant.fullName || null);\r\n $('[name=\\'Participants[' + indexindex + '].Email\\']').val(participant.primaryEmail || \"\");\r\n $('[name=\\'Participants[' + indexindex + '].Phone\\']').val(participant.primaryMobile || \"\");\r\n $('#' + indexindex + 'MemberId').text(participant.memberNumber || \"---\");\r\n $('#' + indexindex + 'fullName').text(participant.fullName || \"---\");\r\n $('#' + indexindex + 'Email').text(participant.primaryEmail || \"---\");\r\n $('#' + indexindex + 'Phone').text(participant.primaryMobile || \"---\");\r\n}\r\n\r\nfunction addrow(participant) {\r\n var count = $('.responsive-helper-participants > .row').length;\r\n $('.responsive-helper-participants > .row:nth-child(' + count + ')').after(\r\n \"
    \"\r\n + \"
    \"\r\n + \"
    \"\r\n + \"\"\r\n + \"\"\r\n + \"\"\r\n + \"\"\r\n + \"\"\r\n + \"\"\r\n + \"\"\r\n + \"
    \"\r\n + \"
    \"\r\n + \"\"\r\n + \"\"\r\n + \"\"\r\n + \"\"\r\n + \"\"\r\n + \"
    \"\r\n + \"
    \"\r\n + \"
    \"\r\n + (renderInvoice ? \"\" : \"\")\r\n + \"
    \"\r\n + (renderInvoice ? \"\" : \"\")\r\n + \"
    \"\r\n + button_trashcan\r\n + \"
    \"\r\n + \"
    \");\r\n\r\n var form = $('.responsive-helper-participants > .row:nth-child(' + count + ')').closest('form');\r\n if (Participants.rules.minRequired && count < Participants.min) {\r\n form.find('.save-button').attr('disabled', true).prop('disabled', true);\r\n } else {\r\n form.trigger('validate');\r\n }\r\n\r\n if (Participants.max <= count) {\r\n $('.participants div').last().addClass('hidden');\r\n }\r\n}\r\n\r\nfunction lookupMemberClick() {\r\n var $target = $(this);\r\n\r\n $target.attr('data-active', '1');\r\n $target.siblings().attr('data-active', '0');\r\n\r\n Clear.input('.participant-lookup-container');\r\n\r\n var data = $target.data().lookup;\r\n\r\n addrow(data);\r\n opdateParticitantsCount();\r\n lookupClose(memberLookupModalID_test);\r\n}","var Tags;\r\n(function (Tags) {\r\n var Controller = (function () {\r\n var _data = [];\r\n\r\n function Controller() {\r\n var _this = this;\r\n }\r\n\r\n Controller.prototype.loadData = function (guid, callback) {\r\n if (_data === null || _data.length === 0) {\r\n $.getJSON('/api/golfbox/GetTagsByBusinessUnit/' + guid)\r\n .done(function (data) {\r\n if (data != null && data.length > 0) {\r\n _data = data;\r\n _data.sort(function (a, b) {\r\n return a.localeCompare(b);\r\n });\r\n }\r\n \r\n $.isFunction(callback) && callback();\r\n });\r\n } else {\r\n callback();\r\n }\r\n }\r\n Controller.loadData = Controller.prototype.loadData;\r\n\r\n Controller.prototype.updateAutocomplete = function (propertyName, scope, id) {\r\n $(document).off('input', '#' + scope + ' input').on('input', '#' + scope + ' input', function () {\r\n if (this.value.length > 1) {\r\n Controller.updateAutocomplete(propertyName, scope, this.id);\r\n }\r\n }).off('click', '#' + scope + ' #addTag').on('click', '#' + scope + ' #addTag', function () {\r\n var tagValue = $(this).next().val();\r\n if (tagValue !== \"\") {\r\n Controller.BuildTags(propertyName, tagValue);\r\n $(this).next().val(\"\");\r\n }\r\n }).off('click', '#' + scope + ' #tagQuestion').on('click', '#' + scope + ' #tagQuestion', function () {\r\n var element = $('#tag-message-attention');\r\n var parent = $('#tagQuestion');\r\n if (element.hasClass('active')) {\r\n element.removeClass('active');\r\n element.addClass('inactive');\r\n parent.removeClass('active');\r\n parent.addClass('inactive');\r\n } else {\r\n element.removeClass('inactive');\r\n element.addClass('active');\r\n parent.removeClass('inactive');\r\n parent.addClass('active');\r\n }\r\n }).off('click', '#' + scope + ' #tag-exit-attention').on('click', '#' + scope + ' #tag-exit-attention', function () {\r\n var element = $('#tag-message-attention');\r\n element.removeClass('active');\r\n element.addClass('inactive');\r\n var parent = $('#tagQuestion');\r\n parent.removeClass('active');\r\n parent.addClass('inactive');\r\n }).off('click', '.tagButton').on('click', '.tagButton', function (e) {\r\n if ($(e.target).hasClass('icon-mini_remove')) {\r\n var element = e.target.parentElement;\r\n element.remove();\r\n }\r\n });\r\n\r\n $('#' + scope + ' input.tag[type=\"text\"]').on('blur', function () {\r\n if (!$(this).next().hasClass('active')) {\r\n $('#' + scope + ' #addTag').click();\r\n }\r\n }).on('keydown', function (e) {\r\n if (e.keyCode === 13) {\r\n var self = this;\r\n setTimeout(function () { self.focus(); }, 100);\r\n }\r\n });\r\n\r\n var resultText = function (text, regex) {\r\n var arr = text.split(regex);\r\n var match = text.match(regex);\r\n\r\n if (regex.test(text)) {\r\n return resultText(arr[0], regex) + '' + match[0] + '' + resultText(arr[1], regex);\r\n } else {\r\n return text;\r\n }\r\n };\r\n\r\n var selector = id || scope + ' input[type=\"text\"]';\r\n $('#' + selector).each(function () {\r\n var resultsid = 'autocompleteResults_' + this.id;\r\n var obj = $('#' + resultsid);\r\n var _that = this;\r\n obj.empty();\r\n\r\n var html = '';\r\n var array = gb.util.array.search(this.value, null, _data, true, false, true);\r\n\r\n if (this.value.length > 0) {\r\n var regex = new RegExp(this.value, \"i\");\r\n for (var i = 0; i < array.length; i++) {\r\n var tag = array[i];\r\n html += '
    ' + resultText(tag, regex) + '
    ';\r\n }\r\n }\r\n\r\n obj.html(html);\r\n obj.children().on('mousedown', function (e) {\r\n var _self = $(this);\r\n $(_that).val(_self.data('name'));\r\n\r\n setTimeout(function () {\r\n Controller.updateAutocomplete(propertyName, scope, _that.id);\r\n }, 500);\r\n });\r\n });\r\n }\r\n Controller.updateAutocomplete = Controller.prototype.updateAutocomplete;\r\n\r\n Controller.prototype.BuildTags = function (propertyName, name) {\r\n var tag = $('input[name=\"' + propertyName + '\"][value=\"' + name + '\"]');\r\n if (tag.length === 0) {\r\n name = name.toLowerCase();\r\n var _this = this;\r\n var html = $.parseHTML('
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' + name + '
    ' +\r\n '' +\r\n '
    ');\r\n var parent = $('.tagsContainer');\r\n\r\n var elm = $(html).appendTo(parent);\r\n setTimeout(function () {\r\n elm.removeClass('newTag');\r\n }, 1);\r\n } else {\r\n tag.parent().addClass('newTag');\r\n setTimeout(function () {\r\n tag.parent().removeClass('newTag');\r\n }, 300);\r\n }\r\n }\r\n Controller.BuildTags = Controller.prototype.BuildTags;\r\n\r\n return Controller;\r\n })();\r\n Tags.Controller = Controller;\r\n})(Tags || (Tags = {}));\r\nvar tagsController = new Tags.Controller();","var Utility;\r\n(function (Utility) {\r\n var ns = 'validate';\r\n var Controller = (function () {\r\n function Controller() {\r\n\r\n }\r\n\r\n Controller.prototype.submit = function (form) {\r\n let _form = document.forms[form];\r\n if (_form) {\r\n _form.submit();\r\n }\r\n return this;\r\n };\r\n Controller.submit = Controller.prototype.submit;\r\n\r\n Controller.prototype.validateForm = function (form, id, onclick) {\r\n form = $('form[name=\"' + form + '\"]');\r\n var button = $('#' + id).on('click', function () {\r\n var self = $(this);\r\n if (!self.is('[disabled]')) {\r\n this.setAttribute('disabled', 'disabled');\r\n self.find('.button-icon')\r\n .removeClass('icon-status_ok')\r\n .addClass('icon-time_hour_glass');\r\n\r\n eval(onclick);\r\n }\r\n });\r\n var validate = function () {\r\n var disable = false;\r\n\r\n form.find('[data-valid]').each(function () {\r\n if (!$(this).data('valid')) {\r\n disable = true;\r\n gb.logging.log('!$(this).data(\\'valid\\')', ns);\r\n gb.logging.log(this, ns);\r\n console.dir(this);\r\n return;\r\n }\r\n });\r\n\r\n if (!disable) {\r\n form.find('[data-val-required]').each(function () {\r\n if (this.value.length === 0) {\r\n disable = true;\r\n gb.logging.log('this.value.length === 0', ns);\r\n gb.logging.log(this, ns);\r\n console.dir(this);\r\n return;\r\n }\r\n });\r\n }\r\n\r\n if (!disable) {\r\n var chkReq = form.find('input:checkbox[required]');\r\n if (chkReq.length > 0 && !chkReq.is(':checked')) {\r\n gb.logging.log('chkReq.length > 0 && !chkReq.is(\\':checked\\')', ns);\r\n gb.logging.log(this, ns);\r\n console.dir(this);\r\n disable = true;\r\n }\r\n }\r\n\r\n if (!disable) {\r\n var groups = {};\r\n form.find('*[data-validation-group]').each(function () {\r\n var name = $(this).data('validation-group');\r\n if (!groups[name]) {\r\n groups[name] = [];\r\n }\r\n var group = groups[name];\r\n group[group.length] = this;\r\n });\r\n\r\n for (var key in groups) {\r\n var group = groups[key];\r\n var validGroup = false;\r\n\r\n for (var index in group) {\r\n if (validGroup) {\r\n break;\r\n } else {\r\n var input = group[index];\r\n if (input.type === 'checkbox') {\r\n validGroup = input.checked;\r\n } else {\r\n validGroup = input.value.length > 0;\r\n }\r\n }\r\n }\r\n\r\n if (!validGroup) {\r\n disable = true;\r\n gb.logging.log('$(this).data(\\'validation-group\\')', ns);\r\n gb.logging.log(this, ns);\r\n console.dir(this);\r\n break;\r\n }\r\n }\r\n }\r\n button.attr('disabled', disable);\r\n };\r\n validate();\r\n\r\n form.on('change', '[data-valid]', validate)\r\n .on('change input', '[data-val-required]', validate)\r\n .on('change', 'input:checkbox[required]', validate)\r\n .on('change input', '[data-validation-group]', validate)\r\n .on('validate', validate);\r\n };\r\n Controller.validateForm = Controller.prototype.validateForm;\r\n\r\n Controller.prototype.clearNames = function (form, toReplace) {\r\n $('form[name=\"' + form + '\"]').find('*[name]').each(function (k, v) {\r\n v.setAttribute('name', v.name.replace(toReplace, ''));\r\n });\r\n return this;\r\n };\r\n Controller.clearNames = Controller.prototype.clearNames;\r\n\r\n return Controller;\r\n })();\r\n Utility.Controller = Controller;\r\n})(Utility || (Utility = {}));\r\n\r\nvar utility = new Utility.Controller();","var UX;\r\n(function (UX) {\r\n var Controller = (function () {\r\n function Controller() {\r\n $(document).on('click', '.helper-icon', function () {\r\n var self = $(this);\r\n self.toggleClass('active');\r\n\r\n var box = $('#' + self.data('box-id'));\r\n box.toggleClass('active');\r\n if (box.is('.active')) {\r\n var height = 0;\r\n box.children().each(function () {\r\n height += $(this).outerHeight(true);\r\n });\r\n box.css('height', height + \"px\");\r\n } else {\r\n box.css('height', 0);\r\n }\r\n }).on('click', '.helper-box-close', function () {\r\n var self = $(this);\r\n\r\n var box = $('#' + self.data('box-id'));\r\n box.toggleClass('active');\r\n if (box.is('.active')) {\r\n var height = 0;\r\n box.children().each(function () {\r\n height += $(this).outerHeight(true);\r\n });\r\n box.css('height', height + \"px\");\r\n } else {\r\n box.css('height', 0);\r\n }\r\n\r\n $('.helper-icon[data-box-id=\"' + self.data('box-id') + '\"]').toggleClass('active');\r\n });\r\n }\r\n\r\n return Controller;\r\n })();\r\n UX.Controller = Controller;\r\n})(UX || (UX = {}));\r\n\r\nvar ux = new UX.Controller();"]}