//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
//
//　■製品詳細シミュレーションクラス
//　依存関係：commonlib.js
//　　　　　　setting.js
//
//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//クラス定義
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
clsTopmain = new Object();
clsTopmain = function(){
  //*******************************************************
  //動作フラグ
  //*******************************************************
  this.blnDebug = 0;
  this.blnRotate = 1;

  //*******************************************************
  //定数
  //*******************************************************
  this.ST_ROTATTIME   = 6000;
  this.ST_OVERTIME    = 25;
  
  this.ST_MENUMAX     = 6;
  
  this.ST_VISUALAREA    = "VisualArea";
  this.ST_VISUALCLASS   = "VisualParts";
  this.ST_MENUAREA      = "MenuArea";
  this.ST_MENUCLASS     = "MenuLine";
  this.ST_MENUCLASS_OV  = "MenuLineOn";

  //*******************************************************
  //プロパティ
  //*******************************************************
  //インスタンス名
  this.strInsName = "";
  
  //オブジェクト
  this.objVisualArea  = new Object();
  this.objVisuals     = new Array();
  this.objMenus       = new Array();
  this.objMenuArea    = new Object();
  this.objSetting     = garyMenuSetting;

  //初期表示メニュー番号
  this.intDefID       = gintDefaultID;
  
  //タイマーID
  this.intOverTime    = null;
  this.intRotatTime   = null;
  
  //表示画像ID
  this.intImgIndex    = 0;
  
  //*******************************************************
  //コンストラクタ
  //*******************************************************
  if (this.blnDebug){ com.setDebug(); }

  //*******************************************************
  //初期処理
  //*******************************************************
  this.init = function(vstrInsName){
    
    //インスタンス名記憶
    this.strInsName = vstrInsName;
    
    //表示領域出力
    this.write();
    
    //初期化処理実行
    com.addEvent(window, "load", com.getFnc("this.initobject();", this));
    
  }
  
  //*******************************************************
  //初期情報出力
  //*******************************************************
  this.write = function(){
    
    //初期IDチェック
    var intDefIdx = 0;
    for (var i=0; i<this.objSetting.length; i++){
      if (this.objSetting[i]["id"] != gintDefaultID){ continue; }
      intDefIdx = i;
      break;
    }
    
    var strVisualHtml = "";
    var strMenuHtml = "";
    var astrStyle = {"normal":"block", "over":"none"}
    for (var i=0; i<this.ST_MENUMAX; i++){

      //メインビジュアル
      if (i < this.objSetting.length){
        strStyle = "display:none;";
        if (i == intDefIdx){
          strStyle = "display:block;";
        }
        
        strVisualHtml += "<img src=\"" + this.objSetting[i]["image"] + "\" ";
        strVisualHtml += "width=\"537\" height=\"205\" alt=\"\" ";
        strVisualHtml += "class=\"" + this.ST_VISUALCLASS + "\" style=\"" + strStyle + "\">\n";
      }
      
      //メニュー
      strTitle = "";
      strClass = "";
      if (i < this.objSetting.length){
        strTitle  = this.objSetting[i]["title"];
        strClass  = this.objSetting[i]["size"];
      }
      astrStyle = {"normal":"block", "over":"none"}
      if (i == intDefIdx){
        astrStyle = {"normal":"none", "over":"block"}
      }
      
      strMenuHtml += "<div class=\"" + this.ST_MENUCLASS + "\" style=\"display:" + astrStyle["normal"] + "\">";
      strMenuHtml += "<img src=\"img/top_button_01.gif\" />";
      strMenuHtml += "<div class=\"text\"><p class=\"" + strClass + "\">" + strTitle + "</p></div>";
      strMenuHtml += "</div>";

      strMenuHtml += "<div class=\"" + this.ST_MENUCLASS_OV + "\" style=\"display:" + astrStyle["over"] + "\">";
      strMenuHtml += "<img src=\"img/top_button_cr.gif\" />";
      strMenuHtml += "<div class=\"text\"><p class=\"" + strClass + "\">" + strTitle + "</p></div>";
      strMenuHtml += "</div>\n";
    }

    var strHtml = "";

    strHtml += "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n";
    strHtml += "<tr>\n";
    strHtml += "<td colspan=\"4\"><img src=\"img/top_table_01.gif\" width=\"742\" height=\"6\" alt=\"\"></td>\n";
    strHtml += "</tr>\n";
    strHtml += "<tr>\n";
    strHtml += "<td><img src=\"img/top_table_02.gif\" width=\"7\" height=\"205\" alt=\"\"></td>\n";
    strHtml += "<td>\n";
    strHtml += "<div id=\"" + this.ST_VISUALAREA + "\">";
    strHtml += strVisualHtml;
    strHtml += "</div>";
    strHtml += "</td>\n";
    strHtml += "<td valign=\"top\" background=\"img/top_button_bg.gif\">\n";
    strHtml += "<div><img src=\"img/top_button_top.gif\" height=\"1\" width=\"191\"></div>\n";
    strHtml += "<div id=\"" + this.ST_MENUAREA + "\">\n";
    strHtml += strMenuHtml;
    strHtml += "</div>\n";
    strHtml += "</td>\n";
    strHtml += "<td><img src=\"img/top_table_03.gif\" width=\"7\" height=\"205\" alt=\"\"></td>\n";
    strHtml += "</tr>\n";
    strHtml += "<tr>\n";
    strHtml += "<td colspan=\"4\"><img src=\"img/top_table_04.gif\" width=\"742\" height=\"6\" alt=\"\"></td>\n";
    strHtml += "</tr>\n";
    strHtml += "</table>\n";
    
    document.write(strHtml);
  }

  //*******************************************************
  //オブジェクト取得、イベント定義
  //*******************************************************
  this.initobject = function(){

    //エリアオブジェクト取得
    this.objVisualArea  = document.getElementById(this.ST_VISUALAREA);
    this.objMenuArea    = document.getElementById(this.ST_MENUAREA);
    
    //ビジュアルオブジェクト取得
    this.objVisuals = com.getTag(this.objVisualArea, "img");
    for (var i=0; i<this.objVisuals.length; i++){
      this.objVisuals[i].style.cursor = "pointer";
      com.addEvent(this.objVisuals[i], "click", com.getFnc("this.link(" + i + ")", this));
    }

    //メニューオブジェクト取得
    var aryElements = com.getTag(this.objMenuArea, "div");
    var objMenuArray = {"normal":new Array(), "over":new Array()};
    for (var i=0; i<aryElements.length; i++){
      //該当オブジェクト以外は処理しない
      if (aryElements[i].className != this.ST_MENUCLASS 
          && aryElements[i].className != this.ST_MENUCLASS_OV){ continue; }
      
      //設定数に達したら後は処理しない
      if (objMenuArray["normal"].length >= this.objSetting.length && 
          objMenuArray["over"].length >= this.objSetting.length ){ break; }
      
      //オブジェクトをプロパティに格納
      if (aryElements[i].className == this.ST_MENUCLASS){
        objMenuArray["normal"].push(aryElements[i]);
      }
      if (aryElements[i].className == this.ST_MENUCLASS_OV){
        objMenuArray["over"].push(aryElements[i]);
      }
      
      //スタイル定義
      aryElements[i].style.cursor = "pointer";
      
    }
    
    //メニュー調整
    for (var i=0; i<objMenuArray["normal"].length; i++){
      this.objMenus[i] = {
        "normal"  : objMenuArray["normal"][i],
        "over"    : objMenuArray["over"][i]
      }
      
      var objMyMenu = this.objMenus[i]["normal"];
      com.addEvent(objMyMenu, "click",     com.getFnc("this.link(" + i + ")", this));
      com.addEvent(objMyMenu, "mouseover", com.getFnc("this.chgImage(" + i + ")", this));

      var objMyMenu = this.objMenus[i]["over"];
      com.addEvent(objMyMenu, "click",     com.getFnc("this.link(" + i + ")", this));
      com.addEvent(objMyMenu, "mouseout",  com.getFnc("this.chgImage(-1)", this));
    }

    //初期表示メニュー取得
    this.intImgIndex = 0;
    for (var i=0; i<this.objSetting.length; i++){
      if (this.objSetting[i]["id"] != this.intDefID){ continue; }
      this.intImgIndex = i;
      break;
    }
    this.intImgIndex--;

    //ローテーション開始
    this.rotation();
  }
  
  //*******************************************************
  //ローテーションセット
  //*******************************************************
  this.rotation = function(){
    
    //表示ID編集
    this.intImgIndex++;
    if (this.intImgIndex >= this.objSetting.length){
      this.intImgIndex = 0;
    }
    
    //画像切り替え
    this.chgImage_exec(this.intImgIndex);
    
    //ローテーション実行
    this.rotation_exec();
  }
  this.rotation_exec = function(){
    //処理判定
    if (!this.blnRotate){ return; }
    
    //切り替え時間取得
    var intInterval = this.objSetting[this.intImgIndex]["interval"];
    
    //ローテーションタイマーセット
    this.intRotatTime = setTimeout(this.strInsName + ".rotation();", intInterval);
  }

  //*******************************************************
  //メニューロールオーバー
  //*******************************************************
  this.menuOver = function(vintIndex){
    //全メニューを初期化
    for (var i=0; i<this.objMenus.length; i++){
      this.objMenus[i].className = this.ST_MENUCLASS;
    }
    this.objMenus[vintIndex].className = this.ST_MENUCLASS_OV;
    return false;
  }
  
  //*******************************************************
  //メニューリンク
  //*******************************************************
  this.link = function(vintIndex){
    
    if (this.objSetting[vintIndex]["target"] == "blank"){
      window.open(this.objSetting[vintIndex]["link"]);
    }else{
      document.location.href = this.objSetting[vintIndex]["link"];
    }
  }
  
  //*******************************************************
  //メインビジュアル切り替え
  //*******************************************************
  this.chgImage = function(vintIndex){
    //タイマーセット
    clearTimeout(this.intOverTime);
    clearTimeout(this.intRotatTime);
  
    //マウスアウト時はローテーションタイマーをセットして処理終了
    if (vintIndex == -1){
      this.rotation_exec();
      return; 
    }else{
      this.intImgIndex = vintIndex;
    }
    
    //切り替え実行
    this.intOverTime = setTimeout(this.strInsName + ".chgImage_exec(" + vintIndex + ");", this.ST_OVERTIME);
  }

  //*******************************************************
  //メインビジュアル切り替え実行
  //*******************************************************
  this.chgImage_exec = function(vintIndex){
    
    //マイナス値の場合は処理しない
    if (vintIndex == -1){
      return;
    }
    
    //全メニューを初期化
    for (var i=0; i<this.objMenus.length; i++){
      this.objMenus[i]["normal"].style.display = "block";
      this.objMenus[i]["over"].style.display = "none";
      this.objVisuals[i].style.display = "none";
    }
    this.objMenus[vintIndex]["normal"].style.display = "none";
    this.objMenus[vintIndex]["over"].style.display = "block";
    this.objVisuals[vintIndex].style.display = "block";

    //画像インデックス記憶
    this.intImgIndex = vintIndex;
    
    //メニューカレント
    this.menuOver(vintIndex);

  }
  
}
