Sirikwa Classic World Continental Tour to determine Kenya’s team for Africa Cross Country Championships
Sirikwa Classic World Continental Tour to determine Kenya’s team for Africa Cross Country Championships
Read this story aloud
Listen to the clean text version of this article
Ready
3 min listen
Audio reading is not supported on this browser.
Initially known as the Agnes Tirop Memorial World Cross Country Tour, the Sirikwa Classic is set to make its third appearance on the global gold circuit with a host of foreign athletes set to confirm their participation
The prestigious Sirikwa Classic World Continental Tour, scheduled for February 3 at Lobo Village in Eldoret, will play a pivotal role in selecting the team that will represent Kenya at the Africa Cross Country Championships on 25 February 2024, in Tunis, Tunisia, Athletics Kenya (AK) has confirmed.
The Sirikwa Classic meet, recognized as a World Athletics Gold-level event, is expected to draw top talents from the athletics-rich region and beyond. AK emphasized the significance of this event as the ultimate platform for identifying and forming a competitive team for the upcoming championship.
According to AK’s statement, selection of the team to the championship will be done during the Sirikwa Classic- World Continental Tour to be held on 3rd February at the Lobo Village, Eldoret.
More To Read
- Omanyala, Odira, Cheruiyot among athletes picked to represent Kenya for Commonwealth Games in Glasgow
- Ferdinand Omanyala eyes history at Commonwealth Games as Millicent Ndoro secures Glasgow spot
- Cold weather no obstacle as Kipkemboi, Kemuma dominate Nairobi City Marathon
- Omanyala, Nyaga and Yego lead Kenyan charge at Rome Diamond League
- Athletics Kenya names 23-athlete squad for World U20 Championships
- AK reschedules Premium Weekend Meet as National Championships take centre stage
In addition to the selection process, AK announced adjustments to the 2023/24 calendar due to changes in the international athletics schedule. The National Cross-Country Championships, initially set for February 24, have been rescheduled to March 9, 2024. These championships will determine the composition of Team Kenya for the World Cross Country Championships in Belgrade, Serbia, scheduled for March 30, 2024.
The 4th AK Track and Field weekend meet, initially planned for March 22-23 in Kisii, has been shifted to April 5-6, 2024, at the same venue.
Furthermore, AK’s regional cross-country meetings, in accordance with the 2023/24 season calendar, are set to commence this Friday. Highlight events include the Kenya Defence Forces and National Police Service cross-country championships at Ulinzi Sports Complex and Ngong Race Course, respectively. Simultaneously, the AK University cross-country championships will unfold at Kabarak University in Nakuru.
Latest Stories
- KRA removes excise duty on bottled water effective July 1
- EACC to recover Sh1.5 billion after Court of Appeal declares Ruaraka school land compensation illegal
- ODM sets sights on Nairobi Governor seat, urges Sakaja to join party
- EU appoints new envoy to Kenya as Somalia ambassador moves to senior Africa role in major diplomatic reshuffle
Saturday’s events feature the National Youth Service and Kenya Prisons Service cross-country meet at NYS Paramilitary Academy in Gilgil and Kenya Prisons Staff Training College (PSTC), Ruiru, respectively.
Other Topics To Read
- Africa Cross Country Championships
- Athletics Kenya
- Sirikwa Classic
Top Stories Today
- EACC to recover Sh1.5 billion after Court of Appeal declares Ruaraka school land compensation illegal
- KRA removes excise duty on bottled water effective July 1
- ODM sets sights on Nairobi Governor seat, urges Sakaja to join party
- EU appoints new envoy to Kenya as Somalia ambassador moves to senior Africa role in major diplomatic reshuffle
- National Youth Council denies backing calls for PS Fikirini’s resignation over Ouma shooting
- Four suspected armed robbers killed, two others flee after police shootout on Eldoret-Kiplombe Road
`;
}
return “;
}
function commentActionsMarkup(comment, canComment) {
const likeLabel = comment.liked_by_me ? ‘Liked’ : ‘Like’;
const likeCount = Number(comment.like_count || 0) > 0
? “
: ”;
const likeButton = canComment && comment.status === ‘approved’
? “
: “;
const replyButton = canComment && comment.status === ‘approved’
? “
: ”;
return `
`;
}
function commentMarkup(comment, canComment, isReply = false) {
const pendingBadge = comment.status && comment.status !== ‘approved’
? “
: ”;
const edited = comment.is_edited
? “
: ”;
const repliesHtml = Array.isArray(comment.replies) && comment.replies.length
? `
`
: “;
return `
`;
}
function replyFormMarkup(commentId) {
return `
`;
}
function setNotice(widget, message, type = ‘info’) {
const notice = widget.querySelector(‘[data-role=”notice”]’);
if (!notice) return;
if (!message) {
notice.hidden = true;
notice.textContent = ”;
notice.classList.remove(‘is-error’);
return;
}
notice.hidden = false;
notice.textContent = message;
notice.classList.toggle(‘is-error’, type === ‘error’);
}
function setCount(widget, total) {
const count = widget.querySelector(‘[data-role=”count”]’);
if (!count) return;
const num = Number(total || 0);
count.textContent = num === 1 ? ‘1 comment’ : `${num} comments`;
}
function openReplyBox(widget, commentId) {
widget.querySelectorAll(‘[data-role=”reply-box”]’).forEach(box => {
box.hidden = true;
box.innerHTML = ”;
});
const targetItem = widget.querySelector(`.ev-comments__item[data-comment-id=”${commentId}”]`);
if (!targetItem) return;
const replyBox = targetItem.querySelector(‘[data-role=”reply-box”]’);
if (!replyBox) return;
replyBox.hidden = false;
replyBox.innerHTML = replyFormMarkup(commentId);
const textarea = replyBox.querySelector(‘textarea’);
if (textarea) textarea.focus();
}
function closeReplyBox(container) {
if (!container) return;
container.hidden = true;
container.innerHTML = ”;
}
async function initCommentsWidget(widget) {
const state = {
articleId: Number(widget.dataset.articleId),
loadUrl: widget.dataset.loadUrl,
storeUrl: widget.dataset.storeUrl,
commentsBaseUrl: widget.dataset.commentsBaseUrl,
canComment: widget.dataset.canComment === ‘1’,
page: 1,
perPage: 10,
sort: ‘newest’,
total: 0,
hasMore: false,
busy: false
};
const list = widget.querySelector(‘[data-role=”list”]’);
const loading = widget.querySelector(‘[data-role=”loading”]’);
const empty = widget.querySelector(‘[data-role=”empty”]’);
const loadMoreBtn = widget.querySelector(‘[data-role=”load-more”]’);
const sortSelect = widget.querySelector(‘[data-role=”sort”]’);
const composerForm = widget.querySelector(‘[data-role=”composer-form”]’);
async function loadComments(reset = true) {
if (state.busy) return;
state.busy = true;
setNotice(widget, ”);
loading.hidden = false;
if (reset) {
state.page = 1;
list.innerHTML = ”;
empty.hidden = true;
}
try {
const url = new URL(state.loadUrl, window.location.origin);
url.searchParams.set(‘page’, state.page);
url.searchParams.set(‘per_page’, state.perPage);
url.searchParams.set(‘sort’, state.sort);
const response = await requestJson(url.toString(), {
method: ‘GET’,
headers: {
‘Accept’: ‘application/json’,
‘X-Requested-With’: ‘XMLHttpRequest’
}
});
const items = Array.isArray(response.data) ? response.data : [];
const meta = response.meta || {};
state.total = Number(meta.total || 0);
state.hasMore = !!meta.has_more;
setCount(widget, state.total);
if (reset) {
list.innerHTML = ”;
}
if (!items.length && reset) {
empty.hidden = false;
} else {
empty.hidden = true;
list.insertAdjacentHTML(
‘beforeend’,
items.map(item => commentMarkup(item, state.canComment, false)).join(”)
);
}
loadMoreBtn.hidden = !state.hasMore;
} catch (error) {
if (!list.children.length) {
empty.hidden = false;
empty.textContent = ‘Unable to load comments right now.’;
}
setNotice(widget, error.message || ‘Unable to load comments.’, ‘error’);
} finally {
loading.hidden = true;
state.busy = false;
}
}
async function submitTopLevelComment(form) {
const textarea = form.querySelector(‘textarea[name=”content”]’);
const button = form.querySelector(‘[data-role=”submit-comment”]’);
if (!textarea) return;
const content = textarea.value.trim();
if (!content) return;
const originalText = button ? button.textContent : ”;
try {
if (button) {
button.disabled = true;
button.textContent = ‘Posting…’;
}
const response = await requestJson(state.storeUrl, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({
article_id: state.articleId,
content: content,
source_url: window.location.href
})
});
textarea.value = ”;
if (response?.data) {
list.insertAdjacentHTML(
‘afterbegin’,
commentMarkup(response.data, state.canComment, false)
);
empty.hidden = true;
if ((response.data.status || ”) === ‘approved’) {
state.total += 1;
setCount(widget, state.total);
}
}
setNotice(widget, response.message || ‘Comment posted successfully.’);
} catch (error) {
setNotice(widget, error.message || ‘Unable to post comment.’, ‘error’);
} finally {
if (button) {
button.disabled = false;
button.textContent = originalText || ‘Post comment’;
}
}
}
async function submitReply(form) {
const commentId = Number(form.dataset.commentId || 0);
const textarea = form.querySelector(‘textarea[name=”content”]’);
const button = form.querySelector(‘.ev-comments__reply-submit’);
if (!commentId || !textarea) return;
const content = textarea.value.trim();
if (!content) return;
const originalText = button ? button.textContent : ”;
try {
if (button) {
button.disabled = true;
button.textContent = ‘Posting…’;
}
const response = await requestJson(`${state.commentsBaseUrl}/${commentId}/reply`, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({
article_id: state.articleId,
content: content,
source_url: window.location.href
})
});
if (response?.data) {
const parentItem = widget.querySelector(`.ev-comments__item[data-comment-id=”${commentId}”]`);
if (parentItem) {
const repliesWrap = parentItem.querySelector(‘.ev-comments__replies’);
if (repliesWrap) {
repliesWrap.insertAdjacentHTML(
‘beforeend’,
commentMarkup(response.data, state.canComment, true)
);
}
}
}
closeReplyBox(form.closest(‘[data-role=”reply-box”]’));
setNotice(widget, response.message || ‘Reply posted successfully.’);
} catch (error) {
setNotice(widget, error.message || ‘Unable to post reply.’, ‘error’);
} finally {
if (button) {
button.disabled = false;
button.textContent = originalText || ‘Post reply’;
}
}
}
async function toggleLike(button) {
const commentId = Number(button.dataset.commentId || 0);
if (!commentId) return;
const originalHtml = button.innerHTML;
try {
button.disabled = true;
button.innerHTML = ‘Working…’;
const response = await requestJson(`${state.commentsBaseUrl}/${commentId}/like`, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({})
});
const liked = !!response?.data?.liked;
const likeCount = Number(response?.data?.like_count || 0);
button.classList.toggle(‘is-liked’, liked);
button.innerHTML = `${liked ? ‘Liked’ : ‘Like’} ${likeCount > 0 ? “ : ”}`;
} catch (error) {
button.innerHTML = originalHtml;
setNotice(widget, error.message || ‘Unable to update like.’, ‘error’);
} finally {
button.disabled = false;
}
}
if (composerForm) {
composerForm.addEventListener(‘submit’, function (e) {
e.preventDefault();
submitTopLevelComment(composerForm);
});
}
if (sortSelect) {
sortSelect.addEventListener(‘change’, function () {
state.sort = this.value || ‘newest’;
loadComments(true);
});
}
if (loadMoreBtn) {
loadMoreBtn.addEventListener(‘click’, function () {
if (state.busy || !state.hasMore) return;
state.page += 1;
loadComments(false);
});
}
widget.addEventListener(‘click’, function (e) {
const likeBtn = e.target.closest(‘[data-action=”toggle-like”]’);
if (likeBtn) {
e.preventDefault();
toggleLike(likeBtn);
return;
}
const replyBtn = e.target.closest(‘[data-action=”toggle-reply”]’);
if (replyBtn) {
e.preventDefault();
openReplyBox(widget, Number(replyBtn.dataset.commentId || 0));
return;
}
const cancelReplyBtn = e.target.closest(‘[data-action=”cancel-reply”]’);
if (cancelReplyBtn) {
e.preventDefault();
closeReplyBox(cancelReplyBtn.closest(‘[data-role=”reply-box”]’));
}
});
widget.addEventListener(‘submit’, function (e) {
const replyForm = e.target.closest(‘.ev-comments__reply-form’);
if (replyForm) {
e.preventDefault();
submitReply(replyForm);
}
});
loadComments(true);
}
document.addEventListener(‘DOMContentLoaded’, function () {
document.querySelectorAll(‘.ev-comments’).forEach(initCommentsWidget);
});
})();
Trending
Haaland’s heroics send Norway into historic first World Cup quarter-final as Brazil crash outSports
|Erick Kariuki
|6 hours ago
Less sunshine may worsen anxiety and depression symptoms, new research suggestsHealth
|Charity Kilei
|21 hours ago
Burkina Faso tightens grip on NGOs with new ban on exploitative humanitarian imagesAfrica
|Rachael Mutabasi
|4 hours ago
CS Ruku unveils tough new measures to crack down on Sh6.2 billion payroll fraudNews
|Rachael Mutabasi
|6 hours ago
KRA removes excise duty on bottled water effective July 1Business
|Lucy Mumbi
|27 minutes ago
EU appoints new envoy to Kenya as Somalia ambassador moves to senior Africa role in major diplomatic reshuffleRegional
|Abdirahman Khalif
|1 hour ago
Mbappé fires France past Paraguay into World Cup quarter-finalsSports
|Erick Kariuki
|1 day ago
Saba Saba organisers notify police of planned peaceful demonstration to ParliamentNews
|Rachael Mutabasi
|16 hours ago
Somali Embassy hosts Kenya leaders, diplomats for 66th Independence Day celebrationsSomalia
|Abdirahman Khalif
|1 day ago
EACC to recover Sh1.5 billion after Court of Appeal declares Ruaraka school land compensation illegalNews
|Lucy Mumbi
|53 minutes ago