
// NOTE: calendarDateCache tracks changes to date widgets, keyed by layerName.  Necessary, as dynamically created TreeNodes don't have API to get at their Controls.


var monthConversion = {
    "Jan" : "01",
    "Feb" : "02",
    "Mar" : "03",
    "Apr" : "04",
    "May" : "05",
    "Jun" : "06",
    "Jul" : "07",
    "Aug" : "08",
    "Sep" : "09",
    "Oct" : "10",
    "Nov" : "11",
    "Dec" : "12"
};


// DatePicker Handler

function onPickerDateChanged( picker, args ) {
    var treeNode                     = findParentTreeNode( picker );
    calendarDateCache[treeNode.Text] = formatPickerDate( picker.GetDate().toString() );

    if (autoUpdateCheckbox.checked) {
        if (treeNode && treeNode.Checked)
            requestMap();
    }
}

function formatPickerDate( rawDate ) {
    var dateParts = rawDate.split( " " );
    var month     = dateParts[1];
    var day       = dateParts[2];
    var time      = dateParts[3];
    var year      = dateParts[5];

    if (day.length < 2)
        day = "0" + day;

    month = monthConversion[month];

    return year + "-" + month + "-" + day + "-" + time;
}

function findParentTreeNode( picker ) {
    var treeNodeID = picker.ClientID.substring( 0, picker.ClientID.lastIndexOf( "_" ) );

    for (i=0; i < tree.AllNodes.length; i++) {
        var treeNode = tree.AllNodes[i];
        if (treeNodeID == treeNode.ClientID)
            return treeNode;
    }
    return null;
}


// Date ComboBox Handler

function onComboDateChanged( comboItem ) {
    var treeNode = tocLayerClick.lastNodeClicked;
    if (treeNode) {
        calendarDateCache[treeNode.Text] = comboItem.Value + "-01-00:00:00";

        if (treeNode.Checked && autoUpdateCheckbox.checked)
            requestMap();
    }
}

function onComboOpening( combo ) {
    tocLayerClick.ignoreNextClick = true;
}


// URL param generation

function calendarParams() {
    // Return Calendar as a dictionary-string; item-sep is "^", key-val-sep is "|"
    var dateDictString = "";

    for (i=0; i < tree.AllNodes.length; i++) {
        var treeNode     = tree.AllNodes[i];
        var layerName    = treeNode.Text;
        var selectedDate = calendarDateCache[treeNode.Text];

        if (selectedDate)
            dateDictString += layerName + "|" + selectedDate + "^";
    }

    if (dateDictString != "")
        return "&DATE=" + dateDictString.substring( 0, dateDictString.length-1 );
    return "";
}

