(function () {
var mainElement = document.querySelector('.map__pin--main');
var field = document.querySelector('.map__overlay');
var limits = {
top: minLocalY - pinHight,
right: field.offsetWidth + field.offsetLeft,
bottom: maxLocalY,
left: field.offsetLeft
};
mainElement.addEventListener('mousedown', function (evt) {
evt.preventDefault();
var startCoords = {
x: evt.clientX,
y: evt.clientY
};
var dragged = false;
var onMouseMove = function (moveEvt) {
moveEvt.preventDefault();
dragged = true;
var shift = {
x: startCoords.x - moveEvt.clientX,
y: startCoords.y - moveEvt.clientY
};
startCoords = {
x: moveEvt.clientX,
y: moveEvt.clientY
};
if (!(parseInt(mainElement.style.left, 10) >= limits.left- pinWidth)) {
mainElement.style.left = limits.left + 'px';
document.querySelector('#address').value = (parseInt(mainElement.style.left, 10) ) + ' ' + (parseInt(mainElement.style.top, 10) + pinHight);
} else if (!(parseInt(mainElement.style.left, 10) >= limits.right - pinWidth)) {
mainElement.style.left = limits.right - pinWidth + 'px';
document.querySelector('#address').value = (parseInt(mainElement.style.left, 10) ) + ' ' + (parseInt(mainElement.style.top, 10) + pinHight);
} else if (!(parseInt(mainElement.style.top, 10) <= limits.top)) {
mainElement.style.top = limits.top + 'px';
document.querySelector('#address').value = (parseInt(mainElement.style.left, 10) ) + ' ' + (parseInt(mainElement.style.top, 10) + pinHight);
} else if (!(parseInt(mainElement.style.top, 10) >= limits.bottom)) {
mainElement.style.top = limits.bottom + 'px';
document.querySelector('#address').value = (parseInt(mainElement.style.left, 10) ) + ' ' + (parseInt(mainElement.style.top, 10) + pinHight);
}
mainElement.style.top = (mainElement.offsetTop - shift.y) + 'px';
mainElement.style.left = (mainElement.offsetLeft - shift.x) + 'px';
document.querySelector('#address').value = (parseInt(mainElement.style.left, 10) ) + ' ' + (parseInt(mainElement.style.top, 10) + pinHight);
};
var onMouseUp = function (upEvt) {
upEvt.preventDefault();
document.removeEventListener('mousemove', onMouseMove);
document.removeEventListener('mouseup', onMouseUp);
if (dragged) {
var onClickPreventDefault = function (evte) {
evte.preventDefault();
mainElement.removeEventListener('click', onClickPreventDefault);
};
mainElement.addEventListener('click', onClickPreventDefault);
}
};
document.addEventListener('mousemove', onMouseMove);
document.addEventListener('mouseup', onMouseUp);
});
})();
CihmdW5jdGlvbiAoKSB7CiAgdmFyIG1haW5FbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm1hcF9fcGluLS1tYWluJyk7CiAgdmFyIGZpZWxkID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm1hcF9fb3ZlcmxheScpOwoKICB2YXIgbGltaXRzID0gewogICAgdG9wOiBtaW5Mb2NhbFkgLSBwaW5IaWdodCwKICAgIHJpZ2h0OiBmaWVsZC5vZmZzZXRXaWR0aCArIGZpZWxkLm9mZnNldExlZnQsCiAgICBib3R0b206IG1heExvY2FsWSwKICAgIGxlZnQ6IGZpZWxkLm9mZnNldExlZnQKICB9OwogIG1haW5FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGZ1bmN0aW9uIChldnQpIHsKICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpOwoKICAgIHZhciBzdGFydENvb3JkcyA9IHsKICAgICAgeDogZXZ0LmNsaWVudFgsCiAgICAgIHk6IGV2dC5jbGllbnRZCiAgICB9OwoKICAgIHZhciBkcmFnZ2VkID0gZmFsc2U7CgogICAgdmFyIG9uTW91c2VNb3ZlID0gZnVuY3Rpb24gKG1vdmVFdnQpIHsKICAgICAgbW92ZUV2dC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICBkcmFnZ2VkID0gdHJ1ZTsKCiAgICAgIHZhciBzaGlmdCA9IHsKICAgICAgICB4OiBzdGFydENvb3Jkcy54IC0gbW92ZUV2dC5jbGllbnRYLAogICAgICAgIHk6IHN0YXJ0Q29vcmRzLnkgLSBtb3ZlRXZ0LmNsaWVudFkKICAgICAgfTsKCiAgICAgIHN0YXJ0Q29vcmRzID0gewogICAgICAgIHg6IG1vdmVFdnQuY2xpZW50WCwKICAgICAgICB5OiBtb3ZlRXZ0LmNsaWVudFkKICAgICAgfTsKICAgICAgaWYgKCEocGFyc2VJbnQobWFpbkVsZW1lbnQuc3R5bGUubGVmdCwgMTApID49IGxpbWl0cy5sZWZ0LSBwaW5XaWR0aCkpIHsKICAgICAgICBtYWluRWxlbWVudC5zdHlsZS5sZWZ0ID0gbGltaXRzLmxlZnQgKyAncHgnOwogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNhZGRyZXNzJykudmFsdWUgPSAocGFyc2VJbnQobWFpbkVsZW1lbnQuc3R5bGUubGVmdCwgMTApICApICsgJyAnICsgKHBhcnNlSW50KG1haW5FbGVtZW50LnN0eWxlLnRvcCwgMTApICsgcGluSGlnaHQpOwogICAgICB9IGVsc2UgaWYgKCEocGFyc2VJbnQobWFpbkVsZW1lbnQuc3R5bGUubGVmdCwgMTApID49IGxpbWl0cy5yaWdodCAtIHBpbldpZHRoKSkgewogICAgICAgIG1haW5FbGVtZW50LnN0eWxlLmxlZnQgPSBsaW1pdHMucmlnaHQgLSBwaW5XaWR0aCArICdweCc7CiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2FkZHJlc3MnKS52YWx1ZSA9IChwYXJzZUludChtYWluRWxlbWVudC5zdHlsZS5sZWZ0LCAxMCkgICkgKyAnICcgKyAocGFyc2VJbnQobWFpbkVsZW1lbnQuc3R5bGUudG9wLCAxMCkgKyBwaW5IaWdodCk7CiAgICAgIH0gZWxzZSBpZiAoIShwYXJzZUludChtYWluRWxlbWVudC5zdHlsZS50b3AsIDEwKSA8PSBsaW1pdHMudG9wKSkgewogICAgICAgIG1haW5FbGVtZW50LnN0eWxlLnRvcCA9IGxpbWl0cy50b3AgKyAncHgnOwogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNhZGRyZXNzJykudmFsdWUgPSAocGFyc2VJbnQobWFpbkVsZW1lbnQuc3R5bGUubGVmdCwgMTApICApICsgJyAnICsgKHBhcnNlSW50KG1haW5FbGVtZW50LnN0eWxlLnRvcCwgMTApICsgcGluSGlnaHQpOwogICAgICB9IGVsc2UgaWYgKCEocGFyc2VJbnQobWFpbkVsZW1lbnQuc3R5bGUudG9wLCAxMCkgPj0gbGltaXRzLmJvdHRvbSkpIHsKICAgICAgICBtYWluRWxlbWVudC5zdHlsZS50b3AgPSBsaW1pdHMuYm90dG9tICsgJ3B4JzsKICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjYWRkcmVzcycpLnZhbHVlID0gKHBhcnNlSW50KG1haW5FbGVtZW50LnN0eWxlLmxlZnQsIDEwKSAgKSArICcgJyArIChwYXJzZUludChtYWluRWxlbWVudC5zdHlsZS50b3AsIDEwKSArIHBpbkhpZ2h0KTsKICAgICAgfQogICAgICBtYWluRWxlbWVudC5zdHlsZS50b3AgPSAobWFpbkVsZW1lbnQub2Zmc2V0VG9wIC0gc2hpZnQueSkgKyAncHgnOwogICAgICBtYWluRWxlbWVudC5zdHlsZS5sZWZ0ID0gKG1haW5FbGVtZW50Lm9mZnNldExlZnQgLSBzaGlmdC54KSArICdweCc7CiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNhZGRyZXNzJykudmFsdWUgPSAocGFyc2VJbnQobWFpbkVsZW1lbnQuc3R5bGUubGVmdCwgMTApICApICsgJyAnICsgKHBhcnNlSW50KG1haW5FbGVtZW50LnN0eWxlLnRvcCwgMTApICsgcGluSGlnaHQpOwogICAgICAKICAgIH07CgogICAgdmFyIG9uTW91c2VVcCA9IGZ1bmN0aW9uICh1cEV2dCkgewogICAgICB1cEV2dC5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUpOwogICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTsKCiAgICAgIGlmIChkcmFnZ2VkKSB7CiAgICAgICAgdmFyIG9uQ2xpY2tQcmV2ZW50RGVmYXVsdCA9IGZ1bmN0aW9uIChldnRlKSB7CiAgICAgICAgICBldnRlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICBtYWluRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIG9uQ2xpY2tQcmV2ZW50RGVmYXVsdCk7CiAgICAgICAgfTsKICAgICAgICBtYWluRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIG9uQ2xpY2tQcmV2ZW50RGVmYXVsdCk7CiAgICAgIH0KCiAgICB9OwoKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXApOwogIH0pOwoKfSkoKTs=