/**
 * goseetell/Picker.js:
 *
 **/
var goseetell;
if (!goseetell) goseetell = {};
goseetell.Picker = {
    titleBar: function(title, admin) {
        goseetell.Picker.titleBar.title = title;
        goseetell.Picker.titleBar.admin = admin;
    }
}

goseetell.Picker.titleBar.prototype = new GControl(true, true);

goseetell.Picker.titleBar.prototype.initialize = function(map) {
    var container = document.createElement("div");
    container.innerHTML = goseetell.Picker.titleBar.title;
    container.style.textDecoration = "none";
    container.style.color = "#333333";
    container.style.backgroundColor = "white";
    container.style.font = "small Arial";
    container.style.padding = "2px";
    container.id = "map-title-bar";
    
    if (goseetell.Picker.titleBar.admin) {
        GEvent.addDomListener(container, "click", function() {
            Effect.SlideDown('picker_window');
        });
        container.innerHTML += " <img src=\"/images/icons/add.png\" width=\"16\" height=\"16\" alt=\"Add more\" />";
    }
    
    map.getContainer().appendChild(container);
    return container;
}

goseetell.Picker.titleBar.prototype.getDefaultPosition = function() {
    return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(0,0));
}

goseetell.Picker.close_and_update = function(map, url) {
    map.clearOverlays();
    goseetell.Geo.showMarkers(url, map);
    Effect.SlideUp('picker_window');
}

/* Tree interface for picking airports */
goseetell.Picker.airports = {};

goseetell.Picker.airports.tree = function() {
    var tree;
    
    function loadNodeData(node, fnLoadComplete) {
        GDownloadUrl("/place/" + node.data.id + "/children_xml", function(data, responseCode) {
          var xml = GXml.parse(data);
          var places = xml.documentElement.getElementsByTagName("place");
          for (var i = 0; i < places.length; i++) {
              var place_id = places[i].getAttribute("id");
              var place_label = places[i].getAttribute("name");
              var place_type = places[i].getAttribute("place_type");
            
              if (place_type == 'airport') {
                var checkState = parseInt(places[i].getAttribute("checked"));
                var check = false;
                if (checkState == 1) {
                    check = true;
                }
                var newNode = new YAHOO.widget.TaskNode({ label: place_label, id: place_id }, node, false, check);
                newNode.onCheckClick = onCheckClick;
              } else {
                var newNode = new YAHOO.widget.TextNode({ label: place_label, id: place_id }, node, false); 
              }
            }
            fnLoadComplete();
          });
    }
    
    function buildTree() {
        tree = new YAHOO.widget.TreeView("tree");
        tree.setDynamicLoad(loadNodeData);
        var root = tree.getRoot();
        //add child nodes for tree:
        var tmpNode1 = new YAHOO.widget.TextNode({ label: "Africa", id:"76702" }, root, false);
        var tmpNode2 = new YAHOO.widget.TextNode({ label: "Antarctica", id:"2" }, root, false);
        var tmpNode3 = new YAHOO.widget.TextNode({ label: "Asia", id:"64954" }, root, false);
        var tmpNode4 = new YAHOO.widget.TextNode({ label: "Europe", id:"43806" }, root, false);
        var tmpNode5 = new YAHOO.widget.TextNode({ label: "North America", id:"8856" }, root, false);
        var tmpNode6 = new YAHOO.widget.TextNode({ label: "Oceania", id:"82683" }, root, false);
        var tmpNode7 = new YAHOO.widget.TextNode({ label: "South America", id:"43" }, root, false);

       //render tree with these five nodes; all descendants of these nodes
       //will be generated as needed by the dynamic loader.
       tree.draw();
    }
    
    function onCheckClick() {
        //YAHOO.log(node.label + " check was clicked, new state: " + 
        //        node.checkState);
        //
        this.isLoading = true;
        this.updateIcon();
        var node = this;
        
        GDownloadUrl("/place/" + this.data.id + "/visited_toggle", function(data, responseCode) {
                node.isLoading = false;
                node.updateIcon();
        });
    }
    
    return {
        init: function() {
            buildTree();
        }
    }
} ();