| /* |
| * Overview of all methods (functions) of the global object "DL" |
| * ------------------------------------------------------------- |
| * function DL.createIndexOf () |
| * function DL.getURLQuery () |
| * function DL.init ( release_mode ) |
| * function DL.initVariables ( init_all ) |
| * function DL.getLanguage () |
| * function DL.fillOSSelection () |
| * function DL.fillLanguageSelection () |
| * function DL.fillVersionSelection () |
| * function DL.getOSSelection () |
| * function DL.getLanguageSelection () |
| * function DL.getVersionSelection () |
| * function DL.setOSSelection () |
| * function DL.setLanguageSelection () |
| * function DL.setVersionSelection () |
| * function DL.hideElements () |
| * function DL.showWindow ( target_link ) |
| * function DL.showErrorMessage ( error_text ) |
| * function DL.isLanguageSupported () |
| * function DL.checkForLinkExceptions () |
| * function DL.getLinkSelection () |
| * function DL.getPlatform () |
| * function DL.getReleaseMatrixPosition () |
| * function DL.getFileData () |
| * function DL.debug ( location ) |
| * |
| * Overview of global functions |
| * ---------------------------------------------------- |
| * function openItem ( itemid, uri ) |
| */ |
| |
| |
| |
| /* |
| * Create the "indexOf" function when the browser does not support it |
| * @param: None |
| * @return: i - The value from the index position of the array |
| */ |
| DL.createIndexOf = function() { |
| // Add ECMA262-5 array methods if not supported natively. |
| // To workaround that MSIE 8 and older do not support this function. |
| if( !( 'indexOf' in Array.prototype ) ) { |
| Array.prototype.indexOf= function( find, i ) { // 'i' is an optional parameter. |
| if( i === undefined ) { |
| i = 0; |
| } |
| if( i < 0 ) { |
| i+= this.length; |
| } |
| if( i < 0 ) { |
| i = 0; |
| } |
| for( var n = this.length; i < n; i++ ) { |
| if( i in this && this[ i ] === find ) { |
| return i; |
| } |
| } |
| return -1; |
| }; |
| } |
| } |
| |
| /* |
| * Get the value from an browser URL query |
| * @param: None |
| * @return: q_value - The value from the browser URL query |
| */ |
| DL.getURLQuery = function() { |
| // Parse the URL for a query if it contains a value that should be used as an language ISO code. |
| |
| // Does the browser URL contain a query with "?" and "=" characters at all? |
| if( decodeURI( window.location ).indexOf( "?" ) == -1 && |
| decodeURI( window.location ).indexOf( "=" ) == -1 ) { |
| // If not return an empty string and exit. |
| return ""; |
| } |
| |
| // Create the "indexOf" function when the browser does not support it. |
| DL.createIndexOf(); |
| |
| var query = new Object(); |
| var q_pair = window.location.search.substring( 1 ).split( "?" ); |
| var position = 0; |
| var q_name, q_value = ""; |
| |
| for ( var i = 0; i < q_pair.length; i++ ) { |
| // Assign the position of the "=" character, so where the name ends and the value starts. |
| position = q_pair[ i ].indexOf( "=" ); |
| |
| // If the position is not found (-1) then just go on. |
| if ( position === -1 ) { |
| continue; |
| } |
| |
| // Assign the name of the query pair. |
| q_name = q_pair[ i ].substring( 0, position ); |
| // Assign the value of the query pair. |
| q_value = q_pair[ i ].substring( position + 1 ); |
| query[ q_name ] = decodeURI( q_value ); |
| } |
| /* |
| alert( "" |
| + "Query pair: " + "\t" + q_pair + "\n" |
| + "Query name: " + "\t" + q_name + "\n" |
| + "Query value: " + "\t" + q_value + "\n" |
| + "" ); |
| */ |
| // Return the query value. |
| return q_value; |
| } |
| |
| /* |
| * Init function |
| * @param: release_mode - The release mode (stable, beta, etc.) that the scriping should work with |
| * @return: None |
| */ |
| DL.init = function( release_mode ) { |
| // Set global variables. |
| DL.initVariables( 1 ); |
| |
| // Parse the browser URL for an ISO code as language. |
| var query = DL.getURLQuery(); |
| if ( query ) { |
| DL.URL_LANG = query; |
| } |
| |
| // Fill the OS, language and version select boxes. |
| DL.fillOSSelection(); |
| DL.fillLanguageSelection(); |
| DL.fillVersionSelection(); |
| |
| // Get the language and platform from the browser data. |
| DL.getLanguage(); |
| DL.getPlatform(); |
| |
| // Set the recognized platform and language as default. |
| DL.setOSSelection(); |
| DL.setLanguageSelection(); |
| DL.setVersionSelection(); |
| |
| |
| // When release mode = 2, it is a beta release. Otherwise assume "stable release" as default. |
| if( release_mode === 2 ) { |
| DL.RELEASE_MODE = mode; |
| } |
| |
| DL.getLinkSelection(); |
| |
| return; |
| } |
| |
| /* |
| * Define all global variables with default values |
| * @param: init_all - Should all variables initialized or just a part? |
| * @return: None |
| */ |
| DL.initVariables = function( init_all ) { |
| // Define variables without "var" to make them globally available. |
| // The following are used in "download.js". and "index.html". |
| |
| // All elements with ID in the sub-box. |
| DL.ID_SUB_BOX = [ "dl_rel_info", "dl_f_info", "dl_f_chk_keys", "space1", |
| "dl_f_chk_asc", "space2", "dl_f_chk_md5", "space3", "dl_f_chk_sha256", "dl_lp_info", "dl_lp_chk_keys", "space4", |
| "dl_lp_chk_asc", "space5", "dl_lp_chk_md5", "space6", "dl_lp_chk_sha256", "dl_hlp_img", "dl_hlp", "dl_chk_img", |
| "dl_chk", "dl_rpt_img", "dl_rpt" ]; |
| |
| // All elements with ID in the box and sub-box that have a link. |
| DL.ID_LINKS = [ "dl_f_link", "dl_lp_link", "dl_rel_notes", "dl_f_chk_keys", "dl_f_chk_asc", "dl_f_chk_md5", |
| "dl_f_chk_sha256", "dl_lp_chk_keys", "dl_lp_chk_asc", "dl_lp_chk_md5", "dl_lp_chk_sha256", "dl_hlp", "dl_chk", |
| "dl_rpt" ]; |
| |
| // The following are used in "download.js" only. |
| |
| // Initialize global variables. |
| if( init_all === 1 ) { |
| // Use all global variables. |
| DL.RELEASE_MODE = 1; // The release mode (1 = stable release (default), 2 = beta release, etc.). |
| DL.URL_LANG = ""; // The language as ISO code as parameter in the browser URL. |
| DL.LANG_ISO = ""; // The language as ISO code. |
| DL.LANG_SEL = ""; // The selected language as ISO code from select box. |
| DL.UI_PLATFORM_NO_SUP = ""; // The platform as readable string, if not supported. |
| DL.PLATFORM_SEL = ""; // The selected platform from select box. |
| DL.VERSION_SEL = ""; // The selected version from select box. |
| DL.VERSION_SEL_RAW = ""; // The selected version from select box without dots. |
| } |
| |
| DL.UI_PLATFORM = ""; // The platform as readable string. |
| DL.PLATFORM = ""; // The platform in short form. |
| DL.PLATFORM_FULL = ""; // The platform as part of the download URL (full install). |
| DL.PLATFORM_LP = ""; // The platform as part of the download URL (langpack). |
| DL.RELEASE_PLATFORM_POS_FULL = -1; // The position of the platform in the release matrix array (full install). |
| DL.RELEASE_PLATFORM_POS_LP = -1; // The position of the platform in the release matrix array (langpack). |
| DL.RELEASE_PLATFORM = ""; // The platform in the release matrix array. |
| DL.RELEASE_LANG = ""; // The language specific data depending on LANG_ISO. |
| DL.REL_TEXT = ""; // The release data (milestone, build ID, svn rev, release date). |
| DL.REL_NOTES = ""; // The complete URL for the release notes (depends on version). |
| DL.FILENAME_FULL = ""; // The complete filename of the download URL (full install). |
| DL.FILENAME_LP = ""; // The complete filename of the download URL (langpack). |
| DL.FILESIZE_FULL = -1; // The filesize of the download file (full install). |
| DL.FILESIZE_LP = -1; // The filesize of the download file (langpack). |
| DL.EXTENSION = ""; // The file extension of the download URL. |
| DL.SF_BASE_URL = ""; // The base URL for all binary files on Sourceforge. |
| DL.SF_PREV_URL = ""; // The base URL for all binary files (prev. version) on Sourceforge. |
| DL.ASF_ARC_BASE_URL = ""; // The base URL for all checksum files on Apache Archive server. |
| DL.ASF_ARC_PREV_URL = ""; // The base URL for all checksum files (prev. version) on Apache Archive server. |
| DL.ASF_WIKI_URL = ""; // The base URL for all release notes on Apache Wiki. |
| DL.LINK_FULL = ""; // The complete download URL (full install). |
| DL.LINK_LP = ""; // The complete download URL (langpack). |
| DL.LINK_CHK_KEYS = ""; // The KEYS file as download URL. |
| DL.LINK_CHK_ASC_FULL = ""; // The ASC file as download URL (full install). |
| DL.LINK_CHK_MD5_FULL = ""; // The MD5 file as download URL (full install). |
| DL.LINK_CHK_SHA256_FULL = ""; // The SHA256 file as download URL (full install). |
| DL.LINK_CHK_ASC_LP = ""; // The ASC file as download URL (langpack). |
| DL.LINK_CHK_MD5_LP = ""; // The MD5 file as download URL (langpack). |
| DL.LINK_CHK_SHA256_LP = ""; // The SHA256 file as download URL (langpack). |
| DL.SHOW_SUB_BOX = true; // Is the download URL OK to show the sub-box (true) or not (false)? |
| DL.ERROR = false; // Is the download URL in general OK (false) or not (true)? |
| |
| return; |
| } |
| |
| /* |
| * Get array and ISO code for language |
| * @param: None |
| * @return: DL.LANG_ISO - The language as ISO code |
| */ |
| DL.getLanguage = function() { |
| var language = ""; |
| |
| // If available, use the browser set ISO code (see "index.html") that overrides $DL.LANG_ISO. |
| if( DL.URL_LANG !== "" ) { |
| language = DL.URL_LANG; |
| |
| // If available, use the manual set ISO code (see "msg_prop_l10n_<xy>.html") that overrides $DL.LANG_ISO. |
| } else if( DL.NL_LANG !== "" ) { |
| language = DL.NL_LANG; |
| |
| // Else if available, use the selected language from select box. |
| } else if( DL.LANG_SEL !== "" ) { |
| language = DL.LANG_SEL; |
| |
| // Else try to recognize the language from browser data. |
| } else if( navigator.language ) { |
| language = navigator.language; |
| } else if( navigator.userLanguage ) { |
| language = navigator.userLanguage; |
| } else if( navigator.browserLanguage ) { |
| language = navigator.browserLanguage; |
| } else if( navigator.systemLanguage ) { |
| language = navigator.systemLanguage; |
| } |
| |
| // Assign "en-US" as fall-back language if only "en" is set or nothing at all. |
| if( !language || language === "" || language == null || language === "en" ) { |
| language = "en-US"; |
| } |
| /* |
| // Assign "pt-PT" if only "pt" is set. |
| if( language === "pt" ) { |
| language = "pt-PT"; |
| } |
| */ |
| // Konqueror uses '_' where other browsers use '-'. |
| if( language.indexOf( "_" ) !== -1 ) { |
| // Change a contained '_' into a '-'. |
| language = language.split( "_" ).join( "-" ); |
| } |
| |
| language = language.toLowerCase(); // Change the language into lower case. |
| var languageCode = language.split( "-" )[ 0 ]; // Part before "-" is the language code. |
| var regionCode = language.split( "-" )[ 1 ]; // Part behind "-" is the region code. |
| var thisLanguageSet = DL.language_matrix[ languageCode ]; // Assign complete lang data of the lang code. |
| |
| if( thisLanguageSet == null ) { |
| // Assign "en-US" when the language code was not found inside array. |
| language = "en-US"; |
| languageCode = "en"; |
| regionCode = "us"; |
| thisLanguageSet = DL.language_matrix[ languageCode ]; |
| } |
| |
| if( regionCode != null ) { |
| /* |
| // Fix for Portuguese (European) downloads as they are named only "pt" without region code! |
| if( languageCode === "pt" && regionCode === "pt" ) { |
| language = languageCode; |
| } |
| */ |
| // If an additional region code was found. |
| if( thisLanguageSet[ regionCode ] != null ) { |
| // Assign langCode-regionCode. |
| language = languageCode + "-" + regionCode.toUpperCase(); |
| thisLanguage = thisLanguageSet[ regionCode ]; |
| } else { |
| // Choose the default languageCode. |
| var thisLanguage = thisLanguageSet[ "-" ]; |
| if( languageCode === "en" ) { |
| // Special case: If language code is "en" then assign "en-US" for all "en-XX" cases. |
| language = "en-US"; |
| regionCode = "us"; |
| thisLanguageSet = DL.language_matrix[ languageCode ]; |
| thisLanguage = thisLanguageSet[ regionCode ]; |
| } else { |
| // Else assign the language code as language. |
| language = languageCode; |
| } |
| } |
| } else { |
| // Choose the default for none given region code. |
| thisLanguage = thisLanguageSet[ "-" ]; |
| } |
| /* |
| alert( "" |
| + "DL.URL_LANG: " + DL.URL_LANG + "\n" |
| + "language: " + language + "\n" |
| + "DL.NL_LANG: " + DL.NL_LANG + "\n" |
| + "language: " + language |
| + "" ); |
| */ |
| DL.LANG_ISO = language; |
| return DL.LANG_ISO; |
| } |
| |
| /* |
| * Set values into the <select> element for OS (select box) |
| * @param: None |
| * @return: None |
| */ |
| DL.fillOSSelection = function() { |
| var selection = document.getElementById( "os" ); |
| var option = ""; |
| |
| // Fill the <select> element until all OS's are used. |
| for( var i = 0, j = DL.SEL_OS.length; i < j; i = i + 3 ) { |
| option = document.createElement( "option" ); |
| // Assign the platform abbreviation as index value. |
| option.value = DL.SEL_OS[ i ]; |
| // Assign the UI platform name. |
| option.text = DL.SEL_OS[ i + 1 ]; |
| // Add the new option to the already existing ones. |
| selection.appendChild( option ); |
| } |
| |
| // Check if the option names are localized. |
| // If the first string in the array element is larger than 0, assume all are localized and should be used. |
| if ( l10n.dl_green_box_select_box_os_values[ 0 ].length > 0 ) { |
| // Search through the localized names. |
| for( i = 0, j = l10n.dl_green_box_select_box_os_values.length; i < j; i++ ) { |
| // Exchange the English UI platform name with the localized one. |
| selection.options[ i ].text = l10n.dl_green_box_select_box_os_values[ i ]; |
| } |
| } |
| |
| return; |
| } |
| |
| /* |
| * Set values into the <select> element for language (select box) |
| * @param: None |
| * @return: None |
| */ |
| DL.fillLanguageSelection = function() { |
| var selection = document.getElementById( "language" ); |
| var option = ""; |
| |
| // Fill the <select> element until all languages are used. |
| for( var i = 0, j = DL.SEL_LANG.length; i < j; i = i + 3 ) { |
| option = document.createElement( "option" ); |
| // Assign the language ISO code as index value. |
| option.value = DL.SEL_LANG[ i ]; |
| /* |
| // Assign the language ISO code as title. |
| option.title = DL.SEL_LANG[ i ]; |
| // Assign the language name as "English name (Native name)". |
| option.text = DL.SEL_LANG[ i + 1 ]; |
| */ |
| // Assign the language name as "English name". |
| option.text = DL.SEL_LANG[ i + 1 ]; |
| // Assign the language name as "Native name (ISO code)" to show as mouse over title. |
| option.title = DL.SEL_LANG[ i + 2 ] + " (" + DL.SEL_LANG[ i ] + ")"; |
| // Add the new option to the already existing ones. |
| selection.appendChild( option ); |
| } |
| |
| // Check if the option names are localized. |
| // If the first string in the array element is larger than 0, assume all are localized and should be used. |
| if ( l10n.dl_green_box_select_box_language_values[ 0 ].length > 0 ) { |
| // Search through the localized names. |
| for( i = 0, j = l10n.dl_green_box_select_box_language_values.length; i < j; i++ ) { |
| // Exchange the English language name with the localized one. |
| selection.options[ i ].text = l10n.dl_green_box_select_box_language_values[ i ]; |
| /* |
| alert( "i: \t\t" + i + "\n" |
| + "Localized: \t" + l10n.dl_green_box_select_box_language_values[ i ] + "\n" |
| + "Text: \t\t" + selection.options[ i ].text + "\n" |
| + "Title: \t\t" + selection.options[ i ].title ); |
| */ |
| } |
| } |
| |
| return; |
| } |
| |
| /* |
| * Set values into the <select> element for version (select box) |
| * @param: None |
| * @return: None |
| */ |
| DL.fillVersionSelection = function() { |
| var selection = document.getElementById( "version" ); |
| var option = ""; |
| |
| // Fill the <select> element until all versions are used. |
| for( var i = 0, j = DL.SEL_VER.length; i < j; i = i + 2 ) { |
| option = document.createElement( "option" ); |
| // Assign the version as index value. |
| option.value = DL.SEL_VER[ i ]; |
| // Assign the UI version. |
| option.text = DL.SEL_VER[ i + 1 ]; |
| // Add the new option to the already existing ones. |
| selection.appendChild( option ); |
| } |
| |
| // Check if the option names are localized. |
| // If the first string in the array element is larger than 0, assume all are localized and should be used. |
| if ( l10n.dl_green_box_select_box_version_values[ 0 ].length > 0 ) { |
| // Search through the localized names. |
| for( i = 0, j = l10n.dl_green_box_select_box_version_values.length; i < j; i++ ) { |
| // Exchange the version name with the localized one. |
| selection.options[ i ].text = l10n.dl_green_box_select_box_version_values[ i ]; |
| } |
| } |
| |
| return; |
| } |
| |
| /* |
| * Set value in the <select> element for OS (select box) |
| * @param: None |
| * @return: DL.PLATFORM_SEL - The platform as short code that was set as selected in the drop-down box |
| */ |
| DL.setOSSelection = function() { |
| // Depending on $DL.PLATFORM assign the platform string of the release matrix. |
| |
| var selection = document.getElementById( "os" ); |
| |
| // Set the recognized browser platform as default for the select box. |
| for( var i = 0, j = DL.SEL_OS.length; i < j; i = i + 3 ) { |
| // If the platform was found, set it as pre-selected. |
| if( DL.SEL_OS[ i ] === DL.PLATFORM ) { |
| selection.selectedIndex = i / 3; |
| break; |
| } |
| } |
| |
| // If no selected platform for was set in the select box because it was not recognized from browser data, |
| // assign "Windows" as default. |
| if( selection.selectedIndex === 0 ) { |
| // Default: Assign "Windows". |
| for( var i = 0, j = DL.SEL_OS.length; i < j; i = i + 3 ) { |
| // If the platform was found, set it as pre-selected. |
| if( DL.SEL_OS[ i ] === "win32" ) { |
| selection.selectedIndex = i / 3; |
| break; |
| } |
| } |
| } |
| |
| DL.PLATFORM_SEL = selection.value; |
| return DL.PLATFORM_SEL; |
| } |
| |
| /* |
| * Set value in the <select> element for language (select box) |
| * @param: None |
| * @return: DL.LANG_SEL - The language as ISO code that was set as selected in the drop-down box |
| */ |
| DL.setLanguageSelection = function() { |
| // Depending on $DL.LANG_ISO assign the language position of the release matrix. |
| |
| var selection = document.getElementById( "language" ); |
| |
| // Set the recognized browser language as default for the select box. |
| for( var i = 0, j = DL.SEL_LANG.length; i < j; i = i + 3 ) { |
| // If the language was found, set it as pre-selected. |
| if( DL.SEL_LANG[ i ] === DL.LANG_ISO ) { |
| selection.selectedIndex = i / 3; |
| break; |
| } |
| } |
| |
| // If no selected language was set in the select box because it was not recognized from browser data, |
| // assign "en-US" as default. |
| if( selection.selectedIndex === 0 ) { |
| // Default: Assign "en-US". |
| for( var i = 0, j = DL.SEL_LANG.length; i < j; i = i + 2 ) { |
| // If the language was found, set it as pre-selected. |
| if( DL.SEL_LANG[ i ] === "en-US" ) { |
| selection.selectedIndex = i / 2; |
| break; |
| } |
| } |
| } |
| |
| DL.LANG_SEL = selection.value; |
| return DL.LANG_SEL; |
| } |
| |
| /* |
| * Set value in the <select> element for version (select box) |
| * @param: None |
| * @return: DL.VERSION_SEL - The version that was set as selected in the drop-down box |
| */ |
| DL.setVersionSelection = function() { |
| // Depending on $DL.VERSION assign the version. |
| |
| var selection = document.getElementById( "version" ); |
| |
| // Set the value of $DL.VERSION as default for the select box. |
| for( var i = 0, j = DL.SEL_VER.length; i < j; i = i + 2 ) { |
| // If the version was found, set it as pre-selected. |
| if( DL.SEL_VER[ i ] === DL.VERSION ) { |
| selection.selectedIndex = i/2; |
| break; |
| } |
| } |
| |
| // No need to assign a default version because the propery "DL.VERSION" must always exist. |
| |
| DL.VERSION_SEL = selection.value; |
| return DL.VERSION_SEL; |
| } |
| |
| /* |
| * Get values from the <select> element for OS (select box) |
| * @param: None |
| * @return: DL.PLATFORM_SEL - The platform as short code that was selected from the drop-down box |
| */ |
| DL.getOSSelection = function() { |
| var os_value = document[ "download" ]["os" ].options[ document[ "download" ][ "os" ].selectedIndex ].value; |
| |
| // Search through the <select> element until the chosen OS is found. |
| for( var i = 0, j = DL.SEL_OS.length; i < j; i = i + 3 ) { |
| if( DL.SEL_OS[ i ] === os_value ) { |
| DL.PLATFORM_SEL = DL.SEL_OS[ i ]; |
| DL.UI_PLATFORM = DL.SEL_OS[ i + 1 ]; |
| DL.EXTENSION = DL.SEL_OS[ i + 2 ]; |
| break; |
| } |
| } |
| |
| DL.PLATFORM = DL.PLATFORM_SEL; |
| return DL.PLATFORM_SEL; |
| } |
| |
| /* |
| * Get values from the <select> element for language (select box) |
| * @param: None |
| * @return: DL.LANG_SEL - The language as ISO code that was selected from the drop-down box |
| */ |
| DL.getLanguageSelection = function() { |
| var language_value = document[ "download" ][ "language" ].options[ document[ "download" ][ "language" ].selectedIndex ].value; |
| |
| // Search through the <select> element until the chosen language is found. |
| for( var i = 0, j = DL.SEL_LANG.length; i < j; i = i + 3 ) { |
| if( DL.SEL_LANG[ i ] === language_value ) { |
| DL.LANG_SEL = language_value; |
| break; |
| } |
| } |
| |
| DL.LANG_ISO = DL.LANG_SEL; |
| return DL.LANG_SEL; |
| } |
| |
| /* |
| * Get values from the <select> element for version (select box) |
| * @param: None |
| * @return: DL.VERSION_SEL - The version that was selected from the drop-down box |
| */ |
| DL.getVersionSelection = function() { |
| var version_value = document[ "download" ][ "version" ].options[ document[ "download" ][ "version" ].selectedIndex ].value; |
| |
| // Search through the <select> element until the chosen version is found. |
| for( var i = 0, j = DL.SEL_VER.length; i < j; i = i + 2 ) { |
| if( DL.SEL_VER[ i ] === version_value ) { |
| DL.VERSION_SEL = version_value; |
| break; |
| } |
| } |
| |
| // Get the version number without dots (e.g., "411" instead of "4.1.1"). |
| DL.VERSION_SEL_RAW = DL.VERSION_SEL.replace( /\./g,'' ); |
| |
| return DL.VERSION_SEL; |
| } |
| |
| /* |
| * Hide CSS style for all elements with ID to make them invisible |
| * @param: None |
| * @return: None |
| */ |
| DL.hideElements = function() { |
| // Change CSS styles for all elements with ID in the green and sub-green colored boxes. |
| // Emtpy the values for all elements, make them invisible. |
| |
| for( var i = 0, j = DL.ID_SUB_BOX.length; i < j; i++ ) { |
| document.getElementById( DL.ID_SUB_BOX[ i ] ).style.display = "none"; |
| } |
| |
| for( var i = 0, j = DL.ID_LINKS.length; i < j; i++ ) { |
| document.getElementById( DL.ID_LINKS[ i ] ).style.display = "none"; |
| } |
| |
| return; |
| } |
| |
| /* |
| * Show a popup window |
| * @param: target_link - The URL that should be opened as popup window |
| * @return: None |
| */ |
| DL.showWindow = function( target_link ) { |
| // Open a popup window with specific parameters to show the file from "target_link". |
| |
| var popup_window = ""; |
| |
| popup_window = window.open( target_link, "_blank", "location=no, menubar=no, resizable=yes, scrollbars=yes, status=no, titlebar=no, toolbar=no, left=100, top=250, width=800, height=550" ); |
| window.focus(); |
| |
| return; |
| } |
| |
| /* |
| * Show error message |
| * @param: error_text - The text should should be shown as error message |
| * @return: DL.ERROR - Set the general error flag to "true" |
| */ |
| DL.showErrorMessage = function( error_text ) { |
| // The chosen items from select boxes lead to no download link, show an error message about reason + alternative. |
| |
| // In general, hide the data for link, text and title of all elements. |
| DL.hideElements(); |
| |
| // Now set again the values for all elements that should be shown with changed data. |
| document.getElementById( "dl_f_link" ).style.display = "inline"; |
| document.getElementById( "dl_f_link" ).style.cursor = "not-allowed"; |
| document.getElementById( "dl_f_link" ).href = "javascript:void( 0 )"; |
| document.getElementById( "dl_f_link" ).innerHTML = l10n.dl_full_link_error_text; |
| document.getElementById( "dl_f_link" ).title = l10n.dl_full_link_error_title; |
| document.getElementById( "dl_lp_link" ).style.display = "inline"; |
| document.getElementById( "dl_lp_link" ).style.cursor = "not-allowed"; |
| document.getElementById( "dl_lp_link" ).href = "javascript:void( 0 )"; |
| document.getElementById( "dl_lp_link" ).innerHTML = l10n.dl_langpack_link_error_text; |
| document.getElementById( "dl_lp_link" ).title = l10n.dl_langpack_link_error_title; |
| |
| document.getElementById( "dl_err_img" ).src = l10n.dl_error_problem_img_src; |
| document.getElementById( "dl_err_img" ).title = l10n.dl_error_problem_img_title; |
| document.getElementById( "dl_err_img" ).alt = l10n.dl_error_problem_img_alt; |
| document.getElementById( "dl_err_img" ).style.display = "inline-block"; |
| document.getElementById( "dl_err" ).innerHTML = "<br />" + error_text; |
| document.getElementById( "dl_err" ).style.fontSize = "1.2em"; |
| document.getElementById( "dl_err" ).style.cursor = "default"; |
| document.getElementById( "dl_err" ).style.display = "inline-block"; |
| |
| document.getElementById( "sub_box" ).className = "sub-green-sel_error"; |
| document.getElementById( "sub_box" ).style.display = "block"; |
| |
| // Delete previously set string to get the possibility back to choose a different platform |
| // and then to assemble a new download link. |
| DL.UI_PLATFORM_NO_SUP = ""; |
| DL.SHOW_SUB_BOX = true; |
| DL.ERROR = true; |
| return DL.ERROR; |
| } |
| |
| /* |
| * Is support flag set for chosen language and version (y/n)? |
| * @param: None |
| * @return: DL.ERROR - Depending on if the language is supported set the general error flag to "true" or "false" |
| */ |
| DL.isLanguageSupported = function() { |
| // Check if the language in "release_matrix.js" is a release language depending on the version. |
| |
| // If no VERSION was selected, assume the default version. |
| if( DL.VERSION_SEL === undefined || DL.VERSION_SEL === "" ) { |
| DL.VERSION_SEL = DL.VERSION; |
| } |
| |
| // If VERSION != "4.x.y" then exit. |
| if( DL.VERSION_SEL === "3.4.1" || DL.VERSION_SEL === "other" |
| || DL.VERSION_SEL === "older" || DL.VERSION_SEL === "source" ) { |
| DL.ERROR = false; |
| return false; |
| } |
| |
| // Assign the language data of the selected version depending on the ISO code. |
| // Generate variable name: release_matrix_ + version number without dots (e.g., "411" instead of "4.1.1"). |
| DL.RELEASE_LANG = DL[ "release_matrix_" + DL.VERSION_SEL_RAW ][ DL.LANG_ISO ][ 0 ]; |
| |
| // If the flag = 'y' then the language is supported, otherwise not. |
| if( DL.RELEASE_LANG[ 3 ] === 'y' ) { |
| DL.ERROR = false; |
| return true; |
| } else { |
| DL.ERROR = true; |
| return false; |
| } |
| } |
| |
| /* |
| * Check links that should be assembled in getLinkSelection() for expections that do not lead to real download links |
| * @param: None |
| * @return: None |
| */ |
| DL.checkForLinkExceptions = function() { |
| // If recognized resp. selected platform, language or version does not lead to a normal download link, |
| // show the none-availability to the user. |
| |
| DL.SHOW_SUB_BOX = true; |
| DL.ERROR = false; |
| |
| // If language is not supported, show the none-availability to the user. |
| if( ! DL.isLanguageSupported() ) { |
| // Show an error message that the chosen items do not lead to a download. |
| |
| // If a customized string is not available in the "msg_prop_l10n_XX.js" file. |
| if( l10n.dl_error_custom_4_text === "" ) { |
| // Show the default error text. |
| var error_text = "<b>" + l10n.dl_error_problem_text + "</b>" |
| + l10n.dl_error_aoo_text + DL.VERSION_SEL |
| + l10n.dl_error_not_available_for_text |
| + "<b>" + DL.RELEASE_LANG[ 1 ] |
| + " (" + DL.RELEASE_LANG[ 2 ] + ") (" + DL.LANG_SEL + ")</b>." |
| + "<br />" |
| + "<b>" + l10n.dl_error_solution_text + "</b>" |
| + l10n.dl_error_please_select_4_text; |
| } else { |
| // Show the customized error text. |
| var error_text = l10n.dl_error_custom_4_text; |
| } |
| |
| DL.showErrorMessage( error_text ); |
| } |
| |
| // If the browser-guessed platform is not supported, show the none-availability to the user. |
| if( DL.UI_PLATFORM_NO_SUP !== "" ) { |
| // Show an error message that the chosen items do not lead to a download. |
| |
| // If a customized string is not available in the "msg_prop_l10n_XX.js" file. |
| if( l10n.dl_error_custom_3_text === "" ) { |
| // Show the default error text. |
| var error_text = "<b>" + l10n.dl_error_problem_text + "</b>" |
| + l10n.dl_error_aoo_text + DL.VERSION_SEL |
| + l10n.dl_error_not_available_for_text |
| + "<b>" + DL.UI_PLATFORM_NO_SUP + "</b>." |
| + "<br />" |
| + "<b>" + l10n.dl_error_solution_text + "</b>" |
| + l10n.dl_error_please_select_3_text; |
| } else { |
| // Show the customized error text. |
| var error_text = l10n.dl_error_custom_3_text; |
| } |
| |
| DL.showErrorMessage( error_text ); |
| } |
| |
| // If version is '4.1.0' (or newer) and platform is 'Mac OS X <= 10.6', show the none-availability to the user. |
| if( ( DL.VERSION_SEL === "4.1.1" || DL.VERSION_SEL === "4.1.0" ) && DL.PLATFORM === "mac32" ) { |
| // Show an error message that the chosen items do not lead to a download. |
| |
| // If a customized string is not available in the "msg_prop_l10n_XX.js" file. |
| if( l10n.dl_error_custom_1_text === "" ) { |
| // Show the default error text. |
| var error_text = "<b>" + l10n.dl_error_problem_text + "</b>" |
| + l10n.dl_error_aoo_text + DL.VERSION_SEL |
| + l10n.dl_error_not_available_for_text |
| + "<b>" + DL.UI_PLATFORM + "</b>." |
| + "<br />" |
| + "<b>" + l10n.dl_error_solution_text + "</b>" |
| + l10n.dl_error_please_select_1_text; |
| } else { |
| // Show the customized error text. |
| var error_text = l10n.dl_error_custom_1_text; |
| } |
| |
| DL.showErrorMessage( error_text ); |
| } |
| |
| // If version is '4.0.1' (or older) and platform is 'Mac OS X >= 10.7', show the none-availability to the user. |
| if( ( DL.VERSION_SEL === "4.0.1" || DL.VERSION_SEL === "4.0.0" ) && DL.PLATFORM === "mac64" ) { |
| // Show an error message that the chosen items do not lead to a download. |
| |
| // If a customized string is not available in the "msg_prop_l10n_XX.js" file. |
| if( l10n.dl_error_custom_2_text === "" ) { |
| // Show the default error text. |
| var error_text = "<b>" + l10n.dl_error_problem_text + "</b>" |
| + l10n.dl_error_aoo_text + DL.VERSION_SEL |
| + l10n.dl_error_not_available_for_text |
| + "<b>" + DL.UI_PLATFORM + "</b>." |
| + "<br />" |
| + "<b>" + l10n.dl_error_solution_text + "</b>" |
| + l10n.dl_error_please_select_2_text; |
| } else { |
| // Show the customized error text. |
| var error_text = l10n.dl_error_custom_2_text; |
| } |
| |
| DL.showErrorMessage( error_text ); |
| } |
| |
| // If version is '3.4.1', create a download link that leads to the "other-3.4.1.html" webpage. |
| if( DL.VERSION_SEL === "3.4.1" ) { |
| // In general, hide the data for link, text and title of all elements. |
| DL.hideElements(); |
| |
| // Set the values for the single download text button. |
| document.getElementById( "dl_f_link" ).href = l10n.dl_aoo341_link; |
| document.getElementById( "dl_f_link" ).innerHTML = l10n.dl_full_link_archive_text; |
| document.getElementById( "dl_f_link" ).title = l10n.dl_full_link_archive_title; |
| document.getElementById( "dl_f_link" ).style.cursor = "pointer"; |
| document.getElementById( "dl_f_link" ).style.display = "inline"; |
| document.getElementById( "dl_lp_link" ).style.display = "none"; |
| document.getElementById( "sub_box" ).style.display = "none"; |
| |
| DL.SHOW_SUB_BOX = false; |
| } |
| |
| // If platform is 'other', create a download link that leads to the Porting webpage. |
| if( DL.PLATFORM_SEL === "other" ) { |
| // In general, hide the data for link, text and title of all elements. |
| DL.hideElements(); |
| |
| // Set the values for the single download text button. |
| document.getElementById( "dl_f_link" ).href = l10n.dl_porting_link; |
| document.getElementById( "dl_f_link" ).innerHTML = l10n.dl_full_link_porting_text; |
| document.getElementById( "dl_f_link" ).title = l10n.dl_full_link_porting_title; |
| document.getElementById( "dl_f_link" ).style.cursor = "pointer"; |
| document.getElementById( "dl_f_link" ).style.display = "inline"; |
| document.getElementById( "dl_lp_link" ).style.display = "none"; |
| document.getElementById( "sub_box" ).style.display = "none"; |
| |
| DL.SHOW_SUB_BOX = false; |
| } |
| |
| // If version is 'older', create a download link that leads to the archive webpage. |
| if( DL.VERSION_SEL === "older" ) { |
| // In general, hide the data for link, text and title of all elements. |
| DL.hideElements(); |
| |
| // Set the values for the single download text button. |
| document.getElementById( "dl_f_link" ).href = l10n.dl_archive_link; |
| document.getElementById( "dl_f_link" ).innerHTML = l10n.dl_full_link_archive_text; |
| document.getElementById( "dl_f_link" ).title = l10n.dl_full_link_archive_title; |
| document.getElementById( "dl_f_link" ).style.cursor = "pointer"; |
| document.getElementById( "dl_f_link" ).style.display = "inline"; |
| document.getElementById( "dl_lp_link" ).style.display = "none"; |
| document.getElementById( "sub_box" ).style.display = "none"; |
| |
| DL.SHOW_SUB_BOX = false; |
| } |
| |
| // If version is 'source', create a download link that leads to the project webpage. |
| if( DL.VERSION_SEL === "source" ) { |
| // In general, hide the data for link, text and title of all elements. |
| DL.hideElements(); |
| |
| // Set the values for the single download text button. |
| document.getElementById( "dl_f_link" ).href = l10n.dl_source_link; |
| document.getElementById( "dl_f_link" ).innerHTML = l10n.dl_full_link_source_text; |
| document.getElementById( "dl_f_link" ).title = l10n.dl_full_link_source_title; |
| document.getElementById( "dl_f_link" ).style.cursor = "pointer"; |
| document.getElementById( "dl_f_link" ).style.display = "inline"; |
| document.getElementById( "dl_lp_link" ).style.display = "none"; |
| document.getElementById( "sub_box" ).style.display = "none"; |
| |
| DL.SHOW_SUB_BOX = false; |
| } |
| |
| return; |
| } |
| |
| /* |
| * Get link to mirror system for download file and checksum file |
| * @param: None |
| * @return: None |
| */ |
| DL.getLinkSelection = function() { |
| // Reset all variables that could have been set until now. |
| DL.initVariables( 0 ); |
| |
| // Get the selected data from the select boxes. |
| DL.getOSSelection(); |
| DL.getLanguageSelection(); |
| DL.getVersionSelection(); |
| |
| // First check for expections that do not lead to real download links. |
| DL.checkForLinkExceptions(); |
| |
| // If the selected options lead to no download URL, should the sub-box shown anyway? |
| // Yes when SHOW_SUB_BOX = "true" and ERROR = "false". |
| if( DL.SHOW_SUB_BOX && ! DL.ERROR ) { |
| // Assemble the filenames and text for download and checksums. |
| |
| DL.getReleaseMatrixPosition(); |
| DL.getFileData(); |
| |
| DL.SF_BASE_URL = DL.SF + DL.VERSION_SEL + "/binaries/"; |
| DL.ASF_ARC_BASE_URL = DL.ASF_ARC + DL.VERSION_SEL; |
| |
| // Assign the download links: Base link + language + file name. |
| DL.LINK_FULL = DL.SF_BASE_URL + DL.LANG_SEL + "/" + DL.FILENAME_FULL + "/download"; |
| DL.LINK_LP = DL.SF_BASE_URL + DL.LANG_SEL + "/" + DL.FILENAME_LP + "/download"; |
| |
| // Assign the checksum links: Base link + language + file name. |
| DL.LINK_CHK_KEYS = "people.apache.org/keys/group/openoffice.asc"; |
| DL.LINK_CHK_ASC_FULL = DL.ASF_ARC_BASE_URL + "/binaries/" + DL.LANG_SEL + "/" + DL.FILENAME_FULL + ".asc"; |
| DL.LINK_CHK_MD5_FULL = DL.ASF_ARC_BASE_URL + "/binaries/" + DL.LANG_SEL + "/" + DL.FILENAME_FULL + ".md5"; |
| DL.LINK_CHK_SHA256_FULL = DL.ASF_ARC_BASE_URL + "/binaries/" + DL.LANG_SEL + "/" + DL.FILENAME_FULL + ".sha256"; |
| |
| DL.LINK_CHK_ASC_LP = DL.ASF_ARC_BASE_URL + "/binaries/" + DL.LANG_SEL + "/" + DL.FILENAME_LP + ".asc"; |
| DL.LINK_CHK_MD5_LP = DL.ASF_ARC_BASE_URL + "/binaries/" + DL.LANG_SEL + "/" + DL.FILENAME_LP + ".md5"; |
| DL.LINK_CHK_SHA256_LP = DL.ASF_ARC_BASE_URL + "/binaries/" + DL.LANG_SEL + "/" + DL.FILENAME_LP + ".sha256"; |
| |
| // Indicate that a download will successfull. |
| DL.SHOW_SUB_BOX = true; |
| DL.ERROR = false; |
| |
| // Set the values for both download text buttons and set the focus to the "full install". |
| document.getElementById( "dl_f_link" ).href = DL.LINK_FULL; |
| document.getElementById( "dl_f_link" ).innerHTML = l10n.dl_full_link_text; |
| document.getElementById( "dl_f_link" ).title = l10n.dl_full_link_title + DL.FILENAME_FULL; |
| document.getElementById( "dl_f_link" ).focus() |
| document.getElementById( "dl_lp_link" ).href = DL.LINK_LP; |
| document.getElementById( "dl_lp_link" ).innerHTML = l10n.dl_langpack_link_text; |
| document.getElementById( "dl_lp_link" ).title = l10n.dl_langpack_link_title + DL.FILENAME_LP; |
| |
| // Set the values in the sub-box for the 4 text lines. |
| // #1 Release data and link to release notes. |
| document.getElementById( "dl_rel_info" ).innerHTML = "<b>" + l10n.dl_rel_info_headline_text |
| + "</b> " + DL.REL_TEXT + " | "; |
| document.getElementById( "dl_rel_notes" ).href = DL.REL_NOTES; |
| document.getElementById( "dl_rel_notes" ).innerHTML = l10n.dl_rel_notes_text; |
| document.getElementById( "dl_rel_notes" ).title = l10n.dl_rel_notes_title + DL.VERSION_SEL; |
| |
| // #2 Full install: Data and links |
| document.getElementById( "dl_f_info" ).innerHTML = "<b>" + l10n.dl_headline_full_text + "</b>" |
| + l10n.dl_filesize_text + DL.FILESIZE_FULL |
| + l10n.dl_megabyte_text + " | " |
| + l10n.dl_checksum_headline_text; |
| document.getElementById( "dl_f_chk_keys" ).href = DL.LINK_CHK_KEYS; |
| document.getElementById( "dl_f_chk_keys" ).innerHTML = l10n.dl_checksum_keys_text; |
| document.getElementById( "dl_f_chk_keys" ).title = l10n.dl_checksum_keys_title; |
| document.getElementById( "space1" ).innerHTML = " , "; |
| document.getElementById( "dl_f_chk_asc" ).href = DL.LINK_CHK_ASC_FULL; |
| document.getElementById( "dl_f_chk_asc" ).innerHTML = l10n.dl_checksum_asc_text; |
| document.getElementById( "dl_f_chk_asc" ).title = l10n.dl_checksum_asc_title + DL.FILENAME_FULL; |
| document.getElementById( "space2" ).innerHTML = " , "; |
| document.getElementById( "dl_f_chk_md5" ).href = DL.LINK_CHK_MD5_FULL; |
| document.getElementById( "dl_f_chk_md5" ).innerHTML = l10n.dl_checksum_md5_text; |
| document.getElementById( "dl_f_chk_md5" ).title = l10n.dl_checksum_md5_title + DL.FILENAME_FULL; |
| document.getElementById( "space3" ).innerHTML = " , "; |
| document.getElementById( "dl_f_chk_sha256" ).href = DL.LINK_CHK_SHA256_FULL; |
| document.getElementById( "dl_f_chk_sha256" ).innerHTML = l10n.dl_checksum_sha256_text; |
| document.getElementById( "dl_f_chk_sha256" ).title = l10n.dl_checksum_sha256_title + DL.FILENAME_FULL; |
| |
| // #3 Langpack: Data and links |
| document.getElementById( "dl_lp_info" ).innerHTML = "<b>" + l10n.dl_headline_langpack_text |
| + "</b>" + l10n.dl_filesize_text |
| + DL.FILESIZE_LP + l10n.dl_megabyte_text |
| + " | " + l10n.dl_checksum_headline_text; |
| document.getElementById( "dl_lp_chk_keys" ).href = DL.LINK_CHK_KEYS; |
| document.getElementById( "dl_lp_chk_keys" ).innerHTML = l10n.dl_checksum_keys_text; |
| document.getElementById( "dl_lp_chk_keys" ).title = l10n.dl_checksum_keys_title; |
| document.getElementById( "space4" ).innerHTML = " , "; |
| document.getElementById( "dl_lp_chk_asc" ).href = DL.LINK_CHK_ASC_LP; |
| document.getElementById( "dl_lp_chk_asc" ).innerHTML = l10n.dl_checksum_asc_text; |
| document.getElementById( "dl_lp_chk_asc" ).title = l10n.dl_checksum_asc_title + DL.FILENAME_LP; |
| document.getElementById( "space5" ).innerHTML = " , "; |
| document.getElementById( "dl_lp_chk_md5" ).href = DL.LINK_CHK_MD5_LP; |
| document.getElementById( "dl_lp_chk_md5" ).innerHTML = l10n.dl_checksum_md5_text; |
| document.getElementById( "dl_lp_chk_md5" ).title = l10n.dl_checksum_md5_title + DL.FILENAME_LP; |
| document.getElementById( "space6" ).innerHTML = " , "; |
| document.getElementById( "dl_lp_chk_sha256" ).href = DL.LINK_CHK_SHA256_LP; |
| document.getElementById( "dl_lp_chk_sha256" ).innerHTML = l10n.dl_checksum_sha256_text; |
| document.getElementById( "dl_lp_chk_sha256" ).title = l10n.dl_checksum_sha256_title + DL.FILENAME_LP; |
| |
| // #4 Links: Full vs. lp + verify checksums + report broken link. |
| document.getElementById( "dl_hlp_img" ).src = l10n.dl_help_img_src; |
| document.getElementById( "dl_hlp_img" ).title = l10n.dl_help_img_title; |
| document.getElementById( "dl_hlp_img" ).alt = l10n.dl_help_img_alt; |
| document.getElementById( "dl_hlp" ).href = l10n.dl_help_link; |
| document.getElementById( "dl_hlp" ).innerHTML = l10n.dl_help_text; |
| document.getElementById( "dl_hlp" ).title = l10n.dl_help_title; |
| document.getElementById( "dl_chk_img" ).src = l10n.dl_checksum_img_src; |
| document.getElementById( "dl_chk_img" ).title = l10n.dl_checksum_img_title; |
| document.getElementById( "dl_chk_img" ).alt = l10n.dl_checksum_img_alt; |
| document.getElementById( "dl_chk" ).href = l10n.dl_checksum_link; |
| document.getElementById( "dl_chk" ).innerHTML = l10n.dl_checksum_text; |
| document.getElementById( "dl_chk" ).title = l10n.dl_checksum_title; |
| document.getElementById( "dl_rpt_img" ).src = l10n.dl_report_img_src; |
| document.getElementById( "dl_rpt_img" ).title = l10n.dl_report_img_title; |
| document.getElementById( "dl_rpt_img" ).alt = l10n.dl_report_img_alt; |
| document.getElementById( "dl_rpt" ).href = l10n.dl_report_link; |
| document.getElementById( "dl_rpt" ).innerHTML = l10n.dl_report_text; |
| document.getElementById( "dl_rpt" ).title = l10n.dl_report_title; |
| |
| // Show the CSS style for the normal sub-box and hide all elements for error text. |
| document.getElementById( "sub_box" ).className = "sub-green-sel"; |
| document.getElementById( "dl_err_img" ).style.display = "none"; |
| document.getElementById( "dl_err" ).style.display = "none"; |
| |
| // Show all elements with ID in the box and sub-box. |
| // Set the cursor style for elements to default and make the elements visible. |
| for( var i = 0, j = DL.ID_SUB_BOX.length; i < j; i++ ) { |
| document.getElementById( DL.ID_SUB_BOX[ i ] ).style.display = "inline"; |
| document.getElementById( DL.ID_SUB_BOX[ i ] ).style.cursor = "default"; |
| } |
| |
| // Show all elements with link in the box and sub-box. |
| // Set the cursor style for elements with links to pointer and make the elements visible. |
| for( var i = 0, j = DL.ID_LINKS.length; i < j; i++ ) { |
| document.getElementById( DL.ID_LINKS[ i ] ).style.display = "inline"; |
| document.getElementById( DL.ID_LINKS[ i ] ).style.cursor = "pointer"; |
| } |
| |
| // Set the cursor style for the 3 links with icon to a help sign. |
| document.getElementById( "dl_hlp_img" ).style.cursor = "help"; |
| document.getElementById( "dl_hlp" ).style.cursor = "help"; |
| document.getElementById( "dl_chk_img" ).style.cursor = "help"; |
| document.getElementById( "dl_chk" ).style.cursor = "help"; |
| document.getElementById( "dl_rpt_img" ).style.cursor = "help"; |
| document.getElementById( "dl_rpt" ).style.cursor = "help"; |
| |
| // Make the sub-box and therefore all elements visible. |
| document.getElementById( "sub_box" ).style.display = "block"; |
| } |
| |
| return; |
| } |
| |
| /* |
| * Get platform of browser |
| * @param: None |
| * @return: None |
| */ |
| DL.getPlatform = function() { |
| // For more help or data see: "http://www.useragentstring.com". |
| |
| var av, os, ua, ve = ""; |
| |
| if( navigator.appVersion ) { |
| av = navigator.appVersion.toLowerCase(); // Get the application version in lower case. |
| } |
| if( navigator.platform ) { |
| os = navigator.platform.toLowerCase(); // Get the platform string in lower case. |
| } |
| if( navigator.userAgent ) { |
| ua = navigator.userAgent.toLowerCase(); // Get the user agent string in lower case. |
| } |
| if( navigator.vendor ) { |
| ve = navigator.vendor.toLowerCase(); // Get the vendor string in lower case. |
| } |
| |
| DL.UI_PLATFORM = ""; // Delete previously set string. |
| DL.UI_PLATFORM_NO_SUP = ""; // Delete previously set string. |
| DL.PLATFORM = ""; // Delete previously set string. |
| DL.EXTENSION = ""; // Delete previously set string. |
| |
| // Add ECMA262-5 array methods if not supported natively. |
| // To workaround that MSIE 8 and older do not support this function. |
| if( !( 'indexOf' in Array.prototype ) ) { |
| Array.prototype.indexOf= function( find, i ) { // 'i' is an optional parameter. |
| if( i === undefined ) { |
| i = 0; |
| } |
| if( i < 0 ) { |
| i+= this.length; |
| } |
| if( i < 0 ) { |
| i = 0; |
| } |
| for( var n = this.length; i < n; i++ ) { |
| if( i in this && this[ i ] === find ) { |
| return i; |
| } |
| } |
| return -1; |
| }; |
| } |
| |
| // If the browser's user agent string is set with something, try to recognize its content. |
| if( ua !== "" ) { |
| // Recognized but *not supported* platforms/OS, set $DL.UI_PLATFORM_NO_SUP to show it to the user. |
| |
| // Mobile devices. |
| if( ve ) { |
| if( ua.indexOf( "android" ) !== -1 ) |
| if( ua.indexOf( "nexus" ) !== -1 && |
| ve.indexOf( "google" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "Google Nexus"; |
| } |
| |
| if( ua.indexOf( "android" ) !== -1 ) { |
| if( ua.indexOf( "mobile" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "Mobile Devices (Android)"; |
| } |
| |
| if( os.indexOf( "arm" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "Mobile Devices (ARM processor)"; |
| if( ua.indexOf( "blackberry" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "Blackberry Smartphones"; |
| if( ua.indexOf( "brew" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "Smartphones (BREW)"; |
| if( ua.indexOf( "ce.net" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "Mobile Phones (Windows CE)"; |
| if( ua.indexOf( "galaxy" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "Samsung Galaxy"; |
| if( ua.indexOf( "hiptop" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "Smartphones (Hiptop)"; |
| if( ua.indexOf( "htc" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "HTC Mobile Devices"; |
| if( ua.indexOf( "ipad" ) !== -1 || |
| ua.indexOf( "iphone" ) !== -1 || |
| ua.indexOf( "ipod" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "Apple iPhone/iPad/iPod"; |
| if( ua.indexOf( "kindle" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "Amazon Kindle"; |
| if( ua.indexOf( "lg" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "LG Mobile Devices"; |
| if( ua.indexOf( "nokia" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "Mobile Phones (Nokia)"; |
| if( ua.indexOf( "palm" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "Mobile Phones (Palm OS)"; |
| if( ua.indexOf( "pike" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "Mobile Phones (Pike)"; |
| if( ua.indexOf( "s60" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "Mobile Phones (S60)"; |
| if( ua.indexOf( "sonyericsson" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "Sony/Ericsson Mobile Devices"; |
| if( ua.indexOf( "symbian" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "Mobile Phones (Symbian OS)"; |
| if( ua.indexOf( "symbos" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "Mobile Phones (Symbian OS)"; |
| if( ua.indexOf( "webos" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "Mobile Phones (Palm webOS)"; |
| if( ua.indexOf( "widerweb" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "Mobile Phones (WiderWeb)"; |
| if( os.indexOf( "win" ) !== -1 || |
| os.indexOf( "windows" ) !== -1 ) { |
| if( ua.indexOf( "mobile" ) !== -1 || |
| ua.indexOf( "phone" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "Smartphones (Windows Phone)"; |
| } |
| |
| // Other platforms. |
| if( os.indexOf( "aix" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "IBM AIX"; |
| if( os.indexOf( "alphaserver" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "AlphaServer"; |
| if( os.indexOf( "amiga" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "AmigaOS"; |
| if( os.indexOf( "darwin" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "Darwin"; |
| if( os.indexOf( "dragonfly" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "DragonFly BSD"; |
| if( os.indexOf( "freebsd" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "FreeBSD (PKG)"; |
| if( os.indexOf( "irix" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "IRIX"; |
| if( os.indexOf( "netbsd" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "NetBSD"; |
| if( ua.indexOf( "nintendo" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "Nintendo Game Console"; |
| if( os.indexOf( "openbsd" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "OpenBSD"; |
| if( os.indexOf( "os/2" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "OS/2"; |
| if( os.indexOf( "pcbsd" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "PC-BSD"; |
| if( ua.indexOf( "playstation" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "Sony Playstation"; |
| if( ua.indexOf( "psp" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "Sony Playstation Portable"; |
| if( os.indexOf( "qnx" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "QNX"; |
| if( os.indexOf( "vms" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "OpenVMS"; |
| if( ua.indexOf( "wii" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "Nintendo Wii Game Console"; |
| if( os.indexOf( "x11" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "unknown OS (X11 support)"; |
| |
| // Legacy, no longer supported platforms. |
| if( ua.indexOf( "power_pc" ) !== -1 || |
| ua.indexOf( "ppc" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "Mac OS PPC (DMG)"; |
| if( ua.indexOf( "sun4u" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "Solaris SPARC (PKG)"; |
| if( os.indexOf( "sunos" ) !== -1 ) DL.UI_PLATFORM_NO_SUP = "Solaris x86 (PKG)"; |
| |
| // If $DL.UI_PLATFORM_NO_SUP is already filled, something was recognized and no more work is needed. |
| if( DL.UI_PLATFORM_NO_SUP !== "" ) { |
| ERROR = true; |
| return DL.UI_PLATFORM_NO_SUP; |
| } |
| |
| // Recognized and *supported* platforms/OS, set $DL.UI_PLATFORM to show it to the user. |
| |
| // Windows? |
| if( os.indexOf( "win" ) !== -1 || |
| os.indexOf( "windows" ) !== -1 ) { DL.UI_PLATFORM = "Windows (EXE)"; |
| DL.PLATFORM = "win32"; |
| DL.EXTENSION = ".exe"; |
| } |
| |
| // Linux: x86 or x86-64, DEB or RPM? |
| if( os.indexOf( "linux" ) !== -1 ) { |
| // 32-bit: DEB or RPM? |
| if( os.indexOf( "x86" ) !== -1 || |
| os.indexOf( "i686" ) !== -1 || |
| os.indexOf( "i586" ) !== -1 || |
| os.indexOf( "i486" ) !== -1 || |
| os.indexOf( "i386" ) !== -1 || |
| av.indexOf( "x86" ) !== -1 || |
| av.indexOf( "i686" ) !== -1 || |
| av.indexOf( "i586" ) !== -1 || |
| av.indexOf( "i486" ) !== -1 || |
| av.indexOf( "i386" ) !== -1 ) { DL.UI_PLATFORM = "Linux 32-bit (x86) (RPM)"; |
| DL.PLATFORM = "lnx32r"; |
| DL.EXTENSION = ".tar.gz"; |
| if( ua.indexOf( "debian" ) !== -1 || |
| ua.indexOf( "iceweasel" ) !== -1 || |
| ua.indexOf( "ubuntu" ) !== -1 ) { DL.UI_PLATFORM = "Linux Debian 32-bit (x86) (DEB)"; |
| DL.PLATFORM = "lnx32d"; |
| DL.EXTENSION = ".tar.gz"; |
| } |
| } |
| |
| // 64-bit: DEB or RPM? |
| if( os.indexOf( "_64" ) !== -1 || |
| os.indexOf( "-64" ) !== -1 || |
| os.indexOf( "x64" ) !== -1 || |
| os.indexOf( "amd64" ) !== -1 || |
| av.indexOf( "_64" ) !== -1 || |
| av.indexOf( "-64" ) !== -1 || |
| av.indexOf( "x64" ) !== -1 || |
| av.indexOf( "amd64" ) !== -1 ) { DL.UI_PLATFORM = "Linux 64-bit (x86-64) (RPM)"; |
| DL.PLATFORM = "lnx64r"; |
| DL.EXTENSION = ".tar.gz"; |
| if( ua.indexOf( "debian" ) !== -1 || |
| ua.indexOf( "iceweasel" ) !== -1 || |
| ua.indexOf( "ubuntu" ) !== -1 ) { DL.UI_PLATFORM = "Linux Debian 64-bit (x86-64) (DEB)"; |
| DL.PLATFORM = "lnx64d"; |
| DL.EXTENSION = ".tar.gz"; |
| } |
| } |
| } |
| |
| // Mac OS X? |
| if( os.indexOf( "mac" ) !== -1 ) { DL.UI_PLATFORM = "OS X 64-bit (x86-64) (DMG)"; |
| DL.PLATFORM = "mac64"; |
| DL.EXTENSION = ".dmg"; |
| // OS X: 10.6 or older? |
| if( ua.indexOf( "10.6" ) !== -1 || |
| ua.indexOf( "10_6" ) !== -1 || |
| ua.indexOf( "10.5" ) !== -1 || |
| ua.indexOf( "10_5" ) !== -1 || |
| ua.indexOf( "10.4" ) !== -1 || |
| ua.indexOf( "10_4" ) !== -1 || |
| ua.indexOf( "10.3" ) !== -1 || |
| ua.indexOf( "10_3" ) !== -1 ) { DL.UI_PLATFORM = "Mac OS X (Version <= 10.6)"; |
| DL.PLATFORM = "mac32"; |
| } |
| } |
| } |
| |
| // If nothing was recognized until now, set $DL.UI_PLATFORM_NO_SUP to show it to the user. |
| if( DL.UI_PLATFORM === "" ) { |
| DL.UI_PLATFORM_NO_SUP = l10n.dl_unknown_platform_text; |
| DL.ERROR = true; |
| } |
| |
| return; |
| } |
| |
| /* |
| * Get positions of platform in release matrix |
| * @param: None |
| * @return: None |
| */ |
| DL.getReleaseMatrixPosition = function() { |
| // Depending on $PLATFORM, assign the platform position from the release matrix. |
| |
| switch( DL.PLATFORM ) { |
| case "lnx64d": |
| DL.RELEASE_PLATFORM_POS_FULL = 1; |
| DL.RELEASE_PLATFORM_POS_LP = 2; |
| DL.PLATFORM_FULL = "Linux_x86-64_install-deb"; |
| DL.PLATFORM_LP = "Linux_x86-64_langpack-deb"; |
| break; |
| case "lnx64r": |
| DL.RELEASE_PLATFORM_POS_FULL = 3; |
| DL.RELEASE_PLATFORM_POS_LP = 4; |
| DL.PLATFORM_FULL = "Linux_x86-64_install-rpm"; |
| DL.PLATFORM_LP = "Linux_x86-64_langpack-rpm"; |
| break; |
| case "lnx32d": |
| DL.RELEASE_PLATFORM_POS_FULL = 5; |
| DL.RELEASE_PLATFORM_POS_LP = 6; |
| DL.PLATFORM_FULL = "Linux_x86_install-deb"; |
| DL.PLATFORM_LP = "Linux_x86_langpack-deb"; |
| break; |
| case "lnx32r": |
| DL.RELEASE_PLATFORM_POS_FULL = 7; |
| DL.RELEASE_PLATFORM_POS_LP = 8; |
| DL.PLATFORM_FULL = "Linux_x86_install-rpm"; |
| DL.PLATFORM_LP = "Linux_x86_langpack-rpm"; |
| break; |
| case "mac64": |
| DL.RELEASE_PLATFORM_POS_FULL = 9; |
| DL.RELEASE_PLATFORM_POS_LP = 10; |
| DL.PLATFORM_FULL = "MacOS_x86-64_install"; |
| DL.PLATFORM_LP = "MacOS_x86-64_langpack"; |
| break; |
| case "mac32": |
| DL.RELEASE_PLATFORM_POS_FULL = 9; |
| DL.RELEASE_PLATFORM_POS_LP = 10; |
| DL.PLATFORM_FULL = "MacOS_x86_install"; |
| DL.PLATFORM_LP = "MacOS_x86_langpack"; |
| break; |
| case "win32": |
| DL.RELEASE_PLATFORM_POS_FULL = 11; |
| DL.RELEASE_PLATFORM_POS_LP = 12; |
| DL.PLATFORM_FULL = "Win_x86_install"; |
| DL.PLATFORM_LP = "Win_x86_langpack"; |
| break; |
| default: |
| DL.RELEASE_PLATFORM_POS_FULL = -1; |
| DL.RELEASE_PLATFORM_POS_LP = -1; |
| DL.ERROR = true; |
| } |
| |
| return; |
| } |
| |
| /* |
| * Get file name for download file |
| * @param: version - The version to use to get the file data |
| * @return: None |
| */ |
| DL.getFileData = function() { |
| // Depending on $ver, a different release matrix has to be used to assemble the download filenames. |
| |
| // Generate variable name: string + version number without dots (e.g., "411" instead of "4.1.1"). |
| var release_matrix_version = "release_matrix_" + DL.VERSION_SEL_RAW; |
| |
| // Assign all values from the release matrix of language and platform. |
| DL.RELEASE_PLATFORM = DL[ release_matrix_version ][ DL.LANG_ISO ][ DL.RELEASE_PLATFORM_POS_FULL ]; |
| |
| // Assemble filename: Product name + version + platform as URL part + language ISO + file extension. |
| DL.FILENAME_FULL = "Apache_OpenOffice_" + DL.VERSION_SEL + "_" + DL.PLATFORM_FULL + "_" + DL.LANG_ISO + DL.EXTENSION; |
| DL.FILENAME_LP = "Apache_OpenOffice_" + DL.VERSION_SEL + "_" + DL.PLATFORM_LP + "_" + DL.LANG_ISO + DL.EXTENSION; |
| |
| // Assign the file size (column 2) from the release matrix of language and platform. |
| DL.FILESIZE_FULL = DL[ release_matrix_version ][ DL.LANG_ISO ][ DL.RELEASE_PLATFORM_POS_FULL ][ 1 ]; |
| DL.FILESIZE_LP = DL[ release_matrix_version ][ DL.LANG_ISO ][ DL.RELEASE_PLATFORM_POS_LP ][ 1 ]; |
| |
| // Assign all values from the release data. |
| DL.REL_TEXT = l10n.dl_rel_info_milestone_text + DL[ release_matrix_version ][ "src" ][ 1 ][ 0 ] |
| + " | " + l10n.dl_rel_info_buildid_text + DL[ release_matrix_version ][ "src" ][ 1 ][ 1 ] |
| + " | " + l10n.dl_rel_info_svn_text + DL[ release_matrix_version ][ "src" ][ 1 ][ 2 ] |
| + " | " + l10n.dl_rel_info_rel_date_text + DL[ release_matrix_version ][ "src" ][ 1 ][ 3 ]; |
| |
| // Assign the link for release notes, depending on the version. |
| // Generate variable name: string + version number without dots (e.g., "411" instead of "4.1.1"). |
| DL.REL_NOTES = l10n[ "dl_rel_notes_aoo" + DL.VERSION_SEL_RAW + "_link" ]; |
| |
| return; |
| } |
| |
| /* |
| * Set document.location to start the download |
| * @param: itemid, uri - The ID of the colored box and the URI that should be opened |
| * @return: None |
| */ |
| function openItem( itemid, uri ) { |
| // var thisDocument = document.getElementById( "downloadextendedtext" ); |
| // var thisDocument = document.getElementById( itemid ); |
| document.location = uri; |
| } |
| |
| /* |
| * Output values of variables for debugging |
| * @param: location - The location where the debug utput should take place |
| * @return: None |
| */ |
| DL.debug = function( location ) { |
| // Depending on the current position in the code, show the values for the variables as alert box. |
| // If the alert box is too large, just comment out the lines that are not needed at the moment. |
| // Usage: |
| // Call the function in the code position you want to debug. |
| // Example: |
| // DL.debug( "name the exact code position"); |
| |
| if( location === "" ) { |
| location = "No location named!"; |
| } |
| |
| alert( location + "\n" |
| + "RELEASE_MODE: " + "\t\t\t\t\t\t" + DL.RELEASE_MODE + "\n" |
| + "NL_LANG: " + "\t\t\t\t\t\t\t" + DL.NL_LANG + "\n" |
| + "LANG_ISO: " + "\t\t\t\t\t\t" + DL.LANG_ISO + "\n" |
| + "LANG_SEL: " + "\t\t\t\t\t\t" + DL.LANG_SEL + "\n" |
| + "UI_PLATFORM: " + "\t\t\t\t\t\t" + DL.UI_PLATFORM + "\n" |
| + "UI_PLATFORM_NO_SUP: " + "\t\t\t\t" + DL.UI_PLATFORM_NO_SUP + "\n" |
| + "PLATFORM: " + "\t\t\t\t\t\t" + DL.PLATFORM + "\n" |
| + "PLATFORM_FULL: " + "\t\t\t\t\t" + DL.PLATFORM_FULL + "\n" |
| + "PLATFORM_LP: " + "\t\t\t\t\t\t" + DL.PLATFORM_LP + "\n" |
| + "PLATFORM_SEL: " + "\t\t\t\t\t\t" + DL.PLATFORM_SEL + "\n" |
| + "RELEASE_PLATFORM_POS_FULL: " + "\t\t\t" + DL.RELEASE_PLATFORM_POS_FULL + "\n" |
| + "RELEASE_PLATFORM_POS_LP: " + "\t\t\t" + DL.RELEASE_PLATFORM_POS_LP + "\n" |
| + "RELEASE_PLATFORM: " + "\t\t\t\t\t" + DL.RELEASE_PLATFORM + "\n" |
| + "RELEASE_LANG: " + "\t\t\t\t\t\t" + DL.RELEASE_LANG + "\n" |
| + "REL_TEXT: " + "\t\t\t\t\t\t\t" + DL.REL_TEXT + "\n" |
| + "REL_NOTES: " + "\t\t\t\t\t\t" + DL.REL_NOTES + "\n" |
| + "VERSION_SEL: " + "\t\t\t\t\t\t" + DL.VERSION_SEL + "\n" |
| + "VERSION_SEL_RAW: " + "\t\t\t\t\t" + DL.VERSION_SEL_RAW + "\n" |
| + "FILENAME_FULL: " + "\t\t\t\t\t" + DL.FILENAME_FULL + "\n" |
| + "FILENAME_LP: " + "\t\t\t\t\t\t" + DL.FILENAME_LP + "\n" |
| + "FILESIZE_FULL: " + "\t\t\t\t\t\t" + DL.FILESIZE_FULL + "\n" |
| + "FILESIZE_LP: " + "\t\t\t\t\t\t" + DL.FILESIZE_LP + "\n" |
| + "EXTENSION: " + "\t\t\t\t\t\t" + DL.EXTENSION + "\n" |
| + "LINK_FULL: " + "\t\t\t\t\t\t" + DL.LINK_FULL + "\n" |
| + "LINK_LP: " + "\t\t\t\t\t\t\t" + DL.LINK_LP + "\n" |
| + "LINK_CHK_ASC_FULL: " + "\t\t\t\t\t" + DL.LINK_CHK_ASC_FULL + "\n" |
| + "LINK_CHK_MD5_FULL: " + "\t\t\t\t\t" + DL.LINK_CHK_MD5_FULL + "\n" |
| + "LINK_CHK_SHA256_FULL: " + "\t\t\t\t" + DL.LINK_CHK_SHA256_FULL + "\n" |
| + "LINK_CHK_ASC_LP: " + "\t\t\t\t\t" + DL.LINK_CHK_ASC_LP + "\n" |
| + "LINK_CHK_MD5_LP: " + "\t\t\t\t\t" + DL.LINK_CHK_MD5_LP + "\n" |
| + "LINK_CHK_SHA256_LP: " + "\t\t\t\t" + DL.LINK_CHK_SHA256_LP + "\n" |
| + "SHOW_SUB_BOX: " + "\t\t\t\t\t" + DL.SHOW_SUB_BOX + "\n" |
| + "ERROR: " + "\t\t\t\t\t\t\t" + DL.ERROR + "\n" ); |
| |
| return; |
| } |
| |