You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by bu...@apache.org on 2014/07/12 18:14:57 UTC

svn commit: r915915 [2/2] - in /websites/staging/ooo-site/trunk: cgi-bin/ content/ content/download/download.js

Modified: websites/staging/ooo-site/trunk/content/download/download.js
==============================================================================
--- websites/staging/ooo-site/trunk/content/download/download.js (original)
+++ websites/staging/ooo-site/trunk/content/download/download.js Sat Jul 12 16:14:57 2014
@@ -1,29 +1,32 @@
 /*
- * Overview of all functions defined below
- * ----------------------------------------------------
+ * Overview of all methods (functions) defined below of the global object "DL"
+ * ---------------------------------------------------------------------------
+ * function DL.initVariables		()
+ * 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		( version )
+ * function DL.debug			( location )
+ *
+ * Overview of global functions defined below
+ * ------------------------------------------
  * function init			()
- * function initVariables		()
- * function getLanguage			()
- * function fillOSSelection		()
- * function fillLanguageSelection	()
- * function fillVersionSelection	()
- * function getOSSelection		()
- * function getLanguageSelection	()
- * function getVersionSelection		()
- * function setOSSelection		()
- * function setLanguageSelection	()
- * function setVersionSelection		()
- * function hideElements		()
- * function showWindow			( target_link )
- * function showErrorMessage		( error_text )
- * function isLanguageSupported		()
- * function checkForLinkExceptions	()
- * function getLinkSelection		()
- * function getPlatform			()
- * function getReleaseMatrixPosition	()
- * function getFileData			( version )
  * function openItem			( itemid, uri )
- * function debug			( location )
  */
 
 /*
@@ -31,31 +34,31 @@
  * @param:  release_mode - The release mode (stable, beta, etc.) that the scriping should work with
  * @return: None
  */
-function init( release_mode ) {
+DL.init = function( release_mode ) {
 	// Set global variables.
-	initVariables( 1 );
+	DL.initVariables( 1 );
 
 	// Fill the OS, language and version select boxes.
-	fillOSSelection();
-	fillLanguageSelection();
-	fillVersionSelection();
+	DL.fillOSSelection();
+	DL.fillLanguageSelection();
+	DL.fillVersionSelection();
 
 	// Get the language and platform from the browser data.
-	getLanguage();
-	getPlatform();
+	DL.getLanguage();
+	DL.getPlatform();
 
 	// Set the recognized platform and language as default.
-	setOSSelection();
-	setLanguageSelection();
-	setVersionSelection();
+	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 ) {
-		RELEASE_MODE = mode;
+		DL.RELEASE_MODE = mode;
 	}
 
-	getLinkSelection();
+	DL.getLinkSelection();
 
 	return;
 }
@@ -65,64 +68,64 @@ function init( release_mode ) {
  * @param:  init_all - Should all variables initialized or just a part?
  * @return: None
  */
-function initVariables( init_all ) {
+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.
-	element_ids_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 green and sub-box that have a link.
-	element_ids_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" ];
+	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.
 
 	// All global variables.
 	if( init_all === 1 ) {
-		RELEASE_MODE		= 1;	 // The release mode (1 = stable release (default), 2 = beta release, etc.).
-		LANG_ISO		= "";	 // The language as ISO code.
-		LANG_SEL		= "";	 // The selected language as ISO code from select box.
-		UI_PLATFORM_NO_SUP	= "";	 // The platform as readable string, if not supported.
-		PLATFORM_SEL		= "";	 // The selected platform from select box.
-		VERSION_SEL		= "";	 // The selected version from select box.
-	}
-
-	UI_PLATFORM			= "";	 // The platform as readable string.
-	PLATFORM			= "";	 // The platform in short form.
-	PLATFORM_FULL			= "";	 // The platform as part of the download URL (full install).
-	PLATFORM_LP			= "";	 // The platform as part of the download URL (langpack).
-	RELEASE_PLATFORM_POS_FULL	= -1;	 // The position of the platform in the release matrix array (full install).
-	RELEASE_PLATFORM_POS_LP		= -1;	 // The position of the platform in the release matrix array (langpack).
-	RELEASE_PLATFORM		= "";	 // The platform in the release matrix array.
-	RELEASE_LANG			= "";	 // The language specific data depending on LANG_ISO.
-	REL_TEXT			= "";	 // The release data (milestone, build ID, svn rev, release date).
-	REL_NOTES			= "";	 // The complete URL for the release notes (depends on version).
-	FILENAME_FULL			= "";	 // The complete filename of the download URL (full install).
-	FILENAME_LP			= "";	 // The complete filename of the download URL (langpack).
-	FILESIZE_FULL			= -1;	 // The filesize of the download file (full install).
-	FILESIZE_LP			= -1;	 // The filesize of the download file (langpack).
-	EXTENSION			= "";	 // The file extension of the download URL.
-	SOURCEFORGE_BASE_URL		= "";	 // The base URL for all binary files on Sourceforge.
-	SOURCEFORGE_PREV_URL		= "";	 // The base URL for all binary files (prev. version) on Sourceforge.
-	ASF_ARC_BASE_URL		= "";	 // The base URL for all checksum files on Apache Archive server.
-	ASF_ARC_PREV_URL		= "";	 // The base URL for all checksum files (prev. version) on Apache Archive server.
-	ASF_WIKI_URL			= "";	 // The base URL for all release notes on Apache Wiki.
-	LINK_FULL			= "";	 // The complete download URL (full install).
-	LINK_LP				= "";	 // The complete download URL (langpack).
-	LINK_CHK_KEYS			= "";	 // The KEYS file as download URL.
-	LINK_CHK_ASC_FULL		= "";	 // The ASC file as download URL (full install).
-	LINK_CHK_MD5_FULL		= "";	 // The MD5 file as download URL (full install).
-	LINK_CHK_SHA256_FULL		= "";	 // The SHA256 file as download URL (full install).
-	LINK_CHK_ASC_LP			= "";	 // The ASC file as download URL (langpack).
-	LINK_CHK_MD5_LP			= "";	 // The MD5 file as download URL (langpack).
-	LINK_CHK_SHA256_LP		= "";	 // The SHA256 file as download URL (langpack).
-	SHOW_SUB_BOX			= true;	 // Is the download URL OK to show the sub-box (true) or not (false)?
-	ERROR				= false; // Is the download URL in general OK (false) or not (true)?
+		DL.RELEASE_MODE		= 1;	 // The release mode (1 = stable release (default), 2 = beta release, etc.).
+		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.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;
 }
@@ -130,18 +133,18 @@ function initVariables( init_all ) {
 /*
  * Get array and ISO code for language
  * @param:  None
- * @return: LANG_ISO - The language as ISO code
+ * @return: DL.LANG_ISO - The language as ISO code
  */
-function getLanguage() {
+DL.getLanguage = function() {
 	var language = "";
 
 	// If available, use the manual set ISO code (see "index.html") that overrides $LANG_ISO.
-	if( NL_LANG !== "" ) {
-		language = NL_LANG;
+	if( DL.NL_LANG !== "" ) {
+		language = DL.NL_LANG;
 
 	// Else if available, use the selected language from select box.
-	} else if( LANG_SEL !== "" ) {
-		language = LANG_SEL;
+	} else if( DL.LANG_SEL !== "" ) {
+		language = DL.LANG_SEL;
 
 	// Else try to recognize the language from browser data.
 	} else if( navigator.language ) {
@@ -169,17 +172,17 @@ function getLanguage() {
 		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	= languages[ languageCode ];	// Assign the complete language data of the language code.
+	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	= languages[ languageCode ];
+		thisLanguageSet	= DL.language_matrix[ languageCode ];
 	}
 
 	if( regionCode != null ) {
@@ -200,7 +203,7 @@ function getLanguage() {
 				// Special case: If language code is "en" then assign "en-US" for all "en-XX" cases.
 				language	= "en-US";
 				regionCode	= "us";
-				thisLanguageSet	= languages[ languageCode ];
+				thisLanguageSet	= DL.language_matrix[ languageCode ];
 				thisLanguage	= thisLanguageSet[ regionCode ];
 			} else {
 				// Else assign the language code as language.
@@ -212,8 +215,8 @@ function getLanguage() {
 		thisLanguage = thisLanguageSet[ "-" ];
 	}
 
-	LANG_ISO = language;
-	return LANG_ISO;
+	DL.LANG_ISO = language;
+	return DL.LANG_ISO;
 }
 
 /*
@@ -221,18 +224,29 @@ function getLanguage() {
  * @param:  None
  * @return: None
  */
-function fillOSSelection() {
-	var selection_os = document.getElementById( "os" );
-	var option	 = "";
+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 = SEL_OS.length; i < j; i = i + 3 ) {
-		option       = document.createElement( "option" );
+	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 = SEL_OS[ i ];
+		option.value = DL.SEL_OS[ i ];
 		// Assign the UI platform name.
-		option.text  = SEL_OS[ i + 1 ];
-		selection_os.appendChild( option );
+		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 only the default UI platform name with the localized name.
+			selection.options[ i ].text = l10n.dl_green_box_select_box_os_values[ i ];
+		}
 	}
 
 	return;
@@ -243,18 +257,31 @@ function fillOSSelection() {
  * @param:  None
  * @return: None
  */
-function fillLanguageSelection() {
-	var selection_language = document.getElementById( "language" );
-	var option	       = "";
+DL.fillLanguageSelection = function() {
+	var selection = document.getElementById( "language" );
+	var option    = "";
 
 	// Fill the <select> element until all languages are used.
-	for( var i = 0, j = SEL_LANG.length; i < j; i = i + 2 ) {
+	for( var i = 0, j = DL.SEL_LANG.length; i < j; i = i + 2 ) {
 		option       = document.createElement( "option" );
 		// Assign the language ISO code as index value.
-		option.value = SEL_LANG[ i ];
-		// Assign the UI name like "English (Native) (ISO code)".
-		option.text  = SEL_LANG[ i + 1 ];
-		selection_language.appendChild( option );
+		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 ];
+		// 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 only the default language name with the localized name.
+			selection.options[ i ].text = l10n.dl_green_box_select_box_language_values[ i ];
+		}
 	}
 
 	return;
@@ -265,18 +292,29 @@ function fillLanguageSelection() {
  * @param:  None
  * @return: None
  */
-function fillVersionSelection() {
-	var selection_version = document.getElementById( "version" );
-	var option	      = "";
+DL.fillVersionSelection = function() {
+	var selection = document.getElementById( "version" );
+	var option    = "";
 
 	// Fill the <select> element until all versions are used.
-	for( var i = 0, j = SEL_VER.length; i < j; i = i + 2 ) {
+	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 = SEL_VER[ i ];
+		option.value = DL.SEL_VER[ i ];
 		// Assign the UI version.
-		option.text  = SEL_VER[ i + 1 ];
-		selection_version.appendChild( option );
+		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 only the default version name with the localized name.
+			selection.options[ i ].text = l10n.dl_green_box_select_box_version_values[ i ];
+		}
 	}
 
 	return;
@@ -285,169 +323,172 @@ function fillVersionSelection() {
 /*
  * Set value in the <select> element for OS (select box)
  * @param:  None
- * @return: PLATFORM_SEL - The platform as short code that was set as selected in the drop-down box
+ * @return: DL.PLATFORM_SEL - The platform as short code that was set as selected in the drop-down box
  */
-function setOSSelection() {
-	// Depending on $PLATFORM assign the platform string of the release matrix.
-	var selection_os = document.getElementById( "os" );
+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 = SEL_OS.length; i < j; i = i + 3 ) {
-		// If the platform was found, assign the found index to the select box.
-		if( SEL_OS[ i ] === PLATFORM ) {
-			selection_os.selectedIndex = i / 3;
+	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_os.selectedIndex === 0 ) {
+	if( selection.selectedIndex === 0 ) {
 		// Default: Assign "Windows".
-		for( var i = 0, j = SEL_OS.length; i < j; i = i + 3 ) {
-			// If the platform was found, assign the found index to the select box.
-			if( SEL_OS[ i ] === "Win_x86_install" ) {
-				selection_os.selectedIndex = i / 3;
+		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;
 			}
 		}
 	}
 
-	PLATFORM_SEL = selection_os.value;
-	return PLATFORM_SEL;
+	DL.PLATFORM_SEL = selection.value;
+	return DL.PLATFORM_SEL;
 }
 
 /*
  * Set value in the <select> element for language (select box)
  * @param:  None
- * @return: LANG_SEL - The language as ISO code that was set as selected in the drop-down box
+ * @return: DL.LANG_SEL - The language as ISO code that was set as selected in the drop-down box
  */
-function setLanguageSelection() {
-	// Depending on $LANG_ISO assign the language position of the release matrix.
-	var selection_language = document.getElementById( "language" );
-	var language_found     = false;
+DL.setLanguageSelection = function() {
+	// Depending on $DL.LANG_ISO assign the language position of the release matrix.
+
+	var selection = document.getElementById( "language" );
+	var found     = false;
 
 	// Set the recognized browser language as default for the select box.
-	for( var i = 0, j = SEL_LANG.length; i < j; i = i + 2 ) {
-		// If the language was found, assign the found index to the select box.
-		if( SEL_LANG[ i ] === LANG_ISO ) {
-			selection_language.selectedIndex = i / 2;
-			language_found = true;
+	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 ] === DL.LANG_ISO ) {
+			selection.selectedIndex = i / 2;
+			found = true;
 			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( ! language_found ) {
+	if( ! found ) {
 		// Default: Assign "en-US".
-		for( var i = 0, j = SEL_LANG.length; i < j; i = i + 2 ) {
-			// If the language was found, assign the found index to the select box.
-			if( SEL_LANG[ i ] === "en-US" ) {
-				selection_language.selectedIndex = i / 2;
+		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;
 			}
 		}
 	}
 
-	LANG_SEL = selection_language.value;
-	return LANG_SEL;
+	DL.LANG_SEL = selection.value;
+	return DL.LANG_SEL;
 }
 
 /*
  * Set value in the <select> element for version (select box)
  * @param:  None
- * @return: VERSION_SEL - The version that was set as selected in the drop-down box
+ * @return: DL.VERSION_SEL - The version that was set as selected in the drop-down box
  */
-function setVersionSelection() {
-	// Depending on $VERSION assign the version.
-	var selection_version = document.getElementById( "version" );
-
-	// Set the value of $VERSION as default for the select box.
-	for( var i = 0, j = SEL_VER.length; i < j; i = i + 2 ) {
-		// If the version was found, assign the found index to the select box.
-		if( SEL_VER[ i ] === VERSION ) {
-			selection_version.selectedIndex = i/2;
+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;
 		}
 	}
 
 	// If no version was set as global variable,
 	// assign the most recent version as default.
-	if( selection_version.selectedIndex === 0 ) {
+	if( selection.selectedIndex === 0 ) {
 		// Default: Assign "4.1.0".
-		for( var i = 0; i < SEL_VER.length; i = i + 2 ) {
-			// If the version was found, assign the found index to the select box.
-			if( SEL_VER[ i ] === "4.1.0" ) {
-				selection_version.selectedIndex = i / 2;
+		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 ] === "4.1.0" ) {
+				selection.selectedIndex = i / 2;
 				break;
 			}
 		}
 	}
 
-	VERSION_SEL = selection_version.value;
-	return VERSION_SEL;
+	DL.VERSION_SEL = selection.value;
+	return DL.VERSION_SEL;
 }
 
 /*
  * Get values from the <select> element for OS (select box)
  * @param:  None
- * @return: PLATFORM_SEL - The platform as short code that was selected from the drop-down box
+ * @return: DL.PLATFORM_SEL - The platform as short code that was selected from the drop-down box
  */
-function getOSSelection() {
-	var os_value = document.download.os.options[document.download.os.selectedIndex].value;
+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 = SEL_OS.length; i < j; i = i + 3 ) {
-		if( SEL_OS[ i ] === os_value ) {
-			PLATFORM_SEL	= SEL_OS[ i ];
-			UI_PLATFORM	= SEL_OS[ i + 1 ];
-			EXTENSION	= SEL_OS[ i + 2 ];
+	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;
 		}
 	}
 
-	PLATFORM = PLATFORM_SEL;
-	return PLATFORM_SEL;
+	DL.PLATFORM = DL.PLATFORM_SEL;
+	return DL.PLATFORM_SEL;
 }
 
 /*
  * Get values from the <select> element for language (select box)
  * @param:  None
- * @return: LANG_SEL - The language as ISO code that was selected from the drop-down box
+ * @return: DL.LANG_SEL - The language as ISO code that was selected from the drop-down box
  */
-function getLanguageSelection() {
-	var language_value = document.download.language.options[document.download.language.selectedIndex].value;
+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 = SEL_LANG.length; i < j; i = i + 2 ) {
-		if( SEL_LANG[ i ] === language_value ) {
-			LANG_SEL = language_value;
+	for( var i = 0, j = DL.SEL_LANG.length; i < j; i = i + 2 ) {
+		if( DL.SEL_LANG[ i ] === language_value ) {
+			DL.LANG_SEL = language_value;
 			break;
 		}
 	}
 
-	LANG_ISO = LANG_SEL;
-	return LANG_SEL;
+	DL.LANG_ISO = DL.LANG_SEL;
+	return DL.LANG_SEL;
 }
 
 /*
  * Get values from the <select> element for version (select box)
  * @param:  None
- * @return: VERSION_SEL - The version that was selected from the drop-down box
+ * @return: DL.VERSION_SEL - The version that was selected from the drop-down box
  */
-function getVersionSelection() {
-	var version_value = document.download.version.options[document.download.version.selectedIndex].value;
+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 = SEL_VER.length; i < j; i = i + 2 ) {
-		if( SEL_VER[ i ] === version_value ) {
-			VERSION_SEL = version_value;
+	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;
 		}
 	}
 
-	return VERSION_SEL;
+	return DL.VERSION_SEL;
 }
 
 /*
@@ -455,15 +496,16 @@ function getVersionSelection() {
  * @param:  None
  * @return: None
  */
-function hideElements() {
+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 = element_ids_sub_box.length; i < j; i++ ) {
-		document.getElementById( element_ids_sub_box[ i ] ).style.display = "none";
+
+	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 = element_ids_links.length; i < j; i++ ) {
-		document.getElementById( element_ids_links[ 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;
@@ -474,8 +516,9 @@ function hideElements() {
  * @param:  target_link - The URL that should be opened as popup window
  * @return: None
  */
-function showWindow( target_link ) {
+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" );
@@ -486,30 +529,30 @@ function showWindow( target_link ) {
 
 /*
  * Show error message
- * @param:  error_text - The text should should be shown as error message
- * @return: ERROR      - Set the general error flag to "true"
+ * @param:  error_text   - The text should should be shown as error message
+ * @return: DL.ERROR - Set the general error flag to "true"
  */
-function showErrorMessage( error_text ) {
-	// The chosen items from select boxes lead to no download link, show an error message about reason and alternative.
+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.
-	hideElements();
+	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_download_full_link_error_text;
-	document.getElementById( "dl_f_link"	).title		 = l10n_download_full_link_error_title;
+	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_download_langpack_link_error_text;
-	document.getElementById( "dl_lp_link"	).title		 = l10n_download_langpack_link_error_title;
+	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_download_error_problem_img_src;
-	document.getElementById( "dl_err_img"   ).title		 = l10n_download_error_problem_img_title;
-	document.getElementById( "dl_err_img"   ).alt		 = l10n_download_error_problem_img_alt;
+	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";
@@ -521,44 +564,47 @@ function showErrorMessage( error_text ) 
 
 	// Delete previously set string to get the possibility back to choose a different platform
 	// and then to assemble a new download link.
-	UI_PLATFORM_NO_SUP = "";
-	SHOW_SUB_BOX	   = true;
-	ERROR		   = true;
-	return ERROR;
+	DL.UI_PLATFORM_NO_SUP	= "";
+	DL.SHOW_SUB_BOX		= true;
+	DL.ERROR		= true;
+	return DL.ERROR;
 }
 
 /*
- * Is flag set for chosen language (y/n)?
+ * Is support flag set for chosen language and version (y/n)?
  * @param:  None
- * @return: ERROR - Depending on if the language is supported set the general error flag to "true" or "false"
+ * @return: DL.ERROR - Depending on if the language is supported set the general error flag to "true" or "false"
  */
-function isLanguageSupported() {
-	// Check the flag in "release_matrix.js", 'y' -> provide download link, 'n' -> redirect to alternative webpage.
+DL.isLanguageSupported = function() {
+	// Check if the language in "release_matrix.js" is a release language depending on the version.
 
-	if( VERSION_SEL === undefined || VERSION_SEL === "" ) {
-		VERSION_SEL = VERSION;
+	// If no VERSION was selected, assume the default version.
+	if( DL.VERSION_SEL === undefined || DL.VERSION_SEL === "" ) {
+		DL.VERSION_SEL = DL.VERSION;
 	}
 
-	switch( VERSION_SEL ) {
+	// Get the release matrix depending on the version.
+	switch( DL.VERSION_SEL ) {
 		case "4.1.0":
-			RELEASE_LANG = release_410[ LANG_ISO ][ 0 ];
+			DL.RELEASE_LANG = DL.release_matrix_410[ DL.LANG_ISO ][ 0 ];
 			break;
 		case "4.0.1":
-			RELEASE_LANG = release_401[ LANG_ISO ][ 0 ];
+			DL.RELEASE_LANG = DL.release_matrix_401[ DL.LANG_ISO ][ 0 ];
 			break;
 		case "4.0.0":
-			RELEASE_LANG = release_400[ LANG_ISO ][ 0 ];
+			DL.RELEASE_LANG = DL.release_matrix_400[ DL.LANG_ISO ][ 0 ];
 			break;
 		default:
-			RELEASE_LANG = "";
-			ERROR	     = true;
+			DL.RELEASE_LANG	= "";
+			DL.ERROR	= true;
 	}
 
-	if( RELEASE_LANG[ 3 ] === 'y' ) {
-		ERROR = false;
+	// If the flag = 'y' then the language is supported, otherwise not.
+	if( DL.RELEASE_LANG[ 3 ] === 'y' ) {
+		DL.ERROR = false;
 		return true;
 	} else {
-		ERROR = true;
+		DL.ERROR = true;
 		return false;
 	}
 }
@@ -568,150 +614,151 @@ function isLanguageSupported() {
  * @param:  None
  * @return: None
  */
-function checkForLinkExceptions() {
+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.
 
-	SHOW_SUB_BOX   = true;
-	ERROR	       = false;
+	DL.SHOW_SUB_BOX	= true;
+	DL.ERROR	= false;
 
 	// If language is not supported, show the none-availability to the user.
-	if( ! isLanguageSupported() ) {
+	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_download_error_custom_4_text === "" ) {
+		if( l10n.dl_error_custom_4_text === "" ) {
 			// Show the default error text.
-			var error_text = "<b>" + l10n_download_error_problem_text + "</b>"
-					+ l10n_download_error_aoo_text + VERSION_SEL
-					+ l10n_download_error_not_available_for_text
-					+ "<b>" + RELEASE_LANG[ 1 ] + " (" + RELEASE_LANG[ 2 ] + ") (" + LANG_SEL + ")</b>."
+			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_download_error_solution_text + "</b>"
-					+ l10n_download_error_please_select_4_text;
+					+ "<b>" + l10n.dl_error_solution_text + "</b>"
+					+ l10n.dl_error_please_select_4_text;
 		} else {
 			// Show the customized error text.
-			var error_text = l10n_download_error_custom_4_text;
+			var error_text = l10n.dl_error_custom_4_text;
 		}
 
-		showErrorMessage( error_text );
+		DL.showErrorMessage( error_text );
 	}
 
 	// If the browser-guessed platform is not supported, show the none-availability to the user.
-	if( UI_PLATFORM_NO_SUP !== "" ) {
+	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_download_error_custom_3_text === "" ) {
+		if( l10n.dl_error_custom_3_text === "" ) {
 			// Show the default error text.
-			var error_text = "<b>" + l10n_download_error_problem_text + "</b>"
-					+ l10n_download_error_aoo_text + VERSION_SEL
-					+ l10n_download_error_not_available_for_text
-					+ "<b>" + UI_PLATFORM_NO_SUP + "</b>."
+			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_download_error_solution_text + "</b>"
-					+ l10n_download_error_please_select_3_text;
+					+ "<b>" + l10n.dl_error_solution_text + "</b>"
+					+ l10n.dl_error_please_select_3_text;
 		} else {
 			// Show the customized error text.
-			var error_text = l10n_download_error_custom_3_text;
+			var error_text = l10n.dl_error_custom_3_text;
 		}
 
-		showErrorMessage( error_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( VERSION_SEL === "4.1.0" && PLATFORM === "mac32" ) {
+	if( 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_download_error_custom_1_text === "" ) {
+		if( l10n.dl_error_custom_1_text === "" ) {
 			// Show the default error text.
-			var error_text = "<b>" + l10n_download_error_problem_text + "</b>"
-					+ l10n_download_error_aoo_text + VERSION_SEL
-					+ l10n_download_error_not_available_for_text
-					+ "<b>" + UI_PLATFORM + "</b>."
+			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_download_error_solution_text + "</b>"
-					+ l10n_download_error_please_select_1_text;
+					+ "<b>" + l10n.dl_error_solution_text + "</b>"
+					+ l10n.dl_error_please_select_1_text;
 		} else {
 			// Show the customized error text.
-			var error_text = l10n_download_error_custom_1_text;
+			var error_text = l10n.dl_error_custom_1_text;
 		}
 
-		showErrorMessage( error_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( ( VERSION_SEL === "4.0.1" || VERSION_SEL === "4.0.0" ) && PLATFORM === "mac64" ) {
+	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_download_error_custom_2_text === "" ) {
+		if( l10n.dl_error_custom_2_text === "" ) {
 			// Show the default error text.
-			var error_text = "<b>" + l10n_download_error_problem_text + "</b>"
-					+ l10n_download_error_aoo_text + VERSION_SEL
-					+ l10n_download_error_not_available_for_text
-					+ "<b>" + UI_PLATFORM + "</b>."
+			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_download_error_solution_text + "</b>"
-					+ l10n_download_error_please_select_2_text;
+					+ "<b>" + l10n.dl_error_solution_text + "</b>"
+					+ l10n.dl_error_please_select_2_text;
 		} else {
 			// Show the customized error text.
-			var error_text = l10n_download_error_custom_2_text;
+			var error_text = l10n.dl_error_custom_2_text;
 		}
 
-		showErrorMessage( error_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( VERSION_SEL === "3.4.1" ) {
+	if( DL.VERSION_SEL === "3.4.1" ) {
 		// In general, hide the data for link, text and title of all elements.
-		hideElements();
+		DL.hideElements();
 
 		// Set the values for the single download text button.
-		document.getElementById( "dl_f_link"	).href		= l10n_download_aoo341_link;
-		document.getElementById( "dl_f_link"	).innerHTML	= l10n_download_full_link_archive_text;
-		document.getElementById( "dl_f_link"	).title		= l10n_download_full_link_archive_title;
+		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";
 
-		SHOW_SUB_BOX = false;
+		DL.SHOW_SUB_BOX = false;
 	}
 
 	// If platform is 'other', create a download link that leads to the Porting webpage.
-	if( PLATFORM_SEL === "other" ) {
+	if( DL.PLATFORM_SEL === "other" ) {
 		// In general, hide the data for link, text and title of all elements.
-		hideElements();
+		DL.hideElements();
 
 		// Set the values for the single download text button.
-		document.getElementById( "dl_f_link"	).href		= l10n_download_porting_link;
-		document.getElementById( "dl_f_link"	).innerHTML	= l10n_download_full_link_porting_text;
-		document.getElementById( "dl_f_link"	).title		= l10n_download_full_link_porting_title;
+		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";
 
-		SHOW_SUB_BOX = false;
+		DL.SHOW_SUB_BOX = false;
 	}
 
 	// If version is 'older', create a download link that leads to the archive webpage.
-	if( VERSION_SEL === "older" ) {
+	if( DL.VERSION_SEL === "older" ) {
 		// In general, hide the data for link, text and title of all elements.
-		hideElements();
+		DL.hideElements();
 
 		// Set the values for the single download text button.
-		document.getElementById( "dl_f_link"	).href		= l10n_download_archive_link;
-		document.getElementById( "dl_f_link"	).innerHTML	= l10n_download_full_link_archive_text;
-		document.getElementById( "dl_f_link"	).title		= l10n_download_full_link_archive_title;
+		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";
 
-		SHOW_SUB_BOX = false;
+		DL.SHOW_SUB_BOX = false;
 	}
 
 	return;
@@ -722,146 +769,155 @@ function checkForLinkExceptions() {
  * @param:  None
  * @return: None
  */
-function getLinkSelection() {
+DL.getLinkSelection = function() {
 	// Reset all variables that could have been set until now.
-	initVariables( 0 );
+	DL.initVariables( 0 );
 
 	// Get the selected data from the select boxes.
-	getOSSelection();
-	getLanguageSelection();
-	getVersionSelection();
+	DL.getOSSelection();
+	DL.getLanguageSelection();
+	DL.getVersionSelection();
 
 	// First check for expections that do not lead to real download links.
-	checkForLinkExceptions();
+	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( SHOW_SUB_BOX && ! ERROR ) {
+	if( DL.SHOW_SUB_BOX && ! DL.ERROR ) {
 		// Assemble the filenames and text for download and checksums.
-		getReleaseMatrixPosition();
-		getFileData( VERSION_SEL );
 
-		SOURCEFORGE_BASE_URL = SOURCEFORGE + VERSION_SEL + "/binaries/";
-		ASF_ARC_BASE_URL     = ASF_ARC     + VERSION_SEL;
+		DL.getReleaseMatrixPosition();
+		DL.getFileData( DL.VERSION_SEL );
 
-		// Assign the file name (column 3) from the release matrix of language and platform.
-		LINK_FULL	     = SOURCEFORGE_BASE_URL		  + LANG_SEL + "/" + FILENAME_FULL  + "/download";
-		LINK_LP		     = SOURCEFORGE_BASE_URL		  + LANG_SEL + "/" + FILENAME_LP    + "/download";
-
-		LINK_CHK_KEYS	     = "http://people.apache.org/keys/group/openoffice.asc";
-		LINK_CHK_ASC_FULL    = ASF_ARC_BASE_URL  + "/binaries/"   + LANG_SEL + "/" + FILENAME_FULL + ".asc";
-		LINK_CHK_MD5_FULL    = ASF_ARC_BASE_URL  + "/binaries/"   + LANG_SEL + "/" + FILENAME_FULL + ".md5";
-		LINK_CHK_SHA256_FULL = ASF_ARC_BASE_URL  + "/binaries/"   + LANG_SEL + "/" + FILENAME_FULL + ".sha256";
-
-		LINK_CHK_ASC_LP	     = ASF_ARC_BASE_URL  + "/binaries/"   + LANG_SEL + "/" + FILENAME_LP   + ".asc";
-		LINK_CHK_MD5_LP	     = ASF_ARC_BASE_URL  + "/binaries/"   + LANG_SEL + "/" + FILENAME_LP   + ".md5";
-		LINK_CHK_SHA256_LP   = ASF_ARC_BASE_URL  + "/binaries/"   + LANG_SEL + "/" + FILENAME_LP   + ".sha256";
+		DL.SF_BASE_URL		= DL.SF      + DL.VERSION_SEL + "/binaries/";
+		DL.ASF_ARC_BASE_URL     = DL.ASF_ARC + DL.VERSION_SEL;
 
-		SHOW_SUB_BOX	     = true;
-		ERROR		     = false;
+		// 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	     = "http://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	= LINK_FULL;
-		document.getElementById( "dl_f_link"	    ).innerHTML	= l10n_download_full_link_text;
-		document.getElementById( "dl_f_link"	    ).title	= l10n_download_full_link_title + FILENAME_FULL;
+		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	= LINK_LP;
-		document.getElementById( "dl_lp_link"	    ).innerHTML	= l10n_download_langpack_link_text;
-		document.getElementById( "dl_lp_link"	    ).title	= l10n_download_langpack_link_title + FILENAME_LP;
-
-		// Set the values in the sub-box for the 3 text lines.
-		document.getElementById( "dl_rel_info"      ).innerHTML	= "<b>" + l10n_download_rel_info_headline_text
-									+ "</b> " + REL_TEXT + " | ";
-		document.getElementById( "dl_rel_notes"	    ).href	= REL_NOTES;
-		document.getElementById( "dl_rel_notes"	    ).innerHTML	= l10n_download_rel_notes_text;
-		document.getElementById( "dl_rel_notes"	    ).title	= l10n_download_rel_notes_title + VERSION_SEL;
-		document.getElementById( "dl_f_info"	    ).innerHTML = "<b>" + l10n_download_headline_full_text + "</b>"
-									+ l10n_download_filesize_text + FILESIZE_FULL
-									+ l10n_download_megabyte_text + " | "
-									+ l10n_download_checksum_headline_text;
-		document.getElementById( "dl_f_chk_keys"    ).href	= LINK_CHK_KEYS;
-		document.getElementById( "dl_f_chk_keys"    ).innerHTML	= l10n_download_checksum_keys_text;
-		document.getElementById( "dl_f_chk_keys"    ).title	= l10n_download_checksum_keys_title;
+		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	= LINK_CHK_ASC_FULL;
-		document.getElementById( "dl_f_chk_asc"	    ).innerHTML	= l10n_download_checksum_asc_text;
-		document.getElementById( "dl_f_chk_asc"	    ).title	= l10n_download_checksum_asc_title + FILENAME_FULL;
+		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	= LINK_CHK_MD5_FULL;
-		document.getElementById( "dl_f_chk_md5"	    ).innerHTML	= l10n_download_checksum_md5_text;
-		document.getElementById( "dl_f_chk_md5"	    ).title	= l10n_download_checksum_md5_title + FILENAME_FULL;
+		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	= LINK_CHK_SHA256_FULL;
-		document.getElementById( "dl_f_chk_sha256"  ).innerHTML	= l10n_download_checksum_sha256_text;
-		document.getElementById( "dl_f_chk_sha256"  ).title	= l10n_download_checksum_sha256_title + FILENAME_FULL;
-		document.getElementById( "dl_lp_info"	    ).innerHTML	= "<b>" + l10n_download_headline_langpack_text
-									+ "</b>" + l10n_download_filesize_text
-									+ FILESIZE_LP + l10n_download_megabyte_text
-									+ " | " + l10n_download_checksum_headline_text;
-		document.getElementById( "dl_lp_chk_keys"   ).href	= LINK_CHK_KEYS;
-		document.getElementById( "dl_lp_chk_keys"   ).innerHTML	= l10n_download_checksum_keys_text;
-		document.getElementById( "dl_lp_chk_keys"   ).title	= l10n_download_checksum_keys_title;
+		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	= LINK_CHK_ASC_LP;
-		document.getElementById( "dl_lp_chk_asc"    ).innerHTML	= l10n_download_checksum_asc_text;
-		document.getElementById( "dl_lp_chk_asc"    ).title	= l10n_download_checksum_asc_title + FILENAME_LP;
+		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	= LINK_CHK_MD5_LP;
-		document.getElementById( "dl_lp_chk_md5"    ).innerHTML	= l10n_download_checksum_md5_text;
-		document.getElementById( "dl_lp_chk_md5"    ).title	= l10n_download_checksum_md5_title + FILENAME_LP;
+		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	= LINK_CHK_SHA256_LP;
-		document.getElementById( "dl_lp_chk_sha256" ).innerHTML	= l10n_download_checksum_sha256_text;
-		document.getElementById( "dl_lp_chk_sha256" ).title	= l10n_download_checksum_sha256_title + FILENAME_LP;
-
-		// Set the values in the sub-box below the 3 text lines.
-		document.getElementById( "dl_hlp_img"	    ).src	= l10n_download_help_img_src;
-		document.getElementById( "dl_hlp_img"	    ).title	= l10n_download_help_img_title;
-		document.getElementById( "dl_hlp_img"	    ).alt	= l10n_download_help_img_alt;
-		document.getElementById( "dl_hlp"	    ).href	= l10n_download_help_link;
-		document.getElementById( "dl_hlp"	    ).innerHTML	= l10n_download_help_text;
-		document.getElementById( "dl_hlp"	    ).title	= l10n_download_help_title;
-		document.getElementById( "dl_chk_img"	    ).src	= l10n_download_checksum_img_src;
-		document.getElementById( "dl_chk_img"	    ).title	= l10n_download_checksum_img_title;
-		document.getElementById( "dl_chk_img"	    ).alt	= l10n_download_checksum_img_alt;
-		document.getElementById( "dl_chk"	    ).href	= l10n_download_checksum_link;
-		document.getElementById( "dl_chk"	    ).innerHTML	= l10n_download_checksum_text;
-		document.getElementById( "dl_chk"	    ).title	= l10n_download_checksum_title;
-		document.getElementById( "dl_rpt_img"	    ).src	= l10n_download_report_img_src;
-		document.getElementById( "dl_rpt_img"	    ).title	= l10n_download_report_img_title;
-		document.getElementById( "dl_rpt_img"	    ).alt	= l10n_download_report_img_alt;
-		document.getElementById( "dl_rpt"	    ).href	= l10n_download_report_link;
-		document.getElementById( "dl_rpt"	    ).innerHTML	= l10n_download_report_text;
-		document.getElementById( "dl_rpt"	    ).title	= l10n_download_report_title;
-
-		// Hide the CSS styles for the elements in the sub-green colored boxes.
-		document.getElementById( "sub_box"	    ).className	       = "sub-green-sel";
-		document.getElementById( "dl_err_img"	    ).style.display    = "none";
-		document.getElementById( "dl_err"	    ).style.display    = "none";
+		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";
 
-		// Change CSS styles for all elements with ID in the green and sub-green colored boxes.
+		// 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 = element_ids_sub_box.length; i < j; i++ ) {
-			document.getElementById( element_ids_sub_box[ i ] ).style.display = "inline";
-			document.getElementById( element_ids_sub_box[ i ] ).style.cursor  = "default";
+		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 = element_ids_links.length; i < j; i++ ) {
-			document.getElementById( element_ids_links[ i ] ).style.display	  = "inline";
-			document.getElementById( element_ids_links[ i ] ).style.cursor	  = "pointer";
+		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";
+		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";
+		document.getElementById( "sub_box"	    ).style.display = "block";
 	}
 
 	return;
@@ -872,26 +928,28 @@ function getLinkSelection() {
  * @param:  None
  * @return: None
  */
-function getPlatform() {
+DL.getPlatform = function() {
 	// For more help or data see: "http://www.useragentstring.com".
 
+	var av, os, ua, ve = "";
+	
 	if( navigator.appVersion ) {
-		var av	   = navigator.appVersion.toLowerCase();	// Get the application version in lower case.
+		av		= navigator.appVersion.toLowerCase();	// Get the application version in lower case.
 	}
 	if( navigator.platform ) {
-		var os	   = navigator.platform.toLowerCase();		// Get the platform string in lower case.
+		os		= navigator.platform.toLowerCase();	// Get the platform string in lower case.
 	}
 	if( navigator.userAgent ) {
-		var ua	   = navigator.userAgent.toLowerCase();		// Get the user agent string in lower case.
+		ua		= navigator.userAgent.toLowerCase();	// Get the user agent string in lower case.
 	}
 	if( navigator.vendor ) {
-		var ve	   = navigator.vendor.toLowerCase();		// Get the vendor string in lower case.
+		ve		= navigator.vendor.toLowerCase();	// Get the vendor string in lower case.
 	}
 
-	UI_PLATFORM	   = "";					// Delete previously set string.
-	UI_PLATFORM_NO_SUP = "";					// Delete previously set string.
-	PLATFORM	   = "";					// Delete previously set string.
-	EXTENSION	   = "";					// Delete previously set string.
+	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.
@@ -917,85 +975,85 @@ function getPlatform() {
 
 	// 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 $UI_PLATFORM_NO_SUP to show it to the user.
+		// 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 )	UI_PLATFORM_NO_SUP	= "Google Nexus";
+			    ve.indexOf( "google"	) !== -1 )	DL.UI_PLATFORM_NO_SUP	= "Google Nexus";
 		}
 
 		if( ua.indexOf( "android"		) !== -1 ) {
-		    if( ua.indexOf( "mobile"		) !== -1 )	UI_PLATFORM_NO_SUP	= "Mobile Devices (Android)";
+		    if( ua.indexOf( "mobile"		) !== -1 )	DL.UI_PLATFORM_NO_SUP	= "Mobile Devices (Android)";
 		}
 
-		if( os.indexOf( "arm"			) !== -1 )	UI_PLATFORM_NO_SUP	= "Mobile Devices (ARM processor)";
-		if( ua.indexOf( "blackberry"		) !== -1 )	UI_PLATFORM_NO_SUP	= "Blackberry Smartphones";
-		if( ua.indexOf( "brew"			) !== -1 )	UI_PLATFORM_NO_SUP	= "Smartphones (BREW)";
-		if( ua.indexOf( "ce.net"		) !== -1 )	UI_PLATFORM_NO_SUP	= "Mobile Phones (Windows CE)";
-		if( ua.indexOf( "galaxy"		) !== -1 )	UI_PLATFORM_NO_SUP	= "Samsung Galaxy";
-		if( ua.indexOf( "hiptop"		) !== -1 )	UI_PLATFORM_NO_SUP	= "Smartphones (Hiptop)";
-		if( ua.indexOf( "htc"			) !== -1 )	UI_PLATFORM_NO_SUP	= "HTC Mobile Devices";
+		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 )	UI_PLATFORM_NO_SUP	= "Apple iPhone/iPad/iPod";
-		if( ua.indexOf( "kindle"		) !== -1 )	UI_PLATFORM_NO_SUP	= "Amazon Kindle";
-		if( ua.indexOf( "lg"			) !== -1 )	UI_PLATFORM_NO_SUP	= "LG Mobile Devices";
-		if( ua.indexOf( "nokia"			) !== -1 )	UI_PLATFORM_NO_SUP	= "Mobile Phones (Nokia)";
-		if( ua.indexOf( "palm"			) !== -1 )	UI_PLATFORM_NO_SUP	= "Mobile Phones (Palm OS)";
-		if( ua.indexOf( "pike"			) !== -1 )	UI_PLATFORM_NO_SUP	= "Mobile Phones (Pike)";
-		if( ua.indexOf( "s60"	        	) !== -1 )	UI_PLATFORM_NO_SUP	= "Mobile Phones (S60)";
-		if( ua.indexOf( "sonyericsson"		) !== -1 )	UI_PLATFORM_NO_SUP	= "Sony/Ericsson Mobile Devices";
-		if( ua.indexOf( "symbian"		) !== -1 )	UI_PLATFORM_NO_SUP	= "Mobile Phones (Symbian OS)";
-		if( ua.indexOf( "symbos"		) !== -1 )	UI_PLATFORM_NO_SUP	= "Mobile Phones (Symbian OS)";
-		if( ua.indexOf( "webos"			) !== -1 )	UI_PLATFORM_NO_SUP	= "Mobile Phones (Palm webOS)";
-		if( ua.indexOf( "widerweb"		) !== -1 )	UI_PLATFORM_NO_SUP	= "Mobile Phones (WiderWeb)";
+		    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 )	UI_PLATFORM_NO_SUP	= "Smartphones (Windows Phone)";
+			    ua.indexOf( "phone"		) !== -1 )	DL.UI_PLATFORM_NO_SUP	= "Smartphones (Windows Phone)";
 		}
 
 		// Other platforms.
-		if( os.indexOf( "aix"			) !== -1 )	UI_PLATFORM_NO_SUP	= "IBM AIX";
-		if( os.indexOf( "alphaserver"		) !== -1 )	UI_PLATFORM_NO_SUP	= "AlphaServer";
-		if( os.indexOf( "amiga"			) !== -1 )	UI_PLATFORM_NO_SUP	= "AmigaOS";
-		if( os.indexOf( "darwin"		) !== -1 )	UI_PLATFORM_NO_SUP	= "Darwin";
-		if( os.indexOf( "dragonfly"		) !== -1 )	UI_PLATFORM_NO_SUP	= "DragonFly BSD";
-		if( os.indexOf( "freebsd"		) !== -1 )	UI_PLATFORM_NO_SUP	= "FreeBSD (PKG)";
-		if( os.indexOf( "irix"			) !== -1 )	UI_PLATFORM_NO_SUP	= "IRIX";
-		if( os.indexOf( "netbsd"		) !== -1 )	UI_PLATFORM_NO_SUP	= "NetBSD";
-		if( ua.indexOf( "nintendo"		) !== -1 )	UI_PLATFORM_NO_SUP	= "Nintendo Game Console";
-		if( os.indexOf( "openbsd"		) !== -1 )	UI_PLATFORM_NO_SUP	= "OpenBSD";
-		if( os.indexOf( "os/2"			) !== -1 )	UI_PLATFORM_NO_SUP	= "OS/2";
-		if( os.indexOf( "pcbsd"			) !== -1 )	UI_PLATFORM_NO_SUP	= "PC-BSD";
-		if( ua.indexOf( "playstation"		) !== -1 )	UI_PLATFORM_NO_SUP	= "Sony Playstation";
-		if( ua.indexOf( "psp"			) !== -1 )	UI_PLATFORM_NO_SUP	= "Sony Playstation Portable";
-		if( os.indexOf( "qnx"			) !== -1 )	UI_PLATFORM_NO_SUP	= "QNX";
-		if( os.indexOf( "vms"			) !== -1 )	UI_PLATFORM_NO_SUP	= "OpenVMS";
-		if( ua.indexOf( "wii"			) !== -1 )	UI_PLATFORM_NO_SUP	= "Nintendo Wii Game Console";
-		if( os.indexOf( "x11"			) !== -1 )	UI_PLATFORM_NO_SUP	= "unknown OS (X11 support)";
+		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 )	UI_PLATFORM_NO_SUP	= "Mac OS PPC (DMG)";
-		if( ua.indexOf( "sun4u"			) !== -1 )	UI_PLATFORM_NO_SUP	= "Solaris SPARC (PKG)";
-		if( os.indexOf( "sunos"			) !== -1 )	UI_PLATFORM_NO_SUP	= "Solaris x86 (PKG)";
+		    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 $UI_PLATFORM_NO_SUP is already filled, something was recognized and no more work is needed.
-		if( UI_PLATFORM_NO_SUP !== "" ) {
+		// 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 UI_PLATFORM_NO_SUP;
+			return DL.UI_PLATFORM_NO_SUP;
 		}
 
-		// Recognized and *supported* platforms/OS, set $UI_PLATFORM to show it to the user.
+		// 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 ) {	UI_PLATFORM	= "Windows (EXE)";
-									PLATFORM	= "win32";
-									EXTENSION	= ".exe";
+		    os.indexOf( "windows"		) !== -1 ) {	DL.UI_PLATFORM		= "Windows (EXE)";
+									DL.PLATFORM		= "win32";
+									DL.EXTENSION		= ".exe";
 		}
 
 		// Linux: x86 or x86-64, DEB or RPM?
@@ -1010,14 +1068,14 @@ function getPlatform() {
 			    av.indexOf( "i686"		) !== -1 ||
 			    av.indexOf( "i586"		) !== -1 ||
 			    av.indexOf( "i486"		) !== -1 ||
-			    av.indexOf( "i386"		) !== -1 ) {	UI_PLATFORM	= "Linux 32-bit (x86) (RPM)";
-									PLATFORM	= "lnx32r";
-									EXTENSION	= ".tar.gz";
+			    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 ) {	UI_PLATFORM	= "Linux Debian 32-bit (x86) (DEB)";
-									PLATFORM	= "lnx32d";
-									EXTENSION	= ".tar.gz";
+				 ua.indexOf( "ubuntu"	 ) !== -1 ) {	DL.UI_PLATFORM		= "Linux Debian 32-bit (x86) (DEB)";
+									DL.PLATFORM		= "lnx32d";
+									DL.EXTENSION		= ".tar.gz";
 			     }
 			}
 
@@ -1029,22 +1087,22 @@ function getPlatform() {
 			    av.indexOf( "_64"		) !== -1 ||
 			    av.indexOf( "-64"		) !== -1 ||
 			    av.indexOf( "x64"		) !== -1 ||
-			    av.indexOf( "amd64"		) !== -1 ) {	UI_PLATFORM	= "Linux 64-bit (x86-64) (RPM)";
-									PLATFORM	= "lnx64r";
-									EXTENSION	= ".tar.gz";
+			    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 ) {	UI_PLATFORM	= "Linux Debian 64-bit (x86-64) (DEB)";
-									PLATFORM	= "lnx64d";
-									EXTENSION	= ".tar.gz";
+				 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 ) {	UI_PLATFORM	= "OS X 64-bit (x86-64) (DMG)";
-									PLATFORM	= "mac64";
-									EXTENSION	= ".dmg";
+		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 ||
@@ -1053,16 +1111,16 @@ function getPlatform() {
 			    ua.indexOf( "10.4"		) !== -1 ||
 			    ua.indexOf( "10_4"		) !== -1 ||
 			    ua.indexOf( "10.3"		) !== -1 ||
-			    ua.indexOf( "10_3"		) !== -1 ) {	UI_PLATFORM	= "Mac OS X (Version <= 10.6)";
-									PLATFORM	= "mac32";
+			    ua.indexOf( "10_3"		) !== -1 ) {	DL.UI_PLATFORM		= "Mac OS X (Version <= 10.6)";
+									DL.PLATFORM		= "mac32";
 			}
 		} 
 	} 
 
-	// If nothing was recognized until now, set $UI_PLATFORM_NO_SUP to show it to the user.
-	if( UI_PLATFORM === "" ) {
-		UI_PLATFORM_NO_SUP = l10n_download_unknown_platform_text;
-		ERROR		   = true;
+	// 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;
@@ -1073,55 +1131,56 @@ function getPlatform() {
  * @param:  None
  * @return: None
  */
-function getReleaseMatrixPosition() {
+DL.getReleaseMatrixPosition = function() {
 	// Depending on $PLATFORM, assign the platform position from the release matrix.
-	switch( PLATFORM ) {
+
+	switch( DL.PLATFORM ) {
 		case "lnx64d":
-			RELEASE_PLATFORM_POS_FULL = 1;
-			RELEASE_PLATFORM_POS_LP	  = 2;
-			PLATFORM_FULL		  = "Linux_x86-64_install-deb";
-			PLATFORM_LP		  = "Linux_x86-64_langpack-deb";
+			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":
-			RELEASE_PLATFORM_POS_FULL = 3;
-			RELEASE_PLATFORM_POS_LP	  = 4;
-			PLATFORM_FULL		  = "Linux_x86-64_install-rpm";
-			PLATFORM_LP		  = "Linux_x86-64_langpack-rpm";
+			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":
-			RELEASE_PLATFORM_POS_FULL = 5;
-			RELEASE_PLATFORM_POS_LP	  = 6;
-			PLATFORM_FULL		  = "Linux_x86_install-deb";
-			PLATFORM_LP		  = "Linux_x86_langpack-deb";
+			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":
-			RELEASE_PLATFORM_POS_FULL = 7;
-			RELEASE_PLATFORM_POS_LP	  = 8;
-			PLATFORM_FULL		  = "Linux_x86_install-rpm";
-			PLATFORM_LP		  = "Linux_x86_langpack-rpm";
+			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":
-			RELEASE_PLATFORM_POS_FULL = 9;
-			RELEASE_PLATFORM_POS_LP	  = 10;
-			PLATFORM_FULL		  = "MacOS_x86-64_install";
-			PLATFORM_LP		  = "MacOS_x86-64_langpack";
+			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":
-			RELEASE_PLATFORM_POS_FULL = 9;
-			RELEASE_PLATFORM_POS_LP	  = 10;
-			PLATFORM_FULL		  = "MacOS_x86_install";
-			PLATFORM_LP		  = "MacOS_x86_langpack";
+			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":
-			RELEASE_PLATFORM_POS_FULL = 11;
-			RELEASE_PLATFORM_POS_LP	  = 12;
-			PLATFORM_FULL		  = "Win_x86_install";
-			PLATFORM_LP		  = "Win_x86_langpack";
+			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:
-			RELEASE_PLATFORM_POS_FULL = -1;
-			RELEASE_PLATFORM_POS_LP	  = -1;
-			ERROR			  = true;
+			DL.RELEASE_PLATFORM_POS_FULL	= -1;
+			DL.RELEASE_PLATFORM_POS_LP	= -1;
+			DL.ERROR			= true;
 	}
 
 	return;
@@ -1132,83 +1191,84 @@ function getReleaseMatrixPosition() {
  * @param:  version - The version to use to get the file data
  * @return: None
  */
-function getFileData( version ) {
+DL.getFileData = function( version ) {
 	// Depending on $ver, a different release matrix has to be used to assemble the download filenames.
+
 	switch( version ) {
 		case "4.1.0":
 			// Assign all values from the release matrix of language and platform.
-			RELEASE_PLATFORM = release_410[ LANG_ISO ][ RELEASE_PLATFORM_POS_FULL ];
+			DL.RELEASE_PLATFORM	= DL.release_matrix_410[ DL.LANG_ISO ][ DL.RELEASE_PLATFORM_POS_FULL ];
 
 			// Assemble filename: Product name + version + platform as URL part + language ISO + file extension.
-			FILENAME_FULL	 = "Apache_OpenOffice_" + version + "_" + PLATFORM_FULL + "_" + LANG_ISO + EXTENSION;
-			FILENAME_LP	 = "Apache_OpenOffice_" + version + "_" + PLATFORM_LP   + "_" + LANG_ISO + EXTENSION;
+			DL.FILENAME_FULL	= "Apache_OpenOffice_" + version + "_" + DL.PLATFORM_FULL + "_" + DL.LANG_ISO + DL.EXTENSION;
+			DL.FILENAME_LP		= "Apache_OpenOffice_" + version + "_" + DL.PLATFORM_LP   + "_" + DL.LANG_ISO + DL.EXTENSION;
 
 			// Assign the file size (column 2) from the release matrix of language and platform.
-			FILESIZE_FULL	 = release_410[ LANG_ISO ][ RELEASE_PLATFORM_POS_FULL ][ 1 ];
-			FILESIZE_LP	 = release_410[ LANG_ISO ][ RELEASE_PLATFORM_POS_LP   ][ 1 ];
+			DL.FILESIZE_FULL	= DL.release_matrix_410[ DL.LANG_ISO ][ DL.RELEASE_PLATFORM_POS_FULL ][ 1 ];
+			DL.FILESIZE_LP		= DL.release_matrix_410[ DL.LANG_ISO ][ DL.RELEASE_PLATFORM_POS_LP   ][ 1 ];
 
 			// Assign all values from the release data.
-			REL_TEXT	 = 	   l10n_download_rel_info_milestone_text + release_410[ "src" ][ 1 ][ 0 ]
-					 + " | " + l10n_download_rel_info_buildid_text   + release_410[ "src" ][ 1 ][ 1 ]
-					 + " | " + l10n_download_rel_info_svn_text       + release_410[ "src" ][ 1 ][ 2 ]
-					 + " | " + l10n_download_rel_info_rel_date_text  + release_410[ "src" ][ 1 ][ 3 ];
+			DL.REL_TEXT		= l10n.dl_rel_info_milestone_text		+ DL.release_matrix_410[ "src" ][ 1 ][ 0 ]
+						+ " | " + l10n.dl_rel_info_buildid_text	+ DL.release_matrix_410[ "src" ][ 1 ][ 1 ]
+						+ " | " + l10n.dl_rel_info_svn_text	+ DL.release_matrix_410[ "src" ][ 1 ][ 2 ]
+						+ " | " + l10n.dl_rel_info_rel_date_text	+ DL.release_matrix_410[ "src" ][ 1 ][ 3 ];
 
 			// Assign the link for release notes, depending on the version.
-			REL_NOTES	 = l10n_download_rel_notes_aoo410_link;
+			DL.REL_NOTES		= l10n.dl_rel_notes_aoo410_link;
 			break;
 		case "4.0.1":
 			// Assign all values from the release matrix of language and platform.
-			RELEASE_PLATFORM = release_401[ LANG_ISO ][ RELEASE_PLATFORM_POS_FULL ];
+			DL.RELEASE_PLATFORM	= DL.release_matrix_401[ DL.LANG_ISO ][ DL.RELEASE_PLATFORM_POS_FULL ];
 
 			// Assemble filename: Product name + version + platform as URL part + language ISO + file extension.
-			FILENAME_FULL	 = "Apache_OpenOffice_" + version + "_" + PLATFORM_FULL + "_" + LANG_ISO + EXTENSION;
-			FILENAME_LP	 = "Apache_OpenOffice_" + version + "_" + PLATFORM_LP   + "_" + LANG_ISO + EXTENSION;
+			DL.FILENAME_FULL	= "Apache_OpenOffice_" + version + "_" + DL.PLATFORM_FULL + "_" + DL.LANG_ISO + DL.EXTENSION;
+			DL.FILENAME_LP		= "Apache_OpenOffice_" + version + "_" + DL.PLATFORM_LP   + "_" + DL.LANG_ISO + DL.EXTENSION;
 
 			// Assign the file size (column 2) from the release matrix of language and platform.
-			FILESIZE_FULL	 = release_401[ LANG_ISO ][ RELEASE_PLATFORM_POS_FULL ][ 1 ];
-			FILESIZE_LP	 = release_401[ LANG_ISO ][ RELEASE_PLATFORM_POS_LP   ][ 1 ];
+			DL.FILESIZE_FULL	= DL.release_matrix_401[ DL.LANG_ISO ][ DL.RELEASE_PLATFORM_POS_FULL ][ 1 ];
+			DL.FILESIZE_LP		= DL.release_matrix_401[ DL.LANG_ISO ][ DL.RELEASE_PLATFORM_POS_LP   ][ 1 ];
 
 			// Assign all values from the release data.
-			REL_TEXT	 = 	   l10n_download_rel_info_milestone_text + release_401[ "src" ][ 1 ][ 0 ]
-					 + " | " + l10n_download_rel_info_buildid_text   + release_401[ "src" ][ 1 ][ 1 ]
-					 + " | " + l10n_download_rel_info_svn_text       + release_401[ "src" ][ 1 ][ 2 ]
-					 + " | " + l10n_download_rel_info_rel_date_text  + release_401[ "src" ][ 1 ][ 3 ];
+			DL.REL_TEXT		= l10n.dl_rel_info_milestone_text		+ DL.release_matrix_401[ "src" ][ 1 ][ 0 ]
+						+ " | " + l10n.dl_rel_info_buildid_text	+ DL.release_matrix_401[ "src" ][ 1 ][ 1 ]
+						+ " | " + l10n.dl_rel_info_svn_text	+ DL.release_matrix_401[ "src" ][ 1 ][ 2 ]
+						+ " | " + l10n.dl_rel_info_rel_date_text	+ DL.release_matrix_401[ "src" ][ 1 ][ 3 ];
 
 			// Assign the link for release notes, depending on the version.
-			REL_NOTES	 = l10n_download_rel_notes_aoo401_link;
+			DL.REL_NOTES		= l10n.dl_rel_notes_aoo401_link;
 			break;
 		case "4.0.0":
 			// Assign all values from the release matrix of language and platform.
-			RELEASE_PLATFORM = release_400[ LANG_ISO ][ RELEASE_PLATFORM_POS_FULL ];
+			DL.RELEASE_PLATFORM	= DL.release_matrix_400[ DL.LANG_ISO ][ DL.RELEASE_PLATFORM_POS_FULL ];
 
 			// Assemble filename: Product name + version + platform as URL part + language ISO + file extension.
-			FILENAME_FULL	 = "Apache_OpenOffice_" + version + "_" + PLATFORM_FULL + "_" + LANG_ISO + EXTENSION;
-			FILENAME_LP	 = "Apache_OpenOffice_" + version + "_" + PLATFORM_LP   + "_" + LANG_ISO + EXTENSION;
+			DL.FILENAME_FULL	= "Apache_OpenOffice_" + version + "_" + DL.PLATFORM_FULL + "_" + DL.LANG_ISO + DL.EXTENSION;
+			DL.FILENAME_LP		= "Apache_OpenOffice_" + version + "_" + DL.PLATFORM_LP   + "_" + DL.LANG_ISO + DL.EXTENSION;
 
 			// Assign the file size (column 2) from the release matrix of language and platform.
-			FILESIZE_FULL	 = release_400[ LANG_ISO ][ RELEASE_PLATFORM_POS_FULL ][ 1 ];
-			FILESIZE_LP	 = release_400[ LANG_ISO ][ RELEASE_PLATFORM_POS_LP   ][ 1 ];
+			DL.FILESIZE_FULL	= DL.release_matrix_400[ DL.LANG_ISO ][ DL.RELEASE_PLATFORM_POS_FULL ][ 1 ];
+			DL.FILESIZE_LP		= DL.release_matrix_400[ DL.LANG_ISO ][ DL.RELEASE_PLATFORM_POS_LP   ][ 1 ];
 
 			// Assign all values from the release data.
-			REL_TEXT	 = 	   l10n_download_rel_info_milestone_text + release_400[ "src" ][ 1 ][ 0 ]
-					 + " | " + l10n_download_rel_info_buildid_text   + release_400[ "src" ][ 1 ][ 1 ]
-					 + " | " + l10n_download_rel_info_svn_text       + release_400[ "src" ][ 1 ][ 2 ]
-					 + " | " + l10n_download_rel_info_rel_date_text  + release_400[ "src" ][ 1 ][ 3 ];
+			DL.REL_TEXT		= l10n.dl_rel_info_milestone_text		+ DL.release_matrix_400[ "src" ][ 1 ][ 0 ]
+						+ " | " + l10n.dl_rel_info_buildid_text	+ DL.release_matrix_400[ "src" ][ 1 ][ 1 ]
+						+ " | " + l10n.dl_rel_info_svn_text	+ DL.release_matrix_400[ "src" ][ 1 ][ 2 ]
+						+ " | " + l10n.dl_rel_info_rel_date_text	+ DL.release_matrix_400[ "src" ][ 1 ][ 3 ];
 
 			// Assign the link for release notes, depending on the version.
-			REL_NOTES	 = l10n_download_rel_notes_aoo400_link;
+			DL.REL_NOTES		= l10n.dl_rel_notes_aoo400_link;
 			break;
 		default:
-			FILENAME_FULL	 = "";
-			FILENAME_LP	 = "";
-			FILESIZE_FULL	 = -1;
-			FILESIZE_LP	 = -1;
-			REL_TEXT	 = l10n_download_rel_info_milestone_text + "? | "
-					 + l10n_download_rel_info_buildid_text   + "? | "
-					 + l10n_download_rel_info_svn_text       + "? | "
-					 + l10n_download_rel_info_rel_date_text  + "?";
-			REL_NOTES	 = "";
-			ERROR		 = true;
+			DL.FILENAME_FULL	= "";
+			DL.FILENAME_LP		= "";
+			DL.FILESIZE_FULL	= -1;
+			DL.FILESIZE_LP		= -1;
+			DL.REL_TEXT		= l10n.dl_rel_info_milestone_text + "? | "
+						+ l10n.dl_rel_info_buildid_text   + "? | "
+						+ l10n.dl_rel_info_svn_text       + "? | "
+						+ l10n.dl_rel_info_rel_date_text  + "?";
+			DL.REL_NOTES		= "";
+			DL.ERROR		= true;
 	}
 
 	return;
@@ -1230,43 +1290,49 @@ function openItem( itemid, uri ) {
  * @param:  location - The location where the debug utput should take place
  * @return: None
  */
-function debug( location ) {
+DL.debug = function( location ) {
+	// Depending on the current position in the code, show the values for the variables as alert box.
+	// Usage:
+	// Call the function in the code position you want to debug.
+	// Example:
+	// debug( "name the exact code position");
+
 	if( location === "" ) {
 		location = "No location named!";
 	}
 
-	alert( location												+ "\n"
-	+ "NL_LANG: "				+ "\t\t\t\t\t\t\t"	+ NL_LANG				+ "\n"
-	+ "LANG_ISO: "				+ "\t\t\t\t\t\t"	+ LANG_ISO				+ "\n"
-	+ "LANG_SEL: "				+ "\t\t\t\t\t\t"	+ LANG_SEL				+ "\n"
-	+ "UI_PLATFORM: "			+ "\t\t\t\t\t\t"	+ UI_PLATFORM				+ "\n"
-	+ "UI_PLATFORM_NO_SUP: "		+ "\t\t\t\t"		+ UI_PLATFORM_NO_SUP			+ "\n"
-	+ "PLATFORM: "				+ "\t\t\t\t\t\t"	+ PLATFORM				+ "\n"
-	+ "PLATFORM_FULL: "			+ "\t\t\t\t\t"		+ PLATFORM_FULL				+ "\n"
-	+ "PLATFORM_LP: "			+ "\t\t\t\t\t\t"	+ PLATFORM_LP				+ "\n"
-	+ "PLATFORM_SEL: "			+ "\t\t\t\t\t\t"	+ PLATFORM_SEL				+ "\n"
-	+ "RELEASE_PLATFORM_POS_FULL: "		+ "\t\t\t"		+ RELEASE_PLATFORM_POS_FULL		+ "\n"
-	+ "RELEASE_PLATFORM_POS_LP: "		+ "\t\t\t"		+ RELEASE_PLATFORM_POS_LP		+ "\n"
-	+ "RELEASE_PLATFORM: "			+ "\t\t\t\t\t"		+ RELEASE_PLATFORM			+ "\n"
-	+ "RELEASE_LANG: "			+ "\t\t\t\t\t\t"	+ RELEASE_LANG				+ "\n"
-	+ "REL_TEXT: "				+ "\t\t\t\t\t\t\t"	+ REL_TEXT				+ "\n"
-	+ "REL_NOTES: "				+ "\t\t\t\t\t\t"	+ REL_NOTES				+ "\n"
-	+ "VERSION_SEL: "			+ "\t\t\t\t\t\t"	+ VERSION_SEL				+ "\n"
-	+ "FILENAME_FULL: "			+ "\t\t\t\t\t"		+ FILENAME_FULL				+ "\n"
-	+ "FILENAME_LP: "			+ "\t\t\t\t\t\t"	+ FILENAME_LP				+ "\n"
-	+ "FILESIZE_FULL: "			+ "\t\t\t\t\t\t"	+ FILESIZE_FULL				+ "\n"
-	+ "FILESIZE_LP: "			+ "\t\t\t\t\t\t"	+ FILESIZE_LP				+ "\n"
-	+ "EXTENSION: "				+ "\t\t\t\t\t\t"	+ EXTENSION				+ "\n"
-	+ "LINK_FULL: "				+ "\t\t\t\t\t\t"	+ LINK_FULL				+ "\n"
-	+ "LINK_LP: "				+ "\t\t\t\t\t\t\t"	+ LINK_LP				+ "\n"
-	+ "LINK_CHK_ASC_FULL: "			+ "\t\t\t\t\t"		+ LINK_CHK_ASC_FULL			+ "\n"
-	+ "LINK_CHK_MD5_FULL: "			+ "\t\t\t\t\t"		+ LINK_CHK_MD5_FULL			+ "\n"
-	+ "LINK_CHK_SHA256_FULL: "		+ "\t\t\t\t"		+ LINK_CHK_SHA256_FULL			+ "\n"
-	+ "LINK_CHK_ASC_LP: "			+ "\t\t\t\t\t"		+ LINK_CHK_ASC_LP			+ "\n"
-	+ "LINK_CHK_MD5_LP: "			+ "\t\t\t\t\t"		+ LINK_CHK_MD5_LP			+ "\n"
-	+ "LINK_CHK_SHA256_LP: "		+ "\t\t\t\t"		+ LINK_CHK_SHA256_LP			+ "\n"
-	+ "SHOW_SUB_BOX: "			+ "\t\t\t\t\t"		+ SHOW_SUB_BOX				+ "\n"
-	+ "ERROR: "				+ "\t\t\t\t\t\t\t"	+ ERROR					+ "\n" );
+	alert( location											+ "\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"
+	+ "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"

[... 7 lines stripped ...]