/*
 * get link to mirror system
 * depends on array-list
 */
function mirrorbrain_getLink( version ) {
	var a = getArray();
	var platform = getPlatform();
	var link = null;

	if ( hasMirrorLink() ) {
		// use mirror link
		if ( version == VERSION ) {
			link = "http://download.services.openoffice.org/files/";
			if ( getLanguageISO().indexOf( "en-US" ) > -1 ) {
				link = link + "stable/" + version + "/";
			} else {
				link = link + "localized/" + getLanguageISO() + "/" + version + "/";
			}
			return link + mirrorbrain_getFileName( version );
		} else if ( version == OLD_VERSION ) {
			link = "http://download.services.openoffice.org/files/";
			if ( getLanguageISO().indexOf( "en-US" ) > -1 ) {
				link = link + "stable/" + version + "/";
			} else {
				link = link + "localized/" + getLanguageISO() + "/" + version + "/";
			}
			return link + mirrorbrain_getFileName( version );
		} else if ( version == RC_VERSION ) {
			link = "http://download.services.openoffice.org/files/extended/" + mirrorbrain_getVersionForDownloadFolder( version ) + "/";
			return link + mirrorbrain_getFileName( version );
		} else if ( version == BETA_VERSION ) {
			link = "http://download.services.openoffice.org/files/extended/" + version + "/";
			return link + mirrorbrain_getFileName( version );
		} else if ( version == DEV1_VERSION ) {
			link = "http://download.services.openoffice.org/files/extended/developer/" + version + "/";
			return link + mirrorbrain_getFileName( version );
		} else if ( version == DEV2_VERSION ) {
			link = "http://download.services.openoffice.org/files/extended/developer/" + version + "/";
			return link + mirrorbrain_getFileName( version );
		} else if ( version == DEVB_VERSION ) {
			link = "http://download.services.openoffice.org/files/extended/developer/" + version + "/";
			return link + mirrorbrain_getFileName( version );
		} else if ( version == TEST_VERSION ) {
			link = "http://download.services.openoffice.org/files/";
			if ( getLanguageISO().indexOf( "en-US" ) > -1 ) {
				link = link + "stable/" + version + "/";
			} else {
				link = link + "localized/" + getLanguageISO() + "/" + version + "/";
			}
			return link + mirrorbrain_getFileName( version );
		}
		// error
		return null;
	} else {
		if ( platform.indexOf( "Mac" ) != -1 ) {
			// send MAC requests to porting.o.o
			return "http://porting.openoffice.org/mac/download/";
		} else {
			// use direct link
			return a[2];
		}
	}
}

/*
 * special tupel for tracking
 */
function mirrorbrain_getTupel( href ) {
	var retVal = "";
	var file;
	file = mirrorbrain_getTagFileName( href );
    if ( file != null ) {
		var product, os, lang, version;
		product = mirrorbrain_getTagProduct( file );
		version = mirrorbrain_getTagVersion( file );
		os = mirrorbrain_getTagOS( file );
		lang = mirrorbrain_getTagLang( file );
		retVal = product + " " + version + "-" + os + "-" + lang + "-" + version;
    }
    return retVal;
}

/*
 * extract file name from url
 */
function mirrorbrain_getTagFileName( href ) {
	var retVal;
    if ( href.indexOf( "http://download.services.openoffice.org/files/" ) > -1 ) {
		var s = href.split( "/" );
		retVal = s[s.length-1];
    }
    return retVal;
}

/*
 * get product name for tracking, external used method
 */
function mirrorbrain_getProduct( href ) {
	var file;
	file = mirrorbrain_getTagFileName( href );
	return mirrorbrain_getTagProduct( file ) + " " + mirrorbrain_getTagVersion( file );
}

/*
 * get version for tracking, external used method
 */
function mirrorbrain_getVersion( href ) {
	var file;
	file = mirrorbrain_getTagFileName( href );
	return mirrorbrain_getTagVersion( file );
}

/*
 * get os for tracking, external used method
 */
function mirrorbrain_getOS( href ) {
	var file;
	file = mirrorbrain_getTagFileName( href );
	return mirrorbrain_getTagOS( file );
}

/*
 * get language code for tracking, external used method
 */
function mirrorbrain_getLang( href ) {
	var file;
	file = mirrorbrain_getTagFileName( href );
	return mirrorbrain_getTagLang( file );
}

/*
 * get language code for tracking, internal method
 */
function mirrorbrain_getTagLang( file ) {
    var retVal;
    if ( file != null && file.indexOf( "_install_" ) > -1 ) {
		var s = file.split( "_install_" );
		s = s[1].split( "." );
		s = s[0].split( "_" );
		if ( s[s.length-1].indexOf( "deb" ) > -1 ) {
			retVal = s[s.length-2];
		} else {
			retVal = s[s.length-1];
		}
    }
    return retVal;
}

/*
 * get os name for tracking, internal method
 */
function mirrorbrain_getTagOS( file ) {
	var retVal;
	if ( file != null && file.indexOf( "_install_" ) > -1 ) {
		var s = file.split( "_install_" );
		s = s[0].split( "_" );
		retVal = s[ s.length -1 ];
		retVal = retVal.toLowerCase();
		if ( retVal.indexOf( "win32intel" ) > -1 ) {
			retVal = "win";
		}
		if ( file.indexOf( "wJRE" ) > -1 ) {
			retVal = retVal + "wjre";
		} else if ( file.indexOf( "_deb" ) > -1 ) {
			retVal = retVal + "deb";
		}
	}
	return retVal;
}

/*
 * get product name for tracking, internal method
 */
function mirrorbrain_getTagProduct( file ) {
	var retVal = null;
	if ( file != null ) {
		var s = file.split( "_" );
		retVal = s[0];
    }
	return retVal;
}

/*
 * get version for tracking, internal method
 */
function mirrorbrain_getTagVersion( file ) {
	var retVal = null;
	if ( file != null ) {
		var s = file.split( "_" );
		retVal = s[1];
		if ( s[0] == "OOo-Dev" ) {
			retVal = s[1] + "_" + s[2];
		}
    }
	return retVal;
}

/*
 * method trim timestamp from version, required for RC, requested by MLA
 */
function mirrorbrain_getVersionForDownloadFolder( version ) {
	var s = null;
	if ( version.indexOf( "_" ) > -1 ) {
		s = version.split( "_" )[0];
	} else {
		s = version;
	}

	if ( version == VERSION ) {
		return version;
	} else if ( version == OLD_VERSION ) {
		return version;
	} else if ( version == RC_VERSION ) {
		return s;
	} else if ( version == BETA_VERSION ) {
		return version;
	} else if ( version == DEV1_VERSION ) {
		return version;
	} else if ( version == DEV2_VERSION ) {
		return version;
	} else if ( version == TEST_VERSION ) {
		return version;
	}
	// error
	return null;
}

function mirrorbrain_getFileName( version ) {
	var a = getArray();
	var platform = getPlatform();
	var fileName = null;

	if ( hasMirrorLink() ) {
		// use mirror link
		if ( version == VERSION ) {
			fileName = "OOo_" + version + "_" + mirrorbrain_getPlatformForMirror() + "_" + getLanguageISO() + mirrorbrain_getExtension();
			return fileName;
		} else if ( version == OLD_VERSION ) {
			fileName = "OOo_" + version + "_" + mirrorbrain_getPlatformForMirror() + "_" + getLanguageISO() + mirrorbrain_getExtension();
			return fileName;
		} else if ( version == RC_VERSION ) {
			fileName = "OOo_" + version + "_" + mirrorbrain_getPlatformForMirror() + "_" + getLanguageISO() + mirrorbrain_getExtension();
			return fileName;
		} else if ( version == BETA_VERSION ) {
			fileName = "OOo_" + version + "_" + mirrorbrain_getPlatformForMirror() + "_" + getLanguageISO() + mirrorbrain_getExtension();
			return fileName;
		} else if ( version == DEV1_VERSION ) {
			fileName = "OOo-Dev_" + version + "_" + mirrorbrain_getPlatformForMirror() + "_" + getLanguageISO() + mirrorbrain_getExtension();
			return fileName;
		} else if ( version == DEV2_VERSION ) {
			fileName = "OOo-Dev_" + version + "_" + mirrorbrain_getPlatformForMirror() + "_" + getLanguageISO() + mirrorbrain_getExtension();
			return fileName;
		} else if ( version == DEVB_VERSION ) {
			fileName = "OOo-Dev_" + version + "_" + mirrorbrain_getPlatformForMirror() + "_" + getLanguageISO() + mirrorbrain_getExtension();
			return fileName;
		} else if ( version == TEST_VERSION ) {
			fileName = "OOo_" + version + "_" + mirrorbrain_getPlatformForMirror() + "_" + getLanguageISO() + mirrorbrain_getExtension();
			return fileName;
		}
	}
	// error
	return null;
}

/*
 * get platform for mirror-link
 */
function mirrorbrain_getPlatformForMirror() {
	var a = getArray();
	if ( navigator.platform != null ) {
		if ( navigator.platform.indexOf( "Win32" ) != -1 ) {
			return ( a[3] == 'y' ) ? "Win32Intel_install_wJRE" : "Win32Intel_install";
		} else if ( navigator.platform.indexOf( "Win64" ) != -1 ) {
			return ( a[3] == 'y' ) ? "Win32Intel_install_wJRE" : "Win32Intel_install";
		} else if ( navigator.platform.indexOf( "Win" ) != -1 ) {
			return ( a[3] == 'y' ) ? "Win32Intel_install_wJRE" : "Win32Intel_install";
		} else if ( navigator.platform.indexOf( "Linux" ) != -1 ) {
			if ( navigator.userAgent != null ) {
				if ( navigator.userAgent.toLowerCase().indexOf( "debian" ) != -1 || navigator.userAgent.toLowerCase().indexOf( "ubuntu" ) != -1 ) {
					return ( a[3] == 'y' ) ? "LinuxIntel_install_wJRE" : "LinuxIntel_install";
				} else {
					return ( a[3] == 'y' ) ? "LinuxIntel_install_wJRE" : "LinuxIntel_install";
				}
			} else {
				return ( a[3] == 'y' ) ? "LinuxIntel_install_wJRE" : "LinuxIntel_install";
			}
		} else if ( navigator.platform.indexOf( "SunOS i86pc" ) != -1 ) {
			return ( a[3] == 'y' ) ? "Solarisx86_install_wJRE" : "Solarisx86_install";
		} else if ( navigator.platform.indexOf( "SunOS sun4u" ) != -1 ) {
			return ( a[3] == 'y' ) ? "SolarisSparc_install_wJRE" : "SolarisSparc_install";
		} else if ( navigator.platform.indexOf( "SunOS" ) != -1 ) {
			return ( a[3] == 'y' ) ? "SolarisSparc_install_wJRE" : "SolarisSparc_install";
		} else if ( navigator.platform.indexOf( "Mac" ) != -1 && navigator.platform.indexOf( "Intel" ) != -1 ) {
			return "MacOSXIntel_install";
		} else if ( navigator.platform.indexOf( "Mac" ) != -1 && navigator.platform.indexOf( "PPC" ) != -1 ) {
			return null;
		} else if ( navigator.platform.indexOf( "Mac" ) != -1 ) {
			return "MacOSXIntel_install";
		} else {
			// return ( a[3] == 'y' ) ? "winwjre" : "win";
			return navigator.platform;
		}
	}
	return ( a[3] == 'y' ) ? "Win32Intel_install_wJRE" : "Win32Intel_install";
}

/*
 * get extension for mirror-link
 */
function mirrorbrain_getExtension() {
	var a = getArray();
	if ( navigator.platform != null ) {
		if ( navigator.platform.indexOf( "Win32" ) != -1 ) {
			return ".exe";
		} else if ( navigator.platform.indexOf( "Win64" ) != -1 ) {
			return ".exe";
		} else if ( navigator.platform.indexOf( "Win" ) != -1 ) {
			return ".exe";
		} else if ( navigator.platform.indexOf( "Linux" ) != -1 ) {
			if ( navigator.userAgent != null ) {
				if ( navigator.userAgent.toLowerCase().indexOf( "debian" ) != -1 || navigator.userAgent.toLowerCase().indexOf( "ubuntu" ) != -1 ) {
					return "_deb.tar.gz";
				} else {
					return ".tar.gz";
				}
			} else {
				return ".tar.gz";
			}
		} else if ( navigator.platform.indexOf( "SunOS i86pc" ) != -1 ) {
			return ".tar.gz";
		} else if ( navigator.platform.indexOf( "SunOS sun4u" ) != -1 ) {
			return ".tar.gz";
		} else if ( navigator.platform.indexOf( "SunOS" ) != -1 ) {
			return ".tar.gz";
		} else if ( navigator.platform.indexOf( "Mac" ) != -1 && navigator.platform.indexOf( "Intel" ) != -1 ) {
			return ".dmg";
		} else if ( navigator.platform.indexOf( "Mac" ) != -1 && navigator.platform.indexOf( "PPC" ) != -1 ) {
			return null;
		} else if ( navigator.platform.indexOf( "Mac" ) != -1 ) {
			return ".dmg";
		} else {
			return navigator.platform;
		}
	}
	return null;
}
