var dcTime = 250;    // doubleclick time
var dcDelay = 100;   // no clicks after doubleclick
var dcAt = 0;        // time of doubleclick
var savEvent = null; // save Event for handling doClick().
var savEvtTime = 0;  // save time of click event.
var savTO = null;    // handle of click setTimeOut

function hadDoubleClick() {
    var d = new Date();
    var now = d.getTime();

    if ((now - dcAt) < dcDelay) {
        return true;
    }

    return false;
}

function handleMouseClick(which) { //alert("handle mouse click"+which);
    switch (which) {
        case "click":
            // If we've just had a doubleclick then ignore it
            if (hadDoubleClick()) {
                return false;
            }

            // Otherwise set timer to act.  It may be preempted by a doubleclick.
            savEvent = which;
            d = new Date();
            savEvtTime = d.getTime(); //alert("dcTime"+dcTime);
            savTO = setTimeout("doClick(savEvent)", dcTime);
            break;

        case "dblclick":
            doDoubleClick(which);

            break;

        default:
    }
}

function doClick(which) {
    // preempt if DC occurred after original click.
    if (savEvtTime - dcAt <= 0) {
        //alert("not single: savEvtTime="+savEvtTime + "; dcAt="+dcAt);
        return false;
    }

    //alert("single: savEvtTime="+savEvtTime + "; dcAt="+dcAt);
    doneSingleClick();
}

function doDoubleClick(which) {
    var d = new Date();
    dcAt = d.getTime();

    if (savTO != null) {
        clearTimeout(savTO); // Clear pending Click
        savTO = null;
    }

    doneDoubleClick();
}

function doneSingleClick() {
    map_tool = document.getElementById('map_tool');
    map_image = document.getElementById('map_image0');
    if (map_tool.value == "identify") {
        change(singleclick, _zoomGetPoint(map));
    }

    if (map_tool.value == "graph") {
        openDialog('graph.jspx?click=' + _zoomGetPoint(map), 800, 590);
    }

    if (map_tool.value == "zoom")
        map_image.style.cursor = 'auto';
}

function doneDoubleClick() {
    change(doubleclick, _zoomGetPoint(map));
}
