<!--//
//CSVのデータを保持する変数
var csvLines = new Array();

var productHtmls = new Array();
var productHtmlFiles = new Array();

//classで表される検索条件とCSVとの対応のためのマップ
var conditionMap = new Array();
var conditionMapRev = new Array();
var viewStrMap = new Array();

//初期化
function init(){

  if (false) {
	  if(document.getElementById("initialized").style.display=="none"&&getCookie("initialized")=="true") { 
	    document.getElementById("initialized").style.display = "block"
	    setCookie("initialized","")
	  }
  } else if (false) {
	  var msg = document.getElementById("initialized"); // 初期化完了メッセージ
	  if(msg && msg.style.display=="none"&&getCookie("initialized")=="true") { 
	    msg.style.display = "block";
	    setCookie("initialized","");
	  }
  }
  loadCsv();
  initConditionMap();
  var reqParam=location.search.replace(/^\?/g,'').split('&');
  if(reqParam[0]=='')
    return;
  document.getElementById('main').innerHTML='<div id="pankuzu"></div><div id="contents"></div>';
  for(var i = 0; i < reqParam.length; i++){
    if(conditionMap[reqParam[i]]!=null){
      var parent = document.getElementById('sub_search');
      var result= searchByClassName(parent,reqParam[i]);
      if(result!=null) {
        var menuNo = result.parentNode.parentNode.id.substr(4,1);
        if(menuNo>0) clickMenu(menuNo);
        clickSubMenu(result.childNodes.item(0));
      }
    }
  }
  setTimeout('search()',1000);
}

function ViewStatusChangeByClassStatus(menuParent){
  var onStatus = 0;
  var parent = document.getElementById(menuParent);
  var childs = parent.childNodes;
  if(childs!=null){
    for(var i = 0; i < childs.length;i++){
      if(childs.item(i).nodeName=='LI') {
        var status = childs.item(i).childNodes.item(0).className
        if(status!='on'&&status!="on2") {
            var buttonStyle = childs.item(i).style
            if(buttonStyle.visibility=='hidden'||buttonStyle.display=='none'){
              buttonStyle.visibility='visible';
              buttonStyle.display='block';
            }else{
              buttonStyle.visibility='hidden';
              buttonStyle.display='none';
            }
        } else { onStatus++ }

        if(childs.item(i).className=="subClassC"&&onStatus==0){

          var parentC = document.getElementById('menu1optssub');
          var childsC = parentC.childNodes;
          if(childsC!=null){
            for(var j = 0; j < childsC.length;j++){
              if(childsC.item(j).nodeName=='LI') {
                var statusC = childsC.item(j).childNodes.item(0).className
                if(statusC=='on'){
                      var buttonStyleC = childsC.item(j).parentNode.parentNode.style
                      if(buttonStyleC.visibility=='hidden'||buttonStyleC.display=='none'){
                        buttonStyleC.visibility='visible';
                        buttonStyleC.display='block';
                      }

                  onStatus++
                }
              }
            }
          }
        }


      }
    }
  }
  return onStatus;
}

function searchByClassName(parent,className){
  var childs = parent.childNodes;
  if(childs!=null){
    for(var i = 0; i < childs.length;i++){
      if(childs.item(i).className==className){
        return childs.item(i);
      }
      var result = searchByClassName(childs.item(i),className);
      if(result!=null){
        return result;
      }
    }
  }
  return null;
}

//conditionMapを初期化する
function initConditionMap(){
  conditionMap['all']='All';
  conditionMap['subClassM']='M';
  conditionMap['subClassC']='C';
  conditionMap['subClassS']='S';
  conditionMap['subClassH']='H';
  conditionMap['subSize15']='15-inch';
  conditionMap['subSize121']='12.1-inch';
  conditionMap['subSize104']='10.4-inch';
  conditionMap['subSize75']='7.5-inch';
  conditionMap['subSize57']='5.7-inch';
  conditionMap['subSize38']='3.8-inch';
  conditionMap['subPowerAc']='AC';
  conditionMap['subPowerDc']='DC';
  conditionMap['subResolutionXga']='XGA';
  conditionMap['subResolutionSvga']='SVGA';
  conditionMap['subResolutionVga']='VGA';
  conditionMap['subResolutionQvga']='QVGA';
  conditionMap['subLcdTft']='TFT';
  conditionMap['subLcdStn']='STN';
  conditionMap['subLcdMono']='MONO';
  conditionMap['subLcdBlue']='BLUE';

  conditionMap['subClassC_sink']='DIO (Sink)';
  conditionMap['subClassC_source']='DIO (Source)';
  conditionMap['subClassC_flex']='FLEX NETWORK';
  conditionMap['subClassC_canopen']='CANopen';
  conditionMap['sink']='DIO (Sink)';
  conditionMap['source']='DIO (Source)';
  conditionMap['flex']='FLEX NETWORK';
  conditionMap['canopen']='CANopen';

  conditionMap['subModGp37']='GP3700';
  conditionMap['subModGp36']='GP3600';
  conditionMap['subModGp35']='GP3500';
  conditionMap['subModGp34']='GP3400';
  conditionMap['subModGp33']='GP3300';
  conditionMap['subModGp32']='GP3200';
  conditionMap['subModSt35']='ST3500';
  conditionMap['subModSt34']='ST3400';
  conditionMap['subModSt33']='ST3300';
  conditionMap['subModSt32']='ST3200';

  conditionMapRev['All']='all';
  conditionMapRev['M']='subClassM';
  conditionMapRev['C']='subClassC';
  conditionMapRev['S']='subClassS';
  conditionMapRev['B']='subClassB';
  conditionMapRev['H']='subClassH';
  conditionMapRev['15型']='subSize15';
  conditionMapRev['12.1型']='subSize121';
  conditionMapRev['10.4型']='subSize104';
  conditionMapRev['7.5型']='subSize75';
  conditionMapRev['5.7型']='subSize57';
  conditionMapRev['3.8型']='subSize38';
  conditionMapRev['AC']='subPowerAc';
  conditionMapRev['DC']='subPowerDc';
  conditionMapRev['XGA']='subResolutionXga';
  conditionMapRev['SVGA']='subResolutionSvga';
  conditionMapRev['VGA']='subResolutionVga';
  conditionMapRev['QVGA']='subResolutionQvga';
  conditionMapRev['TFT']='subLcdTft';
  conditionMapRev['STN']='subLcdStn';
  conditionMapRev['MONO']='subLcdMono';
  conditionMapRev['BLUE']='subLcdBlue';

  conditionMapRev['DIO (Sink)']='subClassC_sink';
  conditionMapRev['DIO (Source)']='subClassC_source';
  conditionMapRev['FLEX NETWORK']='subClassC_flex';
  conditionMapRev['CANopen']='subClassC_canopen';

  conditionMapRev['GP3700']='subModGp37';
  conditionMapRev['GP3600']='subModGp36';
  conditionMapRev['GP3500']='subModGp35';
  conditionMapRev['GP3400']='subModGp34';
  conditionMapRev['GP3300']='subModGp33';
  conditionMapRev['GP3200']='subModGp32';
  conditionMapRev['ST3500']='subModSt35';
  conditionMapRev['ST3400']='subModSt34';
  conditionMapRev['ST3300']='subModSt33';
  conditionMapRev['ST3200']='subModSt32';

  viewStrMap['すべて']='';
  viewStrMap['M']='Mクラス';
  viewStrMap['C']='Cクラス';
  viewStrMap['S']='Sクラス';

  viewStrMap['H']='Hクラス';
  viewStrMap['15型']='15型';
  viewStrMap['12.1型']='12.1型';
  viewStrMap['10.4型']='10.4型';
  viewStrMap['7.5型']='7.5型';
  viewStrMap['5.7型']='5.7型';
  viewStrMap['3.8型']='3.8型';
  viewStrMap['AC']='AC';
  viewStrMap['DC']='DC';
  viewStrMap['XGA']='XGA';
  viewStrMap['SVGA']='SVGA';
  viewStrMap['VGA']='VGA';
  viewStrMap['QVGA']='QVGA';
  viewStrMap['TFT']='TFT';
  viewStrMap['STN']='STN';
  viewStrMap['MONO']='Monochrome';
  viewStrMap['BLUE']='BLUE';

  viewStrMap['DIO (Sink)']='DIO (Sink)';
  viewStrMap['DIO (Source)']='DIO (Source)';
  viewStrMap['FLEX NETWORK']='FLEX NETWORK';
  viewStrMap['CANopen']='CANopen';

  viewStrMap['GP3700']='GP3700';
  viewStrMap['GP3600']='GP3600';
  viewStrMap['GP3500']='GP3500';
  viewStrMap['GP3400']='GP3400';
  viewStrMap['GP3300']='GP3300';
  viewStrMap['GP3200']='GP3200';
  viewStrMap['ST3500']='ST3500';
  viewStrMap['ST3400']='ST3400';
  viewStrMap['ST3300']='ST3300';
  viewStrMap['ST3200']='ST3200';

}

//メニューの開閉動作
function clickMenu(menuNum){
  var title = document.getElementById('title'+ menuNum);
  var menu = document.getElementById('menu'+ menuNum);
  if(title.className=='on'||title.className=='on2'){
    var status = ViewStatusChangeByClassStatus('menu'+ menuNum +'opts')
    if(status==0) {
      title.className='off';
      menu.style.visibility='hidden';
      menu.style.display='none';
    }else{
        if(title.className=='on') {
          title.className='on2';
        } else {
          title.className='on';
        }
    }
  }else{
    title.className='on';
    menu.style.visibility='visible';
    menu.style.display='block';
    enableAllSubMenu(menu)
  }

}

//XMLHttpRequestの作成
function createHttpRequest(){
  if(window.ActiveXObject){
    try{
      return new ActiveXObject('Msxml2.XMLHTTP');
    }catch(e){
      try{
        return new ActiveXObject('Microsoft.XMLHTTP');
      }catch(e2){
        return null;
      }
    }
  }else if(window.XMLHttpRequest){
    return new XMLHttpRequest();
  }else{
    return null;
  }
}

//CSVをロードしてcsvLinesに格納する
function loadCsv(){
  var req = createHttpRequest();
  req.onreadystatechange=function(){
    if(req.readyState==4){
      var tmpLines=req.responseText.split('\n');
      for(var i = 0; i < tmpLines.length; i++){
        var line = tmpLines[i].replace(/\r/g, '');
        if(line.split(',').length==8){
          csvLines.push(line);
        }
      }
    }
  }
  req.open('GET','/product/gp/gp3000/common/product.csv');
  req.send('');
}

//プロダクトのHTMLをロードしてtextをHTMLに追加する
function loadHtml(productName){
  var req = createHttpRequest();
  req.onreadystatechange=function(){
    if(req.readyState==4){
      productHtmls.push(req.responseText);
      document.getElementById('contents').innerHTML=productHtmls.join('');
    }
  }
  req.open('GET','/product/gp/gp3000/lineup/products/'+productName+'.htm', true);
  req.send('');
}

//再起で
function view(count){
  if(count >= productHtmlFiles.length){
    return;
  }
  loadHtml(productHtmlFiles[count]);
  setTimeout('view('+(count+1)+')',10);
}

var params='';

//サーバーにログを残すために検索条件をパラメータにした空リクエストを投げる
function ping(cons){
  var req = createHttpRequest();
  req.open('GET','/product/gp/gp3000/lineup/pingRecorder?'+params,true);
  req.send('');
}

//検索機能
function searchProduct(obj){
  if(obj.className=='disable')
    return;
  clickSubMenu(obj);
  search();
}
//検索機能
function search(){
  productHtmls = new Array();
  document.getElementById('main').innerHTML='<div id="pankuzu"></div><div id="contents"></div>';
  var cons = getCons();
  params='';
  for(var i = 1; i < cons.length; i++){
    params+=conditionMapRev[cons[i]];
    if(i < cons.length-1){
      params+='&';
    }
  }
  ping(cons);
  var count = 0;
  productHtmlFiles = new Array();

  setDisable(cons);
  rewriteATag(document.getElementById('sub_search'));

  for(var i = 0; i < csvLines.length; i++){
    var cols = csvLines[i].split(',');
    if(contain(cols,cons)){
      count+=1;
      productHtmlFiles.push(cols[0]);
    }
  }
  var pankuzu = '<a href="/product/gp/gp3000/">Home</a> >> <a href="./">Product Line-up</a> >> Search';
  document.getElementById('pankuzu').innerHTML=pankuzu;

  //検索結果テーブル表示デザイン
	//var searchCondition = '<h2>検索結果（'+count+'件/'+(csvLines.length)+'中）</h2><div id="saerch_result"><h3>検索条件</h3><table><tr><th>クラス</th><td colspan="3">'+cons[1];

  //if(cons[6]!=null){
  //  searchCondition += ' ＜' + cons[6]+'＞';
  //}
  //searchCondition += '</td></tr><tr><th>サイズ</th><td>'+cons[2]
  //  +'</td><th>電源タイプ</th><td>'+cons[3] +'</td></tr><tr><th>解像度</th><td>'+cons[4]
  //    +'</td><th>液晶タイプ</th><td>'+cons[5] +'</td></tr></table><br></div>';
  //productHtmls.push(searchCondition);
  //view(0);
  //}
	
  var searchCondition='<h2>Search Result (hit:'+count+'/'+(csvLines.length)+')</h2><div id="search_result">';

  //選択中の条件
	//viewCount=0;
  //searchCondition = append(searchCondition,viewStrMap[cons[1]]);

  //if(cons[6]!=null){
  //  searchCondition += ' ＜' + viewStrMap[cons[6]]+'＞';
  //}

  //searchCondition = append(searchCondition,viewStrMap[cons[2]]);
  //searchCondition = append(searchCondition,viewStrMap[cons[3]]);
  //searchCondition = append(searchCondition,viewStrMap[cons[4]]);
  //searchCondition = append(searchCondition,viewStrMap[cons[5]]);
 	// searchCondition = append(searchCondition,viewStrMap[cons[6]]);  
  searchCondition += '<p class="small">If you want to appending more condition, click left ICON.<br>When search retry is [RESET] ICON first.</p></div>'
  if(cons[1]=='H') {//caution for H class
    searchCondition += '<p><img src="/product/gp/gp3000/lineup/image/img_hmodel_01.gif" alt="Model no." width="513" height="128" /></p>';
  }
  productHtmls.push(searchCondition);
  view(0);
}
var viewCount = 0;

function append(source, parts,count){
  if(parts != null && parts!=''){
    if(viewCount!=0) source+=' ・';
    source += parts;
    viewCount++;
  }
  return source;
}

function contain(cols,cons){
  var results = ((cols[1]!=cons[1] && cons[1]!=conditionMap['all'])
                 ||(cols[3]!=cons[2] && cons[2]!=conditionMap['all'])
                 ||(cols[4]!=cons[3] && cons[3]!=conditionMap['all'])
                 ||(cols[5]!=cons[4] && cons[4]!=conditionMap['all'])
                 ||(cols[6]!=cons[5] && cons[5]!=conditionMap['all'])
                 ||(cols[7]!=cons[6] && cons[6]!=conditionMap['all']));
  if(cons[7]==null){
    return !results;
  }
  return !(results || (cols[2]!=cons[7]));
}

//現在の状態から、次に選択したら件数0件になる項目を選択できなくする
function setDisable(cons){
  for(var count = 1; count <= 6; count++){
    var consCpy = new Array();
    for(var j = 1; j <= 6; j++){
      consCpy[j] = cons[j];
    }
    if(cons[7]!=null && count!=1){
      consCpy[7]=cons[7];
    }
    if(count==1){
      var menu = document.getElementById('menu1optssub').childNodes;
      var tmpCons = consCpy[1];
      consCpy[1] = conditionMap['subClassC'];
      for(var i = 0; i < menu.length; i++){
        var item = menu.item(i);
        if(item.nodeName=='LI'){
          if(item.childNodes.item(0).className!='on'&&item.childNodes.item(0).className!='on2'){
            consCpy[7]=conditionMap[item.className];
            var state = 'disable';
            for(var k = 0; k < csvLines.length; k++){
              var cols = csvLines[k].split(',');
              if(contain(cols,consCpy)){
                state = 'off';
              }
            }
            item.childNodes.item(0).className=state;
          }
        }
      }
      consCpy[1]=tmpCons;
      consCpy[7]=null;
    }
    var menu = document.getElementById('menu'+count+'opts').childNodes;
    for(var i = 0; i < menu.length; i++){
      var item = menu.item(i);
      if(item.nodeName=='LI'){
        if(item.childNodes.item(0).className!='on'&&item.childNodes.item(0).className!='on2'){
          consCpy[count]=conditionMap[item.className];
          var state = 'disable';
          for(var k = 0; k < csvLines.length; k++){
            var cols = csvLines[k].split(',');
            if(contain(cols,consCpy)){
              state = 'off';
            }
          }
          item.childNodes.item(0).className=state;
        }
      }
    }
  }
}

function rewriteATag(parent){
  var childs = parent.childNodes;
  if(childs!=null){
    for(var i = 0; i < childs.length;i++){
      if(childs.item(i).nodeName=='A'){
        childs.item(i).href='#?'+params;
      }
      rewriteATag(childs.item(i));
    }
  }
}

//サブメニューの選択状態を変更
function clickSubMenu(obj){

  var state = obj.className;
  var nodes = obj.parentNode.parentNode.childNodes;
  var ppNode = obj.parentNode.parentNode.parentNode;
  if(ppNode.nodeName=='LI'){
    pppNodes = ppNode.parentNode.childNodes;
    for(var i = 0; i < pppNodes.length; i++){
      if(pppNodes.item(i).nodeName=='LI'){
        pppNodes.item(i).childNodes.item(0).className='off';
      }
    }
  }
  for(var i = 0; i < nodes.length; i++){
    if(nodes.item(i).nodeName=='LI'){
      var item = nodes.item(i);
      item.childNodes.item(0).className='off';
      item.style.visibility='hidden';
      item.style.display='none';
      if(item.parentNode.parentNode.className=='subClassC'){
      item.style.visibility='visible';
      item.style.display='block';

        var classNodes = item.parentNode.parentNode.parentNode.childNodes;
        for(var k = 0; k < classNodes.length; k++){
          if(classNodes.item(k).nodeName=='LI'&&classNodes.item(k).className!='subClassC'){
            //classNodes.item(k).className='off'
            classNodes.item(k).style.visibility='hidden';
            classNodes.item(k).style.display='none';
            }
        }



      }

      if(item.className=='subClassC'){
        
        var ccNodes = item.childNodes.item(2).childNodes;
        for(var j = 0; j < ccNodes.length; j++){
          if(ccNodes.item(j).nodeName=='LI'){
            ccNodes.item(j).childNodes.item(0).className='off'
            ccNodes.item(j).childNodes.item(0).style.visibility='visible';
            ccNodes.item(j).childNodes.item(0).style.display='block';
            }
        }
      }
    }
  }
  if(state=='on') {
    obj.className='on';
    if(obj.parentNode.parentNode.parentNode.className=='subClassC'){
    obj.parentNode.parentNode.parentNode.style.visibility='visible';
    obj.parentNode.parentNode.parentNode.style.display='block';
    } else {
    obj.parentNode.style.visibility='visible';
    obj.parentNode.style.display='block';
    }
  } else {
    obj.className='on';
    if(obj.parentNode.parentNode.parentNode.className=='subClassC'){
    obj.parentNode.parentNode.parentNode.style.visibility='visible';
    obj.parentNode.parentNode.parentNode.style.display='block';
    } else {
    obj.parentNode.style.visibility='visible';
    obj.parentNode.style.display='block';
    }

    //ジャンルボタンのclass分け
    if(IsGecko()) var browserNo = 0
    else var browserNo = 1;

    if(browserNo==0) {
      if(obj.parentNode.parentNode.parentNode.className=='subClassC'){
        obj.parentNode.parentNode.parentNode.parentNode.parentNode.previousSibling.previousSibling.childNodes.item(0).className="on2";
      }else{
        obj.parentNode.parentNode.parentNode.previousSibling.previousSibling.childNodes.item(0).className="on2";
      }
    }else{
      if(obj.parentNode.parentNode.parentNode.className=='subClassC'){
        obj.parentNode.parentNode.parentNode.parentNode.parentNode.previousSibling.childNodes.item(0).className="on2";
      }else{
        obj.parentNode.parentNode.parentNode.previousSibling.childNodes.item(0).className="on2";
      }
    }
  }
//obj.className='on2';
}

//対象メニュー以下を表示
function enableAllSubMenu(Menu){
  var state = Menu.className;
  if(IsGecko()){
    var nodes = Menu.childNodes.item(1).childNodes;
  }else{
    var nodes = Menu.childNodes.item(0).childNodes;
  }


  for(var i = 0; i < nodes.length; i++){
    if(nodes.item(i).nodeName=='LI'){
      var item = nodes.item(i);
      item.style.visibility='visible'; 
      item.style.display='block';

      if(item.className=='subClassC'){
        var ccNodes = item.childNodes.item(2).childNodes;
        for(var j = 0; j < ccNodes.length; j++){
          if(ccNodes.item(j).nodeName=='LI'){
            ccNodes.item(j).visibility='visible';
            ccNodes.item(j).display='block';
            }
        }
      }

    }
  }
}

//対象メニュー以下を表示
function disableAllSubMenu(Menu){
  var state = Menu.className;
  if(IsGecko()){
    var nodes = Menu.childNodes.item(1).childNodes;
  }else{
    var nodes = Menu.childNodes.item(0).childNodes;
  }


  for(var i = 0; i < nodes.length; i++){
    if(nodes.item(i).nodeName=='LI'&&nodes.item(i).childNode.className!='on'){
      var item = nodes.item(i);
      item.style.visibility='hidden'; 
      item.style.display='none';

      if(item.className=='subClassC'){
        var ccNodes = item.childNodes.item(2).childNodes;
        for(var j = 0; j < ccNodes.length; j++){
          if(ccNodes.item(j).nodeName=='LI'&&nodes.item(i).childNode.className!='on'){
            ccNodes.item(j).visibility='hidden';
            ccNodes.item(j).display='none';
            }
        }
      }

    }
  }
}

//全体の選択条件を取得
function getCons(){
  var cons = new Array();
  for(var i = 1; i <= 6; i++){
    var menu = document.getElementById('menu'+i+'opts');
    cons[i] = getSelected(menu);
  }
  var tmpCons = conditionMapRev[cons[1]].split('_');
  if(tmpCons.length==2){
    cons[1]=conditionMap[tmpCons[0]];
    cons[7]=conditionMap[tmpCons[1]];
  }
  return cons;
}

//サブメニューの検索条件を取得
function getSelected(menu){

  var nodes = menu.childNodes;
  var returnVal = null;
  for(var i = 0; i < nodes.length; i++){
    var item = nodes.item(i);
    if(item.nodeName=='LI'){
      if(item.childNodes.item(0).className=='on'){
        return conditionMap[item.className];
      }
    }
  }
  if(menu.id=='menu1opts'){
    return getSelected(document.getElementById('menu1optssub'));
  }
  return conditionMap['all'];
}

//検索条件を完全にリセットする
function resetAll(){
  if (false) {
	  reset('menu1optssub');
	  for(var count = 1; count <= 6; count++){
	    reset('menu'+count+'opts');
	  }
  }
  setCookie("initialized","true");
  document.location.href="/lineup/search.htm";
  return false;
}

//検索条件をリセットする
function reset(elemName){
  var menu = document.getElementById(elemName).childNodes;
  for(var i = 0; i < menu.length; i++){
    var item = menu.item(i);
    if(item.nodeName=='LI'){
      item.childNodes.item(0).className='off';
    }
  }
  setCookie("initialized","true")
}


//Cookie読み込み
function getCookie(key, tmp1, tmp2, xx1, xx2, xx3) {
 tmp1 = " " + document.cookie + ";";
 xx1 = xx2 = 0;
 len = tmp1.length;
 while (xx1 < len) {
 xx2 = tmp1.indexOf(";", xx1);
 tmp2 = tmp1.substring(xx1 + 1, xx2);
 xx3 = tmp2.indexOf("=");
 if (tmp2.substring(0, xx3) == key) {
 return(unescape(tmp2.substring(xx3 + 1, xx2 - xx1 - 1)));
 }
 xx1 = xx2 + 1;
 }
 return("");
}

//Cookie書き出し
function setCookie(key, val, tmp) {
 tmp = key + "=" + escape(val) + "; ";
 // tmp += "path=" + location.pathname + "; ";
 //tmp += "expires=Tue, 31-Dec-2030 23:59:59; ";
 document.cookie = tmp;
}

//ブラウザ判別
function IsGecko(){
    if(navigator){
        if(navigator.userAgent){
            if(navigator.userAgent.indexOf("Gecko/") != -1){
                return true;
            }
        }
    }
    return false;
}

// -->
