The Best English online language courses 2024 Comparison (2024)

Price comparison: 1 week English course

Sort by: Best rated (overall)|Most popular|Best rated teaching quality|Best rated social activities|Lowest price

See all 204 English courses in Norwich

Interested in courses in other cities?

All 2572 courses in England UK

Interested in online courses?

Have a look at our top picks of Live Online English courses at the best prices.

Norwich map with schools offering courses

The Best English online language courses 2024 Comparison (1)

The Best English online language courses 2024 Comparison (2)The Best English online language courses 2024 Comparison (3)The Best English online language courses 2024 Comparison (4)

Reviews by former students who attended a course in Norwich

The Best English online language courses 2024 Comparison (5)

All the teachers I have studied with were enthusiastic and have excellent teaching skills and helpful.
All staff are very friendly and take good care of us. Also, always pay enough attention to us.

18 September 2023
Course: IELTS Standard Exam Preparation - 10 weeks
Student age: 79 years

Show more

4.7| 3 reviews

MisakoNorwich Study Centre

The Best English online language courses 2024 Comparison (6)

Enriching lessons with students from all over the world. Evenings with all the students together.
Very good

8 August 2023
Course: Young Learners - English + Activities - 2 weeks
Student age: 15 years

Show more

4.7| 3 reviews

AnaisNorwich Study Centre

The Best English online language courses 2024 Comparison (7)

Friendly, good teachers, interesting

5 December 2022
Course: General English - 13 weeks
Student age: 22 years

Show more

4.7| 3 reviews

Adel RoxanaNorwich Study Centre

FAQ about courses in Norwich

  • Norwich Study Centre has received the best overall rating in Norwich.

  • Norwich Study Centre, located in 5, Tombland has been voted as the school with the best location in Norwich.

  • Students rated the activity program at Norwich Study Centre as the best.

  • Norwich Study Centre was rated highest for quality of teaching.

  • 'Junior Summer Homestay' at Norwich Study Centre is the best rated accommodation in Norwich.

    Questions about English schools in Norwich?

    Get free advice from our language travel experts to help you find the best school for you.

    The Best English online language courses 2024 Comparison (8)Send a questionOr+1-646 503 18 10 / +44-330 124 03 17

    course destinations

    English schools in England UK

    • Ardingly (2 courses)
    • Arundel (5 courses)
    • Ashford (7 courses)
    • Bath (33 courses)
    • Bedford (4 courses)
    • Birmingham (36 courses)
    • Blackpool (5 courses)
    • Bournemouth (221 courses)
    • Bradford (4 courses)
    • Brighton (179 courses)
    • Bristol (65 courses)
    • Broadstairs (5 courses)
    • Bury St Edmunds (20 courses)
    • Cambridge (126 courses)
    • Canterbury (51 courses)
    • Casterton (1 course)
    • Caterham (2 courses)
    • Chelmsford (6 courses)
    • Cheltenham (18 courses)
    • Chester (5 courses)
    • Chichester (25 courses)
    • cl*theroe (1 course)
    • Colchester (23 courses)
    • Cornwall (12 courses)
    • Cotswolds (4 courses)
    • Crowthorne (1 course)
    • Dover (4 courses)
    • Durham (7 courses)
    • Eastbourne (49 courses)
    • Ellesmere (2 courses)
    • Exeter (30 courses)
    • Folkestone (10 courses)
    • Frensham (2 courses)
    • Gloucester (5 courses)
    • Hailsham (2 courses)
    • Hampshire (1 course)
    • Hastings (9 courses)
    • Hatfield (1 course)
    • Hereford (4 courses)
    • Hertford (6 courses)
    • Hook (6 courses)
    • Hove (4 courses)
    • Hull (5 courses)
    • Ipswich (9 courses)
    • Isle of Sheppey (4 courses)
    • Isle of Wight (4 courses)
    • Jersey (13 courses)
    • Kingston upon Thames (1 course)
    • Lancashire (4 courses)
    • Leeds (43 courses)
    • Leicester (1 course)
    • Liverpool (72 courses)
    • London (657 courses)
    • London (3 courses)
    • Loughborough (1 course)
    • Maidenhead (4 courses)
    • Maidstone (4 courses)
    • Malvern (2 courses)
    • Manchester (156 courses)
    • Margate (27 courses)
    • Milton Keynes (4 courses)
    • Newcastle (41 courses)
    • Newquay (4 courses)
    • Norwich (19 courses)
    • Nottingham (20 courses)
    • Oxford (165 courses)
    • Paignton (4 courses)
    • Plymouth (4 courses)
    • Portsmouth (37 courses)
    • Preston (10 courses)
    • Ramsgate (17 courses)
    • Reading (26 courses)
    • Rochester (6 courses)
    • Salisbury (4 courses)
    • Sedbergh (2 courses)
    • Sheffield (12 courses)
    • Shrewsbury (11 courses)
    • Southampton (47 courses)
    • Stratford-upon-Avon (9 courses)
    • Surrey (7 courses)
    • Torquay (33 courses)
    • Totnes (5 courses)
    • Truro (9 courses)
    • Watford (4 courses)
    • Winchester (15 courses)
    • Windlesham (1 course)
    • Windsor (5 courses)
    • Worthing (17 courses)
    • York (21 courses)

    English schools in the rest of the world

    • Algeria (5 courses)
    • Argentina (5 courses)
    • Armenia (1 course)
    • Australia (444 courses)
    • Austria (3 courses)
    • Barbados (4 courses)
    • Brazil (8 courses)
    • Canada (807 courses)
    • Chile (3 courses)
    • China (7 courses)
    • Croatia (7 courses)
    • Cyprus (33 courses)
    • Czech Republic (12 courses)
    • Fiji (3 courses)
    • France (22 courses)
    • Georgia (2 courses)
    • Germany (42 courses)
    • Greece (5 courses)
    • Grenada (6 courses)
    • Hong Kong (5 courses)
    • India (19 courses)
    • Ireland (572 courses)
    • Italy (54 courses)
    • Jamaica (7 courses)
    • Malaysia (39 courses)
    • Malta (522 courses)
    • Netherlands (5 courses)
    • New Zealand (114 courses)
    • Northern Ireland (18 courses)
    • Philippines (67 courses)
    • Poland (2 courses)
    • Portugal (3 courses)
    • Russia (7 courses)
    • Scotland (111 courses)
    • Singapore (9 courses)
    • South Africa (127 courses)
    • South Korea (1 course)
    • Spain (117 courses)
    • Switzerland (95 courses)
    • Tanzania (5 courses)
    • Thailand (16 courses)
    • Tunisia (3 courses)
    • Turkey (13 courses)
    • Ukraine (1 course)
    • United Arab Emirates (55 courses)
    • Uruguay (5 courses)
    • USA (1148 courses)
    • Wales (32 courses)
`; } } jQuery("#activeFilters, #activeFiltersBot").html(htmlFilters);var results_ids = "#filterResult";if (intersec.length > 2) {results_ids += ", #filterResultBot";} else {jQuery("#filterResultBot").css('display', 'none');}if (jQuery("#juniorIntro, #topCityWrap").length > 0) { if (htmlFilters) {jQuery("#juniorIntro, #topCityWrap").fadeOut(400, function() {jQuery(results_ids).css('display', 'inline-block');scroll_if_anchor('#filterResult'); }); }} else {jQuery(results_ids).css('display', 'inline-block');scroll_if_anchor('#filterResult');} if (!htmlFilters) { jQuery("#filterResult, #filterResultBot").css('display', 'none'); }jQuery("#filterNum, #filterNumBot").text(replacedString); // check if there's no checkbox filter checked before hiding the whole filterResult} else if (!jQuery(".filterIndicator").hasClass("isACheckBox") && !jQuery(".filterIndicator").hasClass("isADropDown")) { jQuery("#filterResult, #filterResultBot").css('display', 'none'); jQuery("#juniorIntro, #topCityWrap").fadeIn();} else { // if there are checkbox filter checked but no other filter running, update the message accordingly and remove all non-checkboxes pills (.filterIndicator) var str; if (intersec.length > 0) { if (intersec.length == 1) { str = " course in Norwich match the following filters: "; } else { str = " courses in Norwich match the following filters: "; } } else { str = "No results found that match the following filters:"; } var replacedString = str.replace("", intersec.length ); jQuery("#juniorIntro").hide(400); jQuery(".topCityWrap").slideUp(); jQuery("#filterNum, #filterNumBot").text(replacedString); jQuery('.filterIndicator:not(.isACheckBox):not(.isADropDown)').remove(); }} function setCookie(name, value) { document.cookie = name + "=" + (value || "") + "; path=/"; } let setupPaginationObj = false; function storeFunctionCall(functionName, parameters) { if (isFacetJs) { if (!setupPaginationObj && paginationFunctionCall) { paginatedFiltersObj = paginationFunctionCall; paginatedFiltersObj.url = currentURL; setupPaginationObj = true; } const filterName = paginatedFiltersObj[functionName]; if (functionName === "filter_dropdown") { filterName[parameters[1]] = parameters[0]; } else if (functionName === "filter_checkbox") { !filterName[parameters[2]] && (filterName[parameters[2]] = []); // Add/remove value depending on "isChecked" if (parameters[1]) { if (!filterName[parameters[2]].includes(parameters[0])) { filterName[parameters[2]].push(parameters[0]); } } else { filterName[parameters[2]] = filterName[parameters[2]].filter(item => item !== parameters[0]); } } else if (functionName === "filter_rating") { paginatedFiltersObj[functionName] = parameters[0]; } else if (functionName === "filter_lessons" || functionName === "filter_students" || functionName === "filter_price_per_lesson" || functionName === "filter_prices") { filterName[0] = parameters[0]; filterName[1] = parameters[1]; } setCookie('functionCallPagination', JSON.stringify(paginatedFiltersObj)); } else { setCookie('functionCall', JSON.stringify({functionName, parameters, rangeSliderIndex: handleIndex})); document.getElementById("cover-spin").style.display = "block"; // IF (in age filter an age of less than 16 years has been selected) => load the junior course page instead of standard course page. if (1 && parameters[1] === "student_age_filter" && parameters[0] < 16) { window.location = "/schools-norwich/"; } else { window.location = "/schools-norwich/general"; } } }function filter_accommo(enable_acco_list) {filter_results['accommo'] = [];if (enable_acco_list.length > 0) {for (var i = filter_results['all'].length - 1; i >= 0; i--) {var id = filter_results['all'][i];if (schools[id]['accommo_types'].length > 0) {var inters = enable_acco_list.filter(function(value) {return -1 !== schools[id]['accommo_types'].indexOf(value)});if (inters.length > 0) {filter_results['accommo'].push(id);}}}} else {// No filterfilter_results['accommo'] = filter_results['all'];}apply_all_filters();}function filter_subcats(enable_cat_list) {filter_results['subcats'] = [];if (enable_cat_list.length > 0) {for (var i = filter_results['all'].length - 1; i >= 0; i--) {var id = filter_results['all'][i];if (enable_cat_list.includes(parseInt(schools[id]['subcategory'])))filter_results['subcats'].push(id);}}apply_all_filters();}function filter_lessons(min, max) { storeFunctionCall('filter_lessons', [...arguments]); if (!isFacetJs) return;filter_results['lessons'] = [];for (var i = filter_results['all'].length - 1; i >= 0; i--) {var id = filter_results['all'][i];if (schools[id]['lessons_per_week'].length > 0) {if (parseInt(schools[id]['lessons_per_week']) >= min && parseInt(schools[id]['lessons_per_week']) <= max) {filter_results['lessons'].push(id);}}}apply_all_filters();}function filter_students(min, max) { storeFunctionCall('filter_students', [...arguments]); if (!isFacetJs) return;filter_results['students'] = [];for (var i = filter_results['all'].length - 1; i >= 0; i--) {var id = filter_results['all'][i];if (schools[id]['max_students'].length > 0) {if (parseInt(schools[id]['max_students']) >= min && parseInt(schools[id]['max_students']) <= max) {filter_results['students'].push(id);}}}apply_all_filters();}function filter_rating(min) { storeFunctionCall('filter_rating', [...arguments]); if (!isFacetJs) return;if (min > 0) {filter_results['rating'] = [];for (var i = filter_results['all'].length - 1; i >= 0; i--) {var id = filter_results['all'][i];if (schools[id]['rating'].length > 0) {if (parseFloat(schools[id]['rating']) >= min) {filter_results['rating'].push(id);}}}} else {// No filterfilter_results['rating'] = filter_results['all'];}apply_all_filters();} function filter_checkbox(checkboxValue, isChecked, filterType) { storeFunctionCall('filter_checkbox', [...arguments]); if (!isFacetJs) return; const checkboxValueToNum = +checkboxValue; const checkedCheckboxes = jQuery(`#${filterType} input:checked`); const type = filterType.replace("checkBox_", ""); const checksLength = checkedCheckboxes.length; // Reset array if previously zero checks (isChecked && checksLength === 1) && (filter_results[type] = []); for (let i = filter_results['all'].length - 1; i >= 0; i--) { const id = filter_results['all'][i]; // Normalize course value as an array always to simplify further calculations const courseVal = Array.isArray(schools[id][type]) ? schools[id][type].map(Number) : [+schools[id][type]]; const filterArr = filter_results[type]; // Determine if checkboxValue is an array and handle accordingly const matchCondition = courseVal.includes(checkboxValueToNum); if (matchCondition) { // Include the course id in the filter array if the checked checkbox value is in the looping course value and not already present in the filter array if (isChecked) { !filterArr.includes(id) && filterArr.push(id); // Remove the course id from the filter array if the unchecked checkbox value is in the looping course value and doesn't match to other checked values in the case there are currently other checked checkboxes } else if (!isChecked) { // Before removing the current looping course, ensure no other checked checkboxes match any of its course values const allCheckedValues = checkedCheckboxes.map(function() { return +jQuery(this).val(); }).get(); const isPresentInOtherChecks = courseVal.some(val => allCheckedValues.includes(+val)); if (!isPresentInOtherChecks) { const index = filterArr.indexOf(id); if (index > -1) filterArr.splice(index, 1); } } } } // Reset array if currently zero checks if (checksLength === 0) { filter_results[type] = filter_results['all'].slice(); // slice with empty parameter to create a shallow copy of the array } apply_all_filters(false, true, type, checksLength === 0); } function filter_dropdown(dropDownValue, filterType) { storeFunctionCall('filter_dropdown', [...arguments]); if (!isFacetJs) return; const type = filterType.replace("_filter", ""); // Reset array if val is "0" if (dropDownValue === 0) { filter_results[type] = filter_results['all'].slice(); } else { for (let i = filter_results['all'].length - 1; i >= 0; i--) { const id = filter_results['all'][i]; const courseVal = schools[id][type]; const filterArr = filter_results[type]; let matchCondition = false; if (type === "course_duration") { matchCondition = courseVal.map(Number).includes(dropDownValue); } if (type === "student_age") { const [minAge, maxAge] = courseVal; matchCondition = (+minAge === 0 || +minAge <= dropDownValue) && (+maxAge === 0 || +maxAge >= dropDownValue); if (dropDownValue <= 17) { jQuery("#juniorCoursesSpecialMsg").show(); } } if (matchCondition) { !filterArr.includes(id) && filterArr.push(id); } else { const index = filterArr.indexOf(id); if (index > -1) filterArr.splice(index, 1); } } } apply_all_filters(false, false, type, false, true); }function filter_prices(min, max) { storeFunctionCall('filter_prices', [...arguments]); if (!isFacetJs) return;filter_results['prices'] = [];for (var i = filter_results['all'].length - 1; i >= 0; i--) {var id = filter_results['all'][i];if (schools[id]['course_price'].length > 0) {if (parseInt(schools[id]['course_price']) >= min && parseInt(schools[id]['course_price']) <= max)filter_results['prices'].push(id);}}apply_all_filters();} function filter_price_per_lesson(min, max) { storeFunctionCall('filter_price_per_lesson', [...arguments]); if (!isFacetJs) return; filter_results['price_per_lesson'] = []; for (var i = filter_results['all'].length - 1; i >= 0; i--) { var id = filter_results['all'][i]; if (schools[id]['price_per_lesson'].length > 0) { if (parseInt(schools[id]['price_per_lesson']) >= min && parseInt(schools[id]['price_per_lesson']) <= max) filter_results['price_per_lesson'].push(id); } } apply_all_filters(); }function onChangeSubcatFilter() {var cat_list = [];var subcatNavSpan = document.querySelectorAll("#subcatNav ul li span");for (var i = 0, len = subcatNavSpan.length; i < len; i++) {if (subcatNavSpan[i].getElementsByTagName("input")[0].checked) {cat_list.push( parseInt( subcatNavSpan[i].attributes['cat_type'].value ) );}}filter_subcats(cat_list);}function reset_subcats() {filter_results['subcats'] = filter_results['all'];var subcatNavSpan = document.querySelectorAll("#subcatNav ul li span");for (var i = 0, len = subcatNavSpan.length; i < len; i++) {subcatNavSpan[i].getElementsByTagName("input")[0].checked = true;}apply_all_filters();}function onChangeAccoFilter() {var acco_list = [];var accommoNavSpan = document.querySelectorAll("#accommoNav ul li span");for (var i = 0, len = accommoNavSpan.length; i < len; i++) {if (accommoNavSpan[i].getElementsByTagName("input")[0].checked) {acco_list.push( parseInt( accommoNavSpan[i].attributes['acco_type'].value ) );}};filter_accommo(acco_list);}function reset_accommo() {filter_results['accommo'] = filter_results['all'];var accommoNavSpan = document.querySelectorAll("#accommoNav ul li span");for (var i = 0, len = accommoNavSpan.length; i < len; i++) {accommoNavSpan[i].getElementsByTagName("input")[0].checked = false;};apply_all_filters();}function reset_prices() {filter_results['prices'] = filter_results['all'];jQuery("#coursePrice_left").text(rangesSliders["course_price"][0]);jQuery("#coursePrice_right").text(rangesSliders["course_price"][1]);jQuery('#sliderRange_coursePrice').slider("option", "values", [rangesSliders["course_price"][0], rangesSliders["course_price"][1]]);apply_all_filters();} function reset_price_per_lesson() { filter_results['price_per_lesson'] = filter_results['all']; jQuery("#pricePerLesson_left").text(rangesSliders["price_per_lesson"][0]); jQuery("#pricePerLesson_right").text(rangesSliders["price_per_lesson"][1]); jQuery('#sliderRange_pricePerLesson').slider("option", "values", [rangesSliders["price_per_lesson"][0], rangesSliders["price_per_lesson"][1]]); apply_all_filters(); }function reset_lessons() {filter_results['lessons'] = filter_results['all'];jQuery("#numOfLessons_left").text(rangesSliders["lessons_per_week"][0]);jQuery("#numOfLessons_right").text(rangesSliders["lessons_per_week"][1]);jQuery('#sliderRange_numOfLessons').slider("option", "values", [rangesSliders["lessons_per_week"][0], rangesSliders["lessons_per_week"][1]]);apply_all_filters();}function reset_students() {filter_results['students'] = filter_results['all'];jQuery("#numOfStudents_left").text(rangesSliders["max_students"][0]);jQuery("#numOfStudents_right").text(rangesSliders["max_students"][1]);jQuery('#sliderRange_numOfStudents').slider("option", "values", [rangesSliders["max_students"][0], rangesSliders["max_students"][1]]);apply_all_filters();}function reset_rating() {filter_rating(0);jQuery('#ratingStarsLeftBar use').removeClass('starFiltselected');} function reset_checkbox(type) { jQuery(`#checkBox_${type} input:checked`).click(); } function reset_student_age() { jQuery('#student_age_filter ul li:first-child a').click(); } function reset_course_duration() { jQuery('#course_duration_filter ul li:first-child a').click(); }function filter_details(filter, value) {var detail = "";var starEl = jQuery('#ratingStarsLeftBar .starFiltselected');var ratingValue = parseInt(starEl.last().data('value'), 10) || value;switch(filter) {case "lessons": detail = ": [" + jQuery('#sliderRange_numOfLessons').slider("option", "values")[0] + " - " + jQuery('#sliderRange_numOfLessons').slider("option", "values")[1] + "]"; break;case "students": detail = ": [" + jQuery('#sliderRange_numOfStudents').slider("option", "values")[0] + " - " + jQuery('#sliderRange_numOfStudents').slider("option", "values")[1] + "]"; break;case "prices": detail = ": [" + jQuery('#sliderRange_coursePrice').slider("option", "values")[0] + "£ - " + jQuery('#sliderRange_coursePrice').slider("option", "values")[1] + "£]"; break; case "price_per_lesson": detail = ": [" + jQuery('#sliderRange_pricePerLesson').slider("option", "values")[0] + "£ - " + jQuery('#sliderRange_pricePerLesson').slider("option", "values")[1] + "£]"; break;case "rating": detail = ": [" + ratingValue +" stars or better]"; break;case "accommo": detail += ": " + jQuery("#checkBox_accommo input:checked").map(function() { return jQuery(this).parent().text().trim(); }).get().join(', '); break; case "school": detail += ": " + jQuery("#checkBox_school input:checked").map(function() { return jQuery(this).parent().text().trim(); }).get().join(', '); break; case "cities": detail += ": " + jQuery("#checkBox_cities input:checked").map(function() { return jQuery(this).parent().text().trim(); }).get().join(', '); break; case "room_occupancy": detail += ": " + jQuery("#checkBox_room_occupancy input:checked").map(function() { return jQuery(this).parent().text().trim(); }).get().join(', '); break; case "language_level": detail += ": " + jQuery("#checkBox_language_level input:checked").map(function() { return jQuery(this).parent().text().trim(); }).get().join(', '); break; case "accommodation_type": detail += ": " + jQuery("#checkBox_accommodation_type input:checked").map(function() { return jQuery(this).parent().text().trim(); }).get().join(', '); break; case "meal_plans": detail += ": " + jQuery("#checkBox_meal_plans input:checked").map(function() { return jQuery(this).parent().text().trim(); }).get().join(', '); break; case "course_duration": const cDurVal = jQuery("#course_duration_dd_filter .sel_filter").text(); detail += ": " + cDurVal + " " + (+cDurVal === 1 ? "week" : "weeks"); break; case "student_age": detail += ": " + jQuery("#student_age_dd_filter .sel_filter").text() + " years old"; break;default:;}return detail;}

Do you need a visa?


Country of Nationality:

Duration: weeks

Warning!

Please choose a Monday as a course starting date.

";if (pc_result['prices']['discount_tuition'] > 0) {tpl += "

" + pc_result['prices']['tuition_before_so'] + currency + "";} else {tpl += "";}tpl += Math.ceil(pc_result['prices']['tuition_before_so'] - pc_result['prices']['discount_tuition']) + currency + "" + pc_result['prices']['course_name'] + "

";if (pc_result['prices']['accommodation_accom'] > 0 && pc_result['prices']['includes_accommodation'] != 1) {tpl += "

" + pc_result['prices']['accommodation_accom'] + currency + "" + pc_result['prices']['accommodation_name'] + "

";}if (pc_result['prices']['inscription']>0) {tpl += "

" + pc_result['prices']['inscription'] + currency + "School's administrative fee

";}if (pc_result['prices']['includes_accommodation'] != 1 && pc_result['prices']['accommodation_fee']>0) {tpl += "

" + pc_result['prices']['accommodation_fee'] + currency + "One time accommodation fee charged by school

";}if (pc_result['prices']['hs_course'] > 0 && selected_date!=0) {tpl += "

" + pc_result['prices']['hs_course'] + currency + "High season supplement (Course)

";}if (pc_result['prices']['hs_accommodation'] > 0 && selected_date!=0) {tpl += "

" + pc_result['prices']['hs_accommodation'] + currency + "High season supplement (Accommodation)

";}if (pc_result['prices']['hasCourseOffer'] == true && pc_result['prices']['offerCourseDiscount'] > 0) {tpl += "

" + "-" + pc_result['prices']['offerCourseDiscount'] + currency + "" + pc_result['prices']['textSpecialOfferCourse'] + "

";}if (pc_result['prices']['hasAccommodationOffer'] == true && pc_result['prices']['offerAccommodationDiscount'] > 0) {tpl += "

" + "-" + pc_result['prices']['offerAccommodationDiscount'] + currency + "" + pc_result['prices']['textSpecialOfferAccommodation'] + "

";}tpl += "

";var total = pc_result['prices']['total'];var total_nodiscount = pc_result['prices']['subtotal'] + pc_result['prices']['offerCourseDiscount'] + pc_result['prices']['offerAccommodationDiscount'];if (selected_date==0) {var hs_course = parseInt(pc_result['prices']['hs_course']);if (isNaN(hs_course)) {hs_course=0;}var hs_accommo = parseInt(pc_result['prices']['hs_accommodation']);if (isNaN(hs_accommo)) {hs_accommo=0;}total -= ( hs_course + hs_accommo);total_nodiscount -= ( hs_course + hs_accommo);}if (total_nodiscount > total) {tpl += "

" + Math.ceil(total_nodiscount) + currency + "";} else {tpl += "";}tpl += Math.ceil(total) + currency + "

";if (selected_date!=0) {tpl += "Total final price including seasonal supplements, school registration fees and applicable sales tax.";} else {tpl += "Total final price including school registration fees and applicable sales tax.";}//tpl += jQuery("#courseSelected_" + school_id).attr("extra-info");tpl += jQuery("#infotooltip_" + school_index).attr("extra-info");jQuery("#infotooltip_" + school_index).attr("data-original-title", tpl);}

"); const alterTooltipf = function() { if (jQuery(".mobileCloseTooltip").length == 0) { jQuery('.tooltip-inner').prepend(newInsert); } } if (aDataToggleTooltip.length !== 0 ) { let i; for (i = aDataToggleTooltip.length - 1; i >= 0; i--) { const el = jQuery(aDataToggleTooltip[i]); el.on('inserted.bs.tooltip', alterTooltipf) } } } // touch screen device detection if ( ("ontouchstart" in window || window.DocumentTouch && document instanceof DocumentTouch) === true ) { // put close button in tooltips when touchscreen is detected setTimeout(function() { itsTouchScreen(); }, 2500); } function destroyFlagToolEtc() { // destroy language flags tooltip when mobile // Mobile search box micro-plugin variables // const searchQuery = jQuery("#search_query"); // destroy the flags info tooltip in mobile if (typeof(flagsTooltip.tooltip) === 'function') { flagsTooltip.tooltip('destroy'); } langListPop.off('hide.bs.popover'); // turn off the event to re-init the tooltip after flags selector popover hides langListPop.on('show.bs.popover', function() { langListPop.off('hide.bs.popover'); }); /** Mobile search box micro-plugin **/ // start with transparent in order to don't hide magnifying glass icon // searchQuery.css('background-color', 'transparent'); // bind focus event // searchQuery.on('focus', function() { // const that = jQuery(this); // to calculate search box deployment final width // const totalSearchFieldWidth = jQuery("#cBoxTabWrap").outerWidth() - jQuery("#searchForm_small").outerWidth() - 87; // background-color play to always show icon and have white background in search field // that.css('background-color', '#fff'); // Show 'searchPlaceholderVar' variable is defined in the 'page_header.tpl' then animate the search field // that.attr('placeholder', searchPlaceholderVar).animate({ // width: totalSearchFieldWidth, // }, 400, "swing", function() { // jQuery("#magniFyingGlass").hide(); // jQuery("#closeSearchBar").show(); // }); // }); //bind blur event // searchQuery.on('blur', function() { // const that = jQuery(this); // const glyphiconSearch = jQuery("#searchForm_small").find(".fa-search"); // //contactBoxPhonesMobText.css('color', ''); // // z-index play // glyphiconSearch.css('z-index', '4'); // that.animate({ // // animate back to zero width to close the field // width: 0, // }, 400, function() { // // jQuery("#magniFyingGlass").show(); // // jQuery("#closeSearchBar").hide(); // // // background and z-index play // // that.css('background-color', 'transparent'); // // glyphiconSearch.css('z-index', ''); // }); // }); /** END OF => Mobile search box micro-plugin **/ } // La siguiente función "slidingMenu();" sirve para mostrar y ocultar el sliding facetted menú lateral en el responsive mode function slidingMenu() { // toggle side menu const leftMenuBtns = jQuery("#filterMobBut, #cbp-spmenu-s2, #showLeft, #closeButtonSlideMenuTop, #closeButtonSlideMenuBot"); // elements for toggling classes over const bodyContent = jQuery("#body_content"); const menuLeft = jQuery("#cbp-spmenu-s2"); const closeButTopEl = jQuery('#closeButtonSlideMenuTop')[0]; const closeButBotEl = jQuery('#closeButtonSlideMenuBot')[0]; leftMenuBtns.on('click', function(event) { const transitionEvent = whichTransitionEvent(); // No need of using event.stopPropagation() anymore writing the condition below! // to check if click is originated from outside the side menu itself // https://css-tricks.com/dangers-stopping-event-propagation/#article-header-id-2 if (!jQuery(event.target).closest('#wrapSlideMenu').length || (event.target == closeButTopEl && event.currentTarget.id != "cbp-spmenu-s2") || (event.target == closeButBotEl && event.currentTarget.id != "cbp-spmenu-s2") ) { menuLeft.toggleClass('cbp-spmenu-open'); // triggered only when closing the sidebar, so detect the transition end before changing z-index if (bodyContent.hasClass('cbp-spmenu-opened')) { // .one() => because if the event handler is not removed after its called, the class will be removed from the second triggering and so on (the handler continue running if not cancelled) menuLeft.one(transitionEvent, function() { bodyContent.removeClass('cbp-spmenu-opened'); }); } else { // triggered only when opening the sidebar: no need of changing z-index bodyContent.addClass('cbp-spmenu-opened'); } } }); } // END of slidingMenu() logic if (currentSize.width <= 1024) { slidingMenu(); } // trigger reflows on resize width from desktop to mobile jQuery(window).on('widthOnlyResizedMobile', function() { var leftMenuBtns = jQuery("#filterMobBut, #cbp-spmenu-s2, #showLeft, #closeButtonSlideMenuTop, #closeButtonSlideMenuBot"); leftMenuBtns.off('click'); slidingMenu(); }); /***********************************/ /** Main school_overview reflows **/ /*********************************/ // school_overview repositions when resizing from desktop to mobile function mobileResp() { const contentPanel = jQuery("#content_panel"); const schoolContainer = contentPanel.find(".schoolContainer"); let starting_date = jQuery("#calendar_date").val(); const schoolDetailsDropWrap = contentPanel.find(".schoolDetailsDropWrap"); const resultsDetails2 = jQuery(".resultsDetails2"); // const reflowBlocks = jQuery(".reflowBlocks"); const ratingWrap = jQuery(".ratingBlockWrap").find(".ratingWrap"); // var textInsideCalc = jQuery('.textInsideCalc'); // var calcModal = jQuery("#calcModal"); // calcModal.appendTo(textInsideCalc); // modal changes on resize jQuery(".modal-backdrop").css('display', ''); // calcModal.addClass('modal fade').removeClass('modalDisplay'); jQuery("#decorator_xx10").addClass('modal-dialog'); // jQuery("#modalContent").addClass('modal-content'); // school_overview FACETS only contentPanel.find(".wrappableDivFacets").addClass('collapse').css('height', ''); /*reflowBlocks.each(function() { const that = jQuery(this); const closest = that.closest(".middleAndResults"); closest.find(".resultsDetails2").insertAfter(that); that.insertAfter(closest.find(".mainRatingWrap")); });*/ resultsDetails2.each(function() { const that = jQuery(this); that.insertAfter(that.closest(".middleAndResults").find(".reflowBlocks")); }); schoolDetailsDropWrap.each(function(){ const that = jQuery(this); that.closest(".middleAndResults").find('.buttonToSchoolWrap').appendTo(that.closest('.schoolRightContentWrap')); // that.parent().find('.resultsLogos').after(that.find('.school_overview_p_inside_box_results')); if (that.hasClass('secondarySchoolBlock')) { that.appendTo(that.closest('.middleTop').find('.contentSideImg')); } }); ratingWrap.each(function() { const that = jQuery(this); that.after(that.prev()); }); schoolContainer.each(function() { const that = jQuery(this); that.find(".resultsBand").prependTo(that.find(".middleTop")); // schoolDetailsDropWrap.css('width', ''); that.find(".newBadge").insertAfter(that.find(".schoolPictWrap")); that.find(".schoolStrenghtsWrap").appendTo(that.find(".resultsDetails2")); that.find(".schoolDetailsDropWrap").insertAfter(that.find(".mainRatingWrap")); }); // school_overview calculator part jQuery("#mob_duration_sel").html(jQuery("#duration_sel").html()); if (starting_date == "") { starting_date = jQuery("#calendar_date_intro").html(); jQuery("#calendarIndicator").html("+").addClass("calNumEmpty").removeClass("calNumFilled"); } else if (typeof(starting_date) !== 'undefined') { jQuery("#calendarIndicator").html( starting_date.substr(0, starting_date.indexOf(' ')) ).addClass("calNumFilled").removeClass("calNumEmpty"); } // jQuery("#mob_calendar_date").html(starting_date); jQuery("#mob_course_category_sel").html(jQuery("#course_category_sel").html()); jQuery("#mob_accommodation_type_sel").html(jQuery("#accommodation_type_sel").html()); jQuery(".modal-backdrop").css('display', ''); // calcModal.addClass('modal fade').removeClass('modalDisplay'); jQuery("#decorator_xx10").addClass('modal-dialog'); // jQuery("#modalContent").addClass('modal-content'); jQuery("span.city_video_big").addClass("city_video").removeClass("city_video_big"); // school_overview secondary schools collapsibles // jQuery('[id^=schoolAltRatings], [id^=dataSchool]').collapse('show'); // jQuery('[id^=S_Name]').removeClass("DDColl").addClass("DDExp"); } // Main school_overview desktop repositions function schoolOverviewReposition() { const contentPanel = jQuery("#content_panel"); const schoolContainer = contentPanel.find(".schoolContainer"); const schoolRightContentWrap = jQuery(".schoolRightContentWrap"); const resultsDetails2_1 = jQuery(".resultsDetails2_1"); const ratingWrap = jQuery(".ratingBlockWrap").find(".ratingWrap"); const middleWrap = jQuery('.middleWrap'); // var boxedBottWrap = jQuery('#boxedBottWrap'); // var calcModal = jQuery("#calcModal"); // calcModal.appendTo(boxedBottWrap); schoolContainer.each(function() { const that = jQuery(this); that.find(".resultsBand").insertBefore(that.find(schoolRightContentWrap)); that.find(".newBadge").prependTo(that.find(".buttonToSchoolWrap")); that.find(".schoolStrenghtsWrap").insertAfter(that.find(".middleBot")); that.find(".schoolDetailsDropWrap ").appendTo(that.find(".middleTop")) // To avoid elements repositioning flashes during page load // that.find(".contentSideImg, .schoolDetailsDropWrap, .buttonToSchoolWrap").show(); }); schoolRightContentWrap.each(function() { const that = jQuery(this); // https://es.stackoverflow.com/questions/61505/c%C3%B3mo-hacer-para-aplicar-important-de-css-con-jquery-javascript if (that.find(".schoolDetailsDropWrap")[0]) { // that.find(".schoolDetailsDropWrap")[0].style.setProperty('width', '88%', 'important'); that.find(".buttonToSchoolWrap").appendTo(that.find(resultsDetails2_1)); } }); // resultsDetails2_1.each(function() { // const that = jQuery(this); // that.closest(".middleAndResults").find(".reflowBlocks").insertAfter(that.closest(".middleAndResults").find(".head_yellow_7")); // }); middleWrap.each(function(){ const that = jQuery(this); that.after(that.find(".resultsDetails2")); // that.find(".school_overview_p_inside_box_results").prependTo(that.find(".schoolDetailsDropWrap")); }); ratingWrap.each(function() { const that = jQuery(this); that.next().after(that); }); contentPanel.find(".schoolDetailsDropWrap").find(".wrappableDiv").unwrap(); // calcModal.removeClass('modal fade').addClass('modalDisplay'); jQuery("#decorator_xx10").removeClass('modal-dialog'); // jQuery("#modalContent").removeClass('modal-content'); jQuery("span.city_video").addClass("city_video_big").removeClass("city_video"); // school_overview FACETS only contentPanel.find(".wrappableDivFacets").removeClass('collapse').css('height', 'auto'); // school_overview secondary schools collapsibles // jQuery('[id^=schoolPicture]').collapse('hide').height('0px'); // jQuery('[id^=S_Name]').removeClass("DDExp").addClass("DDColl"); } function trimSchoolDescriptions(textLength, removeLink = false) { function trimToWords(text, wordCount) { // Remove line breaks and extra spaces text = text.replace(/\s+/g, ' ').trim(); const words = text.split(' '); if (words.length <= wordCount) { return text; } let trimmed = words.slice(0, wordCount).join(' '); // Remove any non-alphanumeric characters from the end of the trimmed text trimmed = trimmed.replace(/[^a-zA-Z0-9]+$/, ''); return trimmed + ' ...'; } const elements = document.querySelectorAll('.school_overview_p_inside_box_results_inside'); for (let i = 0; i < elements.length; i++) { const originalText = elements[i].textContent || elements[i].innerText; elements[i].textContent = trimToWords(originalText, textLength); } } if (currentSize.width >= 1025) { schoolOverviewReposition(); trimSchoolDescriptions(22); // const bar_flags_new = jQuery("#bar_flags_new").detach(); // bar_flags_new.appendTo("#searchFormSmallWrap"); } else { trimSchoolDescriptions(12, true); } jQuery('[id^=schoolPicture]').collapse('hide').height('0px'); // trigger reflows to be done in mobile mode when resizing from desktop to mobile jQuery(window).on('widthOnlyResizedMobile', mobileResp); // ... and viceversa jQuery(window).on('widthOnlyResizedDesktop', function() { // const mainRatingWrap = jQuery(".mainRatingWrap"); schoolOverviewReposition(); // jQuery(".resultsDetails2_1").each(function() { // const that = jQuery(this); // that.closest(".middleAndResults").find(mainRatingWrap).prependTo(that); // }); }); /**************************/ /** Main school reflows **/ /************************/ function allPagesDesktopReflows() { // const bar_flags_new = jQuery("#bar_flags_new").detach(); // ALL pages => flags widget // bar_flags_new.appendTo("#searchFormSmallWrap"); // ALL pages => "wechat" "whatsapp" "kakao" & "skype" jQuery("#contactBoxSkype").insertAfter("#contactBoxPhones"); // ALL pages => cBox jQuery("#contactBoxChat").insertBefore("#contactBoxTextareaDiv"); // ALL PAGES (footer) // ALL pages where we use bootstrap modals jQuery('.modal-backdrop.fade.in').css('display', 'none'); // All pages but UG (header) jQuery("#searchFormSmallWrap").prependTo("#headSearchBar"); } // remove placeholder on focus event jQuery("#searchBarMob .search_query, .searchQueryWrap .search_query").on('focus', function() { jQuery(this).removeAttr('placeholder'); }); flagsTooltipInit = function() { if (typeof jQuery().tooltip === 'function') { // destroy lang flags tooltip if flags popover is shown langListPop.on('show.bs.popover', function() { flagsTooltip.tooltip('destroy'); }); if (currentSize.width <= 1024) { if (typeof(flagsTooltip.tooltip) === 'function') { flagsTooltip.tooltip('destroy'); } } else { if (!windowMatchObj.mqoh.matches) { // re-init lang flags tooltip when flags popover is hidden langListPop.on('hide.bs.popover', function() { jQuery('[data-toggle="tooltipTop"]').tooltip({ trigger : 'hover', placement: 'top' }); }); } if (windowMatchObj.mqoh.matches) { if (typeof(flagsTooltip.tooltip) === 'function') { flagsTooltip.tooltip('destroy'); langListPop.off('hide.bs.popover'); } } } } } // avoid hiding flags selector if the cBox is overlapping it function avoidHidingFlags() { if (windowMatchObj.mqoh.matches) { const contactBoxWrapper = jQuery('#contactBoxWrapper'); langListPop.on('show.bs.popover', function () { contactBoxWrapper.css('z-index', '10'); }); langListPop.one('hide.bs.popover', function () { contactBoxWrapper.css('z-index', ''); if (typeof(flagsTooltip.tooltip) === 'function') { flagsTooltip.tooltip('destroy'); } }); flagsTooltip.on('show.bs.tooltip', function () { if (typeof(flagsTooltip.tooltip) === 'function') { flagsTooltip.tooltip('destroy'); } }); } else { langListPop.off('show.bs.popover hidden.bs.popover'); flagsTooltipInit(); } } avoidHidingFlags(); windowMatchObj.mqoh.addListener(avoidHidingFlags); jQuery(window).on('widthOnlyResized', function() { // restart bind and width in case of window resize in order to don't hide magnifying glass icon // jQuery("#search_query").off('focus blur').css('width', ''); }); if (currentSize.width <= 1024) { destroyFlagToolEtc(); } if (currentSize.width >= 1025) { allPagesDesktopReflows(); } // remove heading middle line if 2 lines if (!(jQuery('#school_overview').length && currentSize.width <= 1024)) { const h2Elements = jQuery('h2'); for (let i = 0; i < h2Elements.length; i++) { const el = jQuery(h2Elements[i]); if (el.find('.titleSep').height() > 40) { el.addClass('removeBorderBottom'); } }; } // execute destroy language flags tooltip + mobile searchbar (triggered only on mobile and only on resize from desktop mode) jQuery(window).on('widthOnlyResizedMobile', function() { // const bar_flags_new = jQuery("#bar_flags_new").detach(); destroyFlagToolEtc(); // bar_flags_new.appendTo(jQuery("#cBoxTabWrap")); jQuery("#contactBoxChat").insertAfter("#contactBoxTextareaDiv"); jQuery("#searchFormSmallWrap").insertAfter("#contactBoxChat"); if (typeof getLangSuggestion === "function") { getLangSuggestion(0); } reInitPopover('#changeLanguageFlags'); jQuery("#contactBoxSkype").insertBefore("#sendBlockWrap"); }); // Triggered only on desktop and only on resize from mobile mode jQuery(window).on('widthOnlyResizedDesktop', function() { // ALL PAGES => re-init the tooltip if previously destroyed on mobile allPagesDesktopReflows(); if (typeof(flagsTooltip.tooltip) === 'function') { // IMPORTANT: .tooltip('destroy') is asynchronous, and immediate creation of another popover fails, while the previous one is being destroyed [same that happens with .popover('destroy') method]. // https://stackoverflow.com/questions/27238938/bootstrap-popover-destroy-recreate-works-only-every-second-time#answer-27345242 setTimeout(function() { flagsTooltip.tooltip({ trigger : 'hover', placement: 'top' }); }, 200); } // ALL PAGES => re-init event handler if previously turned off on mobile langListPop.on('show.bs.popover', function() { // re-init lang flags tooltip when flags popover is hidden langListPop.on('hide.bs.popover', function() { setTimeout(function() { flagsTooltip.tooltip({ trigger : 'hover', placement: 'top' }); }, 200); }); }); reInitPopover('body'); }); /*}); CLOSING BIG WINDOW ONLOAD FUNCTION */ } else { setTimeout(autoCall, 50); } })();

The Best English online language courses 2024 Comparison (2024)
Top Articles
Mediterranean Roasted Eggplant Recipe (Low-Carb, Gluten-Free)
Pan Fried Cinnamon Bananas
Pof Revolution Di Review | 羅伊頓幼兒園
Proof of Funds Providers in Nigeria - LoanSpot
Grand Park Baseball Tournaments
Melendez Imports Menu
ALPHAVETS 4.2.24 ~ JULIE GREEN
THE UNITED STATES AND ISRAEL WILL RISE TOGETHER  — JULIE GREEN MINISTRIES
The Register News-Pictorial from Adelaide, South Australia, Australia
2024 NBA Draft Thread - SUMMER LEAGUE JULY 6TH
Latest Posts
Delectable Lemon Pesto Lentil Salad - Best Of Vegan
Easy 30 minute dinner rolls | Modernmealmakeover.com
Article information

Author: Annamae Dooley

Last Updated:

Views: 6391

Rating: 4.4 / 5 (45 voted)

Reviews: 84% of readers found this page helpful

Author information

Name: Annamae Dooley

Birthday: 2001-07-26

Address: 9687 Tambra Meadow, Bradleyhaven, TN 53219

Phone: +9316045904039

Job: Future Coordinator

Hobby: Archery, Couponing, Poi, Kite flying, Knitting, Rappelling, Baseball

Introduction: My name is Annamae Dooley, I am a witty, quaint, lovely, clever, rich, sparkling, powerful person who loves writing and wants to share my knowledge and understanding with you.