Sáng ngày 1/12/2024, giải chạy Viettel Marathon Hà Nội – Việt Nam 2024 đã diễn ra thành công với nhiều ý nghĩa khi mở ra một cung đường chạy full marathon mới tại Hà Nội, được khoá đường chạy an toàn tới hơn 80%, tạo những trải nghiệm tốt cho VĐV thuận lợi hơn trong việc có thành tích cá nhân. Không chỉ là một giải chạy, một sự kiện thể thao, giải đấu còn trở thành một cầu nối hữu nghị, khẳng định năng lực tổ chức của Việt Nam khi khởi xướng và chủ trì chuỗi giải quốc tế. Viettel Marathon 2024 do Liên đoàn Điền kinh Việt Nam phối hợp với Liên đoàn Điền kinh Lào, Liên đoàn Điền kinh Campuchia tổ chức, Tập đoàn Viễn thông Quân đội Viettel đồng tổ chức và tài trợ, tư vấn và giám sát bởi Hiệp hội Điền kinh Châu Á.
Hơn 10.000 VĐV đến từ 24 quốc gia, vùng lãnh thổ tham gia tranh tài ở nhiều nội dung, lứa tuổi đã giúp Viettel Marathon 2024 chặng Việt Nam không chỉ là sự kiện thể thao mà là một lễ hội sôi động, nhiều màu sắc trên cung đường đua từ sân vận động quốc gia Mỹ Đình qua các cung đường thuộc quận, huyện Nam Từ Liêm, Hoài Đức, Đan Phượng, Phúc Thọ, Quốc Oai, Bắc Từ Liêm. Viettel Marathon 2024 chặng Việt Nam là giải chạy tiên phong mở cung đường full marathon mới tại Hà Nội, phù hợp với chủ trương của thành phố đưa các giải chạy ra khỏi vùng lõi của Hà Nội.
Giải cũng gây ấn tượng với đại diện từ Liên đoàn Điền Kinh Châu Á, Liên đoàn điền kinh các nước và đại biểu tư vấn kỹ thuật. Lần đầu tiên, một giải Marathon tại Việt Nam có đội tuyển quốc gia các nước tham dự hệ Elite với 39 Vận động viên đến từ đội tuyển Điền kinh 04 Quốc gia Lào, Campuchia, Malaysia và Việt Nam. Được Hiệp hội điền kinh châu Á (AAA) cấp phép, và đường chạy theo chuẩn AIMS, lần đầu tiên tại Hà Nội, Viettel Marathon được đóng hơn 80% cung đường và có sự tham gia của tất cả các lực lượng liên quan nơi đường chạy đi qua đảm bảo an toàn cho người chạy và giúp các VĐV có được trải nghiệm tốt nhất.
Với đường chạy được đánh giá cao, đạt tiêu chuẩn quốc tế, Viettel Marathon 2024 chặng Việt Nam đã chứng kiến Nguyễn Thị Oanh phá sâu kỷ lục quốc gia cự ly full marathon. “Cô gái vàng” của thể thao Việt Nam đã cán đích sớm nhất với thông số ấn tượng dưới mốc 2 giờ 40 phút. Cụ thể, Oanh “ỉn” đã trở thành VĐV nữ Việt Nam đầu tiên chạy full marathon dưới mốc trên, với thông số 2 giờ 39 phút 49 giây.
Trên đường chạy 42,194 km dành cho nam, Hoàng Nguyên Thanh đã vượt qua đàn anh ở những km cuối cùng để cán đích đầu tiên, trở thành nhà vô địch full marathon đường chạy Viettel Marathon chặng Việt Nam với thông số được cập nhật đến lúc này là 2 giờ 28 phút 21 giây. Trong khi đó Nguyễn Văn Lai cũng thi đấu xuất sắc để cán đích ngay sau người đàn em chỉ đúng… 1 giây.
Viettel Marathon nói chung và Viettel Marathon Hà Nội Việt Nam nói riêng trong năm đầu tiên tổ chức không chỉ là một cuộc đua thể thao đơn thuần. Đại diện Đại sứ quán Campuchia, Lào và các sinh viên 2 quốc gia đang học tập tại Việt Nam tham gia tranh tài trên đường chạy cho thấy Viettel Marathon còn mang ý nghĩa trở thành cầu nối hữu nghị giữa ba nước Đông Dương cũng như Việt Nam và các quốc gia khác trong khu vực. Chặng cuối cùng của Viettel Marathon 2024 sẽ được tổ chức vào ngày 22/12 tại Angkor Wat, quần thể di tích nổi tiếng của Campuchia. Trước chặng Việt Nam, chặng Lào của giải mang tên Viettel Marathon Luang Prabang Unitel 2024 đã được tổ chức vào ngày 03/11 với hơm 5.000 VĐV tham dự.
if (!isNotAllow3rd) { loadJsDefer('https://apis.google.com/js/platform.js?onload=onLoadGapi'); loadJsDefer('https://connect.facebook.net/vi_VN/sdk.js#xfbml=1&version=v5.0'); }
function onLoadGapi() { gapi.load('auth2', function() { gapi.load('auth2', function() { gapi.auth2.init({ client_id: '678720187862-08lendtdt5h3nr4j2he534p15b13aieg.apps.googleusercontent.com', scope: 'email profile', fetch_basic_profile: true }); }); }); }
function deleteCookie(name) { document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;"; } function lgGetCookie(name) { var value = document.cookie; var start = value.indexOf(" " + name + "="); if (start == -1) { start = value.indexOf(name + "="); } if (start == -1) { value = null; } else { start = value.indexOf("=", start) + 1; var end = value.indexOf(";", start); if (end == -1) { end = value.length; } value = unescape(value.substring(start, end)); } return value; }
function lgSetCookie(name, value, date) { var cookieValue = escape(value) + ((date == null) ? "" : "; expires=" + date.toUTCString()); document.cookie = name + "=" + cookieValue; }
function authLogin(name,isLogin=false){ if (isLogin){ $('#top-link-account .first').hide(); $('#top-link-account .second').html(`${name} | Đăng xuất`); $('#top-link-account .second').attr('data-out',1);
$("#cmt-account-header .tabs .close, #cmt-account .tabs .close") .click(); $('.comment-account').html(`
`); }else { if (window.confirm("Bạn muốn đăng xuất?")) { var el = $("#top-link-account"); // //el.find("a.first").html("") // // .removeAttr("style"); el.find(".first").show(); el.find("a.second").html(""); el.find("a.second").removeAttr("data-out");
$('.comment-account').html(`
`);
deleteCookie('my_dv'); $("#_btn_logout").click(); } } }
function logout(){ if (window.confirm("Bạn muốn đăng xuất?")) { var el = $("#top-link-account"); // //el.find("a.first").html("") // // .removeAttr("style"); el.find(".first").show(); el.find("a.second").html(""); el.find("a.second").attr("data-out", "0");
$('.comment-account').html(`
`); deleteCookie('my_dv'); $("#_btn_logout").click(); } } function login(){ $("#_btn_logout").click(); $("#cmt_alert").html("Vui lòng đăng nhập hoặc đăng ký để gửi bình luận"); } function register(){ $("#_btn_logout").click(); $('[data-target="signup"]').click(); fnCaptcha(); }
var aspCookie = null;
(runinit = window.runinit || []).push(function() {
if(lgGetCookie('my_dv')){ var user = JSON.parse(lgGetCookie('my_dv')); if(user.name){ authLogin(user.name, true); } }
$('.btn-refresh').click(function() { fnCaptcha(); }); $('.iconew-eye').click(function() { $(this).toggleClass('closed'); var x = $(this).siblings('input')[0]; if (x.type === "password") { x.type = "text"; } else { x.type = "password"; } });
function stripHtml(html) { var temporalDivElement = document.createElement("div"); temporalDivElement.innerHTML = html; return temporalDivElement.textContent || temporalDivElement.innerText || ""; }
// --------------------- User account // 1. Hide login/logout button -> in case API doesn't available, login/logout will not show + Init OAuth_v2 //$("#top-link-account").hide(); if (typeof gapi != "undefined") { //window._cnnd.oauth.init(); console.log("login not available"); } // 2. Remove excessive login/register form -> only 1 form available // no need // 3. Callback functions var fnPopupAction = function(id, alert, loginData) { id = id.toLowerCase(); if (id == "close") { $("#cmt-account-header .close").click(); return; } if (id == "info" && !window._isShowingInfo) { $("#cmt-account-header .close").click(); return; } window._isShowingInfo = false; if (loginData) { $("#cmt-account-header [data-target]").hide(); $("#cmt-account-header [data-target].logged-in").show().first().click(); $("#cmt-account-header [data-info-name]").html(loginData.name || "Quý vị"); $("#cmt-account-header [data-info-email]").html(loginData.email || "<không xác định>"); } else { $("#cmt-account-header [data-target]").hide(); $("#cmt-account-header [data-target].not-login").show().first().click(); $("#cmt-account-social").show(); } setTimeout(function() { $("#cmt-account-header > .wrapper").css("animation", "none"); }, 200); $("#cmt-account-header").show(); $("#cmt-account-header input[type="password"]").val(""); $("#cmt-account-header [data-target="" + id + ""]").click(); $("body").css("overflow", "hidden"); $("#nav").removeClass("active"); $("#cmt_alert").html(alert || "Vui lòng đăng nhập hoặc đăng ký để gửi bình luận"); }; var accountMessageProcess = function(data) { if (data.isLogged) { fnPopupAction("info", "Vui lòng đăng nhập hoặc đăng ký để gửi bình luận", { name: data.name, email: data.email }); } else { fnPopupAction(data.act, data.alert || "Vui lòng đăng nhập hoặc đăng ký"); if (data.act == "close" && data.raw.Data && data.raw.Data.Approved) { //window.alert("Đăng nhập thành công"); fnPopupAction("info", "Đăng nhập thành công", { name: data.raw.Data.Name, email: $("#_login_email").val() || $("#_sign_email").val() }); } } };
// 5. Action functions -> bind event to form elements
var fnPopupBindAction = function() { // Tab $("#cmt-account-header [data-target]").on('click', function() { $("#cmt-account-header [data-target], #cmt-account-header [data-tab]").removeClass( "active"); $(this).addClass("active"); var tab = $("#cmt-account-header [data-tab='" + $(this).attr("data-target") + "']"); tab.addClass("active") .find("input[type="text"], input[type="email"]").first().focus(); tab.find("input").keyup(function(event) { if (event.keyCode === 13) { tab.find(".btn.clickable").click(); } }); fnCaptcha(); $("#cmt_alert").html("Vui lòng đăng nhập hoặc đăng ký để gửi bình luận"); }); $("#cmt-account-header .close").on('click', function() { $("#cmt-account-header").hide(); $("#cmt-account-header > .wrap").removeAttr("style"); $("body").css("overflow", "unset"); fnCaptcha(); $("#cmt_alert").html("Vui lòng đăng nhập hoặc đăng ký để gửi bình luận"); }); // Reload Captcha // $("#_reload_captcha").on('click', function () { // fnCaptcha(); // }); // Btn Login
$("#comment-frame").on('click','#btn_login', function () { $("#top-link-account .first").click(); }); $("#comment-frame").on('click','#btn_signup', function () { $("#top-link-account .first").click(); $('[data-target="signup"]').click(); });
$("#_btn_login").on('click', function() { $("#cmt_alert").html("Vui lòng đăng nhập hoặc đăng ký để gửi bình luận"); var email, password; email = $("#_login_email").val(); password = $("#_login_password").val(); if (!/^[a-z0-9-_.]+[@][0-9a-z-]+(.[0-9a-z-]+)+$/ig.test(email) || password .length < 8) { $("#cmt_alert").html("Email hoặc mật khẩu không đúng!"); return; } $.ajax({ url: pageSettings.DomainApiComment + "/api/get-usercomment.htm", data: { email: encodeURI(email), password: password, sitename: pageSettings.commentSiteName, }, type: "get", success: function (res){ if (res && res.data == true){ var user = { email: email, name: email.substring(0, email.indexOf('@')), } let now = new Date(); lgSetCookie('my_dv',JSON.stringify(user), new Date(now.getTime() + (30 * 12 * 60000))); authLogin(user.name, true); }else { $("#cmt_alert").html("Có lỗi phát sinh, vui lòng thử lại sau"); } } }); }); // Btn Signup $("#_btn_sign").on('click', function() { $("#cmt_alert").html("Vui lòng đăng nhập hoặc đăng ký để gửi bình luận"); var email, name, password, repassword, captcha; email = $("#_sign_email").val(); name = $("#_sign_name").val(); if (name == ''){ name = email.split('@')[0]; } password = $("#_sign_password").val(); //repassword = $("#_sign_repassword").val(); captcha = $("#_sign_captcha").val(); var format = /[!@#$%^&*()_+-=[]{};':"\|,.<>/?]/g; if (!/^[a-z0-9-_.]+[@][0-9a-z-]+(.[0-9a-z-]+)+$/ig.test(email)) { $("#cmt_alert").html("Email không hợp lệ"); return; } //if (name.length <= 0) { // $("#cmt_alert").html("Vui lòng nhập họ tên của bạn!"); // return; //} //if (name.length > 20) { // $("#cmt_alert").html("Họ tên không được quá 20 ký tự (Có thể để nickname thay thế)!"); // return; //} //if (format.test(name)) { // $("#cmt_alert").html("Tên không được chứa ký tự đặc biệt!"); // return; //} if (password.length < 8) { $("#cmt_alert").html( "Mật khẩu phải có ít nhất 8 ký tự, chứa ít nhất 1 chữ số và 1 chữ cái"); return; } //if (password != repassword) { // $("#cmt_alert").html("Mật khẩu xác nhận lại không khớp!"); // return; //} if (!(/[a-z]/ig.test(password) && /[0-9]/ig.test(password))) { $("#cmt_alert").html("Mật khẩu phải chứa ít nhất 1 chữ số và 1 chữ cái"); return; } if (captcha.length <= 0) { $("#cmt_alert").html("Vui lòng điền mã xác nhận trong ảnh!"); return; } $.ajax({ type: 'POST', url: pageSettings.DomainApiComment + "/api/insert-usercomment.htm", data: { name: name, email: email, password: password, captcha: captcha, sitename: pageSettings.commentSiteName }, success: function (res){ if (res && res.message == "Success"){ var user = { email: email, name: email.split('@')[0], } let now = new Date(); lgSetCookie('my_dv',JSON.stringify(user), new Date(now.getTime() + (30 * 12 * 60000))); authLogin(user.name, true); $("#cmt-account-header .close").click(); }else { $("#cmt_alert").html("Có lỗi phát sinh, vui lòng thử lại sau"); } } }); }); // Btn logout $("#_btn_logout").on('click', function() { $("#cmt_alert").html("Vui lòng đăng nhập hoặc đăng ký để gửi bình luận"); $("#cmt-account-header .close").click(); fnPopupAction("login", "Bạn đã đăng xuất thành công"); var el = $("#top-link-account"); //el.find("a.first").html("") // .removeAttr("style"); el.find("a.first").show(); el.find("a.second").html(""); $("#cmt-account-social").show(); }); // Header login/account_info
// Header login/account_info $("#top-link-account .first").on('click', function() { if ($("#top-link-account .second").attr("data-out")) { $("#top-link-account .second").toggleClass("show"); } else { fnPopupAction("login"); } }); // Btn register/log_out $("#top-link-account .second").on('click', function() { if ($("#top-link-account .second").attr("data-out")) { //$("#_btn_logout").click();
authLogin('my_dv',false);
} else { fnPopupAction('signup'); }
//var el = $("#top-link-account"); //el.find("a.first").html("") // .removeAttr("style"); //el.find("a.second").html(""); }); }; fnPopupBindAction();
//login Facebook var otherLogin = { init: function() { var me = this; //gapi.load('auth2', function () { // gapi.auth2.init({ // client_id: '678720187862-08lendtdt5h3nr4j2he534p15b13aieg.apps.googleusercontent.com', // scope: 'email profile', // fetch_basic_profile: true // }); //}); $("#cmt-account-social button[data-type]").on('click', function() { me[$(this).attr("data-type")](function(response) { $("#cmt-account-header .tabs .close, #cmt-account .tabs .close") .click(); }); }); try { fbClient.appId = '1304555827613749'; //'211029740744825'; fbClient.version = "v14.0"; fbClient.init(); setTimeout(FB.AppEvents.logPageView, 5000); } catch (e) { // ignore } }, loginFacebook: function(cb) { var me = this;
function reloginFacebook(callback) { FB.api('/me', { fields: 'id, name, email' }, function(profile) { //console.debug(profile); if (typeof callback === "function") callback(profile); }); }; FB.login(function(response) { if (response.authResponse) { reloginFacebook(function(info) { console.log(info); info.social = "facebook"; info.accessToken = response.authResponse.accessToken;
var user = { email: info.email, name: info.name, } let now = new Date(); lgSetCookie('my_dv',JSON.stringify(user), new Date(now.getTime() + (30 * 12 * 60000))); authLogin(user.name, true); }); } else { $("#cmt_alert").html( "Bạn đã từ chối cấp quyền truy cập tài khoản Facebook"); } }, { scope: 'public_profile,email' }); }, loginGoogle: function(callback) { var me = this;
function callSocialApi(data, cb) { data.social = "google"; var user = { email: data.email, name: data.name, } let now = new Date(); lgSetCookie('my_dv',JSON.stringify(user), new Date(now.getTime() + (30 * 12 * 60000))); authLogin(user.name, true); }
// API call for Google login if (gapi.auth2.getAuthInstance().isSignedIn.get()) { //console.debug('[VCC] GAPI Process'); var profile = gapi.auth2.getAuthInstance().currentUser.get().getBasicProfile();
//var id_token = gapi.auth2.getAuthInstance().currentUser.get().getAuthResponse().id_token; var access_token = gapi.auth2.getAuthInstance().currentUser.get().getAuthResponse() .access_token;
var params = { id: profile.getId(), name: profile.getName(), email: profile.getEmail(), accessToken: access_token } //console.log('params: ', params); callSocialApi(params, callback); } else { //console.debug('[VCC] GAPI Login'); gapi.auth2.getAuthInstance().signIn().then( function(success) { var profile = gapi.auth2.getAuthInstance().currentUser.get() .getBasicProfile(); //var id_token = gapi.auth2.getAuthInstance().currentUser.get().getAuthResponse().id_token; var access_token = gapi.auth2.getAuthInstance().currentUser.get() .getAuthResponse().access_token;
var params = { id: profile.getId(), name: profile.getName(), email: profile.getEmail(), accessToken: access_token } //console.log('params: ', params); callSocialApi(params, callback); }, function(error) { $("#cmt_alert").html( "Bạn đã từ chối cấp quyền cho Báo Dân Việt truy cập tài khoản Google" ); } ); } } } otherLogin.init(); });
Xin chào ${name}! Đăng xuất