// ============================================
// THREEDX - JavaScript Module for DFLS Web Application ( Local Version )
// ============================================
// Copyright (c) 2008 Micronet Software Manila, Inc. All rights reserved.
// Last Update: 2008-12-11
// Created by: Balrog D Great
// ============================================

//------------------
// Global MPP Variables
//------------------
var gTDXFilename = "3dx/office_room1.3dx"; // DEFAULT ROOM
var gTDXVersion   = "1,1,0,79"; // CURRENT MPP VERSION
var gTDXWidth      = 597;
var gTDXHeight    = 347;

//----------------------------
// Initialization of MPP
//----------------------------
function initMPP(){
    
    var tdx = document.getElementById("Control1");
    var flag = true;
    
    if(m_browser == 2){
        if(tdx) {
            try{
                tdx.tdxLoad();
            } catch(err) {
                flag = false;
            }
        } else {
            flag = false;
        }
    }
    
    return flag;
}

//--------------------
// Display MPP
//--------------------
function Display3DX(){

    if (m_browser == 0){ //Win IE    
        document.write('<object onerror="TdxUpdateError()" id="Control1" name="Control1" width="'+gTDXWidth+'" height="'+gTDXHeight+'" classid="CLSID:4D8DD706-6972-460D-A51B-EB7F7687E450" codebase="3dx/ActiveMPP.cab#Version='+gTDXVersion+'">'); 
        //document.write('<object onerror="TdxUpdateError()" id="Control1" name="Control1" width="'+gTDXWidth+'" height="'+gTDXHeight+'" classid="CLSID:4D8DD706-6972-460D-A51B-EB7F7687E450" codebase="http://www.micronetclub.co.jp/3da/3dx/ActiveMPP.cab#Version='+gTDXVersion+'">'); 
        document.write('<param name="Filename" value="' + gTDXFilename + '">');
        document.write('<param name="PutOnFloor" value="false">');
        document.write('<param name="RenderingHint" value="3">');
        document.write('<param name="WalkThroughMode" value="1">');        
        document.write('<param name="PickEnable" value="1">');        
        document.write('<param name="UIEnable" value="0">');
        document.write('<param name="CameraCollisionEnable" value="1">');
        document.write('</object>');	        
    } else if (m_browser == 2){ //Win NS6    
        document.write('<applet code="TDXPlayer.class" id="Control1" name="Control1" width="'+gTDXWidth+'" height="'+gTDXHeight+'" codebase="./3dx" archive="JavaMPP.jar" MAYSCRIPT>'); 
        document.write('<param name="Filename" value="' + gTDXFilename + '">');
        document.write('<param name="PutOnFloor" value="false">');
        document.write('<param name="RenderingHint" value="3">');
        document.write('<param name="WalkThroughMode" value="1">');
        document.write('<param name="PickEnable" value="1">');        
        document.write('<param name="UIEnable" value="0">');
        document.write('<param name="CameraCollisionEnable" value="1">');
        document.write('<param name="OnLoad" value="TdxOnLoad">');
        document.write('<param name="OnClick" value="TdxOnClick">');
        document.write('<param name="OnMouseDown" value="TdxOnMouseDown">');
        document.write('<param name="OnCameraMove" value="TdxOnCameraMove">');
        document.write('<param name="OnAnimationGroupEnd" value="TdxOnAnimationEnd">');
        document.write('</applet>');        
    } else { //Others    
        document.write('<embed id="Control1" name="Control1" width="'+gTDXWidth+'" height="'+gTDXHeight+'" type="application/x-3dxplayer-plugin" src="' + gTDXFilename + '" putonfloor="false" renderinghint="3" walkthroughmode="1" pickenable="1" uienable="false" cameracollisionenable="1" onmousedown="TdxOnMouseDown" onload="TdxOnLoad" onclick="TdxOnClick" oncameramove="TdxOnCameraMove" onanimationgroupend="TdxOnAnimationEnd">');
    }    
    
}

function TdxUpdateError(){
    var msg;
    msg="3DXコンテンツを表示できません。";
    msg+="\n\n可能性の高い原因:.";
    msg+="\n-ユーザーの権限を確認して下さい。最新の3DXプレーヤーをインストールするにはAdministratorでなければなりません。";
    msg+="\n-ブラウザの設定でActiveXコントロールの実行が許可されているか確認して下さい。";
    msg+="\n-3DXプレーヤーのインストールを中止かキャンセルした場合、再度行なうにはF5キーか更新ボタンを押して下さい。";
    alert(msg);
}

//--------------------
// MPP Events
//--------------------
function TdxOnMouseDown(key,x,y){
   //
}

function TdxOnLoad(){
    App.LoadedState = 1;
}

function TdxOnClick(sAttr){    
    if(App.FLSMode>0){
        var furn_id = sAttr.toLowerCase();
        var furn_item = gFurnList.getItemById(furn_id);
        if(furn_item) {
            App.SelectedObject=furn_item.name;
            ShowProperty();
        }
    }
}

function TdxOnMouseWheel(skey,delta,x,y){
    if(delta>0){
        document.Control1.GoForward(10);
    } else {
        document.Control1.GoForward(-10);
    }
}

function TdxOnCameraMove(px,py,pz,rx,ry,rz){
    //
}

function TdxOnAnimationEnd(grpNo){
   //
}

//--------------------
// MPP Public Functions
//--------------------
function Print(){
    var tdx = document.getElementById("Control1");
    tdx.Print();
}

function Capture(){
    var tdx = document.getElementById("Control1");
    tdx.Capture();
}

function DeleteObject(){    
    if(App.SelectedObject){
        if(confirm("選択したオブジェクトを消去しますか？")){
            var tdx = document.getElementById("Control1");
            tdx.DeleteObject();
            App.SelectedObject = "";
            HideProperty();
        }
    }
}

function RotateObject(value){
    var tdx = document.getElementById("Control1");
    if(App.SelectedObject) tdx.TurnObject(0,value,0);
}

function SetCameraHeight(value){
    var tdx = document.getElementById("Control1");
    var XYZ = new String(tdx.GetCameraPosRevised());
    
    var token = XYZ.split(",");
    var x = parseFloat(token[0]);
    var y = parseFloat(token[1]);
    var z = parseFloat(token[2]);
    
    switch(value){
        case 1:
            y = 75;
            break;
        case 2:
            y = 100;
            break;
        case 3:
            y = 120;
            break;
        case 4:
            y = 140;
            break;
        case 5:
            y = 160;
            break;
        case 6:
            y = 175;
            break;
        default:
            y = 15;
    }
    
    tdx.SetCameraPosRevised(x,y,z);
    tdx.Redraw();
    
}


//--------------------
// FLS Functions
//--------------------
function AddObject(name){
    var tdx = document.getElementById("Control1");
    if(tdx){
        try{
            tdx.AddObjectAt(name+".3dx",0,0,0,0,0,0);
        } catch(err){
            setUIMask(false);
            //alert("Error: AddObjectAt function failed.");
        }
    }
}

function SetFLSMode(index){
    var tdx = document.getElementById("Control1");
    if(index>0){ // OBJECT
        
        tdx.TranslationMode(1);
        tdx.SetCameraMode(0);
        
    } else { // NAVIGATION
        
        tdx.TranslationMode(0);
        tdx.SetCameraMode(0);
        
    }
}

function SetEditMode(index){
    var tdx = document.getElementById("Control1");
    if(index>0){ // VERT
        
        tdx.TranslationMode(1);
        tdx.SetMoveAxis(0,1,0);        
        
    } else { // HORIZ
        
        tdx.TranslationMode(1);
        tdx.SetMoveAxis(1,0,1);
        
    }
}

function SetViewMode(index){
    var tdx = document.getElementById("Control1");
    
    if(index == 3){ // SIDE
        
        var pdist = GetProjectionDistance2(1, 1200, 250);
        tdx.SetCameraMode(0);
        
        tdx.SetCameraPosRevised(pdist, 125, 0);
        tdx.SetCameraRotation(0, 90, 0);
        tdx.Redraw();
        
        tdx.TranslationMode(1);
        
    } else if(index == 2){ // FRONT
        
        var pdist = GetProjectionDistance2(0, 1000, 250);
        tdx.SetCameraMode(0);
        
        tdx.SetCameraPosRevised(50, 125, -1*pdist);
        tdx.SetCameraRotation(0, 0, 0);
        tdx.Redraw();
        
        tdx.TranslationMode(1);
        
    } else if(index == 1) { // TOP
    
        tdx.SetCameraMode(2);
        tdx.SetTopView(1); // 0: PERSPECTIVE 1: PARALLEL
        
        tdx.TranslationMode(1);
        
    } else { // CAMERA MODE
        
        tdx.SetCameraMode(0);
    
    }
}

function SetDefaultCameraPos(){
    var tdx = document.getElementById("Control1");
    tdx.SetCameraPosRevised(App.CameraPosX, App.CameraPosY, App.CameraPosZ);
    tdx.SetCameraRotation(0, -90, 0);
    tdx.Redraw();
}

//--------------------
// MPP Setting Functions
//--------------------
function CopySelectedObject(){
    
}

function SetDefaultTextures(){
    
}

//--------------------
// MPP Load/Save Functions
//--------------------
function ShowLoadFLS(){
    
}

function ShowSaveFLS(){
    
}



