﻿var contentHandler = "ContentHandler.ashx";
var adoptionCount = 0;
var contentLoading = false;
var animationStates = new Array();
var updateCounter = 0;
var m_measureVisible = false;

var m_requestedConfigMode = null;

function UpdateContent()
{
    var time = ( new Date() ).getTime();
    var command = contentHandler + "?CMD=update&TIME=" + time;

	if( vmp == null || !pluginInstalled )
	{
        contentLoading = true;
   	    LoadContentDef(command);
		return;
    }


    contentLoading = true;
    vmp.LoadMTX( command );
}

function RefreshContent()
{
    var time = ( new Date() ).getTime();
    var command = contentHandler + "?CMD=refresh&TIME=" + time;

    if (vmp == null || !pluginInstalled)
	{
	    ClearUnityScene();
        contentLoading = true;
   	    LoadContentDef(command);
		return;
    }

    vmp.ClearScene();
    vmp.LoadMTX( "mts/scene.mtx" );
    
    
    contentLoading = true;
    vmp.LoadMTX( command );
}

function RefreshDone()
{
    contentLoading = false;
}

// called when content has initialized..
function InitializationDone() {
    InitializeApplication();
}

var sceneReady = false;
function UpdateDone() {
    if( updateCounter <= 1 ) {
        if( updateCounter == 0 ) {
            sceneReady = true;

            DisplayInstruction( bufferedText );
            bufferedText = '';
        }
        updateCounter++;
    }
    contentLoading = false;
}

function InitializeContent()
{
    if (vmp == null || !pluginInstalled)
	{
	    ClearUnityScene(""); // Keep init scene? / Keep masters ??
		return;
    }

    vmp.ClearScene();
    vmp.LoadMTX('mts/scene.mtx');
}

function AddBoundingBox( message )
{
    var bbdata = message.split( ':' );
    for( var i = 0; i < bbdata.length; i++ )
    {
        CallVETScript( 'AddBoundingBox', bbdata[ i ] );
    }
}

/*
function OnWallSelect( message )
{
    SelectWall( message );
}
*/

function SelectPerspectiveView()
{
    SendMessage('selectPerspectiveView');
}

function SelectFrontView()
{
    SendMessage('selectFrontView');
}

function SelectTopView()
{   
    SendMessage('selectTopView');
}

function ShowMeasure( measureText )
{
    vmp.SetProperty('MeasureTextLayer','text', measureText );
    lastMeasure = measureText;
}

function ShowRoomInfo( message )
{
    CallVETScript( 'ShowRoomInfo', message );  
}

function SetConfigType( message ) {

    CallVETScript( 'SetConfigType', message );
}

function ShowConfigInfo( message )
{
    CallVETScript( 'ShowConfigInfo', message );
}

function HideConfigInfo()
{
    CallVETScript( 'HideConfigInfo', '' );
}

function RemoveBoundingBox()
{
    CallVETScript( 'RemoveBoundingBox', message );
}

function CallVETScript( func, param1 )
{
    var script = 'VETScript(' + func + '( \'' + param1 + '\' ) )';
    if (vmp && vmp != null)
        vmp.Execute( script );
    else // try Unity
    {
        CallUnityScript(script);
    }
}

function ExecuteSceneCapture()
{
    if (vmp == null || !pluginInstalled)
		return;
        
    HideMeasures();

    var path = applicationUrl + 'CaptureHandler.ashx?id='+sessionId;
	vmp.SetProperty('CaptureComponent', 'Path', path);
	vmp.PostEvent('executeCapture',0);
}

function ExecuteAction( action, param )
{
    switch( action )
    {
        case 'PlacerClicked':
            InstantiatePlacer( param );
        break;
        
        case 'ElementClicked':
            SelectElement( param );
        break;
        
        case 'ElementDoubleClicked':
            ToggleConfigState( param );
        break;
        
        case 'ElementReleased':
            var loc = vmp.GetProperty( 'MTSInstance.' + param, 'loc_' );
            var rot = vmp.GetProperty( 'MTSInstance.' + param, 'rot_' );
            
            PinElement( param, loc, rot );
        break;

        case 'Deselect':
            Deselect();
        break;
        
        default:
            alert( 'unknown content action!' );
    }
}

function ExecuteClientCapture()
{
    if(!flashVisible)
    {
        var path = applicationUrl + 'CaptureHandler.ashx?id='+sessionId;
	    
	    // set path and execute..
	    vmp.SetProperty('ClientCaptureComponent', 'Path', path);
        vmp.PostEvent('executeClientCapture',0);
    } else {
        alert("Poistu huoneen muokkaustilasta ottaaksesi kuvan");
    }
}

function DebugValue( val )
{
    window.status = val;
}


var bufferedText = '';
function DisplayInstruction( text )
{
    if( sceneReady )
        CallVETScript('ShowInfoBubble', text);
    else
        bufferedText = text;
}

function ShowConfirmDialog( message )
{
}

function switchToRoomState()
{
    if (vmp == null || !pluginInstalled)
		return;

    //alert("switchToRoomState");
    vmp.PostEvent('switchToRoomState',0);
}

function switchToArrangeState()
{
    if (vmp == null || !pluginInstalled)
		return;

    //alert("switchToArrangeState");
    vmp.PostEvent('switchToArrangeState',0);
}

function switchToColorState()
{
    if (vmp == null || !pluginInstalled)
		return;

    //alert("switchToArrangeState");
    vmp.PostEvent('switchToColorState',0);
}

function switchToBuildState()
{
    if (vmp == null || !pluginInstalled)
		return;

    //alert("switchToBuildState");
    vmp.PostEvent('switchToBuildState',0);
}

function EnableGrid( enabled )
{
    if (vmp == null || !pluginInstalled)
		return;

    if( enabled )
        vmp.SetProperty('MTSInstance.InitialScene_0','clps','0');
    else
        vmp.SetProperty('MTSInstance.InitialScene_0','clps','1');
}

function HideMeasures()
{
    if (vmp == null || !pluginInstalled)
		return;

    m_measureVisible = false;
    EnableGrid( true );
    vmp.PostEvent('HideMeasureSticks',0);
}

function UpdateActiveContentGroups(itemNames)
{
    CallVETScript('SetControllableGroups', itemNames);
}