var nyc = {};
var nyc_selected = new Array();

var disabledNeighborhoods = new Array();
//disabledNeighborhoods.push('harlem');
disabledNeighborhoods.push('inwood');
disabledNeighborhoods.push('east_harlem');
disabledNeighborhoods.push('upper_east_side');
disabledNeighborhoods.push('upper_west_side');
disabledNeighborhoods.push('lincoln_square');


function findInArray(needle, haystack)
{
    for (var i = 0; i < haystack.length; i++) {
        if (needle == haystack[i])
            return i;
    }

    return -1;
}

var downtown_selected = false;
var midtown_selected = false;
var uptown_selected = false;

neighNameToId = function (neighName)
{
    if (neighName == 'other')
        return 15;

    if (neighName == 'prospect_heights')
        return 9;

    if (neighName == 'park_slope')
        return 8;

    if (neighName == 'windsor_terrace')
        return 12;

    if (neighName == 'gowanas')
        return 7;

    if (neighName == 'carroll_gardens')
        return 2;

    if (neighName == 'cobble_hill')
        return 4;

    if (neighName == 'red_hook')
        return 10;

    if (neighName == 'boerum_hill')
        return 0;

    if (neighName == 'brooklyn_heights')
        return 1;

    if (neighName == 'dumbo')
        return 13;

    if (neighName == 'fort_greene')
        return 6;

    if (neighName == 'clinton_hill')
        return 3;

    if (neighName == 'williamsburg')
        return 11;

    if (neighName == 'greenpoint')
        return 14;

    // manhattan
    if (neighName == 'battery_park')
        return 101;

    if (neighName == 'financial_district')
        return 106;

    if (neighName == 'tribeca')
        return 120;

    if (neighName == 'chinatown')
        return 103;

    if (neighName == 'nolita')
        return 118;

    if (neighName == 'soho')
        return 119;

    if (neighName == 'lower_east_side')
        return 113;

    if (neighName == 'east_village')
        return 105;

    if (neighName == 'greenwich_village')
        return 109;

    if (neighName == 'west_village')
        return 123;

    if (neighName == 'chelsea')
        return 102;

    if (neighName == 'gramercy')
        return 108;

    if (neighName == 'flatiron')
        return 107;

    if (neighName == 'murray_hill')
        return 117;

    if (neighName == 'midtown_east')
        return 115;

    if (neighName == 'midtown')
        return 114;

    if (neighName == 'midtown_west')
        return 116;

    if (neighName == 'lincoln_square')
        return 112;

    if (neighName == 'upper_west_side')
        return 121;

    if (neighName == 'upper_east_side')
        return 122;

    if (neighName == 'east_harlem')
        return 104;

    if (neighName == 'inwood')
        return 111;

    if (neighName == 'harlem')
        return 110;

    return 666;
}

echoSelectedNeighString = function ()
{
    var nyc_selected_ids = new Array();
    for (var i = 0; i < nyc_selected.length; i++) {
        nyc_selected_ids.push(neighNameToId(nyc_selected[i]));
    }

    //alert( nyc_selected_ids.join(',') );
}

neighIsSelected = function (neighName)
{
    for (var i = 0; i < nyc_selected.length; i++) {
        if (neighName == nyc_selected[i]) {
            return true;
        }
    }

    return false;
}

resetMap = function ()
{
    for (var state in nyc) {

        nyc[state][0].unselect();
    }

    $.ajax({ type: "POST",
        url: "../tools/map.php",
        data: { action: "2", neigh: "0", map_ver: "2" },
        success: function () { },
        error: function (err) { }
    });
}

processMapJS = function ()
{
    var R = Raphael("search_map_paper", 733, 550);
    var attr = {
        fill: "#424D52",
        stroke: "#424D52",
        "stroke-width": 1,
        "stroke-linejoin": "round"
    };

	nyc.prospect_heights = R.path("M469.727 352.594L537.366 384.202 532.944 435.322 454.393 405.29 434.475 354.884 437.987 347.78 465.043 360.268z");
	nyc.park_slope = R.path("M435.344 346.521L431.466 354.263 451.681 406.066 396.864 478.082 342.477 437.237 416.427 336.847z");
	nyc.windsor_terrace = R.path("M351.146 446.5L422.84 499.859 428.058 545.79 386.4 541.732 385.111 512.711 352.436 483.905 343.621 491.644 334.593 482.4 328.359 485.193 320.834 478.533z");
	nyc.gowanas = R.path("M367.566 320.533L375.389 325.228 372.261 330.503 382.624 338.129 386.508 333.618 393.303 337.977 390.064 342.836 402.178 351.819 340.388 435.322 315.358 414.393 312.816 399.141 326.309 369.613 332.761 372.156z");
	nyc.carroll_gardens = R.path("M277.066 311.051L288.891 303.89 331.359 327.372 343.694 311.486 362.337 324.208 332.026 368.342 325.531 365.677 310.542 397.321z");
	nyc.cobble_hill = R.path("M355.389,292.713l-24.532,32.294l-40.097-22.278c0,0,28.144-26.655,28.144-29.117C318.903,271.148,355.389,292.713,355.389,292.713z");
	nyc.red_hook = R.path("M245.915,329.332c13.996-9.624,29.075-16.527,29.075-16.527l34.414,87.241l-10.839,17.457l-17.715,4.921l-0.787-17.52l-4.135-0.394l-19.881,20.274v-10.812l-30.313-40.563c0,0-5.624-5.957-5.118-13.977c0.202-3.193,1.378-9.331,4.63-12.583C229.583,342.516,237.343,335.227,245.915,329.332z");
	nyc.boerum_hill = R.path("M345.312 309.867L357.181 294.155 359.953 295.994 372.994 277.791 406.144 297.321 421.817 335.705 414.697 333.927 403.32 349.733 393.086 342.322 396.262 337.731 386.558 330.672 382.36 335.75 375.063 330.359 378.155 324.774 367.397 317.577 363.76 322.328z");
	nyc.brooklyn_heights = R.path("M345.536,222.776c-9.223,20.122-21.341,47.586-24.745,48.317l39.01,21.289l12.979-17.826l31.495,19.328l-29.5-97.891c0,0-13.672-1.079-19.249,6.657C353.719,205.158,349.961,213.122,345.536,222.776z");
	nyc.dumbo = R.path("M377.38 195.15L384.792 221.267 430.435 225.206 464.593 202.689 471.479 192.427 466.451 186.123 438.779 197.47z");
	nyc.downtown = R.path("M385.497 223.561L429.924 227.382 447.45 247.084 448.73 277.791 399.438 268.381z");
	nyc.fort_greene = R.path("M399.967 270.303L448.73 279.679 449.242 299.926 477.899 303.893 506.277 302.518 510.458 368.878 468.305 349.307 463.861 357.152 425.189 338.304z");
	nyc.clinton_hill = R.path("M432.262 227.094L467.744 204.055 473.558 194.122 508.86 237.487 500.873 247.609 500.535 249.458 504.403 250.972 505.956 300.374 477.872 301.889 451.162 297.878 450.088 246.432z");
	nyc.williamsburg = R.path("M468.562,184.395l42.09,50.918l0.641,2.942l-3.813,6.659l71.653-4.418l0.121-153.298l-37.345,35.665l-29.628-26.36l-27.771,73.006C484.509,169.509,473.476,189.31,468.562,184.395z");
	nyc.greenpoint = R.path("M579.253,7.074c0,0-13.561,9.101-27.083,23.314c-10.11,10.625-19.428,24.721-27.225,36.684c-2.375,3.644-4.339,6.614-5.85,9.34c-2.354,4.247-5.757,11.547-5.757,16.245c0,2.697,1.82,1.385,2.942,3.326c2.788,4.819,26.05,23.369,26.05,23.369l36.922-34.795V7.074z");
	nyc.other = R.path("M428.058,545.79l-43.685-1.701l-1.065-29.847l-30.894-26.88l-8.639,7.43l-9.439-9.457l-6.312,2.485l-9.761-8.827l31.52-32.823l-36.044-29.648l-2.806-14.198l-11.391,17.785l-18.413,4.685l-0.468,14.044l-9.206-5.618l-33.502,43.736l-33,37.957l-10,35.966l34,0.034L733.146,550V7.074H581.759l-0.482,235.209l-74.488,5.952l6.552,121.553l26.125,13.576l-4.734,54.959l-48.809-18.36l1.361,53.73l-10.205,4.19l1.822,52.12L428.058,545.79z");


    $.ajax({ type: "POST",
        url: "../tools/map.php",
        data: { action: "2", neigh: "0", map_ver: "2" },
        success: function () { },
        error: function (err) { }
    });

    var current = null;
    for (var state in nyc) {

        nyc[state].attr(attr);
        nyc[state].color = '#6B757B'; //Raphael.getColor();

        if (state == 'other') {
            nyc[state].attr({
                fill: "#282D31",
                stroke: "#282D31",
                "stroke-width": 0,
                "stroke-linejoin": "round"
            });
        }

        if (findInArray(state, disabledNeighborhoods) != -1) {
            nyc[state].attr({
                fill: "#394347",
                stroke: "#394347",
                "stroke-width": 1,
                "stroke-linejoin": "round"
            });

            $('#link_' + state).css('color', '#697A6E');
        }

        (function (st, state)
        {
            st[0].style.cursor = "pointer";


            //st[0].onmousedown = clicky;
            // onclick = problems in IE

            st[0].unselect = function ()
            {
                for (var i = 0; i < nyc_selected.length; i++) {
                    if (state == nyc_selected[i]) {
                        nyc_selected.splice(i, 1);

                        if (state != 'other' && findInArray(state, disabledNeighborhoods) == -1) {
                            nyc[state].animate({ fill: "#424D52", stroke: "#424D52" }, 100);
                        }

                        $('#link_' + state).css('color', '#7D8E82');

                        var nid = neighNameToId(state);
                        $.ajax({ type: "POST",
                            url: "../tools/map.php",
                            data: { action: "0", neigh: nid, map_ver: "2" },
                            success: function () { },
                            error: function (err) { }
                        });

                        return true;
                    }
                }

                return false;
            }

            st[0].select = function ()
            {
                if (current && current != 'other' && findInArray(current, disabledNeighborhoods) == -1) {
                    nyc[current].animate({ fill: "#424D52", stroke: "#424D52" }, 100);
                }

                if (state != 'other' && findInArray(state, disabledNeighborhoods) == -1) {
                    st.animate({ fill: st.color, stroke: "#424D52" }, 100);
                    st.toFront();
                    R.safari();
                }

                if (findInArray(state, disabledNeighborhoods) == -1) {

                    nyc_selected.push(state);

                    $('#link_' + state).css('color', '#ccc');


                    var nid = neighNameToId(state);
                    $.ajax({ type: "POST",
                        url: "../tools/map.php",
                        data: { action: "1", neigh: nid, map_ver: "2" },
                        success: function () { },
                        error: function (err) { }
                    });

                    current = null;
                }
            }


            st[0].onmousedown = function ()
            {
                if (!st[0].unselect()) {
                    st[0].select();
                }
            };

            st[0].onmouseout = function ()
            {
                for (var i = 0; i < nyc_selected.length; i++) {
                    if (state == nyc_selected[i]) {
                        return;
                    }
                }

                if (state != 'other' && findInArray(state, disabledNeighborhoods) == -1) {
                    st.animate({ fill: "#424D52", stroke: "#424D52" }, 100);
                    st.toFront();
                    R.safari();
                }
            };

            st[0].onmouseover = function ()
            {
                for (var i = 0; i < nyc_selected.length; i++) {
                    if (state == nyc_selected[i]) {
                        return;
                    }
                }

                if (current && current != 'other' && findInArray(current, disabledNeighborhoods) == -1) {
                    nyc[current].animate({ fill: "#424D52", stroke: "#424D52" }, 100);
                }

                if (state != 'other' && findInArray(state, disabledNeighborhoods) == -1) {
                    st.animate({ fill: st.color, stroke: "#424D52" }, 100);
                    st.toFront();
                    R.safari();
                }

                //document.getElementById(state).style.display = "block";
                current = state;

            };


        })(nyc[state], state);
    }
}
