/** * Observe how the user enters content into the comment form in order to determine whether it's a bot or not. * * Note that no actual input is being saved here, only counts and timings between events. */ ( function() { // Passive event listeners are guaranteed to never call e.preventDefault(), // but they're not supported in all browsers. Use this feature detection // to determine whether they're available for use. var supportsPassive = false; try { var opts = Object.defineProperty( {}, 'passive', { get : function() { supportsPassive = true; } } ); window.addEventListener( 'testPassive', null, opts ); window.removeEventListener( 'testPassive', null, opts ); } catch ( e ) {} function init() { var input_begin = ''; var keydowns = {}; var lastKeyup = null; var lastKeydown = null; var keypresses = []; var modifierKeys = []; var correctionKeys = []; var lastMouseup = null; var lastMousedown = null; var mouseclicks = []; var mousemoveTimer = null; var lastMousemoveX = null; var lastMousemoveY = null; var mousemoveStart = null; var mousemoves = []; var touchmoveCountTimer = null; var touchmoveCount = 0; var lastTouchEnd = null; var lastTouchStart = null; var touchEvents = []; var scrollCountTimer = null; var scrollCount = 0; var correctionKeyCodes = [ 'Backspace', 'Delete', 'ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'Home', 'End', 'PageUp', 'PageDown' ]; var modifierKeyCodes = [ 'Shift', 'CapsLock' ]; var forms = document.querySelectorAll( 'form[method=post]' ); for ( var i = 0; i < forms.length; i++ ) { var form = forms[i]; var formAction = form.getAttribute( 'action' ); // Ignore forms that POST directly to other domains; these could be things like payment forms. if ( formAction ) { // Check that the form is posting to an external URL, not a path. if ( formAction.indexOf( 'http://' ) == 0 || formAction.indexOf( 'https://' ) == 0 ) { if ( formAction.indexOf( 'http://' + window.location.hostname + '/' ) != 0 && formAction.indexOf( 'https://' + window.location.hostname + '/' ) != 0 ) { continue; } } } form.addEventListener( 'submit', function () { var ak_bkp = prepare_timestamp_array_for_request( keypresses ); var ak_bmc = prepare_timestamp_array_for_request( mouseclicks ); var ak_bte = prepare_timestamp_array_for_request( touchEvents ); var ak_bmm = prepare_timestamp_array_for_request( mousemoves ); var input_fields = { // When did the user begin entering any input? 'bib': input_begin, // When was the form submitted? 'bfs': Date.now(), // How many keypresses did they make? 'bkpc': keypresses.length, // How quickly did they press a sample of keys, and how long between them? 'bkp': ak_bkp, // How quickly did they click the mouse, and how long between clicks? 'bmc': ak_bmc, // How many mouseclicks did they make? 'bmcc': mouseclicks.length, // When did they press modifier keys (like Shift or Capslock)? 'bmk': modifierKeys.join( ';' ), // When did they correct themselves? e.g., press Backspace, or use the arrow keys to move the cursor back 'bck': correctionKeys.join( ';' ), // How many times did they move the mouse? 'bmmc': mousemoves.length, // How many times did they move around using a touchscreen? 'btmc': touchmoveCount, // How many times did they scroll? 'bsc': scrollCount, // How quickly did they perform touch events, and how long between them? 'bte': ak_bte, // How many touch events were there? 'btec' : touchEvents.length, // How quickly did they move the mouse, and how long between moves? 'bmm' : ak_bmm }; var akismet_field_prefix = 'ak_'; if ( this.getElementsByClassName ) { // Check to see if we've used an alternate field name prefix. We store this as an attribute of the container around some of the Akismet fields. var possible_akismet_containers = this.getElementsByClassName( 'akismet-fields-container' ); for ( var containerIndex = 0; containerIndex < possible_akismet_containers.length; containerIndex++ ) { var container = possible_akismet_containers.item( containerIndex ); if ( container.getAttribute( 'data-prefix' ) ) { akismet_field_prefix = container.getAttribute( 'data-prefix' ); break; } } } for ( var field_name in input_fields ) { var field = document.createElement( 'input' ); field.setAttribute( 'type', 'hidden' ); field.setAttribute( 'name', akismet_field_prefix + field_name ); field.setAttribute( 'value', input_fields[ field_name ] ); this.appendChild( field ); } }, supportsPassive ? { passive: true } : false ); form.addEventListener( 'keydown', function ( e ) { // If you hold a key down, some browsers send multiple keydown events in a row. // Ignore any keydown events for a key that hasn't come back up yet. if ( e.key in keydowns ) { return; } var keydownTime = ( new Date() ).getTime(); keydowns[ e.key ] = [ keydownTime ]; if ( ! input_begin ) { input_begin = keydownTime; } // In some situations, we don't want to record an interval since the last keypress -- for example, // on the first keypress, or on a keypress after focus has changed to another element. Normally, // we want to record the time between the last keyup and this keydown. But if they press a // key while already pressing a key, we want to record the time between the two keydowns. var lastKeyEvent = Math.max( lastKeydown, lastKeyup ); if ( lastKeyEvent ) { keydowns[ e.key ].push( keydownTime - lastKeyEvent ); } lastKeydown = keydownTime; }, supportsPassive ? { passive: true } : false ); form.addEventListener( 'keyup', function ( e ) { if ( ! ( e.key in keydowns ) ) { // This key was pressed before this script was loaded, or a mouseclick happened during the keypress, or... return; } var keyupTime = ( new Date() ).getTime(); if ( 'TEXTAREA' === e.target.nodeName || 'INPUT' === e.target.nodeName ) { if ( -1 !== modifierKeyCodes.indexOf( e.key ) ) { modifierKeys.push( keypresses.length - 1 ); } else if ( -1 !== correctionKeyCodes.indexOf( e.key ) ) { correctionKeys.push( keypresses.length - 1 ); } else { // ^ Don't record timings for keys like Shift or backspace, since they // typically get held down for longer than regular typing. var keydownTime = keydowns[ e.key ][0]; var keypress = []; // Keypress duration. keypress.push( keyupTime - keydownTime ); // Amount of time between this keypress and the previous keypress. if ( keydowns[ e.key ].length > 1 ) { keypress.push( keydowns[ e.key ][1] ); } keypresses.push( keypress ); } } delete keydowns[ e.key ]; lastKeyup = keyupTime; }, supportsPassive ? { passive: true } : false ); form.addEventListener( "focusin", function ( e ) { lastKeydown = null; lastKeyup = null; keydowns = {}; }, supportsPassive ? { passive: true } : false ); form.addEventListener( "focusout", function ( e ) { lastKeydown = null; lastKeyup = null; keydowns = {}; }, supportsPassive ? { passive: true } : false ); } document.addEventListener( 'mousedown', function ( e ) { lastMousedown = ( new Date() ).getTime(); }, supportsPassive ? { passive: true } : false ); document.addEventListener( 'mouseup', function ( e ) { if ( ! lastMousedown ) { // If the mousedown happened before this script was loaded, but the mouseup happened after... return; } var now = ( new Date() ).getTime(); var mouseclick = []; mouseclick.push( now - lastMousedown ); if ( lastMouseup ) { mouseclick.push( lastMousedown - lastMouseup ); } mouseclicks.push( mouseclick ); lastMouseup = now; // If the mouse has been clicked, don't record this time as an interval between keypresses. lastKeydown = null; lastKeyup = null; keydowns = {}; }, supportsPassive ? { passive: true } : false ); document.addEventListener( 'mousemove', function ( e ) { if ( mousemoveTimer ) { clearTimeout( mousemoveTimer ); mousemoveTimer = null; } else { mousemoveStart = ( new Date() ).getTime(); lastMousemoveX = e.offsetX; lastMousemoveY = e.offsetY; } mousemoveTimer = setTimeout( function ( theEvent, originalMousemoveStart ) { var now = ( new Date() ).getTime() - 500; // To account for the timer delay. var mousemove = []; mousemove.push( now - originalMousemoveStart ); mousemove.push( Math.round( Math.sqrt( Math.pow( theEvent.offsetX - lastMousemoveX, 2 ) + Math.pow( theEvent.offsetY - lastMousemoveY, 2 ) ) ) ); if ( mousemove[1] > 0 ) { // If there was no measurable distance, then it wasn't really a move. mousemoves.push( mousemove ); } mousemoveStart = null; mousemoveTimer = null; }, 500, e, mousemoveStart ); }, supportsPassive ? { passive: true } : false ); document.addEventListener( 'touchmove', function ( e ) { if ( touchmoveCountTimer ) { clearTimeout( touchmoveCountTimer ); } touchmoveCountTimer = setTimeout( function () { touchmoveCount++; }, 500 ); }, supportsPassive ? { passive: true } : false ); document.addEventListener( 'touchstart', function ( e ) { lastTouchStart = ( new Date() ).getTime(); }, supportsPassive ? { passive: true } : false ); document.addEventListener( 'touchend', function ( e ) { if ( ! lastTouchStart ) { // If the touchstart happened before this script was loaded, but the touchend happened after... return; } var now = ( new Date() ).getTime(); var touchEvent = []; touchEvent.push( now - lastTouchStart ); if ( lastTouchEnd ) { touchEvent.push( lastTouchStart - lastTouchEnd ); } touchEvents.push( touchEvent ); lastTouchEnd = now; // Don't record this time as an interval between keypresses. lastKeydown = null; lastKeyup = null; keydowns = {}; }, supportsPassive ? { passive: true } : false ); document.addEventListener( 'scroll', function ( e ) { if ( scrollCountTimer ) { clearTimeout( scrollCountTimer ); } scrollCountTimer = setTimeout( function () { scrollCount++; }, 500 ); }, supportsPassive ? { passive: true } : false ); } /** * For the timestamp data that is collected, don't send more than `limit` data points in the request. * Choose a random slice and send those. */ function prepare_timestamp_array_for_request( a, limit ) { if ( ! limit ) { limit = 100; } var rv = ''; if ( a.length > 0 ) { var random_starting_point = Math.max( 0, Math.floor( Math.random() * a.length - limit ) ); for ( var i = 0; i < limit && i < a.length; i++ ) { rv += a[ random_starting_point + i ][0]; if ( a[ random_starting_point + i ].length >= 2 ) { rv += "," + a[ random_starting_point + i ][1]; } rv += ";"; } } return rv; } if ( document.readyState !== 'loading' ) { init(); } else { document.addEventListener( 'DOMContentLoaded', init ); } })(); Nghĩa trang thành phố Hòa Bình – và những bất cập về quy hoạch

Nghĩa trang thành phố Hòa Bình – và những bất cập về quy hoạch

Chọn địa điểm và vị trí để an tang người đã khuất là một trong những thuần phong mỹ tục của người Việt ta. Tuy nhiên, hiện nay việc xây dựng và quy hoạch nghĩa trang đang gặp một số bất cập lớn, trong đó có việc quy hoạch và xây dựng nghĩa trang thành phố Hòa Bình.

Vậy những bất cập mà nghĩa trang ở đây gặp phải là gì? Nên chọn nghĩa trang nào hợp lý khi lo hậu sự cho các cụ? Hãy tham khảo bài viết sau đây.

Nghĩa trang thành phố Hòa Bình – những bất cập về quy hoạch và xây dựng.

Xây dựng mộ tùy tiện và không có quy củ là vấn đề nổi cộm ở rất nhiều nghĩa trang, không trừ nghĩa trang thành phố Hòa Bình. Xu hướng xây dựng những ngôi mộ to, cầu kỳ đang trở thành xu hướng của mọi người. Thậm chí rất nhiều gia đình mua sẵn đất để dành lo hậu sự. Những việc làm như vậy làm ảnh hưởng rất lớn đến việc quy hoạch và xây dựng nghĩa trang. Mộ xây lên một cách tùy tiện, không có đường lối, không theo logic làm cho diện tích xây dựng bị hạn chế.

Nghĩa trang thành phố Hòa Bình không được xây dựng, quy hoạch hợp lý.
Nghĩa trang thành phố Hòa Bình không được xây dựng, quy hoạch hợp lý.

Theo lời kể của những người dân ở đây thì việc đi lại trong nghĩa trang rất khó khăn. Nguyên nhân chủ yếu chính là các hộ gia đình ở đây ai cũng muốn mộ nhà mình đẹp nhất, to nhất. Họ thường xây tường bao cao lên, dẫn đến chắn hết lối đi. Khi có đám tang hoặc ngày lễ viếng, mọi người thường đi lại rất vất vả. Đi lại đã khó khăn thì việc vận chuyển các vật liệu vào nghĩa trang càng khó khăn, vất vả hơn.

Không những vậy, nghĩa trang ở đây là một trong những nguyên nhân làm ô nhiễm thành phố trầm trọng. Nhiều hộ gia đình phải sử dụng nguồn nước bị ô nhiễm gây ra bởi nghĩa trang do chưa có đường nước sạch. Rác thải, đặc biệt là rác trong quá trình xây dựng mộ, rác cải táng không được xử lý đúng cách. Có trường hợp còn làm vứt ngay tại nghĩa trang, chất thành đống. Nghĩa trang thì chưa được xây dựng tường bao quanh, gia súc gia cầm đi lại tự nhiên càng khiến môi trường ở đây bị ô nhiễm.

Tuy nhiên, những năm gần đây, việc quy hoạch và xây dựng nghĩa trang ở thành phố Hòa Bình cũng đã được cải thiện hơn. Việc quy hoạch và tổ chức lại nghĩa trang đang dần được thực hiện và có quy củ hơn.

>>> Có thể bạn quan tâm: Nghĩa trang Bình Hưng Hòa ở đâu?

Nghĩa trang Lạc Hồng Viên – địa chỉ cung cấp dịch vụ mai táng lý tưởng tại Hòa Bình.

cổng vào công viên nghĩa trang
Cổng vào nghĩa trang Lạc Hồng Viên.

Nghĩa trang tọa lạc tại xã Dân Hòa, huyện Kỳ Sơn tỉnh Hòa Bình. Không những là nơi mai táng hợp lý để các gia đình lo hậu sự. Nghĩa trang rộng và có sự quy hoạch rất khoa học. Các ngôi mộ được xếp hàng ngay ngắn, theo từng khu. Lối đi trong nghĩa trang cũng rất thuận tiện. Nghĩa trang được xây cổng ra vào và tường bao quanh chắc chắn.

Hình ảnh dịch vụ mà Công viên tâm linh cung cấp cho khách hàng
Hình ảnh dịch vụ mà Công viên tâm linh cung cấp cho khách hàng

Không dừng lại ở đó, Lạc Hồng Viên còn cung cấp rất nhiều dịch vụ mai táng. Những dịch vụ mai táng điển hình có thể kể đến đó là:

– Dịch vụ bán đất mộ theo từng loại.

– Dịch vụ cúng giỗ online.

– Dịch vụ cầu siêu của Công viên Tâm linh Lạc Hồng Viên.

– Dịch vụ cầu an của Công viên Tâm linh Lạc Hồng Viên.

– Dịch vụ chăm sóc các khuôn viên phần mộ.

– Dịch vụ thiết kế, xây dựng phần mộ và khuôn viên cảnh quan.

– Dịch vụ mai táng, cải táng.

– Dịch vụ vận chuyển mộ từ nơi khác đến.

– Dịch vụ bảo quản xác người mất (chờ người thân về, chờ giờ đẹp).

– Dịch vụ lưu trữ và bảo quản tro cốt người mất.

– Dịch vụ trang điểm, thẩm cho người mất trước khi khâm liệm …

Với chất lượng dịch vụ luôn đặt lên hàng đầu, hơn hẳn nghĩa trang thành phố, nghĩa trang Lạc Hồng Viên nhận được sự hài lòng của khách hàng. Hãy đến với nghĩa trang Lạc Hồng Viên để cảm nhận chất lượng.

=> Tìm hiểu vì sao Lạc Hồng Viên trở thành Công viên nghĩa trang đẹp nhất Đông Nam Á tại : https://congviennghiatrang.com/

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

MR PHƯƠNG 0965.435.666