blob: 3aa715add85296d1dbf21b41ca3e97515235a6ae [file] [log] [blame]
/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
*
* Oracle and Java are registered trademarks of Oracle and/or its affiliates.
* Other names may be trademarks of their respective owners.
*
* The contents of this file are subject to the terms of either the GNU General
* Public License Version 2 only ("GPL") or the Common Development and Distribution
* License("CDDL") (collectively, the "License"). You may not use this file except in
* compliance with the License. You can obtain a copy of the License at
* https://netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
* License for the specific language governing permissions and limitations under the
* License. When distributing the software, include this License Header Notice in
* each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
* designates this particular file as subject to the "Classpath" exception as
* provided by Oracle in the GPL Version 2 section of the License file that
* accompanied this code. If applicable, add the following below the License Header,
* with the fields enclosed by brackets [] replaced by your own identifying
* information: "Portions Copyrighted [year] [name of copyright owner]"
*
* Contributor(s):
*
* The Original Software is NetBeans. The Initial Developer of the Original Software
* is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
* Rights Reserved.
*
* If you wish your version of this file to be governed by only the CDDL or only the
* GPL Version 2, indicate your decision by adding "[Contributor] elects to include
* this software in this distribution under the [CDDL or GPL Version 2] license." If
* you do not indicate a single choice of license, a recipient has the option to
* distribute your version of this file under either the CDDL, the GPL Version 2 or
* to extend the choice of license to its licensees as provided above. However, if
* you add GPL Version 2 code and therefore, elected the GPL Version 2 license, then
* the option applies only if the new code is made subject to such option by the
* copyright holder.
*/
/* Languages and their ids which NetBeans is available*/
var LANGUAGES = new Array();
var BUILD_INFO = new Array();
var PLATFORM_IDS = new Array();
var PLATFORM_LONG_NAMES = new Array();
var PLATFORM_SHORT_NAMES = new Array();
var BUNDLE_IDS = new Array();
var BUNDLE_LONG_NAMES = new Array();
var BUNDLE_SHORT_NAMES = new Array();
var FILES = new Array();
PLATFORM_IDS [0] = "windows";
PLATFORM_IDS [1] = "linux";
PLATFORM_IDS [2] = "solaris-x86";
PLATFORM_IDS [3] = "solaris-sparc";
PLATFORM_IDS [4] = "macosx";
PLATFORM_IDS [5] = "zip";
/*
// Commented since NBI installers are not used for now
PLATFORM_IDS [4] = "macosx-x86";
PLATFORM_IDS [5] = "macosx-ppc";
*/
BUNDLE_IDS [0] = "javase";
//BUNDLE_IDS [1] = "javafx";
BUNDLE_IDS [1] = "javaee";
//BUNDLE_IDS [2] = "ruby";
BUNDLE_IDS [2] = "cpp";
BUNDLE_IDS [3] = "php";
BUNDLE_IDS [4] = "all";
var DEFAULT_LANGUAGE = "DEFAULT";
var PAGELANG_SEP = "pagelang=";
var OMNITURE_CODE_JS = "https://netbeans.org/images_www/js/s_code_remote.js";
var GOOGLE_ANALYTICS_JS = "http://www.google-analytics.com/ga.js";
function getNameById(id,ids,names) {
for(var i = 0 ; i < ids.length; i++) {
if(ids[i] == id) {
return names[i];
}
}
return "";
}
function getPlatformShortName(id) {
return getNameById(id, PLATFORM_IDS, PLATFORM_SHORT_NAMES);
}
function getPlatformLongName(id) {
return getNameById(id, PLATFORM_IDS, PLATFORM_LONG_NAMES);
}
function getLanguageName(id) {
var ids = new Array();
var names = new Array();
for(var i=0;i<LANGUAGES.length;i++) {
ids.push(LANGUAGES[i].id);
names.push(LANGUAGES[i].name);
}
return getNameById(id, ids, names);
}
function getBundleShortName(id) {
return getNameById(id, BUNDLE_IDS, BUNDLE_SHORT_NAMES);
}
function getBundleLongName(id) {
return getNameById(id, BUNDLE_IDS, BUNDLE_LONG_NAMES);
}
function get_overridden_language() {
var url = "" + window.location;
var idx = url.indexOf(PAGELANG_SEP);
var langcode = DEFAULT_LANGUAGE;
if(idx != -1) {
langcode = url.substring(idx + PAGELANG_SEP.length, url.length);
}
return langcode;
}
function get_language_id() {
return get_language(0);
}
function get_language_suffix() {
return get_language(1);
}
function get_language_location() {
var lang_suffix = get_language_suffix();
for(var i = 0; i < LANGUAGES.length; i++) {
if(lang_suffix == LANGUAGES[i].suffix) {
return LANGUAGES[i].location;
}
}
}
function is_suitable_location(lang_id, location) {
for(var i = 0; i < LANGUAGES.length; i++) {
if(lang_id == LANGUAGES[i].id) {
return LANGUAGES[i].location == location;
}
}
return false;
}
function get_language(option) {
var variants = LANGUAGES;
var resultLanguage = "";
if(variants) {
var lang = (option == 0 ) ? variants[0].id : variants[0].suffix;
var override = get_overridden_language();
if (override != DEFAULT_LANGUAGE) lang = override;
else if(navigator.userLanguage) lang = navigator.userLanguage;
else if(navigator.language) lang = navigator.language;
lang = lang.replace("-", "_");
for(var i=0; i < variants.length; i++ ) {
var value = (option == 0 ) ? variants[i].id : variants[i].suffix;
if(value && lang.toLowerCase().indexOf(value.toLowerCase())!=-1) {
if(value.length > resultLanguage.length) {
resultLanguage = value;
}
}
}
}
//no language (for id) selected - fallback to en if it is available
if (resultLanguage == "" && option == 0) {
for(var i=0; i < variants.length; i++ ) {
if(variants[i].id == "en") {
return "en";
}
}
}
return resultLanguage;
}
function load_js(script_filename) {
document.write('<script language="javascript" type="text/javascript" src="' + script_filename + '"></script>');
}
function load_page_js_locale(name,ext) {
load_js_locale(name, ext);
}
function useAnotherLocation() {
var loc = get_language_location();
return loc != getPageArtifactsLocation(false);
}
function isMainLanguage(language) {
for(var i=0; i < LANGUAGES.length; i++ ) {
if(LANGUAGES[i].id == language) {
return LANGUAGES[i].location == getPageArtifactsLocation(false);
}
}
return false;
}
function load_js_locale(script_filename, extension) {
var suffix = "";
var locale_suffix = "";
locale_suffix = get_language_suffix();
if(locale_suffix!="") {
suffix = "_" + locale_suffix;
}
var a = useAnotherLocation();
load_page_js(script_filename + suffix + extension, a);
}
function load_page_img(img,add) {
if(add) {
document.write('<img src="' + getImagesLocation() + img + '" ' + add + '/>');
} else {
document.write('<img src="' + getImagesLocation() + img + '"/>');
}
}
function load_page_css(css) {
document.write('<link rel="stylesheet" type="text/css" href="' + getCSSLocation() + css + '" media="screen"/>');
}
function other_webpage_langs_available() {
for(var i=0 ; i < LANGUAGES.length; i++) {
if ( LANGUAGES[i].suffix && LANGUAGES[i].suffix.length > 0) {
return true;
}
}
return false;
}
function page_languages_sort_function(a, b){
if (a.webpagename && b.webpagename) {
return a.webpagename > b.webpagename ? 1 : (a.webpagename == b.webpagename ? 0 : -1);
} else {
return a.suffix > b.suffix ? 1 : (a.suffix == b.suffix ? 0 : -1);
}
}
function write_page_languages() {
var locale_suffix = get_language_suffix();
if(other_webpage_langs_available()) {
document.getElementById("pagelanguagesbox").style.visibility = 'visible';
}
var url = "" + window.location;
var qIndex = url.indexOf("?")!=-1 ? url.indexOf("?") : url.length;
var aIndex = url.indexOf("&")!=-1 ? url.indexOf("&") : url.length;
var page = url.substring(0, Math.min(qIndex, aIndex));
var get_request = url.substring(url.indexOf(page) + page.length, url.length);
if(get_request.indexOf(PAGELANG_SEP)==-1) {
if(get_request.indexOf("?")==-1) {
get_request += "?";
} else if(get_request.indexOf("&")) {
get_request += "&";
}
get_request += PAGELANG_SEP;
} else {
var regexp = new RegExp(PAGELANG_SEP + "[a-zA-Z]+(_[a-zA-Z]+){0,2}","g");
get_request = get_request.replace(regexp, PAGELANG_SEP);
}
var languages_sorted = LANGUAGES.slice().sort(page_languages_sort_function);
for(var i=0;i<languages_sorted.length;i++) {
if(languages_sorted[i].webpagename && locale_suffix!=languages_sorted[i].suffix) {
document.write('<li><a href="' + page + get_request.replace(PAGELANG_SEP, PAGELANG_SEP + languages_sorted[i].suffix) + '">' + languages_sorted[i].webpagename + '</a></li>');
}
}
}
function startList() {
// source: https://netbeans.org/branding/scripts/lang-pulldown.js
if (document.all&&document.getElementById) {
navRoot = document.getElementById("nav");
if (navRoot!=null) { //if the language panel is active
for (i=0; i<navRoot.childNodes.length; i++) {
node = navRoot.childNodes[i];
if (node.nodeName=="LI") {
node.onmouseover=function() {
this.className+=" over";
}
node.onmouseout=function() {
this.className=this.className.replace(" over", "");
}
}
}
}
}
}
function get_file_list(dir,lang_id) {
lst = new Array();
if(FILES.length > 0) {
for (var i = 0; i < FILES.length; i++) {
if(FILES[i].name.indexOf(dir)==0 && languageCompatible(FILES[i].locales, lang_id) && is_suitable_location(lang_id, FILES[i].location)) {
var stripped = FILES[i].name.substring(dir.length, FILES[i].name.length);
if(stripped.indexOf('/')==-1) {
lst[lst.length] = stripped;
}
}
}
}
return lst;
}
function languageCompatible(language_list, lang_id) {
for(var i = 0; i < language_list.length; i++) {
if(language_list[i]==lang_id) return true;
}
return false;
}
function get_file_info(filename,lang_id) {
var file = null;
if(FILES.length > 0) {
for (var i = 0; i < FILES.length; i++) {
if(FILES[i].name == filename && languageCompatible(FILES[i].locales, lang_id)) {
file = FILES[i];
break;
}
}
}
return file;
}
function getSize(filename, lang_id) {
var file = get_file_info(filename, lang_id);
return file!=null ? file.size : "";
}
function getMD5(filename, lang_id) {
var file = get_file_info(filename, lang_id);
return file!=null ? file.md5 : "";
}
function get_file_name(platform, option, language) {
var fn = "";
if(platform=="zip") {
fn += "zip/";
} else {
fn += "bundles/";
}
return fn + get_file_name_short(platform, option, language);
}
function is_file_available(platform, option, language) {
return get_file_info(get_file_name(platform, option, language), language) != null;
}
function get_build_location(lang_id) {
var mainLanguage = isMainLanguage(lang_id);
var location = get_build_info(mainLanguage).BUILD_LOCATION;
if(!mainLanguage && location == "") {
location = get_build_info(true).ADDITIONAL_BUILD_LOCATION;
}
return location;
}
function get_zip_files_prefix(lang_id) {
return get_build_info(isMainLanguage(lang_id)).ZIP_FILES_PREFIX;
}
function get_bundles_files_prefix(lang_id) {
return get_build_info(isMainLanguage(lang_id)).BUNDLE_FILES_PREFIX;
}
function get_file_name_short(platform, option, language) {
var file_name = "";
if(platform=="zip") {
if(option == "javadoc" || option == "platform-src" || option == "src") {
file_name += get_zip_files_prefix(language).replace("-ml","");
} else {
file_name += get_zip_files_prefix(language);
}
} else {
file_name += get_bundles_files_prefix(language);
}
if (option != "all") {
file_name += "-" + option;
}
if ( platform != "zip" ) {
file_name += "-" + platform;
}
if (platform == "windows") {
file_name += ".exe";
} else if ((platform == "macosx-x86") || (platform == "macosx-ppc")) {
file_name += ".tgz";
} else if (platform == "macosx") {
file_name += ".dmg";
} else if(platform == "zip"){
file_name += ".zip"
} else {
file_name += ".sh";
}
return file_name;
}
function get_file_url(filename, lang_id) {
var url = get_build_location(lang_id);
url += filename;
return url;
}
function get_file_bouncer_url(platform, option, language) {
var url = get_build_info(isMainLanguage(language)).BOUNCER_URL;
url += "?" + "product=" + get_build_info(isMainLanguage(language)).BOUNCER_PRODUCT_PREFIX;
if(option != "all") {
url += "-" + option;
}
url += "&" + "os=" + platform;
return url;
}
function message(msg) {
document.write(msg);
}
function writeUrl(url,msg) {
document.write('<a href="' + url + '">' + msg + '</a>');
}
function set_page_title(title) {
document.title = title;
var titleElement = document.getElementsByTagName("title");
if(titleElement.length == 1) {
titleElement[0].text = title;
} else {
document.write('<title>' + title + '</title>');
}
}
function set_page_description(desc) {
document.write('<meta name="description" content="' + desc + '"/>');
}
function add_file(name, size, md5, locales) {
var index = FILES.length;
FILES[index] = new Object;
FILES[index].name = name;
FILES[index].size = size;
FILES[index].md5 = md5;
FILES[index].locales = locales.split(",");
FILES[index].location = currentLocation;
}
function load_files_information(additional) {
if(!additional) {
load_page_js("files.js", false);
} else if(get_build_info(true).SHOW_ADDITIONAL_LANGUAGES == 1) {
load_page_js("files.js", true);
}
}
function add_language(id, name, suffix, webpagename) {
var index = LANGUAGES.length;
for(var i=0;i<index;i++) {
if(LANGUAGES[i].id == id) {
if(id == "en" && isCommunityBuild()) {
var newLanguages = new Array();
for(var j=0;j<index;j++) {
if(j!=i) {
newLanguages[newLanguages.length] = LANGUAGES[j];
}
}
LANGUAGES = newLanguages;
index--;
} else {
return;
}
}
}
LANGUAGES[index] = new Object;
LANGUAGES[index].name = name;
LANGUAGES[index].id = id;
if(suffix || webpagename) {
LANGUAGES[index].suffix = suffix;
LANGUAGES[index].webpagename = webpagename;
}
LANGUAGES[index].location = currentLocation;
}
function load_languages(additional) {
if(!additional) {
load_page_js("languages.js", false);
} else if(get_build_info(true).SHOW_ADDITIONAL_LANGUAGES == 1) {
load_page_js("languages.js", true);
}
}
function add_build_info(build_info) {
var index = BUILD_INFO.length;
BUILD_INFO[index]=build_info;
}
function get_build_info(mainLanguage) {
var index = (!mainLanguage && BUILD_INFO.length == 2) ? 1 : 0;
return BUILD_INFO[index];
}
function isCommunityBuild() {
return get_build_info(true).COMMUNITY_BUILD == 1;
}
function load_build_info(additional) {
if(!additional) {
load_page_js("build_info.js", false);
} else if(get_build_info(true).SHOW_ADDITIONAL_LANGUAGES == 1) {
load_page_js("build_info.js", true);
}
}