Index: openacs-4/packages/xowiki/www/resources/timeline/api/timeline-api.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/www/resources/timeline/api/timeline-api.js,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/xowiki/www/resources/timeline/api/timeline-api.js 6 Nov 2007 12:55:23 -0000 1.1.2.2 @@ -0,0 +1,244 @@ +/*================================================== + * Timeline API + * + * This file will load all the Javascript files + * necessary to make the standard timeline work. + * It also detects the default locale. + * + * Include this file in your HTML file as follows: + * + * + * + *================================================== + */ + +var Timeline = new Object(); +Timeline.Platform = new Object(); + /* + HACK: We need these 2 things here because we cannot simply append + a "); + return; + } catch (e) { + // fall through + } + } + + var script = document.createElement("script"); + script.type = "text/javascript"; + script.language = "JavaScript"; + script.src = url; + getHead().appendChild(script); + }; + var includeCssFile = function(url) { + if (document.body == null) { + try { + document.write(""); + return; + } catch (e) { + // fall through + } + } + + var link = document.createElement("link"); + link.setAttribute("rel", "stylesheet"); + link.setAttribute("type", "text/css"); + link.setAttribute("href", url); + getHead().appendChild(link); + } + + includeJavascriptFiles = function(urlPrefix, filenames) { + for (var i = 0; i < filenames.length; i++) { + includeJavascriptFile(urlPrefix + filenames[i]); + } + }; + includeCssFiles = function(urlPrefix, filenames) { + for (var i = 0; i < filenames.length; i++) { + includeCssFile(urlPrefix + filenames[i]); + } + }; + } + + /* + * Include non-localized files + */ + if (bundle) { + includeJavascriptFiles(Timeline.urlPrefix, [ "bundle.js" ]); + includeCssFiles(Timeline.urlPrefix, [ "bundle.css" ]); + } else { + includeJavascriptFiles(Timeline.urlPrefix + "scripts/", javascriptFiles); + includeCssFiles(Timeline.urlPrefix + "styles/", cssFiles); + } + + /* + * Include localized files + */ + var loadLocale = []; + loadLocale[defaultServerLocale] = true; + + var tryExactLocale = function(locale) { + for (var l = 0; l < supportedLocales.length; l++) { + if (locale == supportedLocales[l]) { + loadLocale[locale] = true; + return true; + } + } + return false; + } + var tryLocale = function(locale) { + if (tryExactLocale(locale)) { + return locale; + } + + var dash = locale.indexOf("-"); + if (dash > 0 && tryExactLocale(locale.substr(0, dash))) { + return locale.substr(0, dash); + } + + return null; + } + + for (var l = 0; l < desiredLocales.length; l++) { + tryLocale(desiredLocales[l]); + } + + var defaultClientLocale = defaultServerLocale; + var defaultClientLocales = ("language" in navigator ? navigator.language : navigator.browserLanguage).split(";"); + for (var l = 0; l < defaultClientLocales.length; l++) { + var locale = tryLocale(defaultClientLocales[l]); + if (locale != null) { + defaultClientLocale = locale; + break; + } + } + + for (var l = 0; l < supportedLocales.length; l++) { + var locale = supportedLocales[l]; + if (loadLocale[locale]) { + includeJavascriptFiles(Timeline.urlPrefix + "scripts/l10n/" + locale + "/", localizedJavascriptFiles); + includeCssFiles(Timeline.urlPrefix + "styles/l10n/" + locale + "/", localizedCssFiles); + } + } + + Timeline.Platform.serverLocale = defaultServerLocale; + Timeline.Platform.clientLocale = defaultClientLocale; + } catch (e) { + alert(e); + } +})(); \ No newline at end of file