﻿var m_activeMaterialPlacement = 'all';
var m_selectedItemId = null;
var m_selectedImage = null;
var m_currentParent = null;
var m_measureVisible = false;

var resizeTimer = null;
window.onresize = function() {
    clearTimeout( resizeTimer );
    resizeTimer = setTimeout( 'WindowResized()', 500 );
}

function ShowMeasureSticks()
{
    if( !m_measureVisible )
    {
        var orbd = vmp.GetProperty('MTSScene','orbd');
        var rot = vmp.GetProperty('MTSScene','rot_');
        var tra = vmp.GetProperty('MTSScene','tra_');
        var pivt = vmp.GetProperty('MTSScene','pivt');
        var params = 'orbd=' + orbd + ',rot=' + rot + ',tra=' + tra + ',pivt=' + pivt;
        
        EnableGrid( false );
        SendMessage( 'showMeasurements', params );
        
        m_measureVisible = true;
    }
    else
        HideMeasures();
}

function GetClientParameters()
{
    var vetArea = document.getElementById( 'ViewpointArea' );
    return 'viewWidth=' + vetArea.clientWidth + ',viewHeight=' + vetArea.clientHeight;
}

function InitializeConfiguration() {
    var clientParams = GetClientParameters();
    SendMessage( 'initialize', clientParams );
}


function ShutdownConfiguration() {
    var clientParams = GetClientParameters();
    SendMessage( 'shutdown', clientParams );
}

function WindowResized()
{    
    var clientParams = GetClientParameters();
    SendMessage( 'setClientProperties', clientParams );
}

function LibraryCategorySelected( categoryName ) {
    if( categoryName == 'BaseElements' )
        SendMessage( 'buildStateSelected' );
    else if( categoryName == 'Materials' )
        SendMessage( 'materialStateSelected' );
    else if( categoryName == 'Accessories' )
         SendMessage( 'accessoryStateSelected' );
}

function LibraryItemSelected( itemName ) {

    var object = document.getElementById( itemName );
    //document.getElementById( 'LibraryView' ).style
    if ( m_selectedItemId == itemName )
    {
        m_selectedItemId = null;
        SendMessage( 'libraryItemDeselected', 'itemSelected=' + itemName );        
        setBorder( object, '#FFFFFF' );            
        
    }
    else
    {
        if ( m_selectedItemId != null )
        {
            var oldobject = document.getElementById( m_selectedItemId );
            setBorder( oldobject, '#FFFFFF' );            
        }
        m_selectedItemId = itemName;
        SendMessage( 'libraryItemSelected', 'itemSelected=' + itemName );
        setBorder( object, '#FF0000' );            
    }
}

function CycleElementPlacement()
{
    SendMessage( 'cycleElementPlacement' );
}

function setBorderX( span, color )
{
    if ( m_selectedImage == null )
    {
        m_selectedImage = document.createElement( "img" );
        m_selectedImage.src = "images/ui/selected_frame.gif";
        m_selectedImage.border = 0;
        m_selectedImage.style.position = "relative";
        m_selectedImage.style.left = -10;
        m_selectedImage.style.top = -112;    
    }
    else
    {
        if ( m_currentParent != null )
            m_currentParent.removeChild( m_selectedImage );
    }
        
    
    if ( color == "#FF0000" )
    {
        alert( "add" );
        span.appendChild( m_selectedImage );
        m_currentParent = span;
    }
    else
    {
        alert( "remove" );
        if ( m_currentParent != null )
            m_currentParent.removeChild( m_selectedImage );
        m_currentParent = null;    
    }
}

function setBorder( span, color )
{
    if ( span == null )
        return;
        
    var imgs = span.getElementsByTagName( "img" );
    
    var img = null;
    if ( imgs.length > 0 )
        img = imgs[ 0 ];
    
    //span.style.backgroundColor = color;
    if ( img != null )
    {    
        img.style.border = 1;
        var object = img;
        
        object.style.borderBottomColor = color;
        object.style.borderBottomWidth = '1';
        object.style.borderBottomStyle = 'solid';
        
        object.style.borderLeftColor = color;
        object.style.borderLeftWidth = '1';
        object.style.borderLeftStyle = 'solid';

        object.style.borderRightColor = color;
        object.style.borderRightWidth = '1';
        object.style.borderRightStyle = 'solid';
            
        object.style.borderTopColor = color;
        object.style.borderTopWidth = '1';
        object.style.borderTopStyle = 'solid';
        

    }    
}

function MaterialItemSelected( itemName ) {
    SendMessage( 'materialItemSelected', 'itemSelected=' + itemName );
}

function InstantiatePlacer( placerName ) {

    m_selectedItemId = null;
    SendMessage( 'instantiatePlacer', 'contentSelected=' + placerName );

}

function SelectElement( elementName ) {
    SendMessage( 'selectElement', 'contentSelected=' + elementName );
}

function ActivatePlacement( placementName ){
// collect selected placements
    var activePlacements = "";
    var cell= document.getElementById( 'materialplacementCell' );
    var inputs = cell.getElementsByTagName( "input" );
//    for (z = 0; z < cell.children.length; z++) // NOTE: cell.children.length does not work in FF 1x
    for (z = 0; z < inputs.length; z++) 
    {
//        var child = cell.children[ z ];
        var child = inputs[ z ];
        if( child.getAttribute('type') == 'checkbox' )
        {            
            if ( child.checked == true )
            {
                activePlacements += ( child.value + "<" );
            }
        }    
    }
    
    SendMessage( 'activatePlacement', 'materialPlacement=' + activePlacements );
}

var m_activeplacements = null;

function SetActivateMaterialPlacement( placementName ) {
// this comes back from server
    m_activeplacements = placementName.split( "<" );
    m_activeMaterialPlacement = placementName;
}

function containsString( array, checkname )
{
	if ( array == null )
    	return false;
    for ( var xyz = 0; xyz < array.length; xyz++) {
        if ( array[ xyz ] == checkname )
            return true;
    }
    return false;
}

function Clear() {
    var agree = confirm("Oletko varma että haluat aloittaa uuden kokoonpanon?");
    if( agree ) {
        window.location.reload( false );
        // InitializeContent();
        //SendMessage( 'new' );
    }
}

function Remove() {
    SendMessage( 'remove' );
}

function Undo() {
    SendMessage( 'undo' );
}

function Redo() {
    SendMessage( 'redo' );
}
