{"version":3,"sources":["ajax.js","filter.js","global.js","googlemaps.js","viewport.js","gallery.js","home.js","lists.js","menu.js"],"names":["loadButton","document","querySelector","count","parseInt","getAttribute","skip","size","category","classList","remove","addEventListener","e","setAttribute","innerHTML","request","XMLHttpRequest","url","params","onreadystatechange","items","this","readyState","status","responseText","parentElement","removeChild","removeAttribute","open","setRequestHeader","value","send","generateSelectList","categories","parent","parameters","num","filter","length","select","createElement","option","appendChild","forEach","parentID","id","title","some","param","isParent","selected","options","selectedIndex","listNum","splice","lists","querySelectorAll","list","insertBefore","firstChild","NodeList","prototype","Array","implementation","hasFeature","image","svg","replace","window","navigator","userAgent","indexOf","message","body","alert","p","setInterval","add","map","initHomeMap","bounds","google","maps","LatLngBounds","Map","getElementById","center","lat","lng","zoom","info","InfoWindow","projects","coords","coordinates","split","marker","Marker","position","parseFloat","label","substr","extend","content","projectID","subTitle","location","addListener","setContent","fitBounds","initMapForLocation","inCoords","inCoordsArray","setMarker","draggable","animation","Animation","DROP","projectTitle","updateCoords","getPosition","saveButton","setMap","latLng","isElementInViewport","el","rect","getBoundingClientRect","top","left","bottom","innerHeight","documentElement","clientHeight","right","innerWidth","clientWidth","onVisibilityChange","callback","loadGallery","attachments","getSlide","type","item","currentSlide","div","link","isRemote","types","setCaption","caption","previous","current","next","gallery","nextElementSibling","up","preventDefault","previousDiv","currentDiv","nextDiv","toggle","down","loadSlides","slides","i","a"],"mappings":"aAAA,IAAIA,WAAaC,SAASC,cAAc,WAExC,GAAIF,WAAY,CACZ,IAAIG,MAAQC,SAASJ,WAAWK,aAAa,eACzCC,KAAOF,SAASJ,WAAWK,aAAa,cACxCE,KAAOH,SAASJ,WAAWK,aAAa,cACxCG,SAAWJ,SAASJ,WAAWK,aAAa,kBAE5CC,KAAOH,QAEPH,WAAWS,UAAUC,OAAO,QAE5BV,WAAWW,iBAAiB,QAAS,SAAUC,GAE3CZ,WAAWa,aAAa,WAAY,YACpCb,WAAWc,UAAY,aAIvB,IAAIC,EAAU,IAAIC,eACdC,EAAMjB,WAAWK,aAAa,aAAe,gBAC7Ca,EAAS,QAAUZ,KAAO,aAAeE,SAE7CO,EAAQI,mBAAqB,WAc7B,IAAkBC,EAbU,IAApBC,KAAKC,YAAoC,MAAhBD,KAAKE,SAapBH,EAZDC,KAAKG,aAaPvB,SAASC,cAAc,SAC7BY,WAAaM,EAElBd,MAAQC,KACRP,WAAWa,aAAa,YAAaP,MAEzBH,OAARG,KACAN,WAAWyB,cAAcC,YAAY1B,aAErCA,WAAW2B,gBAAgB,YAC3B3B,WAAWc,UAAY,eAnB/BC,EAAQa,KAAK,OAAQX,GAAK,GAC1BF,EAAQc,iBAAiB,eAAgB,qCACzCd,EAAQc,iBAAiB,2BACrB5B,SAASC,cAAc,4CAA4C4B,OAGvEf,EAAQgB,KAAKb,MCnCzB,SAASc,mBAAmBC,EAAYC,EAAQC,EAAYC,GAGxD,IAAIC,EAASpC,SAASC,cAAc,eAEpC,GAA0B,IAAtB+B,EAAWK,OAAc,CACzB,IAAIC,EAAStC,SAASuC,cAAc,UAEpCD,EAAO1B,aAAa,OAAQ,YAC5B0B,EAAO1B,aAAa,WAAYuB,GAEhC,IAAIK,EAASxC,SAASuC,cAAc,UACpCC,EAAO5B,aAAa,QAAS,IAC7B4B,EAAO3B,UAAY,uBACnByB,EAAOG,YAAYD,GAEnBR,EAAWU,QAAQ,SAAUnC,GACzB,GAAIA,EAASoC,WAAaV,EAAQ,CAC9B,IAAIO,EAASxC,SAASuC,cAAc,UACpCC,EAAO5B,aAAa,QAASL,EAASqC,IACtCJ,EAAO3B,UAAYN,EAASsC,MAGxBX,EAAWY,KAAK,SAAUC,GAC1B,OAAOA,GAASxC,EAASqC,OAGzBJ,EAAO5B,aAAa,WAAY,YAG5BL,EAASyC,WAETb,GAAO,EACPJ,mBAAmBC,EAAYzB,EAASqC,GAAIV,EAAYC,KAIhEG,EAAOG,YAAYD,MAI3BF,EAAO5B,iBAAiB,SAAU,WAE9B,IAAIuC,EAAW7B,KAAK8B,QAAQ9B,KAAK+B,eAAetB,MAC5CuB,EAAUhC,KAAKhB,aAAa,YAChC8B,EAAWkB,GAAWH,EACtBf,EAAWmB,OAAOD,EAAU,GAC5BjB,EAAM,EAEN,IAAImB,EAAQlB,EAAOmB,iBAAiB,UAChCD,GACAA,EAAMZ,QAAQ,SAAUc,GACpBpB,EAAOX,YAAY+B,KAI3BzB,mBAAmBC,EAAY,KAAME,EAAYC,KAGrDC,EAAOqB,aAAanB,EAAQF,EAAOsB,cCzD3C,WACI,GAA0C,mBAA/BC,SAASC,UAAUlB,QAAwB,OACtDiB,SAASC,UAAUlB,QAAUmB,MAAMD,UAAUlB,QAFjD,GASe1C,SAAS8D,eAAeC,WAAW,2CAA4C,QAItE/D,SAASuD,iBAAiB,2BAEhCb,QAAQ,SAAAsB,GACd,IACIC,EADMD,EAAM5D,aAAa,OACf8D,QAAQ,OAAQ,QAC9BF,EAAMpD,aAAa,MAAOqD,GAC1BD,EAAMtC,gBAAgB,YAMlC,WAUI,GAAW,EARFyC,OAAOC,UAAUC,UAGZC,QAAQ,SAKR,CAEV,IAAIC,EAAUvE,SAASuC,cAAc,OACrCgC,EAAQ3D,aAAa,KAAM,YAC3B2D,EAAQ1D,UAAY,8PAEpBb,SAASwE,KAAKf,aAAac,EAASvE,SAASwE,KAAKd,aAhB1D,GAqBA,WACI,IAAIe,EAAQzE,SAASuD,iBAAiB,WAEnB,EAAfkB,EAAMpC,QACNoC,EAAM/B,QAAQ,SAAAgC,GACVC,YAAY,WACRD,EAAElE,UAAUoE,IAAI,WACjB,OAPf,GC7CA,IAAIC,SAAAA,EAEJ,SAASC,cAEL,IAAIC,EAAS,IAAIC,OAAOC,KAAKC,aAS7BL,IAAM,IAAIG,OAAOC,KAAKE,IAAInF,SAASoF,eAAe,OAAQ,CACtDC,OAAQ,CAAEC,IAAK,QAASC,IAAK,SAC7BC,KAAM,IAGV,IAAIC,EAAO,IAAIT,OAAOC,KAAKS,WAG3BC,SAASjD,QAAQ,SAAAgC,GAEb,IAAIkB,EAASlB,EAAEmB,YAAYC,MAAM,KAE7BC,EAAS,IAAIf,OAAOC,KAAKe,OAAO,CAChCC,SAAU,CAAEX,IAAKY,WAAWN,EAAO,IAAKL,IAAKW,WAAWN,EAAO,KAC/Df,IAAKA,IACLhC,MAAO6B,EAAE7B,MACTsD,MAAOzB,EAAE7B,MAAMuD,OAAO,EAAG,KAI7BrB,EAAOsB,OAAON,EAAOE,UAErB,IAAIK,EAAU,4DAAmE5B,EAAE6B,UAAY,KAAO7B,EAAE7B,MAAQ,oBAC/F6B,EAAE8B,SAAW9B,EAAE8B,SAAW,IAAM,6BACtB9B,EAAEnE,SAAWmE,EAAEnE,SAAW,IAAM,cAC3CmE,EAAE+B,SAAW/B,EAAE+B,SAAW,IAAM,UAGhDV,EAAOW,YAAY,QAAS,WACxBjB,EAAKkB,WAAWL,GAChBb,EAAK9D,KAAKkD,IAAKkB,OAIvBlB,IAAI+B,UAAU7B,GAGlB,SAAS8B,qBAEL,IAAIJ,EAAW,CAAEnB,IAAK,QAASC,IAAK,SAChCC,EAAO,EAEX,GAA8B,IAA1BsB,SAASjF,MAAMQ,OAAc,CAC7B,IAAI0E,EAAgBD,SAASjF,MAAMiE,MAAM,KACzCW,EAAW,CAAEnB,IAAKY,WAAWa,EAAc,IAAKxB,IAAKW,WAAWa,EAAc,KAC9EvB,EAAO,GAuBX,SAASwB,EAAUpB,GACfG,OAAS,IAAIf,OAAOC,KAAKe,OAAO,CAC5BC,SAAUL,EACVf,IAAKA,IACLoC,WAAW,EACXC,UAAWlC,OAAOC,KAAKkC,UAAUC,KACjCvE,MAAOwE,eAGXtB,OAAOW,YAAY,OAAQ,SAAU/F,GACjC2G,EAAavB,OAAOwB,cAAcjC,MAAQ,IAAMS,OAAOwB,cAAchC,SAGzE+B,EAAa1B,EAAON,IAAM,IAAMM,EAAOL,KACvCiC,WAAW9F,gBAAgB,YAG/B,SAAS4F,EAAa1B,GAClBkB,SAASjF,MAAQ+D,EArCrBf,IAAM,IAAIG,OAAOC,KAAKE,IAAInF,SAASoF,eAAe,OAAQ,CACtDC,OAAQoB,EACRjB,KAAMA,IAIoB,IAA1BsB,SAASjF,MAAMQ,QACf2E,EAAUP,GAGd5B,IAAI6B,YAAY,aAAc,SAAU/F,GAErB,OAAXoF,QACAA,OAAO0B,OAAO,MAGlBT,EAAU,CAAE1B,IAAK3E,EAAE+G,OAAOpC,MAAOC,IAAK5E,EAAE+G,OAAOnC,UC/EvD,SAASoC,oBAAoBC,GACzB,IAAIC,EAAOD,EAAGE,wBAEd,OACgB,GAAZD,EAAKE,KACQ,GAAbF,EAAKG,MACLH,EAAKI,SAAW9D,OAAO+D,aAAelI,SAASmI,gBAAgBC,eAC/DP,EAAKQ,QAAUlE,OAAOmE,YAActI,SAASmI,gBAAgBI,aAiBrE,SAASC,mBAAmBZ,EAAIa,GAE5B,OAAO,WAECd,oBAAoBC,IAEI,mBAAba,GACPA,KCjChB,SAASC,YAAYC,GAEjB,SAASC,EAASzG,EAAK0G,GACnB,IAEIC,EAFAC,EAAeJ,EAAYxG,GAC3B6G,EAAMhJ,SAASuC,cAAc,OA0BjC,OAYY,IAnCRwG,EAAaF,OACbC,EAAO9I,SAASuC,cAAc,QACzB3B,aAAa,MAAOmI,EAAaE,MACtCH,EAAKlI,aAAa,MAAOmI,EAAalG,QAiC9B,IAhCDkG,EAAaF,OAEpBG,EAAIxI,UAAUoE,IAAI,SAEdmE,EAAaG,WACbJ,EAAO9I,SAASuC,cAAc,WACzB3B,aAAa,MAAOmI,EAAaE,MACtCH,EAAKlI,aAAa,QAAS,6BAC3BkI,EAAKlI,aAAa,kBAAmB,OAErCkI,EAAO9I,SAASuC,cAAc,UACzB3B,aAAa,MAAOmI,EAAaE,MACtCH,EAAKlI,aAAa,WAAY,MAItCoI,EAAIvG,YAAYqG,GAChBE,EAAIxI,UAAUoE,IAAIuE,EAAMN,IAEjBG,EAGX,SAASI,EAAWjH,GACe,OAA3BwG,EAAYxG,GAAKU,MACjBwG,EAAQxI,UAAY8H,EAAYxG,GAAKU,MAErCwG,EAAQxI,UAAY,GAI5B,GAAyB,EAArB8H,EAAYtG,OAAY,CACxB,IAGI8G,EAAQ,CACRG,SAAU,WACVC,QAAS,UACTC,KAAM,QAGND,EAAU,EAEd,GAAyB,EAArBZ,EAAYtG,OACZ,IAAIiH,EAAWX,EAAYtG,OAAS,EAChCmH,EAAO,EAGf,IAAIC,EAAUzJ,SAASC,cAAc,YACjCoJ,EAAUI,EAAQC,mBAGlBC,EAAK3J,SAASuC,cAAc,UAChCoH,EAAGnJ,UAAUoE,IAAI,MACjB+E,EAAGjJ,iBAAiB,QAAS,SAAUC,GACnCA,EAAEiJ,iBAEF,IAAIC,EAAcJ,EAAQxJ,cAAc,gBACpC6J,EAAaL,EAAQxJ,cAAc,eACnC8J,EAAUN,EAAQxJ,cAAc,YAEpCwJ,EAAQhI,YAAYsI,GAEpBD,EAAWtJ,UAAUwJ,OAAO,WAC5BF,EAAWtJ,UAAUwJ,OAAO,QAE5BH,EAAYrJ,UAAUwJ,OAAO,YAC7BH,EAAYrJ,UAAUwJ,OAAO,WAE7BR,EAAOD,EACPA,EAAUD,GACVA,GAAY,GACG,IACXA,EAAWX,EAAYtG,OAAS,GAGpCoH,EAAQhH,YAAYmG,EAASU,EAAUH,EAAMG,WAC7CF,EAAWG,KAIf,IAAIU,EAAOjK,SAASuC,cAAc,UAClC0H,EAAKzJ,UAAUoE,IAAI,QACnBqF,EAAKvJ,iBAAiB,QAAS,SAAUC,GACrCA,EAAEiJ,iBAEF,IAAIC,EAAcJ,EAAQxJ,cAAc,gBACpC6J,EAAaL,EAAQxJ,cAAc,eACnC8J,EAAUN,EAAQxJ,cAAc,YAEpCwJ,EAAQhI,YAAYoI,GAEpBC,EAAWtJ,UAAUwJ,OAAO,WAC5BF,EAAWtJ,UAAUwJ,OAAO,YAE5BD,EAAQvJ,UAAUwJ,OAAO,QACzBD,EAAQvJ,UAAUwJ,OAAO,WAEzBV,EAAWC,EACXA,EAAUC,GACVA,GAAQ,GACGb,EAAYtG,OAAS,IAC5BmH,EAAO,GAGXC,EAAQhH,YAAYmG,EAASY,EAAML,EAAMK,OACzCJ,EAAWG,KAGfE,EAAQhH,YAAYmG,EAASW,EAASJ,EAAMI,UAC5CH,EAAWG,GAEc,EAArBZ,EAAYtG,SACZoH,EAAQhH,YAAYmG,EAASU,EAAUH,EAAMG,WAC7CG,EAAQhH,YAAYmG,EAASY,EAAML,EAAMK,OACzCC,EAAQhH,YAAYkH,GACpBF,EAAQhH,YAAYwH,KC7HhC,SAASC,aACL,IAAIC,EAASnK,SAASuD,iBAAiB,eAEvC,GAAoB,EAAhB4G,EAAO9H,OAAY,CACnB,IAAIkH,EAAU,EACdY,EAAOZ,GAAS/I,UAAUoE,IAAI,UAE9BD,YAAY,WACJ4E,IAAYY,EAAO9H,OAAS,GAC5B8H,EAAOZ,EAAU,GAAG/I,UAAUoE,IAAI,UAClCuF,EAAOZ,GAAS/I,UAAUC,OAAO,UACjC8I,GAAW,IAEXY,EAAO,GAAG3J,UAAUoE,IAAI,UACxBuF,EAAOZ,GAAS/I,UAAUC,OAAO,UACjC8I,EAAU,IAEf,OClBX,WACI,IAAIpI,EAAQnB,SAASuD,iBAAiB,2BAElCpC,GACAA,EAAMuB,QAAQ,SAAA0H,GACVA,EAAE1J,iBAAiB,QAAS,SAAUC,GAClCA,EAAEiJ,iBAEQxI,KAAKsI,mBACXlJ,UAAUwJ,OAAO,UAErB5I,KAAKZ,UAAUwJ,OAAO,cAXtC,GCEgBhK,SAASuD,iBAAiB,kBAChCb,QAAQ,SAAA2H,GACVA,EAAE3J,iBAAiB,QAAS,SAAUC,GAClCA,EAAEiJ,iBAEYxI,KAAKsI,mBACXlJ,UAAUwJ,OAAO,UAEzB5I,KAAKZ,UAAUwJ,OAAO,eAIjBhK,SAASC,cAAc,iBAC7BS,iBAAiB,QAAS,SAAUC,GAC5BX,SAASC,cAAc,YAC7BO,UAAUwJ,OAAO,UAEtB5I,KAAKZ,UAAUwJ,OAAO","file":"site.js","sourcesContent":["var loadButton = document.querySelector('#loader');\r\n\r\nif (loadButton) {\r\n var count = parseInt(loadButton.getAttribute('data-count'));\r\n var skip = parseInt(loadButton.getAttribute('data-skip'));\r\n var size = parseInt(loadButton.getAttribute('data-size'));\r\n var category = parseInt(loadButton.getAttribute('data-category'));\r\n\r\n if (skip < count) {\r\n // loadButton.parentElement.removeChild(loadButton);\r\n loadButton.classList.remove('hide');\r\n // } else {\r\n loadButton.addEventListener('click', function (e) {\r\n\r\n loadButton.setAttribute('disabled', 'disabled');\r\n loadButton.innerHTML = 'Loading...';\r\n\r\n // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest\r\n // https://www.thereformedprogrammer.net/asp-net-core-razor-pages-how-to-implement-ajax-requests/\r\n var request = new XMLHttpRequest();\r\n var url = loadButton.getAttribute('data-page') + \"?handler=Load\";\r\n var params = 'skip=' + skip + '&category=' + category;\r\n\r\n request.onreadystatechange = function () {\r\n if (this.readyState === 4 && this.status === 200) {\r\n addItems(this.responseText);\r\n }\r\n };\r\n\r\n request.open(\"POST\", url, true);\r\n request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\r\n request.setRequestHeader('RequestVerificationToken',\r\n document.querySelector('input[name=\"__RequestVerificationToken\"]').value\r\n );\r\n\r\n request.send(params);\r\n\r\n function addItems(items) {\r\n var list = document.querySelector('#list');\r\n list.innerHTML += items;\r\n\r\n skip += size;\r\n loadButton.setAttribute('data-skip', skip);\r\n\r\n if (skip >= count) {\r\n loadButton.parentElement.removeChild(loadButton);\r\n } else {\r\n loadButton.removeAttribute('disabled');\r\n loadButton.innerHTML = 'Load More';\r\n }\r\n }\r\n\r\n // request.setRequestHeader('Authorization', 'Bearer ' + access_token);\r\n // request.setRequestHeader(\"Content-type\", \"application/json;charset=UTF-8\");\r\n\r\n //var data = {\r\n // 'skip': 10,\r\n // 'category': 20\r\n //};\r\n\r\n // request.send(JSON.stringify(data));\r\n });\r\n }\r\n}","function generateSelectList(categories, parent, parameters, num) {\r\n\r\n // Get filter's form\r\n var filter = document.querySelector('form.filter');\r\n\r\n if (categories.length !== 0) {\r\n var select = document.createElement('select');\r\n\r\n select.setAttribute('name', 'category');\r\n select.setAttribute('data-num', num);\r\n\r\n var option = document.createElement('option');\r\n option.setAttribute('value', '');\r\n option.innerHTML = '-- All Categories --';\r\n select.appendChild(option);\r\n\r\n categories.forEach(function (category) {\r\n if (category.parentID === parent) {\r\n var option = document.createElement('option');\r\n option.setAttribute('value', category.id);\r\n option.innerHTML = category.title;\r\n\r\n // Check if the category was found in the parameters array\r\n if (parameters.some(function (param) {\r\n return param == category.id;\r\n })) {\r\n\r\n option.setAttribute('selected', 'selected');\r\n\r\n // Add a sub list if the category is a parent\r\n if (category.isParent) {\r\n\r\n num += 1;\r\n generateSelectList(categories, category.id, parameters, num);\r\n }\r\n }\r\n\r\n select.appendChild(option);\r\n }\r\n });\r\n\r\n select.addEventListener('change', function () {\r\n // https://stackoverflow.com/questions/1085801/get-selected-value-in-dropdown-list-using-javascript\r\n var selected = this.options[this.selectedIndex].value;\r\n var listNum = this.getAttribute('data-num');\r\n parameters[listNum] = selected;\r\n parameters.splice(listNum + 1);\r\n num = 0;\r\n\r\n var lists = filter.querySelectorAll('select');\r\n if (lists) {\r\n lists.forEach(function (list) {\r\n filter.removeChild(list);\r\n });\r\n }\r\n\r\n generateSelectList(categories, null, parameters, num);\r\n });\r\n\r\n filter.insertBefore(select, filter.firstChild);\r\n }\r\n\r\n}","// check the support of NodeList.forEach()\n// https://tips.tutorialhorizon.com/2017/01/06/object-doesnt-support-property-or-method-foreach/\r\n(function () {\r\n if (typeof NodeList.prototype.forEach === \"function\") return false;\r\n NodeList.prototype.forEach = Array.prototype.forEach;\r\n})();\n\n// check if SVG is supported in the browser\n(function () {\r\n // https://css-tricks.com/a-complete-guide-to-svg-fallbacks/\r\n function svgasimg() {\r\n return document.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#Image\", \"1.1\");\r\n }\r\n\r\n if (svgasimg()) {\r\n let pngImages = document.querySelectorAll('img[data-process=\"png\"]');\r\n\r\n pngImages.forEach(image => {\r\n let png = image.getAttribute('src');\r\n let svg = png.replace('.png', '.svg');\r\n image.setAttribute('src', svg);\r\n image.removeAttribute('srcset');\r\n });\r\n }\r\n})();\n\n// check if the browser is IE 10 or older\n(function () {\r\n //Check the userAgent property of the window.navigator object\r\n var ua = window.navigator.userAgent;\r\n\r\n // IE 10 or older\r\n var msie = ua.indexOf('MSIE ');\r\n\r\n //IE 11\r\n // var trident = ua.indexOf('Trident/');\r\n\r\n if (msie > 0) {\r\n // var body = document.getElementsByTagName('body')[0];\r\n var message = document.createElement('div');\r\n message.setAttribute('id', 'outdated');\r\n message.innerHTML = '
You are using an old browser and the website may not work correctly. Consider changing your browser. Learn More
';\r\n // body.insertBefore(message, body.firstChild);\r\n document.body.insertBefore(message, document.body.firstChild); // https://www.w3schools.com/jsref/dom_obj_body.asp\r\n }\r\n})();\r\n\r\n// alerts\r\n(function () {\r\n let alert = document.querySelectorAll(\"p.alert\");\r\n\r\n if (alert.length > 0) {\r\n alert.forEach(p => {\r\n setInterval(function () {\r\n p.classList.add('hidden');\r\n }, 5000);\r\n });\r\n }\r\n})();","// Google map\r\n// https://developers.google.com/maps/documentation/javascript/tutorial\r\n\r\nlet map;\r\n\r\nfunction initHomeMap() {\r\n // set the bounds based on projects locations\r\n let bounds = new google.maps.LatLngBounds();\r\n\r\n //let projects = [\r\n // { title: 'Damascus', coords: { lat: 33.5138, lng: 36.2765 } },\r\n // { title: 'Aleppo', coords: { lat: 36.2021, lng: 37.1343 } },\r\n // { title: 'Tartous', coords: { lat: 34.8959, lng: 35.8867 } },\r\n // { title: 'Deir Ezzor', coords: { lat: 35.3297, lng: 40.1350 } }\r\n //];\r\n\r\n map = new google.maps.Map(document.getElementById('map'), {\r\n center: { lat: 34.8021, lng: 38.9968 },\r\n zoom: 6\r\n });\r\n\r\n let info = new google.maps.InfoWindow();\r\n // https://developers.google.com/maps/documentation/javascript/infowindows\r\n\r\n projects.forEach(p => {\r\n\r\n let coords = p.coordinates.split(',');\r\n\r\n let marker = new google.maps.Marker({\r\n position: { lat: parseFloat(coords[0]), lng: parseFloat(coords[1]) },\r\n map: map,\r\n title: p.title,\r\n label: p.title.substr(0, 1)\r\n // https://developers.google.com/maps/documentation/javascript/examples/marker-labels\r\n });\r\n\r\n bounds.extend(marker.position);\r\n\r\n let content = '' + (p.category ? p.category : '') + '
' +\r\n '' + (p.location ? p.location : '') + '';\r\n // '';\r\n\r\n marker.addListener('click', function () {\r\n info.setContent(content);\r\n info.open(map, marker);\r\n });\r\n });\r\n\r\n map.fitBounds(bounds);\r\n}\r\n\r\nfunction initMapForLocation() {\r\n\r\n let location = { lat: 34.8021, lng: 38.9968 };\r\n let zoom = 6;\r\n\r\n if (inCoords.value.length !== 0) {\r\n let inCoordsArray = inCoords.value.split(',');\r\n location = { lat: parseFloat(inCoordsArray[0]), lng: parseFloat(inCoordsArray[1]) };\r\n zoom = 14;\r\n }\r\n\r\n // https://developers.google.com/maps/documentation/javascript/basics\r\n map = new google.maps.Map(document.getElementById('map'), {\r\n center: location,\r\n zoom: zoom\r\n // mapTypeId: 'satellite'\r\n });\r\n\r\n if (inCoords.value.length !== 0) {\r\n setMarker(location);\r\n }\r\n\r\n map.addListener('rightclick', function (e) {\r\n\r\n if (marker !== null) {\r\n marker.setMap(null);\r\n }\r\n\r\n setMarker({ lat: e.latLng.lat(), lng: e.latLng.lng() });\r\n });\r\n\r\n function setMarker(coords) {\r\n marker = new google.maps.Marker({\r\n position: coords,\r\n map: map,\r\n draggable: true,\r\n animation: google.maps.Animation.DROP,\r\n title: projectTitle\r\n });\r\n\r\n marker.addListener('drag', function (e) {\r\n updateCoords(marker.getPosition().lat() + ',' + marker.getPosition().lng());\r\n });\r\n\r\n updateCoords(coords.lat + ',' + coords.lng);\r\n saveButton.removeAttribute('disabled');\r\n }\r\n\r\n function updateCoords(coords) {\r\n inCoords.value = coords;\r\n }\r\n}","// https://stackoverflow.com/questions/123999/how-to-tell-if-a-dom-element-is-visible-in-the-current-viewport/7557433#7557433\r\rfunction isElementInViewport(el) {\r\n var rect = el.getBoundingClientRect();\r\n\r\n return (\r\n rect.top >= 0 &&\r\n rect.left >= 0 &&\r\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && /*or $(window).height() */\r\n rect.right <= (window.innerWidth || document.documentElement.clientWidth) /*or $(window).width() */\r\n );\r\n}\r\n\r\n//function onVisibilityChange(el, callback) {\r\n// var old_visible;\r\n// return function () {\r\n// var visible = isElementInViewport(el);\r\n// if (visible !== old_visible) {\r\n// old_visible = visible;\r\n// if (typeof callback === 'function') {\r\n// callback();\r\n// }\r\n// }\r\n// };\r\n//}\r\n\r\nfunction onVisibilityChange(el, callback) {\r\n // var old_visible;\r\n return function () {\r\n // var visible = isElementInViewport(el);\r\n if (isElementInViewport(el)) {\r\n // old_visible = visible;\r\n if (typeof callback === 'function') {\r\n callback();\r\n }\r\n }\r\n };\r\n}\r\n\r\n\r\n//var handler = onVisibilityChange(elementVarName, function () {\r\n\r\n//});\r\n\r\n//if (window.addEventListener) {\r\n// addEventListener('DOMContentLoaded', handler, false);\r\n// addEventListener('load', handler, false);\r\n// addEventListener('scroll', handler, false);\r\n// addEventListener('resize', handler, false);\r\n//}","function loadGallery(attachments) {\r\n\r\n function getSlide(num, type) {\r\n var currentSlide = attachments[num];\r\n var div = document.createElement('div');\r\n var item;\r\n\r\n if (currentSlide.type === image) {\r\n item = document.createElement('img');\r\n item.setAttribute('src', currentSlide.link);\r\n item.setAttribute('alt', currentSlide.title);\r\n } else if (currentSlide.type === video) {\r\n\r\n div.classList.add('video');\r\n\r\n if (currentSlide.isRemote) {\r\n item = document.createElement('iframe');\r\n item.setAttribute('src', currentSlide.link);\r\n item.setAttribute('allow', \"autoplay; encrypted-media\");\r\n item.setAttribute('allowfullscreen', '');\r\n } else {\r\n item = document.createElement('video');\r\n item.setAttribute('src', currentSlide.link);\r\n item.setAttribute('controls', '');\r\n }\r\n }\r\n\r\n div.appendChild(item);\r\n div.classList.add(types[type]);\r\n\r\n return div;\r\n }\r\n\r\n function setCaption(num) {\r\n if (attachments[num].title !== null) {\r\n caption.innerHTML = attachments[num].title;\r\n } else {\r\n caption.innerHTML = \"\";\r\n }\r\n }\r\n\r\n if (attachments.length > 0) {\r\n var image = 1;\r\n var video = 3;\r\n\r\n var types = {\r\n previous: 'previous',\r\n current: 'current',\r\n next: 'next'\r\n };\r\n\r\n var current = 0;\r\n\r\n if (attachments.length > 1) {\r\n var previous = attachments.length - 1;\r\n var next = 1;\r\n }\r\n\r\n var gallery = document.querySelector('.gallery');\r\n var caption = gallery.nextElementSibling;\r\n\r\n // Up button\r\n var up = document.createElement('button');\r\n up.classList.add('up');\r\n up.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n\r\n var previousDiv = gallery.querySelector('div.previous');\r\n var currentDiv = gallery.querySelector('div.current');\r\n var nextDiv = gallery.querySelector('div.next');\r\n\r\n gallery.removeChild(nextDiv);\r\n\r\n currentDiv.classList.toggle('current');\r\n currentDiv.classList.toggle('next');\r\n\r\n previousDiv.classList.toggle('previous');\r\n previousDiv.classList.toggle('current');\r\n\r\n next = current;\r\n current = previous;\r\n previous -= 1;\r\n if (previous < 0) {\r\n previous = attachments.length - 1;\r\n }\r\n\r\n gallery.appendChild(getSlide(previous, types.previous));\r\n setCaption(current);\r\n });\r\n\r\n // Down button\r\n var down = document.createElement('button');\r\n down.classList.add('down');\r\n down.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n\r\n var previousDiv = gallery.querySelector('div.previous');\r\n var currentDiv = gallery.querySelector('div.current');\r\n var nextDiv = gallery.querySelector('div.next');\r\n\r\n gallery.removeChild(previousDiv);\r\n\r\n currentDiv.classList.toggle('current');\r\n currentDiv.classList.toggle('previous');\r\n\r\n nextDiv.classList.toggle('next');\r\n nextDiv.classList.toggle('current');\r\n\r\n previous = current;\r\n current = next;\r\n next += 1;\r\n if (next > attachments.length - 1) {\r\n next = 0;\r\n }\r\n\r\n gallery.appendChild(getSlide(next, types.next));\r\n setCaption(current);\r\n });\r\n\r\n gallery.appendChild(getSlide(current, types.current));\r\n setCaption(current);\r\n\r\n if (attachments.length > 1) {\r\n gallery.appendChild(getSlide(previous, types.previous));\r\n gallery.appendChild(getSlide(next, types.next));\r\n gallery.appendChild(up);\r\n gallery.appendChild(down);\r\n }\r\n\r\n }\r\n}","// initiate home page slider\r\nfunction loadSlides() {\r\n let slides = document.querySelectorAll('#slides div');\r\n\r\n if (slides.length > 0) {\r\n let current = 0;\r\n slides[current].classList.add('middle');\r\n\r\n setInterval(function () {\r\n if (current !== slides.length - 1) {\r\n slides[current + 1].classList.add('middle');\r\n slides[current].classList.remove('middle');\r\n current += 1;\r\n } else {\r\n slides[0].classList.add('middle');\r\n slides[current].classList.remove('middle');\r\n current = 0;\r\n }\r\n }, 6000);\r\n }\r\n}","(function () {\r\n let items = document.querySelectorAll('ul.collapsible > li > a');\r\n\r\n if (items) {\r\n items.forEach(i => {\r\n i.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n\r\n let sub = this.nextElementSibling;\r\n sub.classList.toggle('expand');\r\n\r\n this.classList.toggle('opened');\r\n });\r\n });\r\n }\r\n})();","// main menu\r\n(function () {\r\n let links = document.querySelectorAll('nav#menu a.sub');\r\n links.forEach(a => {\r\n a.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n\r\n let subMenu = this.nextElementSibling;\r\n subMenu.classList.toggle('opened');\r\n\r\n this.classList.toggle('flipped');\r\n });\r\n });\r\n\r\n let expand = document.querySelector('button.expand');\r\n expand.addEventListener('click', function (e) {\r\n let menu = document.querySelector('nav#menu');\r\n menu.classList.toggle('opened');\r\n\r\n this.classList.toggle('flipped');\r\n });\r\n})();"]}