langlist = ["ja", "en", "zh", "de", "ko"];

var arealist = {
    "en":"na",
    "ja":"ja",
    "ko":"ko",
    "zh":"asia",
    "de":"eu"
};

Event.observe(window, 'load', function() {
  if ($("en")) {
  Event.observe($("en"), 'click', selectLanguage, false);
  }
  if ($("ja")) {
  Event.observe($("ja"), 'click', selectLanguage, false);
  }
  if ($("zh")) {
    Event.observe($("zh"), 'click', selectLanguage, false);
  }
  if ($("de")) {
    Event.observe($("de"), 'click', selectLanguage, false);
  }
  if ($("ko")) {
    Event.observe($("ko"), 'click', selectLanguage, false);
  }
  return false;
}, false);

/*
window.onload = function () {
  //setLangOption($("language"));
  // このコメントアウトをはずすとセレクトによるselect_language
  // Event.observe($("language"), 'change', selectLanguage, false); // 選択リストの変更をきっかけにselectLanguageを呼び出す。

  // aタグによるセレクトランゲージ
  Event.observe($("en"), 'click', selectLanguage, false);
  Event.observe($("ja"), 'click', selectLanguage, false);
  if ($("zh")) {
    Event.observe($("zh"), 'click', selectLanguage, false);
  }
  if ($("de")) {
    Event.observe($("de"), 'click', selectLanguage, false);
  }
  if ($("ko")) {
    Event.observe($("ko"), 'click', selectLanguage, false);
  }
}
*/

function retPathInfo() {
  pathname = location.pathname; // ドメイン以降の文字列取得

  pathinfo = [];
  for (i = 0; i < langlist.length; i++) {
    lang = langlist[i];
    regObj = new RegExp("^(\/.*\/|\/)" + lang + "(\/.*)$");
    result = pathname.match(regObj);
    if (result != null) {
      pathinfo[0] = RegExp.$1; // 言語以前の部分
      pathinfo[1] = lang;      // 言語名
      pathinfo[2] = RegExp.$2; // 言語以降の部分
      break;
    }
  }
  return pathinfo;
}

function retExtraLevel() { // 余分なディレクトリ数計算
  var pathname = location.pathname; // ドメイン以降の文字列取得

  var pathinfo;
  var delimAry = [];
  for (i = 0; i < this.langlist.length; i++) {
    lang = langlist[i];
    regObj = new RegExp("(\/.*\/)" + lang + "(\/.*)");
    result = pathname.match(regObj);
    if (result != null) {
      pathinfo = RegExp.$1; // 言語以前の部分
      delimAry =  pathinfo.split("/");
      break;
    }
  }
  return delimAry.length; 
}

// ディレクトリからファイル名を取得する。
function retBaseName(path) {
  var dir;
  var file;
  regObj = new RegExp("(.*\/)" + "(.*)");
  result = path.match(regObj);
  if (result != null) {
    dir = RegExp.$1; // 言語以前の部分
    file = RegExp.$2; // 言語以降の部分
  }
  return file;
}

function setLangOption(elem) {
    
  pathinfo = retPathInfo();

  len = $("language").options.length;
  for (i = 0; i < len; i++) {
    lang = $("language").options[i].value;
    if (lang != "" && pathinfo[1].indexOf(lang, 0) >= 0) { // 言語名と一致したら
      $("language").options[i].selected = true;
      break;
    }
  }
}

function redirectEnglishTop() {
  var basename = retBaseName(location.pathname); // ファイル名取得
  if (basename == "index.html" || basename == "") { // ファイル名がindex.htmlの場合
    location.href = "en/index.html?selectlang=1";
  }
}
function isTopPage(pathinfo) {
    if(pathinfo[2].match("^\/robot\/?index\.html$") ||
       pathinfo[2].match("^\/adcd\/?index\.html$") ||
       pathinfo[2].match("^\/oem\/?index\.html$")) {
    return true;
  }
  return false;
/*
  var kind = ary.detect(function(value, index) {
    var reg = new RegExp(".*" + value + ".*");
    // str.indexOf(value);
    if (str.match(reg)) return true; 
  });
  return kind;
*/
}


//
// ロボット事業部サイトマップページ用
//
function redirectSitemap(pathinfo, toLang) {
  // alert(pathinfo[0]);
  // alert(pathinfo[1]);
  // alert(pathinfo[2]);
  if (pathinfo[2].match("^\/robot\/sitemap\/index.html$")) { 
    if (pathinfo[1] == "zh" || pathinfo[1] == "de" || pathinfo[1] == "ko") { // ロボットのサイトマップの場合
      if (toLang == "ja" || toLang == "en") { // 飛び先が日本語もしくは英語の場合
        pathinfo[2] = "\/corporation\/sitemap\/index.html";
      }
    }
  }
}

function selectLanguage (evt) {

  // aタグ使用によるセレクトランゲージ
  // イベントが発生した要素オブジェクト取得
  if(evt.target) { // ie以外用
    target_node = evt.target;
  } else { // ie用
    target_node = evt.srcElement;
  }
  var value = target_node.id;
    // selectタグ使用のセレクトランゲージ
    // value = $("language").options[$("language").options.selectedIndex].value; // 選択したoptionsのvalues取得(飛び先の言語)(en, jaなど)
  if (value == "") {
    Event.stop(evt); 
    return false;
  }
  pathinfo = retPathInfo();

  if (pathinfo == "") { // 総合トップの可能性があるpathinfoでかつselectlanguageで英語が選択された場合
    if (value == "en") {
      redirectEnglishTop();
    }
    Event.stop(evt); 
    return false;
  }

  if (pathinfo[2].match(".*\/$")) { // 終端が/の場合は、index.htmlを追加する。
    pathinfo[2] = pathinfo[2] + "index.html";
  }

  // len = $("language").options.length;
  if (pathinfo[2].match("support\/discon\/")
    || pathinfo[2].match("product\/latest")
    || pathinfo[2].match("download\/spec_dimensions")) {
    if (value == "en" && pathinfo[1] != "en") { // 飛び先の言語が英語の場合、各地域のページに転送するための処理
      // var index = pathinfo[2].indexof(".html");
      pathinfo[2].match(/(.*)\.html/);
      pathinfo[2] = RegExp.$1 + "-" + arealist[pathinfo[1]] + ".html";
//    pathinfo[2] = pathinfo[2].replace("index.html", "index-" + arealist[pathinfo[1]] + ".html");
    } else if (pathinfo[1] == "en") { // 現在のページが英語の場合
      if (value != "en") {
        filename = retBaseName(pathinfo[2]);
        result = filename.match(/.*(-(na|ja|ko|asia|eu))\.html/);

        if (result != null) {
          pathinfo[2] = pathinfo[2].replace(RegExp.$1, "");
        }
      }
    }
  } else if (pathinfo[2].match("\/faq\/")) { // よくある質問の場合
    var result = pathinfo[2].match("(.*)(\/faq\/)(.*)");
    var ary = [RegExp.$1, RegExp.$2, RegExp.$3]
    pathinfo[2] = RegExp.$1 + RegExp.$2 + "index.html";
  } else if ((pathinfo[0].match(/.*topics.*/) == null && pathinfo[0].match(/.*updates.*/) == null) && pathinfo[1] == "en" && pathinfo[2] == "\/index.html") { // 英語総合トップなら
    if (value == "ja") {
    location.href = "../index.html?selectlang=1";
    Event.stop(evt); 
    return false;
    }
  } else if ((pathinfo[0].match(/.*topics.*/) || pathinfo[0].match(/.*updates.*/)) && pathinfo[2].match(/.*[0-9][0-9].*/)) {
    if (pathinfo[2].match(/.*adcd.*/)) {
      location.href = "../../../" + value + "/adcd/index.html";
    } else if (pathinfo[2].match(/.*robot.*/)) {
      location.href = "../../../" + value + "/robot/index.html";
    } else {
      location.href = "../../" + value + "/index.html";
    }
    Event.stop(evt); 
    return false;
  }
  redirectSitemap(pathinfo, value);
// for (i = 0; i < len; i++) {
// tolang = $("language").options[i].value; 
// if (pathinfo[1].indexOf(tolang, 0) >= 0) {

    /**
     * adcd 専用
     * product /index\-(.*)\.html/ のものを index.html にする
     *
     * @update 2010.3.26
     */
    if(pathinfo[2].match("^/adcd")) {
        //alert(pathinfo[2]);
        var lastString = pathinfo[2].match("index\-.*\.html");
        if(lastString != null) {
            pathinfo[2] = pathinfo[2].replace(lastString, "");
            //alert(pathinfo[2]);
        }
    }
    
    /**
     * BHT-900 用
     */
    (function(){
        var currentLang  = pathinfo[1];
        var selectedLang = value;

        if(currentLang === 'ja') {
            if(selectedLang === 'en') {
                var path = pathinfo[2].replace(/(bht_900)b?/igm, "$1");
                pathinfo[2] = path;
            }
            else {
                return;
            }
        }
        else {
            if(selectedLang === 'ja') {
                var path = pathinfo[2].replace(/(bht_900)/igm, "$1b");
                pathinfo[2] = path;
            }
            else {
                return;
            }
        }
    })();


    href = "http://"+ location.hostname + pathinfo[0] +  value + pathinfo[2];

    location.href = href;
    if(isTopPage(pathinfo) == true) {
        location.href = href + "?selectlang=1";
    }
    else {
        location.href = href;
    }

//  }
// }
  Event.stop(evt); 
  return false;
}

