<%@language = "javascript" %>
<% /*
    $Revision$
    $Id$

    File:               CAD/myKeyToSymbol.asp
    Description:        Maak een symbool om te draggen
    Parameters:         pSymbolkey INS_DEEL_KEY of werkplekgebonden INS_DEEL_KEY of PRS_WERKPLEK_KEY
                                   die in de tekening opgepakt is
                                   Hij zal resp. beginnen met I:, P:, IW: of W:
                        rotation   optioneel: toon geforceerd met deze rotatie
    Context:            Callback voor SLNKDWF. Gebruiker heeft op een pickpoint
                        in de tekening geklikt
    Note:               de term symbol kan refereren aan een INS_DEEL symbool of WERKPLEK symbool
*/
%>
<!--#include file="../Slnkdwf/Slnk2IMG.inc" -->
<!--#include file='../Shared/common.inc'-->
<!--#include file='../CAD/FGII.inc'-->
<!--#include file='../CAD/symbols.inc'-->
<!--#include file="../Shared/WPFunctions.inc" -->
<%
    var SLNKSymbolname = getQParam("pSymbolkey", ""); // pSymbolkey kan nog tekst bevatten
    var vKey = getQParamInt("vKey");
    var scenario_key = getQParamInt("scenario_key"); // current scenario of 0 for actual.
    var pRot = getQParamInt("rotation",0);

//    Response.Expires = pRot?1:-1; // Als we aan het roteren zijn 1 minuut caching
    Response.Expires = -1;

function myContourProcessor(cHandle)
{
    var insertionpoint = null;
    if (SLNKSymbolname.match(/^I:/) || SLNKSymbolname.match(/^P:/)) // Ins_deel of PRJ_DEEL
    {
        var SLNKSymbolkey = parseInt(SLNKSymbolname.substring(2));
        if (!canWriteInsDeel(SLNKSymbolkey, vKey, scenario_key))
        {
            new SLNKDWF({maximize : true}).Warning(L("lcl_fg_obj_noedit"));
            // JGL: Uiteindelijk komen we toch in ins_change.asp
            // Dat kan ik niet echt voorkomen. Daar controleren we nog een keer.
        }

        if (scenario_key==0) // I:
            var sql = "SELECT ins_deel_dwgx dwgx, ins_deel_dwgy dwgy,"
                    + "       ins_deel_dwgrotatie rot, ins_deel_dwgschaal scl,"
                    + "       INS_SRTDEEL_ACADSYMBOL, ins_srtdeel_acadsymbol_dwgx orgx, ins_srtdeel_acadsymbol_dwgy orgy"
                    + "  FROM ins_deel id, ins_srtdeel isd"
                    + " WHERE id.ins_srtdeel_key = isd.ins_srtdeel_key"
                    + "   AND id.ins_deel_key = " + SLNKSymbolkey
        else // P:
            var sql = "SELECT prj_deel_dwgx dwgx, prj_deel_dwgy dwgy,"
                    + "       prj_deel_dwgrotatie rot, prj_deel_dwgschaal scl,"
                    + "       INS_SRTDEEL_ACADSYMBOL, ins_srtdeel_acadsymbol_dwgx orgx, ins_srtdeel_acadsymbol_dwgy orgy"
                    + "  FROM prj_deel id, ins_srtdeel isd"
                    + " WHERE id.ins_srtdeel_key = isd.ins_srtdeel_key"
                    + "   AND id.prj_deel_key = " + SLNKSymbolkey
        var oRs = Oracle.Execute(sql);
        var symbolName =oRs("ins_srtdeel_acadsymbol").Value;
        var scl = oRs("scl").value!=null?oRs("scl").Value:1.0;
        var rot = oRs("rot").value;
        if (oRs("orgx").Value != null && oRs("orgy").Value != null)
            insertionpoint = { orgx: oRs("orgx").Value, orgy: oRs("orgy").Value};
        oRs.Close();
    }
    else if (SLNKSymbolname.match(/^IW:/)) // werkplek gebonden Ins_deel
    {
        var SLNKSymbolkey = parseInt(SLNKSymbolname.substring(3));

        if (!canWriteInsDeel(SLNKSymbolkey, vKey, scenario_key))
        {
            new SLNKDWF({maximize : true}).Warning(L("lcl_fg_obj_noedit"));
        }

        if (scenario_key==0)
            var sql = "SELECT ins_deel_dwgx dwgx, ins_deel_dwgy dwgy,"
                    + "       ins_deel_dwgrotatie rot, ins_deel_dwgschaal scl,"
                    + "       INS_SRTDEEL_ACADSYMBOL, ins_srtdeel_acadsymbol_dwgx orgx, ins_srtdeel_acadsymbol_dwgy orgy,"
                    + "       prs_werkplek_dwgrotatie wrot, prs_werkplek_dwgschaal wscl"
                    + "  FROM ins_deel id, ins_srtdeel isd, prs_werkplek pw"
                    + " WHERE id.ins_srtdeel_key = isd.ins_srtdeel_key"
                    + "   AND id.ins_alg_ruimte_key = pw.prs_werkplek_key"
                    + "   AND id.ins_deel_key = " + SLNKSymbolkey
        else
            var sql = "SELECT prj_deel_dwgx dwgx, prj_deel_dwgy dwgy,"
                    + "       prj_deel_dwgrotatie rot, prj_deel_dwgschaal scl,"
                    + "       INS_SRTDEEL_ACADSYMBOL, ins_srtdeel_acadsymbol_dwgx orgx, ins_srtdeel_acadsymbol_dwgy orgy,"
                    + "       prj_werkplek_dwgrotatie wrot, prj_werkplek_dwgschaal wscl"
                    + "  FROM prj_deel id, ins_srtdeel isd, prj_werkplek pw"
                    + " WHERE id.ins_srtdeel_key = isd.ins_srtdeel_key"
                    + "   AND id.prj_werkplek_key = pw.prj_werkplek_key"
                    + "   AND id.prj_deel_key = " + SLNKSymbolkey
        var oRs = Oracle.Execute(sql);

        var wRot = oRs("wrot").value;
        if (wRot==null) wRot=0;
        if (oRs("rot").value != null)
            wRot += (oRs("rot").Value+360)%360;

        var symbolName = oRs("ins_srtdeel_acadsymbol").Value;
        var scl = oRs("scl").value!=null?oRs("scl").Value:1.0;
        var rot = wRot;
        if (oRs("orgx").Value != null && oRs("orgy").Value != null)
            insertionpoint = { orgx: oRs("orgx").Value, orgy: oRs("orgy").Value};
        oRs.Close();
    }
    else if (SLNKSymbolname.match(/^W:/)) // Werkplek
    {
        SLNKSymbolkey = parseInt(SLNKSymbolname.substring(2));

        if (scenario_key==0&&!WPCanWrite(vKey))
        {
            new SLNKDWF({maximize : true}).Warning(L("lcl_fg_obj_noedit"));
            Response.End;
        }

        if (scenario_key==0)
            var sql = "SELECT prs_werkplek_dwgx dwgx, prs_werkplek_dwgy dwgy,"
                    + "       prs_werkplek_dwgrotatie rot, prs_werkplek_dwgschaal scl"
                    + "  FROM prs_werkplek pw"
                    + " WHERE pw.prs_werkplek_key = " + SLNKSymbolkey
        else
            var sql = "SELECT prj_werkplek_dwgx dwgx, prj_werkplek_dwgy dwgy,"
                    + "       prj_werkplek_dwgrotatie rot, prj_werkplek_dwgschaal scl"
                    + "  FROM prj_werkplek pw"
                    + " WHERE pw.prj_werkplek_key = " + SLNKSymbolkey

        var oRs = Oracle.Execute(sql);
        var symbolName = S("fg_werkpleksymbool");
        var scl = S("fg_WPScale")*(oRs("scl").value!=null?oRs("scl").Value:1.0);
        var rot = oRs("rot").Value;
        oRs.Close();
    }
    else
    {
        new SLNKDWF({maximize : true}).Warning(L("lcl_fg_notdraggable"));  // prj_note
    }

    symbolName = DefineSymbol(cHandle, symbolName, insertionpoint);
    if (pRot!=0)
    {
        // 1e keer met originele rotatie en extra groot voor de extents bepaling
        var mySymbol = cHandle.AddSymbol(2000000, 2000000, symbolName)
        mySymbol.Rotation = (rot+360)%360;
        mySymbol.Scale = 2*scl; // Zodat deze altijd bepalend is
        mySymbol.SetColor(0xFF0000,0); // Maak onzichtbaar
    }

    // 2e is de zichtbare
    var mySymbol = cHandle.AddSymbol(2000000, 2000000, symbolName)
    //mySymbol.Contour.Label = "Test";
    mySymbol.Rotation = (pRot + rot+360)%360;
    mySymbol.Scale = scl;
}

    var mySLNKDWF = new SLNKDWF({ dwfFile: Server.MapPath("../slnkdwf/empty.w2d"), // Start with empty drawing
                                  maximize : true,
                                  dwfProcessor : myContourProcessor,
                                  tempFolder   : shared.tempFolder(),
                                  asGIF    : true,
                                  forceGray: true
                                });
    mySLNKDWF.Process();
%>
<% ASPPAGE_END(); %>
