var MeasureToolFloatingPane;
var AddFeatureGuidanceFloatingPane;
var tree;



dojo.require("dojox.layout.FloatingPane");
dojo.require("dijit.form.Button");
dojo.require("dijit.form.CheckBox");
dojo.require("dojo.data.ItemFileWriteStore");
dojo.require("dijit.tree.ForestStoreModel");
dojo.require("dijit.tree.dndSource");
dojo.require("dijit.Tree");
dojo.require("dijit.Dialog");

dojo.addOnLoad(function() {
    //initialize();

    //displayIntro();
    try {

        var store = new dojo.data.ItemFileWriteStore({ url: "Layers.json" });

        var treeModel = new dijit.tree.ForestStoreModel({
            store: store,
            query: { "type": "LayerGroup" },
            rootId: "root",
            rootLabel: "Layers",
            childrenAttrs: ["children"]
        });


        tree = new dijit.Tree({
            model: treeModel,
            dndController: "dijit.tree.dndSource",
            betweenThreshold: "5",
            style: "background-color: #E2EBFE",
            //style: "width:300px; overflow: auto;",
            //style: "overflow: visible;",
            showRoot: false,
            checkItemAcceptance: function(target, source, position) {
                return checkDragAndDropAcceptance(target, source, position);
            },
            _createTreeNode: function(args) {
                var tnode = new dijit._TreeNode(args);



                var type;

                if (args.item.type) {

                    if (args.item.type[0] == 'LegendLabel') {
                        var chk = dojo.doc.createElement('input');
                        chk.type = 'checkbox';
                        chk.onclick = function() { layersChanged(tree) };
                        
						if (args.item.display[0] == 'true')
							chk.checked = args.item.display[0];
							tnode.labelNode.innerHTML = '';
							dojo.place(chk, tnode.expandoNode, 'after');

							tnode.labelNode.appendChild(dojo.doc.createTextNode(args.label));

                        //                if (args.item.layer != undefined)
                        //                    tnode.layer = args.item.layer[0];
	
							tnode.checkNode = chk;
							tnode._onClick = function(item, tnode) {
                            treeNodeClicked(item, this);
                        };

                        var help = dojo.doc.createElement('img');
                        help.src = 'Images/icon-help1.gif';
                        help.onclick = function(label) { showMetadataJM(args.label) };
						dojo.place(help, tnode.labelNode, 'after');

                        tnode.expandoNodeText.parentNode.removeChild(tnode.expandoNodeText);
                    }
                    else {
                        tnode.labelNode.innerHTML = args.label;
                    }


                    tnode.iconNode.style.width = '0px';
                    tnode.iconNode.style.height = '0px';
                }

                return tnode;
            }
        },
    "tree");

        dojo.subscribe("/dnd/drop", function(source, nodes, copy, target) {
            layersChanged(tree);
        });

        // TODO - Move style to css
        MeasureToolFloatingPane = new dojox.layout.FloatingPane({
            title: "Measure Tool",
            resizable: true,
            dockable: false,
            closable: false,
            style: "position:absolute; top:140px; right:126px; height:160px; width:160px; visibility:hidden; z-Index:10;",
            id: "MeasureToolFloatingPane"
        },
    dojo.byId("MeasureToolFloatingPane"));
    
    //////////////////////////////////////////////////////////////////
        MeasureToolFloatingPane.startup();



        ///////////////////////////////////////////////////////////////

 //       AddFeatureGuidanceFloatingPane = new dojox.layout.FloatingPane({
 //           title: "Add Feature Tool",
 //           resizable: true,
 //           dockable: false,
 //           closable: false,
 //           style: "position:absolute; top:140px; right:400px; height:160px; width:160px; visibility:hidden; z-Index:10;",
 //           id: "AddFeatureGuidanceFloatingPane"
 //       },
 //   dojo.byId("AddFeatureGuidanceFloatingPane"));

        //            LegendFloatingPane = new dojox.layout.FloatingPane({
        //                title: "Legend",
        //                resizable: true,
        //                dockable: false,
        //                closable: false,
        //                style: "position:absolute; top:140px; left:452px; visibility:visible; z-Index:10;",
        //                id: "LegendFloatingPane"
        //            },
        //            dojo.byId("LegendFloatingPane"));
        //            LegendFloatingPane.startup();



    }
    catch (Error) {
        // alert('aaa');
    }

    //createWMSOverlay('Regional_MCZ_Projects_WGS84');
});

function checkDragAndDropAcceptance(target, source, position) {
    var canDragAndDrop = true;
    var targetType = dijit.getEnclosingWidget(target).item.type[0];
    var sourceType;

    for (var i2 in source.selection) {
        var sourceNode = dijit.getEnclosingWidget(source.selection[i2]);
        sourceType = sourceNode.item.type[0];
    }

    if (sourceType == 'LegendImage') {
        canDragAndDrop = false;
    }
    else {
        if (sourceType != targetType)
            canDragAndDrop = false;
    }

    //document.getElementById('aaa').innerHTML = canDragAndDrop + ":" + sourceType + ":" + dijit.getEnclosingWidget(target).item.type[0];
    return canDragAndDrop;
}

function treeNodeClicked(item, node) {
    var t;

    if (item.srcElement != undefined) {
        // IE
        t = item.srcElement;
    }
    else if (item.target != undefined) {
        // FF
        t = item.target;
    }
    else
        alert('Unsupported browser version')

    if (t.className.length >= 16) {
        if (t.className.substring(16, 0) == 'dijitTreeExpando')
            node.tree._onExpandoClick({ node: node });
    }
} 
