// WEEBLY MULTILANGUAGE TOOLS // http://blessingsweb.weebly.com/weebly-multilanguage.html /* // Things that should go in SETTINGS -> SEO -> Header Code : // (all page names in should go in lowercase) var langs = [ //lang_code, name of first page of that language, HTML of the language changing link ['en', 'home', 'English'], ['es', 'inicio', 'Espa�±ol'], ]; var not_clickable = []; var all_langs = []; */ var all_langs = []; var not_clickable = []; //inner variables from now on var localStorage_enabled = typeof(Storage) !== "undefined"; try {language = language;} catch(e) {var language = null;} //if language is not defined, use null // Function that sets up all features of multilanguage. // Alternatively, you can call these functions one by one. function setup_multilanguage() { hide_menus(); hide_menus_mobile(); hide_items(); jQuery(document).ready(add_lang_links); make_not_clickable(); } function add_lang_links() { setup_language(); // console.log('adding language links'); if (is_weebly_mobile()) { //jQuery('body').prepend(''); //jQuery('#header').after('') //jQuery('body').prepend(''); jQuery('body').append(''); jQuery('#lang_links').css('position', 'absolute').css('top', '100px').css('left', '10px'); } else { jQuery('body').append(''); jQuery('#lang_links').css('position', 'absolute').css('top', '100px').css('left', '10px') } jQuery('#lang_links').css('text-align', 'right'); jQuery('#lang_links').css('padding', '0'); jQuery('#lang_links').css('z-index', '20'); jQuery('#lang_links .lang_link').css('padding', '4px'); append_lang_links(); if (is_weebly_mobile) { jQuery('#lang_links').css('left', '10px').css('background', 'transparent'); jQuery('#lang_links_spacer').height(jQuery('#lang_links').height()); } } function append_lang_links() { lang_links_div = jQuery('#lang_links'); // console.log('appending lang links to:'); // console.log(lang_links_div); //add the language links for (var i = 0; i < langs.length; i++) { var lang_code = langs[i][0]; var lang_link_text = langs[i][2]; var link = (lang_code == language) ? lang_link_text : '' + lang_link_text + ''; // console.log('language ' + lang_code + ': ' + link); if (i > 0) lang_links_div.append(' '); // lang_links_div.append('' + link + ''); lang_links_div.append( link + '
'); } } function hide_items() { setup_language(); var lang_class = 'lang_'+language; // console.log('hiding language items... checking for ' + lang_class); jQuery('begin_lang').each(function() { var begin = jQuery(this); var must_hide = !begin.hasClass(lang_class); // console.log(this); // console.log(must_hide ? 'HIDE' : 'SHOW'); if (must_hide) { elems = begin.parent().parent().nextAll().toArray(); for (var i = 0; i < elems.length; i++) { var elem = jQuery(elems[i]); var is_end_lang = elem.find('end_lang').is('end_lang'); if (is_end_lang) break; elem.hide(); } } }); } function hide_menus() { //console.log('hide menus - ' + (is_weebly_mobile() ? 'mobile' : 'desktop')); var menu_selector = '.wsite-menu-default'; setup_language(); // console.log('Language: ' + language); var mainlanguage = language; var current_lang = null; var matched_langs = []; //jQuery('.wsite-menu-item-wrap').each(function(){ jQuery('.wsite-menu-default li').each(function(){ var menu = jQuery(this); var a = menu.children('a'); var page_url = a.attr('href'); var text = get_menu_name(a); in_all_langs = all_langs.indexOf(text) >= 0; var lang_info = get_lang_info_for_page(text, matched_langs); if (lang_info != null) { if (lang_info.length == 3) lang_info.push(page_url); current_lang = lang_info[0].toLowerCase(); //if this is the first page of this language, set the logo to go to this page url if (current_lang == language) { jQuery('.wsite-logo a').attr('href', page_url); } } if (in_all_langs) { current_lang = null; show = true; } else { show = (current_lang == language); } if (show) menu.show(); else { menu.hide(); menu.css('display', 'none'); } //console.log('MENU: '+ text + ' - current lang: ' + current_lang + ' - ' + (show ? 'SHOW' : 'HIDE')); //console.log((langs[text] != null ? 'in langs: ' + langs[text] : 'not in langs') + ' - ' + (in_all_langs ? 'in all_langs' : 'not in all_langs')); }); } function hide_menus_mobile() { // console.log('hide menus - ' + (is_weebly_mobile() ? 'mobile' : 'desktop')); var menu_selector = '.wsite-menu-default'; setup_language(); //console.log('Language: ' + language); var mainlanguage = language; var current_lang = null; var matched_langs = []; jQuery('.mobile-nav li').each(function(){ var menu = jQuery(this); var a = menu.children('a'); var page_url = a.attr('href'); var text = get_menu_name(a); // console.log(text+" "+page_url); in_all_langs = all_langs.indexOf(text) >= 0; var lang_info = get_lang_info_for_page(text, matched_langs); if (lang_info != null) { if (lang_info.length == 3) lang_info.push(page_url); current_lang = lang_info[0].toLowerCase(); //if this is the first page of this language, set the logo to go to this page url if (current_lang == language) { jQuery('.wsite-logo a').attr('href', page_url); } } if (in_all_langs) { current_lang = null; show = true; } else { show = (current_lang == language); } if (show) { menu.show(); menu.children().css('display', 'block'); } else { menu.hide(); menu.css('display', 'none'); menu.children().css('display', 'none'); } jQuery('.wsite-menu-wrap').hide(); // console.log('MENU baamboo-responsive-nav: '+ text + ' - current lang: ' + current_lang + ' - ' + (show ? 'SHOW' : 'HIDE')); // console.log((langs[text] != null ? 'in langs: ' + langs[text] : 'not in langs') + ' - ' + (in_all_langs ? 'in all_langs' : 'not in all_langs')); }); } function make_not_clickable() { //top_menus = jQuery('.wsite-menu-item-wrap'); //submenus = jQuery('.wsite-menu-subitem-wrap'); top_menus = jQuery('.wsite-menu-default li'); submenus = jQuery('.wsite-menus li'); menus = jQuery.merge(top_menus, submenus); menus.each(function(){ var a = jQuery(this).children('a'); var text = get_menu_name(a); clickable = (not_clickable.indexOf(text) < 0); // console.log(text + ' - ' + (clickable ? 'clickable' : 'NOT clickable')); if (!clickable) { a.attr('href', 'javascript:void'); a.hover(function() { jQuery(this).css('cursor', 'default'); }); } }); } function setup_language() { if (language == 'all' || language == null) { if(localStorage_enabled) language = localStorage.getItem("language"); else language = langs[0][0]; //default_language } language = language.toLowerCase(); if(localStorage_enabled) localStorage.setItem("language", language); } function get_lang_info_for_page(page_name, matched_langs) { for (var i = 0; i < langs.length; i++) { var lang_info = langs[i]; if ( lang_info[1].toLowerCase() == page_name.toLowerCase() && matched_langs.indexOf(lang_info[0]) == -1) { matched_langs.push(lang_info[0]); return lang_info; } } return null; } function get_lang_info_for_lang(lang) { for (var i = 0; i < langs.length; i++) { var lang_info = langs[i]; if (lang_info[0].toLowerCase() == lang) return lang_info; } return null; } function change_lang(lang) { var lang_info = get_lang_info_for_lang(lang); document.location.href = lang_info[3]; } function get_menu_name(menu_a) { var span = menu_a.children('span'); var text = (span.length == 0) ? menu_a.html() : span.html(); return text.toLowerCase().trim(); } // check if it is web or mobile version function is_weebly_mobile() { var MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i; var mob = ((MOBILE_REGEX.test(navigator.userAgent)==true) ? 1 : 0); console.log(mob); return jQuery('.wsite-mobile').length > 0 || jQuery('.mobile-nav').length > 0 || mob > 0; }