﻿//Controlador del comportamiento Fence con ratón
function WVMouseInformationCtrl()
{
    var oThis       = this;
    var enabled    = true; //indica si este controlador está operativo para afectar al visor
    var distanceBehavior    = null;
    var areaBehavior        = null;
    var infoBehavior        = null;
    var dbBehavior          = null;
    var enabledBehavior     = null;
    var browser     = null;
    var fencing     = false; //indica si se está efectuando operación de fence
    var viewer      = null;
    
    this.getEnabled=function()
    {
        return enabled;
    }
    this.setEnabled=function(enable)
    {
        enabled = enable;
    }
    
    this.init = function(visor)
    {
        viewer = visor;
        distanceBehavior    = viewer.getSystemBehavior(WVBehaviorType.DISTANCE);
        areaBehavior        = viewer.getSystemBehavior(WVBehaviorType.AREA);
        infoBehavior        = viewer.getSystemBehavior(WVBehaviorType.CARTINF);
        dbBehavior          = viewer.getSystemBehavior(WVBehaviorType.ALPHINF);
        browser             = viewer.getBrowser();
        browser.registerEventMouseDown(viewer.getContainer(), onMouseDown);
        viewer.subscribeEvent(WVEventType.RIGHT_CLICK, onRightClick);
    }
    
    function onRightClick(e)
    {
        if (enabled && enabledBehavior!=null )
        {
            viewer.releaseBehavior();
        }
    }
    
    function onMouseDown(e)
    {
        if (!enabled)return;
        if (!e) e = window.event; 
        var numButton = browser.getButtonClicked(e);
	    if (numButton==1)
	    {
            enabledBehavior = getEnabledBehavior();
            if ( enabledBehavior == null || !enabledBehavior.getEnabled() ) return; 
            enabledBehavior.addPoint(browser.getOffSetMouseClient(e));//{x:browser.mouseclientX(e), y:browser.mouseclientY(e)});        
        }
    }
    function getEnabledBehavior()
    {
        if (distanceBehavior!=null && distanceBehavior.getEnabled() )    return distanceBehavior;
        if (areaBehavior!=null && areaBehavior.getEnabled() )            return areaBehavior;
        if (infoBehavior!=null && infoBehavior.getEnabled() )            return infoBehavior;
        if (dbBehavior!=null && dbBehavior.getEnabled() )                return dbBehavior;
        return null;
    }
    
}


