///////////////////////////////////////////////////////////////////////////////
//
// Wide Hi-P版、Sales版、Web版 全対応
//
///////////////////////////////////////////////////////////////////////////////

/*-----------------------------------------------------------------------------
    GUI < core >
-----------------------------------------------------------------------------*/
/******************************************************************************
    変数
******************************************************************************/
function test(arg){
  alert(arg);
}

// -------------------------------------------------------------- now Data
var now_menu=0;
var now_Submenu=-1;
var now_tag=0;
var now_grade=defGrade;
var now_color=getGraDefCol(getGraIdx(now_grade));
var now_intcolor=getGraDefColin(getGraIdx(now_grade));
var now_cam=0;
var now_bgm=true;
var now_navi;

var parSel = new Array();
resetParFlg(now_grade);

var RotFlg="L";   // S:stop/L:left/R:right
var RotCO="S";	  // S:stop/L:left/R:right

var kitCols = new Array();	//あるキットで、装着するパーツkeyの配列
var kitColNo = 0;			//キット内で装着したパーツのカウント

var loadMenuFlg=false;    // menuLoaded

// -------------------------------------------------------------- estimate
var estGraPri_tax = "";
var estGraPri     = "";
var estOptDat = null;

var estJidousyaZei        = 0;
var estSyutokuZei         = 0;
var estJyuuryouZei        = 0;
var estJibaiseki          = 0;
var estHanbaiSyohiyou_tax = 0;
var estHanbaiSyohiyou     = 0;
var estRecycle            = 0;
var estSinkiKensa         = 0;
var estSyakoSyoumei       = 0;
var estKouseiSyousyo      = 0;
var estKensaDaikou_tax    = 0;
var estKensaDaikou        = 0;
var estSyakoSyouDikou_tax = 0;
var estSyakoSyouDikou     = 0;
var estNoSya_tax          = 0;
var estNoSya              = 0;

var estSyohiyouTotal_tax  = 0;
var estSyohiyouTotal      = 0;

var estOptionTotal_tax    = 0;
var estOptionTotal        = 0;
var estTotal_tax          = 0;
var estTotal              = 0;
var estTotalSyo_tax       = 0;
var estTotalSyo           = 0;

var estToritukejikanTotal = 0;
var estTosoujikanTotal    = 0;

// -------------------------------------------------------------- Flag
var disableControl=true;
var worldWaitFlg=false;                   // world Parts
var partsWaitFlg = false;
var colWaitFlg = false;

var aryCtrlKey = new Array("PU","PD","L","R","U","D");
var aryCtrlFlg = new Array(false,false,false,false,false,false);



/******************************************************************************
    cult3D Function
******************************************************************************/
var Cult3D;
var tmp = "";
var isLoaded=false;

// --------------------------------------------------------------- Load
function onLoadFinished(refObject){
  Cult3D = new Cult3D_Object(refObject);
  if(Cult3D == null){ 
    alert(aryErrMes[0]);
  }else{
    isLoaded=true;
    SetColoaded();
	RotCO="S";
  }
}

function onSceneFinished(){
}


// --------------------------------------------------------------- Message
function onSendMessage(){
  var message = Cult3D.getLastMessage();
  onMessageSent_type(message);
}


// --------------------------------------------------------------- Action
function triggerAction(arg1, arg2){
  if(isLoaded == true && Cult3D != null){
    if(!Cult3D.triggerAction(arg1, arg2)){
      alert(aryErrMes[1]);
    }
  }else{
    alert(aryErrMes[2]);
  }
}

// --------------------------------------------------------------- arcball
function ArcballStart(){ triggerAction('arcball_start',tmp);}
function ArcballStop() { triggerAction('arcball_stop',tmp); }


// --------------------------------------------------------------- CO controll [press/release]
// key=no[Press_**/Release_**]
function Ctrl_Press(key){
  var strMsg="";
  strMsg="keyPress_"+aryCtrlKey[key]; 
  aryCtrlFlg[key]=true;
  triggerAction(strMsg,tmp);
}
function Ctrl_Release(key){
  var strMsg="";
  strMsg="keyRelease_"+aryCtrlKey[key]; 
  aryCtrlFlg[key]=false;
  triggerAction(strMsg,tmp);
}


// forced stop ctrl
function ForcedStopCtrl(){
  for(var t=0; t<aryCtrlFlg.length; t++){
    if( aryCtrlFlg[t]==true )Ctrl_Release(t);
  }
}

// --------------------------------------------------------------- CO controll [click]
function setView(btnKey){
  var node = getViewNod(getViewIdx(btnKey));
  triggerAction("cam_"+node,tmp);
}


// --------------------------------------------------------------- Auto Rotation
function Ctrl_RotStop() { if ( RotCO!="S") {triggerAction("stopAutoRot",tmp);  RotCO="S";} }
function Ctrl_RotR()    { if ( RotCO!="R") {triggerAction("startAutoRotR",tmp);RotCO="R";} }
function Ctrl_RotL()    { if ( RotCO!="L") {triggerAction("startAutoRotL",tmp);RotCO="L";} }

function Ctrl_Rotation(flg){
  RotFlg=flg;
  switch(flg){
    case "S":
	  Ctrl_RotStop();
	  break;
	
    case "L":
	  if ( contents_type == 0 || contents_type == 1 ) ChangeRotIcon("L-Start");			
      Ctrl_RotL();
	  break;

    case "R":
	  if ( contents_type == 0 || contents_type == 1 ) ChangeRotIcon("R-Start");			
      Ctrl_RotR();
	  break;
  }




}
// controller mode
function Ctrl_Rotation_ctrl(flg){
  playMusic_press();
  if( RotFlg!="S" ) Ctrl_RotStop();
  if( RotFlg==flg ){ RotFlg="S"; return;}
  RotFlg=flg;
  switch(flg){
    case "L":{ Ctrl_RotL();   break;}
    case "R":{ Ctrl_RotR();   break;}
  }

  // クリック停止機能を消す
  if ( contents_type== 3 ) {
    if( clickRotStop_flg==true ){ Quit_firstStopRot(); clickRotStop_flg=false;}
  }
}


// *** temporary stop(mode=0:wait/1:start) *** //
function Rot_WaitStart(mode){
  if( mode==0 ) { Ctrl_RotStop();}
  else          { Ctrl_Rotation(RotFlg); }
}

// --------------------------------------------------------------- 3D Quality
function QualityMode(mode){
  // mode=true:画質優先  false:速度優先
  if( mode ){ Cult3D.setAntiAliasing( 2 ); }
  else      { Cult3D.setAntiAliasing( ( contents_type==3 ) ? 1 : 0 );}
}

// --------------------------------------------------------------- 3D領域クリックで回転停止機能の無効化
function Quit_firstStopRot() { triggerAction("firstStopRot",tmp);}


/******************************************************************************
    Get Input Key Data (From menu.htm)
******************************************************************************/
function checkKeyD(strKey){
  
  // -------------------------------------------------- KeyInput(UP)
  if ( contents_type==3 ) inputKeyD(strKey);
}

function checkKeyU(strKey){
  // -------------------------------------------------- KeyInput(DOWN)
  if ( contents_type==3 ) inputKeyU(strKey);
}


/******************************************************************************
    Focus
******************************************************************************/
function setFocus_Menu(){ 
  if( loadMenuFlg ) menu.focus();
}





/******************************************************************************
  sound
******************************************************************************/
var loadSoundFlg = false;
var selectSoundPress  = ( contents_type==3 ) ? 1 : 2 ; // 連続操作対応
var selectSoundSelect = ( contents_type==3 ) ? 1 : 2 ; // 連続操作対応
function playMusic_press(){

  if ( contents_type== 3 ) {

    switch( selectSoundPress ){
      case 1: menu.soundFla1.TGotoLabel("\_root.soundMC.press","play");
                      menu.soundFla1.TPlay("\_root.soundMC.press");
                      break;
      case 2: menu.soundFla2.TGotoLabel("\_root.soundMC.press","play");
                      menu.soundFla2.TPlay("\_root.soundMC.press");
                      break;
      case 3: menu.soundFla3.TGotoLabel("\_root.soundMC.press","play");
                      menu.soundFla3.TPlay("\_root.soundMC.press");
                      break;
    }
    selectSoundPress++;
    if( selectSoundPress > 3 ) selectSoundPress=1;

  } else if ( contents_type==1 && combi_type==1 ) {

	if(loadSoundFlg == false){
      sound.location.replace("s_sound.htm");
	  loadSoundFlg = true;
	}else{
      switch( selectSoundPress ){
        case 1: sound.document.all.press1.controls.play();break;
        case 2: sound.document.all.press2.controls.play();break;
        case 3: sound.document.all.press3.controls.play();break;
        case 4: sound.document.all.press4.controls.play();break;
        case 5: sound.document.all.press5.controls.play();break;
      }
      selectSoundPress++;
      if( selectSoundPress > 5 ) selectSoundPress=1;
    }

  } else  {

    if(sound.loadedSoundPress==false){ sound.loadSoundPress();return;}

    if( wmpver==6 ){
      switch( selectSoundPress ){
        case 1: sound.document.all.press1.play();break;
        case 2: sound.document.all.press2.play();break;
        case 3: sound.document.all.press3.play();break;
        case 4: sound.document.all.press4.play();break;
        case 5: sound.document.all.press5.play();break;
      }
    }else if( wmpver==7 ){
      switch( selectSoundPress ){
        case 1: sound.document.all.press1.controls.play();break;
        case 2: sound.document.all.press2.controls.play();break;
        case 3: sound.document.all.press3.controls.play();break;
        case 4: sound.document.all.press4.controls.play();break;
        case 5: sound.document.all.press5.controls.play();break;
      }
    }
    
    selectSoundPress++;
    if( selectSoundPress > 5 ) selectSoundPress=1;

  }

}

function playMusic_select(){
  switch( selectSoundSelect ){
    case 1: menu.soundFla1.TGotoLabel("\_root.soundMC.select","play");
    				menu.soundFla1.TPlay("\_root.soundMC.select");
    				break;
    case 2: menu.soundFla2.TGotoLabel("\_root.soundMC.select","play");
    				menu.soundFla2.TPlay("\_root.soundMC.select");
    				break;
    case 3: menu.soundFla3.TGotoLabel("\_root.soundMC.select","play");
    				menu.soundFla3.TPlay("\_root.soundMC.select");
    				break;
  }
  selectSoundSelect++;
  if( selectSoundSelect > 3 ) selectSoundSelect=1;
}


/******************************************************************************
  BGM
******************************************************************************/
function setBackMusic(mode){ now_bgm=mode; playBackMusic(mode);}
function playBackMusic(d){
  if( d ) bgm.location.href = "s_bgm.htm";
  else    bgm.location.href = "none.htm";
}


/******************************************************************************
  Error check
******************************************************************************/
// --------------------------------------------------------------- File Loading
var aryIsFile = new Array(true,true,true,true,true,true,true,true,true,true);
var checkTimer;
var isTimer = false;
function IsFileCheckTimer(type){ 
  var num = 2*now_menu+type;
  aryIsFile[num]=false;
  if( isTimer == true) clearTimeout(checkTimer);
  clearTimeout(checkTimer);
  checkTimer = setTimeout("IsFileCheck("+type+","+now_menu+")", contents_type==3 ? 120000 : 300000 );
  isTimer = true;
}
function IsFileOK(type){ var num = 2*now_menu+type; aryIsFile[num]=true;}
function IsFileCheck(type,menu){
  if( menu != now_menu ) return;
  
  var num = 2*menu+type;
  if( aryIsFile[num]==true ) return;
  
  switch( type ){
    case 0:{ alert(aryErrMes[3]); break;}
    case 1:{ alert(aryErrMes[4]); break;}
  }
}


var FLASH_VERSION;
var IE_VERSION;
if ( contents_type == 0 || contents_type == 1 ) {
  FLASH_VERSION = 5;
  IE_VERSION = 5;
} else {
  FLASH_VERSION = 7;
  IE_VERSION = 6;
}


// --------------------------------------------------------------- Flash version
function Check_FlashVer(){
  var flashVersion=false;
  if( navigator.appName == "Microsoft Internet Explorer" ){
    flashVersion=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").FlashVersion();
    flashVersion=Math.floor(flashVersion / 0x10000);
  }
  if(!flashVersion || flashVersion<=FLASH_VERSION ){ alert(aryErrMes[5]);return false;}
  return true;
}
// --------------------------------------------------------------- IE version
function Check_IEVer(){
  if(navigator.userAgent.indexOf('MSIE '+IE_VERSION+'.')<0){ alert(aryErrMes[6]);return false;}
  return true;
}
// --------------------------------------------------------------- OS(Win) version
function Check_WinVer(){
  if( navigator.userAgent.match(/Win(dows )?95/) || navigator.userAgent.match(/Win(dows )?98/)){
	alert(aryErrMes[7]);return false;
  }
  return true;
}
// --------------------------------------------------------------- WMP version
function Check_WMPVer(){
  var str = document.all.checkWMP.versionInfo;
  var ary = str.split(".");
  if(ary[0] < 9){ alert(aryErrMes[8]);return false;}
  return true;
}
function setWMPver(Pv){
  if( Pv==0 ) {
    alert(aryErrMes[8]);
  } else {
    if ( contents_type==0 || contents_type==1 ) {
	  parent.wmpver=Pv;
    } else {
      wmpver=parseInt(Pv);
    }
  }
}


/******************************************************************************
    LoadSet
******************************************************************************/
function SetColoaded(){
  
  // CO Load Check
  IsFileOK(0);
  
  // type Hi-P/Web
  SetColoaded_type();
  

}

/******************************************************************************
    Reset
******************************************************************************/
function reset(){
  if ( contents_type==0 || contents_type==1 ) {
	resetParFlg(now_grade);
	return resetGraColPar(true,true,false);
  } else {
    return resetGraColPar(true,true,false);
  }
}

function resetGraColPar(graF,colF,parF){
  var RetWld = false;
  
  if( graF ){ now_grade = defGrade; setGrade(defGrade);}
  
  if( colF ){ 
	now_intcolor = getGraDefColin(getGraIdx(now_grade));
	setColor( getGraDefCol(getGraIdx(now_grade)) );
  } else {
    // 内装色がグレード・ボディカラー不適合の場合は、内装色をデフォルトカラーに設定
	var resetFlg = true;
		
	// グレード適合チェック
    if ( getColin_GraType(getColinIdx(now_intcolor), getGraIdx(now_grade)) == 1 ) {
	  // ボディカラー適合チェック
      var aryExCol = getColinCol(getColinIdx(now_intcolor),getGraIdx(now_grade));
      for( var k=0; k<aryExCol.length; k++ ){
		if( now_color==aryExCol[k] ){ resetFlg=false; break;}
	  }
    }
	if ( resetFlg ) {
      now_intcolor = getGraDefColin(getGraIdx(now_grade));
    }

    // ボディカラーがグレード不適合の場合は、ボディカラーをデフォルトカラーに設定  
    if(getCol_GraType(getColIdx(now_color),getGraIdx(now_grade)) == 0){
	  setColor( getGraDefCol(getGraIdx(now_grade)) );
	}

  }
  
  if( parF ){
    
    // partsReset
    for( var i=0;i<Btn_Par.length;i++ ){		
			
			var nd_check = false;	//ノード名チェック用フラグ
			var gra_check = true;	//グレード適合チェック用フラグ
			
			for( var j=0;j<Btn_Par.length;j++ ){		//同じノード名のパーツがあるかチェック
				if(getParNod(j) == getParNod(i) && i!=j) nd_check = true;
			}
			
			//同じノード名のパーツがある時のみグレード適合チェックを行う。
			if( nd_check==true && getPar_GraType(i,getGraIdx(now_grade)) == 0 )gra_check = false;
			
			//”同じノード名のパーツがあり、かつグレード不適合”以外の場合、Show＆Hideを行う。
			if(gra_check){
	  	    if( parSel[i] ){
	  	      if( getParWld(i)==1 ){ worldWaitFlg = true; RetWld=true;}
  		      Show2parts(getParNod(i));
  		    }
  	  	  else {Hideparts(getParNod(i));
  	  	  }
      }
    }
  }

  return RetWld;
}

function resetParFlg(graKey){
  for( var i=0;i<Btn_Par.length;i++ ){
    parSel[i]=false;
    if( getPar_GraType(i,getGraIdx(graKey))==2 ){ parSel[i]=true;}
  }
}


/******************************************************************************
  Grade/Color/Parts
******************************************************************************/
// --------------------------------------------------------------- Grade
function setGrade(graKey){
  now_grade=graKey;
  resetParFlg(now_grade);
  return resetGraColPar(false,false,true);
}


// --------------------------------------------------------------- Color
function setColorAnim(colKey){
  now_color = colKey;
  
  // 内装色がボディカラー不適合の場合は、内装色をデフォルトカラーに設定
	var resetFlg = true;
  var aryExCol = getColinCol(getColinIdx(now_intcolor),getGraIdx(now_grade));
  for( var k=0; k<aryExCol.length; k++ ){
	  if( now_color==aryExCol[k] ){ resetFlg=false;break;}
	}
	if ( resetFlg ) {
      now_intcolor = getGraDefColin(getGraIdx(now_grade));
  }
  
  triggerAction('changeBodyColorAnim', getColNod(getColIdx(colKey)));
}
function setColor(colKey){
  now_color = colKey;
  
  // 内装色がボディカラー不適合の場合は、内装色をデフォルトカラーに設定
	var resetFlg = true;
  var aryExCol = getColinCol(getColinIdx(now_intcolor),getGraIdx(now_grade));
  for( var k=0; k<aryExCol.length; k++ ){
	  if( now_color==aryExCol[k] ){ resetFlg=false;break;}
	}
	if ( resetFlg ) {
      now_intcolor = getGraDefColin(getGraIdx(now_grade));
  }
  
  triggerAction('changeBodyColor', getColNod(getColIdx(colKey)));
}

// --------------------------------------------------------------- Parts
function setParts(parKey,anm){													
  var parIdx = getParIdx(parKey);
  if( getParWld(parIdx)==1 && !parSel[parIdx]==true ) worldWaitFlg = true;
  var cam = false;
  if( !parSel[parIdx]==true && anm ) cam = Funccam(getParCam(parIdx));			
  
  // ---------------------------------------exclusion
  checkExclusion(parIdx,anm);
  CarExclu_changePat(parIdx);
  
  //setPar(parIdx,!parSel[parIdx],anm,true,false);
  setPar(parIdx,!parSel[parIdx],anm,cam,false);
  checkPackage(parIdx);
}

function setPar(idx,set,anm,delay_s,delay_h){
  if( set==parSel[idx] )return;
  var timeS = 5;
  
  if( set ){
    if( delay_s )timeS+=2000;
    if( anm ) { setTimeout("Showparts(\""+getParNod(idx)+"\")",timeS);}
    else      { setTimeout("Show2parts(\""+getParNod(idx)+"\")",timeS);}
  } else {
    if( delay_h )timeS+=2000;
    setTimeout("Hideparts(\""+getParNod(idx)+"\")",timeS);
  }
  parSel[idx]=set;
}
function Showparts(partsNode) { triggerAction('showNodeAnim', partsNode);}

function Show2parts(partsNode){
  if ( isArray(partsNode) ) {
    for ( var i=0; i<partsNode.length; i++ ) {
      triggerAction('showNode', partsNode[i]); 
    }
  } else {
    triggerAction('showNode',partsNode); 
  }
}

function Hideparts(partsNode) {
  if ( isArray(partsNode) ) {
    for ( var i=0; i<partsNode.length; i++ ) {
      triggerAction('hideNode', partsNode[i]); 
    }
  } else {
    triggerAction('hideNode',partsNode); 
  }
}

function isArray(x) { 
    return ((typeof x == "object") && (x.constructor == Array));
}

function Funccam(mode){
  switch( mode ){
    case  0:{ triggerAction('cam_frontreset', tmp); break;}
    case  1:{ triggerAction('cam_rearreset', tmp); break;}
    default:{
      if ( mode > 10 ) {
        triggerAction('cam_change'+(mode-10), tmp); break;
      }
	}
  }

  now_cam = mode;
  return true;
}


// --------------------------------------------------------------- exclusion
function checkExclusion(idx,anm){

   // 排他パーツチェック
  if( getParHaita(idx)!=0 ) {
    var setidx=-1;
    for(var i=0; i<Btn_Par.length; i++){
      if(i==idx) continue;
      if(parSel[i]==!parSel[idx] && getParHaita(idx)==getParHaita(i)){
        if( parSel[idx]==true  && getPar_GraType(i,getGraIdx(now_grade))==2 ){ setidx=i;}   // 脱->標準装備 着
        if( parSel[idx]==false && getPar_GraType(i,getGraIdx(now_grade))>0  ){ setidx=i;}   // 着->現装着パーツ 脱
      }
    }
    if(setidx!=(-1)) {
      if ( getParTyp(setidx)==0 || getParTyp(setidx)==1 ) {
		parSel[setidx]=!parSel[setidx];
      } else {
	    setPar(setidx ,parSel[idx],false,false,(!parSel[idx]) && anm);
      }
	}
  }
}

// 指定パーツが選択可能かどうかを返す関数
// 戻値：選択可能なら0、選択不可能なら理由キー（整数）
function chkSelectablePar(idx){

  // DOPパーツ[->MODELLISTAパーツ不可]
  if(getParCate(idx)==3){
    for(var i=0; i<parSel.length; i++){
      if( parSel[i] && getParCate(i)==5 ){
		return 1;
	  }
    }
  }
  

  // MODELLISTAパーツ[->DOPパーツ不可]
  if(getParCate(idx) == 5){   		
    for(var i=0; i<parSel.length; i++){
      if( parSel[i] && getParCate(i)==3 ) {
		return 1;
	  }
    }
  }
  
   // MODELLISTAパーツ[->TRDパーツ不可]
  if(getParCate(idx) == 5){
    for(var i=0; i<parSel.length; i++){
      if( parSel[i] && getParCate(i)==4 ){
		 return 2;
	  }
    }
  } 

  // TRDパーツ[->MODELLISTAパーツ不可]
  if(getParCate(idx) == 4){
    for(var i=0; i<parSel.length; i++){
      if( parSel[i] && getParCate(i)==5 ){
		 return 2;
	  }
    }
  }

  // 排他ボディカラー選択時は選択不可
  if(getParExCol(idx)==now_color) {
    return 10;
  }

  // 車種依存の条件
  ret = chkSelectableParDC(idx);
  if ( ret > 0 ) {
    return ret;
  }
    
  //選択可能
  return 0;
}


// 指定カラーが選択可能かどうかを返す関数
// 戻値：選択可能なら0、選択不可能なら理由キー（整数）
function chkSelectableCol(idx){

  // 排他ボディカラー選択時は選択不可
  for (var i=0; i<parSel.length; i++) {
    if( parSel[i] && getParExCol(i)==getColKey(idx) ){
       return 30;
    }
  }

  // 車種依存の条件
  ret = chkSelectableColDC(idx);
  if ( ret > 0 ) {
    return ret;
  }

  //選択可能
  return 0;
}


// --------------------------------------------------------------- package
function checkPackage(idx) {

  // パッケージ・セット解除チェック
  for(var k=0; k<Btn_Par.length; k++){
    if(parSel[k] && ( getParTyp(k)==0 || getParTyp(k)==1 ) ){     // 選択パッケージ・セット
      var aryPack = getParPackageParts(k);
      for(var j=0; j<aryPack.length; j++){    // パッケージ・セットの構成パーツをチェック
        if( parSel[getParIdx(aryPack[j])]==false ) {
		  // パッケージ・セット解除
		  if(kitTimeFlg == false) parSel[k] = false;	// アニメーション対応
		  break;
		}
      }
    }
  }

  // セット成立チェック（注・パッケージは個別選択では成立しない）
  for(var k=0; k<Btn_Par.length; k++){
    if( (!parSel[k]) && getParTyp(k)==1 ){     // 非選択セット
	  var chk = true;
      var aryPack = getParPackageParts(k);
      for(var j=0; j<aryPack.length; j++){    // パッケージの構成パーツをチェック
        if( parSel[getParIdx(aryPack[j])]==false ) {
		  chk = false;
		  break;
		}
      }
	  if (chk) {parSel[k]=true;}
    }
  }
}



// --------------------------------------------------------------- Package
function selectPartsPackageAction(parKey){
	var pkIdx = getParIdx(parKey);
	var pacDat = getParPackageParts(pkIdx);
	if( pacDat==null )alert("パッケージ情報がありません");
	
	// 排他グループが0以外の場合は排他チェック 
 	if( getParHaita(pkIdx)!=0 ) {
	  checkExclusion(pkIdx,false);
	}

	if(parSel[pkIdx]==false){										// パッケージをセット
				
		// パッケージのパーツをセット
		for(var i=0; i<pacDat.length; i++){
			var pIdx = getParIdx(pacDat[i]);						// パッケージのパーツ Key -> idx
			if(parSel[pIdx]==false) kitCols.push(pacDat[i]);		//装着の必要なパーツkeyを配列に入れる
		}
		kitColNo = 0;			
		kitTimeFlg = true;		//キットアニメーションスタートフラグ→true	
		KitProc();				//キット装着カウント用KitProc関数呼び出し			
		parSel[pkIdx] = true;
	
	}else{															// パッケージをリセット
		
		// パッケージのパーツのみをリセット
		for(var i=0; i<pacDat.length; i++){
			var pIdx = getParIdx(pacDat[i]);						// パッケージのパーツ Key -> idx
			//parSel[pIdx] = false;
			setParts(pacDat[i],false);
			
			//hideNode(getParCult(getParIdx(pacDat[i])));
			//selectPartsCultAction(getParIdx(pacDat[i]));
		}
		parSel[pkIdx] = false;
	}
}


// 指定パーツが選択中のタブに該当するかどうか
function checkParTab(idx) {
  if ( FILTER_FLG ) {
    for ( var i=0; i<filter_par.length; i++ ) {
      if ( filter_par[i]==getParTab(idx) ) return true;
    }
    return false;
  } else {
    return ( getParTab(idx)==now_tag );
  }
}





/******************************************************************************
    Create Button Array
******************************************************************************/

function initArr() {

  keyArr      = new Array();
  imageArr    = new Array();
  selectedArr = new Array();
  picsizeArr  = new Array();
  priceArr    = new Array();
  othersArr   = new Array();
  urlArr      = new Array();

}


// ----------------------------------------------------Grade
function sendGraBtn(arg){

  initArr();

  if ( arg=="reset" ) {

    graBtnArr = new Array();
    graBtnArr = preGraBtn();

  } else if ( arg!=undefined ) {
  
    // 引数を分解
    var spD       = arg.split("|");
    var sortItm   = parseInt(spD[0]);
    var strUpDown = spD[1];
    
    var sortData = new Array();
    var ary = new Array();

    for(var i=0; i<graBtnArr.length; i++){
      switch( ARR_GRA_ITEM[sortItm] ){
        case  0:{ sortData.push( getGraNam(graBtnArr[i])  );     break;}
        case  1:{ sortData.push( getGraKudou(graBtnArr[i]));     break;}
        case  2:{ sortData.push( getGraLitter(graBtnArr[i]));    break;}
        case  3:{ sortData.push( getGraMt(graBtnArr[i]));        break;}
        case  4:{ sortData.push( getGraCapacity(graBtnArr[i]));  break;}
        case  5:{ sortData.push( getGraFuel(graBtnArr[i]));      break;}
        case 10:{ sortData.push( getGraPri_tax(graBtnArr[i])  ); break;}
      }
    }

    
    // ソート
    var numflg = false;
    if( ARR_GRA_ITEM[sortItm]==10 ) numflg = true;
    var mode = false;
    if( strUpDown=="DOWN" ) mode=true;
    ary = Sort(sortData,numflg,mode);
    
   
    // sortData Idx並び替え
    var retIdxData = new Array();
    var delIdx = new Array();
    for(var j=0; j<ary.length; j++){
      var pos=0;
      for( var g=0; g<sortData.length; g++ ){
        if( ary[j] == sortData[g] ){
          var deldata = false;
          for( var q=0; q<delIdx.length; q++ ){ if(g==delIdx[q]){ deldata=true;break;} }
          if( deldata==false ){ 
            pos = g;
            delIdx.push(pos);
            break;
          }
        }
      }
      retIdxData.push(pos);
    }
    
    // ボタンデータ作成
    initArr();

    // 現状データとして並べ替えたものを保持
    var keepGraBtn = new Array();
    for(var h=0; h<retIdxData.length; h++){  keepGraBtn.push(graBtnArr[retIdxData[h]]);}
    graBtnArr = new Array();
    graBtnArr = keepGraBtn;
  
  }
  for(var i=0; i<graBtnArr.length; i++){

    var idx = graBtnArr[i];

	// 絞込み
    if ( filter_litter   !="" && filter_litter   != getGraLitter(idx)   ) continue;
    if ( filter_kudou    !="" && filter_kudou    != getGraKudou(idx)    ) continue;
    if ( filter_mt       !="" && filter_mt       != getGraMt(idx)       ) continue;
    if ( filter_fuel     !="" && filter_fuel     != getGraFuel(idx)     ) continue;
    if ( filter_capacity !="" && filter_capacity != getGraCapacity(idx) ) continue;

    keyArr.push(getGraKey(graBtnArr[i]));
    imageArr.push( GRADE_XML_FLG ? "g_empty" : getGraPic(graBtnArr[i]) );
    priceArr.push( formatPriceBtn(getGraPri_tax(graBtnArr[i]), false ) );
    if ( GRADE_XML_FLG ) othersArr.push(getGraNam(graBtnArr[i])+";"+getGraKudou(graBtnArr[i])+";"+getGraCapacity(graBtnArr[i])+";"+getGraLitter(graBtnArr[i])+";"+getGraMt(graBtnArr[i]));
    arySize = getGraPicSize(graBtnArr[i]);
    var strSize = arySize[0]+","+arySize[1];
    picsizeArr.push(strSize);
  }
  selectedArr.push(now_grade);
}


function preGraBtn(){
  var ary = new Array();
  for(var i = 0; i < Btn_Gra.length; i++){
    if( getGraDisp(i) == 0 )continue;
    // ---------------------------------------CarExclusion
    if( CarExclu_preGra(i)==false )continue;
    ary.push(i);
  }
  return ary;
}








// ----------------------------------------------------Color
function sendColBtn(){

  initArr();
  disabledArr = new Array();

  colBtnArr = new Array();
  colBtnArr = preColBtn();

  for(var i=0; i<colBtnArr.length; i++){
    keyArr.push(getColKey(colBtnArr[i][0]));
    imageArr.push(getColPic(colBtnArr[i][0]));
    priceArr.push( formatPriceBtn(getColPri_tax(colBtnArr[i][0]),true) );
    arySize = getColPicSize(colBtnArr[i][0]);
    var strSize = arySize[0]+","+arySize[1];
    picsizeArr.push(strSize);
    if(colBtnArr[i][1]==true)  selectedArr.push(getColKey(colBtnArr[i][0]));
    if(colBtnArr[i][2]==false) disabledArr.push(getColKey(colBtnArr[i][0]));
  }
}

function preColBtn(){
  var ary = new Array();
  for(var i = 0; i < Btn_Col.length; i++){
    if( getCol_GraType(i,getGraIdx(now_grade)) != 1 )continue;
    
    // ---------------------------------------CarExclusion
    if( CarExclu_preCol(i)==false )continue;

    var selectable = false;
    var selected = false;
    var ret = chkSelectableCol(i);

    if( ret==0 )  selectable=true;
    if( now_color==getColKey(i) ) selected = true;

    ary.push(new Array(i, selected, selectable));
  }
  return ary;
}

function sendColinBtn(){

  initArr();
  colBtnArr = new Array();
  colBtnArr = preColinBtn();

  for(var i=0; i<colBtnArr.length; i++){
    keyArr.push(getColinKey(colBtnArr[i]));
    imageArr.push(getColinPic(colBtnArr[i]));
    priceArr.push( formatPriceBtn( getColinPri_tax(colBtnArr[i]), true) );			// ☆XML価格対応
    arySize = getColinPicSize(colBtnArr[i]);
    var strSize = arySize[0]+","+arySize[1];
    picsizeArr.push(strSize);
  }
  selectedArr.push(now_intcolor);
}

function preColinBtn(){
  var ary = new Array();
  for(var i = 0; i < Btn_Col_in.length; i++){
		
		// グレード適合
    if( getColin_GraType(i,getGraIdx(now_grade)) != 1 )continue;
    
    // ボディカラー適合
    var ret = false;
    var aryExCol = getColinCol(i,getGraIdx(now_grade));
    for( var k=0; k<aryExCol.length; k++ ){
			if( now_color==aryExCol[k] ){ ret=true;break;}
		}
		if( ret==false )continue;
    
    ary.push(i);
  }
  return ary;
}


// ----------------------------------------------------Parts
function sendParBtn(op){

  initArr();
  parBtnArr = new Array();
  parBtnArr = preParBtn(op);

  for(var i=0; i<parBtnArr.length; i++){
	var dir = isParPai(parBtnArr[i][0]) ? "pai/" : "bas/";		
    keyArr.push(getParKey(parBtnArr[i][0]));
    imageArr.push(dir + getParPic(parBtnArr[i][0]));
    if ( combi_type==1 ) {
      priceArr.push( formatPriceBtn( getParTCVPrice(parBtnArr[i][0]), false ) );	// TCV価格
    } else {
      priceArr.push( formatPriceBtn( getParEsti_bas_ZeiKomi(parBtnArr[i][0]), false ) );
    }

    arySize = getParPicSize(parBtnArr[i][0]);
    var strSize = arySize[0]+","+arySize[1];
    picsizeArr.push(strSize);
    othersArr.push( getParPopup(parBtnArr[i][0])!="" && getParPopup(parBtnArr[i][0])!=undefined ? "1":"0" );
    if(parBtnArr[i][1]==true) selectedArr.push(getParKey(parBtnArr[i][0]));
    if(parBtnArr[i][2]==false) disabledArr.push(getParKey(parBtnArr[i][0]));
  }

}

function preParBtn(op){
  var ary = new Array();
  for(var i = 0; i < Btn_Par.length; i++){
    
    if( getParDisp(i) == 0 )continue;
    if( getPar_GraType(i,getGraIdx(now_grade)) != 1 ) continue;
  	if( getParCate(i)<=0 )continue;
   	if( checkParTab(i)==false )continue;
    
    // ---------------------------------------CarExclusion
    if( CarExclu_prePar(i)==false )continue;

    var selectable = false;
    var selected = false;
    var ret = chkSelectablePar(i);

    if( ret==0 )  selectable=true;
    if(parSel[i]==true) selected = true;

    ary.push(new Array(i, selected, selectable));
  }
  return ary;
}

function sendParBtnSelected(){
  selectedArr = new Array();
  disabledArr = new Array();

  parBtnArr = new Array();
  parBtnArr = preParBtn();

  for(var i=0; i<parBtnArr.length; i++){
    if(parBtnArr[i][1]==true) selectedArr.push(getParKey(parBtnArr[i][0]));
    if(parBtnArr[i][2]==false) disabledArr.push(getParKey(parBtnArr[i][0]));
  }
  for(var i=1; i<kitCols.length; i++){		//キットの最初のパーツ以降のパーツを配列に追加
  	selectedArr.push(kitCols[i]);
  }
}



/******************************************************************************
    Sort  (Grade)
     引数1  1:ソート配列　2:数字ソート(false=文字コードソート)  3:(true)降順 (false)昇順
******************************************************************************/
function Sort(ary,numflg,mode){
  var data = new Array();
  for( var t=0; t<ary.length; t++ )data.push(ary[t]);
  var sortAry = new Array();
  
  if( numflg ){ data.sort(compare);}                                          // 数字ソート
  else        { data.sort();}                                                 // 文字コードソート
  
  if( mode ){ for( var t=(data.length-1); t>-1; t-- )sortAry.push(data[t]);}  // 降順
  else      { sortAry = data;}                                                // 昇順
  
  return sortAry;
}

function compare(a, b){ return a - b;}




/******************************************************************************
    Estimate
******************************************************************************/
function estimate(){

  //
  var value=0;
  var i;
 
  
  // --------------------------------------------------- Grade
  estGraPri_tax = getGraPri_taxFlt(getGraIdx(now_grade));	//車両本体価格（税込）[float]
  estGraPri     = getGraPriFlt(getGraIdx(now_grade));			//車両本体価格（税抜）
  
  
  // --------------------------------------------------- charges
  if ( contents_type==1 || contents_type==3 ) {
	aryCharg = getGraCharge(getGraIdx(now_grade));
  } else {
    aryCharg = new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
  }
  if( aryCharg!=null ){
	  estJidousyaZei    = aryCharg[0];			//自動車税
	  estSyutokuZei     = aryCharg[1];			//自動車取得税
	  estJyuuryouZei    = aryCharg[2];			//自動車重量税
	  estJibaiseki      = aryCharg[3];			//自賠責保険料
	  estHanbaiSyohiyou_tax = aryCharg[4];			//販売諸費用（税込）
	  estHanbaiSyohiyou = aryCharg[5];			//販売諸費用（税抜）
	  estRecycle        = aryCharg[6];			//リサイクル料金
	  estSinkiKensa     = aryCharg[7];
	  estSyakoSyoumei   = aryCharg[8];
	  estKouseiSyousyo  = aryCharg[9];
	  estKensaDaikou_tax= aryCharg[10];
	  estKensaDaikou    = aryCharg[11];
	  estSyakoSyouDikou_tax = aryCharg[12];
	  estSyakoSyouDikou = aryCharg[13];
	  estNoSya_tax      = aryCharg[14];
	  estNoSya          = aryCharg[15];
	}
  
  // --------------------------------------------------- 諸費用合計
  // 諸費用合計金額（税込）＝　Ａ　＋販売諸費用（税込）
  // Ａ　＝　自動車税　＋自動車取得税　＋　自動車重量税　＋自賠責保険料　＋　リサイクル料金
  // ---------------------------------------------------
  if( aryCharg!=null ){
	estSyohiyouTotal_tax = estJidousyaZei + estSyutokuZei + estJyuuryouZei + estJibaiseki + estRecycle + estHanbaiSyohiyou_tax;
  	estSyohiyouTotal = estSyohiyouTotal_tax - estHanbaiSyohiyou_tax + estSyohiyouTotal;
	}

  // --------------------------------------------------- Option
  estOptDat = new Array();
  estOptDat = OptEstimate();
  estOptionTotal_tax    = 0;
  estOptionTotal        = 0;
  estToritukejikanTotal = 0;
  estTosoujikanTotal    = 0;
    
  //選択パーツ価格追加  
  for(var i=0; i<estOptDat.length; i++){
    estOptionTotal_tax    += parseFloat(estOptDat[i][4]);
    estOptionTotal        += parseFloat(estOptDat[i][5]);
    estToritukejikanTotal += estOptDat[i][6];
    estToritukejikanTotal =  Math.round(estToritukejikanTotal*10)/10;
    estTosoujikanTotal    += estOptDat[i][7];
    estTosoujikanTotal    =  Math.round(estTosoujikanTotal*10)/10;
  }
  
  // 合計金額(本体+オプション)
  estTotal_tax = parseFloat(estGraPri_tax) + parseFloat(estOptionTotal_tax);
  estTotal     = parseFloat(estGraPri) + parseFloat(estOptionTotal);
  
  // 合計金額(本体+オプション+諸費用)
  estTotalSyo_tax = parseFloat(estTotal_tax) + parseFloat(estSyohiyouTotal_tax);
  estTotalSyo     = parseFloat(estTotal) + parseFloat(estSyohiyouTotal);

}



/******************************************************************************
    return Option Array
      [ 0:KEY 1:PIC 2:NAME 3:TYPE(0=NONE,1:素地,2:塗装済) 4:価格(税込) 5:価格(税抜) 6:取付時間 7:塗装時間 8:MOPフラグ]
******************************************************************************/
function OptEstimate(){

  var graIdx = getGraIdx(now_grade);
  var colIdx = getColIdx(now_color);
  var colinIdx = getColinIdx(now_intcolor);

  // ------------------------------------------------------------------- オプションデータ構築
  // --[ 0:KEY 1:PIC 2:NAME 3:TYPE(0=NONE,1:素地,2:塗装済) 4:価格(税込) 5:価格(税抜) 6:取付時間 7:塗装時間 8:MOPフラグ('0'or'1')]
  var optDat = new Array();       // 装着オプション価格配列
  var optIdxArr = new Array();    // 装着オプション配列
  var setIdxArr = new Array();    // 装着セット配列
 
  if ( contents_type==1 ) {
  
    //  ------------------------------------------------------------------ 装着オプションパーツ一覧
    for(var i=0; i<parSel.length;i++){
      if(parSel[i]==true){
        // パッケージ・セット以外
        if(getParTyp(i)>=2){
          // オプション(1) *****非選択オプション品（パッケージ内）*****
          // DOP,MOP,モデリスタの場合のみ配列に追加
          if(getPar_GraType(i,graIdx)==1 && (getParCate(i)==2 || getParCate(i)==3 || getParCate(i)==5 || getParCate(i)==4)){ optIdxArr.push(i);}
        }
      }
    }

    //  ------------------------------------------------------------------ 成立セットチェック
    for(var i=0; i<Btn_Par.length; i++){
      if(getParCate(i)<0 || getParCate(i)==4) continue;	// TRDの場合は無視
      if(getParTyp(i)!=0 && getParTyp(i)!=1) continue;
      
      var isSet = false;
      if ( parSel[i] ) {
        isSet=true;
      } else if (getParTyp(i)==1)  {

        // ******************************************** セットに含まれるパーツ配列
        var setParKey = getParPackageParts(i);
        if(setParKey == null){
          alert("セット指定があるのにセット内容が記入されていません");
          continue;
        }

        isSet=true;
        for(var j=0; j<setParKey.length; j++){
          if(!parSel[getParIdx(setParKey[j])]){ isSet=false; break;}
        }
      }
      if(isSet){ setIdxArr.push(i);}
    }

    // ------------------------------------------------------------------- オプションからセット内容を差し引く
    for(var i=0; i<setIdxArr.length; i++){
      // ******************************************** セットに含まれるパーツ配列
      var setParKey = getParPackageParts(setIdxArr[i]);
      if(setParKey == null) continue;
      
      for(var j=0; j<setParKey.length; j++){
        for(var k=0; k<optIdxArr.length; k++){
          if(optIdxArr[k] == -1) continue;
          if(getParKey(optIdxArr[k]) == setParKey[j]) optIdxArr[k] = -1;
        }
      }
    }
    
  } else {
    
    //  ------------------------------------------------------------------ 装着オプションパーツ一覧
    for(var i=0; i<parSel.length;i++){
      if(parSel[i]==true){
        // パッケージ・セット以外
        if(getParTyp(i)>=2){
          // オプション(1) *****非選択オプション品（パッケージ内）*****
          if(getPar_GraType(i,graIdx)==1){ optIdxArr.push(i);}
        }
      }
    }

    //  ------------------------------------------------------------------ 成立セットチェック
    for(var i=0; i<Btn_Par.length; i++){
      if(getParCate(i)<0) continue;
      
      // ********************************************** セットパーツである (種別(パッケージ)&&標準品(リスト非表示))
      if(getParTyp(i)!=0 && getParTyp(i)!=1) continue;
      
      var isSet = false;
      if ( parSel[i] ) {
        isSet=true;
      } else if (getParTyp(i)==1)  {
        // ******************************************** セットに含まれるパーツ配列
        var setParKey = getParPackageParts(i);
        if(setParKey == null){
          alert("セット指定があるのにセット内容が記入されていません");
          continue;
        }

        isSet = true;
        for(var j=0; j<setParKey.length; j++){
          if(!parSel[getParIdx(setParKey[j])]){ isSet=false; break;}
        }
      }
      if(isSet){ setIdxArr.push(i);}
    }

    // ------------------------------------------------------------------- オプションからセット内容を差し引く
    for(var i=0; i<setIdxArr.length; i++){
      // ******************************************** セットに含まれるパーツ配列
      var setParKey = getParPackageParts(setIdxArr[i]);
      if(setParKey == null) continue;
      
      for(var j=0; j<setParKey.length; j++){
        for(var k=0; k<optIdxArr.length; k++){
          if(optIdxArr[k] == -1) continue;
          if(getParKey(optIdxArr[k]) == setParKey[j]) optIdxArr[k] = -1;
        }
      }
    }
  }

  // ------------------------------------------------------------------- オプションデータ構築
  // --[ 0:KEY 1:PIC 2:NAME 3:TYPE(0=NONE,1:素地,2:塗装済) 4:価格(税込) 5:価格(税抜) 6:取付時間 7:塗装時間 8:MOP追記フラグ 9:追工コード 10:カテゴリ]

  // ******************************************** 選択カラーオプションがMOPの場合
  if(getColCate(colIdx)==2){
    optDat.push(new Array(getColKey(colIdx), getColPic(colIdx), getColNam(colIdx), 0, getColPri_taxFlt(colIdx), getColPriFlt(colIdx), 0,0,"1", "", getColCate(colIdx) ));			
  }

  // ******************************************** 選択内装カラーがMOPの場合
  if(getColinCate(colinIdx)==2){
    optDat.push(new Array(getColinKey(colinIdx), getColinPic(colinIdx), getColinNam(colinIdx), 0, getColinPri_taxFlt(colinIdx), getColinPriFlt(colinIdx),0,0, "1", getColinCode(colinIdx) , getColinCate(colinIdx) ));
  }

  // ******************************************** セット＆パーツオプションから追加構築
  var setOptIdxArr = setIdxArr.concat(optIdxArr);     // 配列結合

  for(var i=0; i<setOptIdxArr.length; i++){
    if(setOptIdxArr[i] == -1) continue;

    var type          = -1;                           // タイプ 0None 1素地 2塗装済
    var kakaku_tax    = 0;                            // 価格(税込)
    var kakaku        = 0;                            // 価格(税抜)
    var toritukejikan = 0;                            // 取付時間
    var tosoujikan    = 0;                            // 塗装時間
    var tuikou = "";		    					  // 追工コード
    // ****************************************** 価格設定(素地,特殊カラー)
    var aryEst = new Array();

    // 素地・塗装済 判別
    if(getParSpeCol(setOptIdxArr[i]) == null){
      type=0;
    } else {
      type = isParPai(setOptIdxArr[i]) ? 2 : 1;
    }

    // 価格（税込＆税抜）
    if ( type==0 || type== 1 ) {
      	if ( combi_type==1 ) {
        	aryEst.push(getParTCVPrice(setOptIdxArr[i]));		// TCV価格
			aryEst.push(0);
      	} else {
        	aryEst.push(getParEsti_bas_ZeiKomiFlt(setOptIdxArr[i]));
        	aryEst.push(getParEsti_bas_ZeiNukiFlt(setOptIdxArr[i]));
      	}
        tuiko = getParCode_bas(setOptIdxArr[i]);
    } else if ( type==2 ) {
        aryEst.push(getParEsti_pai_ZeiKomiFlt(setOptIdxArr[i]));
        aryEst.push(getParEsti_pai_ZeiNukiFlt(setOptIdxArr[i]));
        tuiko = getParCode_pai(setOptIdxArr[i]);
    }

    kakaku_tax    = aryEst[0];
    kakaku        = aryEst[1];
    toritukejikan = aryEst[2];
    tosoujikan    = aryEst[3];

    optDat.push(new Array(getParKey(setOptIdxArr[i]),getParPic(setOptIdxArr[i]),getParNam(setOptIdxArr[i]),type,kakaku_tax,kakaku,toritukejikan,tosoujikan,"0", tuiko,getParCate(setOptIdxArr[i])));
  }

  return optDat;

}


/***** 選択中のボディカラーで、指定パーツが塗装済設定か否かを返す関数 *****/
function isParPai(idx) {

    var colTosouKey = getParSpeCol(idx);
	if(colTosouKey == null){
	  return false;
	} else {
      for(var j=0; j<colTosouKey.length; j++){
        if(colTosouKey[j] == now_color){
          return true;
        }
      }
	  return false;
    }

}


/***** 数値（小数点表示）をカンマ区切りして返す関数 *****/
function DNtoCamma(str) {	
	var ret="";
	var cnt=0;
	
	// 不正値の場合は null を返す
	if ( str == null ) return null;
	
	// カンマを付加(少数点以下２桁前提）
	for (var i=str.length-1; i>=0; i--) {
		ret = str.charAt(i) + ret;
		cnt++;
		if ( ( (cnt % 3) == 0) && cnt > 3 &&  (i != 0) && !(i==1&&str.charAt(0)=='-')) ret = ","+ret;
	}

	return ret;
}


/***** 数値（正数）をカンマ区切りして返す関数 *****/
function PNtoCamma(str) {
  str = Math.round(str);  // 小数点以下四捨五入
  
  var icm;
  var n="";
  var cnt=0;
  str+="";
  for (icm=str.length-1; icm>=0; icm--) {
    n = str.charAt(icm) + n;
    cnt++;
    if ( ( (cnt % 3) == 0) && (icm != 0) ) n = ","+n;
  }
  return n;
}


/***** 浮動少数を小数点第n位表示に変換(float→string)し、返す関数 *****/
function ToDecimalPlace (fnum, n) {
	fnum = fnum.toFixed(n);
	return fnum;
}

/***** リアルタイム金額表示関数 *****/
function RealTime_TotalPrice(){
	estimate();		//合計金額計算
	sendToFlash("totalPrice_str", PNtoCamma(estTotalSyo_tax));	//コンマつき				
 	//alert(estTotalSyo_tax);
}

/***** 見積もりデータの作成 *****/
function setDatArr(ary) {

	//【基本情報】
    ary[0].push(CAR_NAME);								//[0][0]車種
    ary[0].push(getGraNam(getGraIdx(now_grade)));		//[0][1]グレード名
    ary[0].push(getGraBody(getGraIdx(now_grade)));		//[0][2]ボディ
    ary[0].push(getGraKudou(getGraIdx(now_grade)));		//[0][3]駆動
    ary[0].push(getGraLitter(getGraIdx(now_grade)));	//[0][4]エンジン
    ary[0].push(getGraMt(getGraIdx(now_grade)));		//[0][5]ミッション
    ary[0].push(getColNam(getColIdx(now_color)));		//[0][6]ボディカラー
    ary[0].push(getColinNam(getColinIdx(now_intcolor)));//[0][7]インテリアカラー名（暫定）
    ary[0].push(getGraModel(getGraIdx(now_grade)));		//[0][8]販売型式
    ary[0].push(getGraCapacity(getGraIdx(now_grade)));	//[0][9]乗車定員

	//【お見積価格】
	ary[1].push( "\\"+formatPrice(estGraPri_tax) );		//[1][0]車両本体価格（税込）
	ary[1].push( "\\"+formatPrice(estOptionTotal_tax) );//[1][1]オプション価格（税込）
	ary[1].push( "\\"+formatPrice(estTotalSyo_tax) );	//[1][2]合計金額（税込）			
	ary[1].push( getNoteNam(0) );						//[1][3]価格等注釈 20091112
	
	//【オプション詳細価格】
	for(var i=0;i<estOptDat.length;i++){
    	if ( estOptDat[i][8]=="1" ) estOptDat[i][2] += EST_MOP;		//パーツ名にMOP追記
		ary[2].push( estOptDat[i][2] );								//[2][0]パーツ名
		if( estOptDat[i][4]==0 ){
			ary[2].push("");
		} else {
			ary[2].push( "\\"+formatPrice(estOptDat[i][4]) );		//[2][1]パーツ価格情報
		}
		ary[2].push( estOptDat[i][9] );		//[2][2]追工コード
//		ary[2].push( estOptDat[i][8] );		//[2][3]MOP文字表記フラグ（？）

		// [2][3]カテゴリ
		ary[2].push( estOptDat[i][10] );

	}

	if ( contents_type == 0 && OWNER_SITE_FLG == true){
		//【Queryデータ】Web専用
		extractSentData(ary[3]);
		ary[4] = OWNER_SITE_FLG;
	} else if ( contents_type == 3 ) {
      // コントローラモード
      ary[3].push( parseInt(ctrlFlg) );
	}

}

/***** 金額をフォーマットして返す関数（見積画面用） *****/
function formatPrice(fnum) {
	if ( EST_PRICE_FORMAT==0 ) {
		return DNtoCamma(ToDecimalPlace(fnum, 2));
	} else if ( EST_PRICE_FORMAT==1 ) {
		return PNtoCamma(ToDecimalPlace(fnum, 0));
	}
}

/***** 金額をフォーマットして返す関数（ボタン用） *****/
function formatPriceBtn(fnum,col) {

    if ( fnum==0 ) return "";

    if ( col )
      return PRICE_COL_HEAD + PNtoCamma(fnum) + PRICE_COL_TAIL;
    else
      return PRICE_HEAD     + PNtoCamma(fnum) + PRICE_TAIL;
}


/***** Interior 2D/3D Navigation 変更(mode=true...一部有効[3D] mode=false...全て無効[2D]) *****/
function interiorNaviChange(mode){
	if( mode ){
      sendNavi("interior");
	} else {
      sendNavi("invalidAll");
	}
}
