﻿var LatLongs = new Array();
var lastlat = 0;
var lastlon = 0;
var originallat = 0;
var originallon = 0;
var map;

var Dennis6A = new GPolyline.fromEncoded({
    color: "#333333",
    weight: 4,
    opacity: 0.7,
	points: "ucs}FlsmkL}FeEuNcIyB}@{Cu@ke@kAaOu@{QVy@GUIw@s@uKcMoKqK}AwA}CgBkF_FuXsg@wBkIQuE?yARgA|@}BpGmObJsR^qAlAuLGuBw@iGEyAD{FJoAn@}DrAaEPgA?_FM}FyAoPWwUQiF_AwKoAqHc@sD{AaT",
	levels: "PBCAFBCB@H@ACABEIC@FABAAFDAB@D@BAG@CB@DB@BP",
	zoomFactor: 2,
	numLevels: 18
});

var LenoxRt7Bypass = new GPolyline.fromEncoded({
    color: "#333333",
    weight: 4,
    opacity: 0.7,
	points: "egkaG`uh~LsAS}EcCoDqAqDeBoTyIcCs@{Mm@oa@iAuBa@aE_Cy@QqBDaHrB}Ez@wHfB",
	levels: "PB@@BAFADBAFBB@P",
	zoomFactor: 2,
	numLevels: 18
});


var ScenicHighway = new GPolyline.fromEncoded({
    color: "#333333",
    weight: 4,
    opacity: 0.7,
    points: "mty}F~izmLkAoM?mLyAmM_EoMmM_NqNoMyKoMmGyJwI}EsJ_FyKsHyIeIkEiJsJuP_K{RsHyRqHeP",
    levels: "PCCDGBDBE@DBGAACBP",
    zoomFactor: 2,
    numLevels: 18
});

var GARhighway2 = new GPolyline.fromEncoded({
    color: "#333333",
    weight: 4,
    opacity: 0.7,
    points: "sqk}F`naqLXcF?wI@cChGsMfUyb@~}@qhBt]_s@tKkTz_@_w@|KyUt]as@hO_[vNqYbBwB`D_D",
    levels: "PB?EFBC?AAA??DAP",
    zoomFactor: 2,
    numLevels: 18
});

var GARhighway = new GPolyline.fromEncoded({
    color: "#333333",
    weight: 4,
    opacity: 0.7,
    points: "qe~}F`{`rLpEuYfBkMtAyIzAoGvE}LpCoFhMmRnDgJxB{Ej^_d@hDcFlDiG`C}E~EqJbDqIxFmW`EgL~CeIbBoIl@sHdE{PdGq[hFg^dAeKn@yS\\iOTuCnGgg@jEk\\lCmNnHiXjCoKnM_f@|CoIhB{D~@gB",
    levels: "P@@DBFBCADCAF?BDC@HBCBCEB@AD?FC?@DA?P",
    zoomFactor: 2,
    numLevels: 18
});

var BedfordSt = new GPolyline.fromEncoded({
    color: "#333333",
    weight: 4,
    opacity: 0.7,
    points: "epf_GznepLxhAkKzf@}Ll}Bo\\p}AwQb|@wIr}@gJt]_Fj@d@k@e@TqA",
    levels: "PEDEC?CCDCP",
    zoomFactor: 2,
    numLevels: 18
});

var YankeeDivisionHighway = new GPolyline.fromEncoded({
    color: "#333333",
    weight: 4,
    opacity: 0.7,
    points: "c`gbGjquqLs`@_mBcWwn@su@ukAuG}SiEa^oYgdDaJ_wA}DwdAvCmc@",
    levels: "PGDEHCDFEP",
    zoomFactor: 2,
    numLevels: 18
});

var Route2Boxboro = new GPolyline.fromEncoded({
    color: "#333333",
    weight: 4,
    opacity: 0.7,
    points: "gppbGnxusLiXmiCp@eXbjAieDrMeXpf@sl@hj@sfA",
    levels: "PEIFDEP",
    zoomFactor: 2,
    numLevels: 18
});

var Route116 = new GPolyline.fromEncoded({
    color: "#333333",
    weight: 4,
    opacity: 0.7,
    points: "exacGf}g}LlKXvCbAnSs@d`@kHvBXnG~BbRb@jO}D",
    levels: "PCDEEBDEP",
    zoomFactor: 2,
    numLevels: 18
});

var Route2a = new GPolyline.fromEncoded({
    color: "#333333",
    weight: 4,
    opacity: 0.7,
    points: "w`bcGfbyyL`BoEtGuOvLi^~B_KzC{a@l@qFxGmQvC_JV_MaA}WmFuj@o@aKy@y_@GcIpA_HnBmEdEmDvEoAxOqCfCWvCs@zCkC~DyFvJoYdFwL|BwDjDoDxHsDrH}@dIk@l^gDjTaBvAOv@i@tAwB`A_FKoN_@{JNqEdAiKrGea@`D}UNgK_@mIwB}MiAqDsEaJ_QwUwJoQkPu\\_KoPkE_FeIwEuCsBeB_CiAkCmAcD{AiBiEmAeFUgBe@yBeAoAmA{AaCmCuDwCiDsBoE_A}EyAgFyBmEyKaOaD_CuE}D{DaEoBsDoCeL|@cSmAs]VwHtAuFvDwJjFyQjAyCz@uC~F}FbKsJ|EsI`AiEj@kFdAyGS_JBiE~Cq[x@cDh@mCZcCRmCDuKAiEy@qGs@cBq@sAWkAIkATsGCw@_AmFSaCEqCMmAgBuJG{@AgDImIIu@CqDLoCRoBpBeLj@qJ@ePPwG\\eEzF__@pDiTb@uF?aA",
    levels: "P@BECAEAGCDADADICEBAADGCBDBGDA@@?CHBDABDBAJBDBFCDAGBDADB?BFBBDBF@ADBABEC@ADCJCCGBBA@E?CEA@GADC@ADA?FC?ADA@DB@@B@C?@@F@BBDBAD@C@P",
    zoomFactor: 2,
    numLevels: 18
});

var SouthStateHighwayRoute8 = new GPolyline.fromEncoded({
    color: "#333333",
    weight: 4,
    opacity: 0.7,
    points: "idwbG`oq}L|EeBxLcFtAe@~@a@d@Kn@GnFK~BCfCGfHGfBDdAPtAb@dAt@nAnAdAbBl@fBb@rBh@fB^z@h@x@z@`AjQdOlHxGvBvBdA~A`@|@|@xCtGzTJf@fBbGd@tAz@dBT\\dEhFtGpIjDfEbBzBfGfHb@j@`GzE~I|HxClBh@RdCr@hARhDd@`G|@|NlBzGPpAAlU\\",
    levels: "P@@?@E@@??CB@H@BD@@B@EAABAF@A??B@?E???@?D@HB?D??@E@@P",
    zoomFactor: 2,
    numLevels: 18
});

var NewAshfordRoute7 = new GPolyline.fromEncoded({
    color: "#333333",
    weight: 4,
    opacity: 0.7,
    points: "_fecGxv|}LxAPnA`@dAn@v@l@v@z@h@`Ap@dBj@rBj@bC^jBt@fB~@xAfAbAlCnBlCtA`Bp@fAPtABfAGtB]bCk@rFsAbB_@|Ae@pE_ArAUzBObBC`BV~An@rAlAzCdDf@r@hAj@vAd@lAJdA?dGPpATvAd@z@n@nArAjBdCxAjBhAjAjAdAdEfE`CrBjItH`Bv@fCz@hA\\|D`BxGrDhC|A|C~AfC`BfEzBdEdCbEzBlCtA`DrB`BtA~B`DnCpC|AxApA~@dBdA`Bz@dCfA`ClA`A`@",
    levels: "PAC?AD@B@?B@E@B?GA@C?@?@@C@AFACA?BEAB?B@G@A?@B@@?E@?AC?@@@?@?D@CA?D?B???P",
    zoomFactor: 2,
    numLevels: 18
});

var NorthfieldMainStRoute63 = new GPolyline.fromEncoded({
    color: "#333333",
    weight: 4,
    opacity: 0.7,
    points: "{bpcGzhgyLaG}AeMuDmLcEoD_BcF}AiDeBqOoFaHiCaGoBuEeBiFcBcCq@gBo@kAo@y@{@_C{B}CoBmEcCcB{@}Ao@mFaB{D_A",
    levels: "P@CAABB?@@A??DA?B@D@B@P",
    zoomFactor: 2,
    numLevels: 18
});

var WestSt122_32 = new GPolyline.fromEncoded({
    color: "#333333",
    weight: 4,
    opacity: 0.7,
    points: "au`bGfumwLtIe@pJq@`B]h@Uv@g@~@{@bBiCp@sAh@iBb@{BJmADwACoBKwASeBSw@aBuFSqAOqAE_AAaAHeCXwBTeAZ{@\\w@fAkBn@s@n@{@bFiG~CsDlCkDh@mAzCoIx@eBh@u@lCcD`AaAzF{GdCmCrB_C~BsC~G_ItA}Ab@a@`BeDtBwElB_EnCiG|@}BRs@TmBFeDUuGMyBa@yJO_Cc@_FkA_KGgAF}CHkARkAXmAZeApHeTfCoHT{@h@iDNoBNuDNcIBaC?sBCeAKgAOgA[yAaAsCuEiKuCmF",
    levels: "P?AE@ABG@CA?EA?C?B?@D@BA?G?B????D@B@D@@????@?E??AA?HABC??B@B@F@A?C@?E@B@@?F@?B@DAP",
    zoomFactor: 2,
    numLevels: 18
});

var MechanicSt62V = new GPolyline.fromEncoded({
    color: "#333333",
    weight: 4,
    opacity: 0.7,
    points: "a_}aGxh`wLOe@S]p@N`@A",
    levels: "P?D@P",
    zoomFactor: 2,
    numLevels: 18
});

var MechanicSt62 = new GPolyline.fromEncoded({
    color: "#333333",
    weight: 4,
    opacity: 0.7,
    points: "g`}aGrf`wLw@kAe@{@YcAUwAEq@MuFUwC{AgIc@wCMmAU}DOcGC]OkAuB_Ki@wCGiAcAmUU{AmAiG_ByIi@kCMiAEy@TqYG}EKmCCsC?_CFkCr@sNBiAIuAUgAy@kC{CiIyAkDeA{AgAgAiEwCuJaHk@k@u@}@u@oAUk@mAuFu@gCqAkCqBkDcAyDSmAOcBOaEBkBFsBd@eKHuCAkDc@sKG_CG_Aa@mDQgAm@mCa@wAa@iAqBeFm@aBW}AMmAQeEEuBk@gI",
    levels: "P?B@D?@CA?B@?C@@C?D???@F@B?@?C@A@G@ABAEA?B?E?B@B?BG?AC?@?CA??EA?C?@?D?A@AP",
    zoomFactor: 2,
    numLevels: 18
});

var GilbertvilleRd_Rt32 = new GPolyline.fromEncoded({
    color: "#333333",
    weight: 4,
    opacity: 0.7,
    points: "cscaGp~vwLqCYqB?uIYiL_CaNa@cKIuIOuL}A",
    levels: "PA@CCA@CP",
    zoomFactor: 2,
    numLevels: 18
});

var ConcordTurnpikeRt2Walden = new GPolyline.fromEncoded({
    color: "#333333",
    weight: 4,
    opacity: 0.7,
    points: "mnabGdoprLdCmLhBaR^uEbG{p@d@kH^qNE}H",
    levels: "PC@?DABP",
    zoomFactor: 2,
    numLevels: 18
});

var CambridgeTurnpikeRt2 = new GPolyline.fromEncoded({
    color: "#333333",
    weight: 4,
    opacity: 0.7,
    points: "m~abG|thrLrKqYjA}D|EyYvAgF~BkHzIkWpB_FbCqGvE_JnFeLpDgJdBoFv@mE~AiK|@wMpCe[bJyz@pBiNv@uEjA_FvBiGjD_J|CuI",
    levels: "PADC@EA?C@CAF@CACBE@C??P",
    zoomFactor: 2,
    numLevels: 18
});

var CapeCod6A = new GPolyline.fromEncoded({
    color: "#333333",
    weight: 4,
    opacity: 0.7,
    points: "mut}F`ktlLxDwBn@e@hAqA~AwBxGuJ~CyClGgFtBiBnB_Bn@a@xBcAhDyAtAg@~@q@n@o@b@w@ToBZsB^iBf@kBfBwD|@mArBmBnEyDnCuCdCuC|AqGzA}HbBiEjAsBtB}Cv@sBt@yCx@aCdBeEdAyCd@mC\\uCj@uC\\gAnCyH~AcHn@eBnA_BhB}AdLqKx@s@z@iAhAkAhAiC^}A\\sFPeCR}Ad@}ArBuFnB{DZa@xBsBhAw@jDgBv@{@n@kA`AqCf@uC@oDa@_DsBmGMwBLwB^gB^yAjA}ChBwDr@sBX{BCuAKyAiAoDe@kB]sBu@cDOyAEuCS{DYmE_@oBYwB_@qEaAoDcAmCk@eBOyAHqAZcBTwBIyC_@qC{@}AiDmEcAiCQ}C?kDIoBi@oAcAmAqB}DcBq@e@w@y@{Eo@w@_B{@kAu@iAeAcAuAUgAEcBDeDEcFDwDJoB^}CXyAZyOAkAsCoIK}ADkBh@aB`As@hA_AnAs@bAu@j@{@\\iATmAbBoFPyAByAXoB~@wB`BiEvAaF`@}BN}A_@uN\\_J?wBcDqYBoDNsBZoAx@cBj@cCXcBb@cJNoA`AkGLaBUqAg@_AkC_Je@_CCgBB}CCqCUkDuAyJi@eDo@iCcAsBu@{B?yAZqCNyLHsDN}Bh@iGJ_CEmCn@kDx@kCReCJ{DB_DSqE",
    levels: "P@C?ABD??C@A@B?EB?A?CEA@A?G@DB@C@@A@D@@C?AAFA??A?EAC@?C?E@CA@BD@BJCBBEB?C@@CAFA?A@D@@?B@AD@?EB@@CAGABDA@BEACBDDA?BADAH@@CA@BEBCAFC?@@BE?@C@@C?CA@GB@DBEBAB@CB?AFAAAD??AD?CA@FAA?B?@BDABC@BP",
    zoomFactor: 2,
    numLevels: 18
});

var SouthamptonRoadRt10 = new GPolyline.fromEncoded({
    color: "#333333",
    weight: 4,
    opacity: 0.7,
    points: "_in`Gzh{zLqH?mTb@gU?}Jc@uOhCwG?cJeBiOc@yTOkGa@}Dp@",
    levels: "PACBDECCDBCP",
    zoomFactor: 2,
    numLevels: 18
});

var EasthamptonRoadRt10 = new GPolyline.fromEncoded({
    color: "#333333",
    weight: 4,
    opacity: 0.7,
    points: "e`aaG`hpzL{AgBu@cAaEoE_IeJyFmGo^a`@{@u@mA{@sAq@}@a@iBi@aAKiFy@iHaAeNoB_Ew@kBi@a@SqBm@mEgB{A}@m@a@{@w@iAoAoAcBw@uA",
    levels: "P?@??BB@G?AC???B@E@@B?D@A@P",
    zoomFactor: 2,
    numLevels: 18
});

var AmherstRoadRt9 = new GPolyline.fromEncoded({
    color: "#333333",
    weight: 4,
    opacity: 0.7,
    points: "kflaGjzfyLpCs@fOyCnAQlACxAOzAg@`BkApBgBtA{BlAmCnAuCnAaD`AkDjAaGvCuPh@cBdAgCdBkD`BoDbCuEzAiCnCsF`A{EJqGT_CV_B`@uAd@oDNmBCiEQcD[eDU{C?iBJgB^oB`@yAn@oA`AeAx@m@rCuAxMmHrCsAbAc@pCm@xRkDfBa@hCeA|BoAtKuHnCeBz@o@fFcAlCg@tCm@~DkBxBgAfAUzDC`CMVCl@QdBgArB_BfBoArJwGlEsDfBoA~KoHlFuCvAeAfAaBjD{Gz@qA`DkC|BsBnDqCpBkBfH_JbB_C",
    levels: "P@B@@BF@CA?G@C@AD@?A?@CFC?AA@DA@?ADAB@H@B@A?E@BADA??E??C?DA@A?G@?@A@B@AE@@D?@@C?P",
    zoomFactor: 2,
    numLevels: 18
});

var BernardstonRoadRt10Rt5 = new GPolyline.fromEncoded({
    color: "#333333",
    weight: 4,
    opacity: 0.7,
    points: "}o`cG|o`zLiCqCwCmAoEwBkCoBmK{OcEoFiDeE_OoFiF_CgIaGcC{@iF{@qCuA{DuEwCqCkPmEiD{@uFqCwFa@gFYwEh@mGz@qDj@{ENcFOiD{@wDaCiCkD}B_CqD_F_KwQqDgFqBkDiDyGiCeEqC_CoEk@_NnBgHr@oEY}F{@{EmA",
    levels: "PC@BEB@FACCABDAG?CF?D@?BDBGCAADAAACBGDAEABP",
    zoomFactor: 2,
    numLevels: 18
});

var EastStEastMainStRt9Rt32 = new GPolyline.fromEncoded({
    color: "#333333",
    weight: 4,
    opacity: 0.7,
    points: "k`aaGbcixLXsBj@iCbAcCv@qAzAaBvBcBdC}ApBe@tQeCzCkAjBqA|AaB~AoBpAw@xAi@jYwGjBcAhFcFdBkBdE{DpCqCrByCnBaE~B{FfAuDn@iDTmCHcFIiEQ}C_@cDoEyRm@cDWqCMkFcA{Oa@yFMiDHsBZ}Bh@gCx@cDtAqEbAqCrAuCvBaEr@yArBwFjCoKbAoDd@yCt@{Fv@qHEoBo@cCkBkFwC{I[uA?}AFiA\\gAdA{GP_CHyHIiBUyAgBuFc@aBeAwIUyC?sD^kFTaBRaAlA}EjCuJL_A?cAc@qAq@uAoB{CWq@Sq@UwABuAPaApBmDV]\\SbBe@TOXc@d@}@JUD]C]]aA}@eAm@eA}AeDeAqCI_@Cg@Y}FMoAUaB]kAi@sAy@yA[_@wK}JeAkAo@}@sA{BwD}IcBsDc@q@yBsCoG}G",
    levels: "P@CADB@FADAC@BEABG?@?BE@CBAIB@DB@D@@?@GAB?D@B@?AC?D?@GBC?@E@BAACE@B@C@FB@D?@AFAC@@C?BFBC@A@C?A@H@B@B@D?@?CA@E@B@D?B@@DAP",
    zoomFactor: 2,
    numLevels: 18
});

var MilestoneRoadNantucket = new GPolyline.fromEncoded({
    color: "#333333",
    weight: 4,
    opacity: 0.7,
    points: "qw{zFp`xjLRuH?}EDeI?{GL{O?uSJg`@rBeXfC}ZxBsZhIcgAlAcOrBwU~AyUlCg\\rAaRxA}PzGm|@xBu[EqU?ec@KwlAPih@Lyg@Xkt@HaKGqE",
    levels: "PA??@@@F?@?A?AA@@A@G?@C?@?AP",
    zoomFactor: 2,
    numLevels: 18
});

var currentOverlay;
var currentPoint;

function createMarker(point, RequestString, color, size)
{
    var myIcon = new GIcon(G_DEFAULT_ICON);
    myIcon.image = "./" + color + ".png";
    if (size) myIcon.iconSize = size;

    var marker = new GMarker(point, { icon: myIcon });
    map.addOverlay(marker);
    GEvent.addListener(marker, "click", function()
    {
        currentPoint = point;
        loadXMLDoc(RequestString);
    });
}

function doAddOverlay(overlay, ProjectNumber, position, color)
{
    var RequestString = './proxy.php?ProjectNumber=' + ProjectNumber;

    if (position != 'none')
    {
        var markerindex;
        if (position == 'middle' || !position)
            markerindex = Math.floor(overlay.getVertexCount() / 2)
        else if (position == 'left')
            markerindex = 0;
        else if (position == 'right')
            markerindex = overlay.getVertexCount() - 1;

        if (!color) color = "green";
        createMarker(
	            overlay.getVertex(markerindex),
	            RequestString,
	            color
	        );
    }

    map.addOverlay(overlay);
    GEvent.addListener(overlay, 'click', function(point)
    {
        currentOverlay = overlay;
        currentPoint = point;
        loadXMLDoc(RequestString);
    });

    GEvent.addListener(overlay, "mouseover", function()
    {
        map.getDragObject().setDraggableCursor("pointer"); 
    });
    
    GEvent.addListener(overlay, "mouseout", function()
    {
        map.getDragObject().setDraggableCursor("url(http://maps.google.com/intl/en_us/mapfiles/openhand.cur),default");
    });
}



function drawStartLine() {
    // 9000000 - 9999999 reserved for unexisting projects
    createMarker(
             new GLatLng(42.586346,-72.600822),
             './proxy.php?ProjectNumber=' + 9999999,
             "stimulus_bluesquare",
             new GSize(17,17)
         );
			
	
	doAddOverlay(Dennis6A, 605214);
	doAddOverlay(LenoxRt7Bypass, 601886);
    doAddOverlay(MilestoneRoadNantucket, 604674);
    doAddOverlay(BernardstonRoadRt10Rt5, 605541);
    doAddOverlay(EasthamptonRoadRt10, 605541);
    doAddOverlay(SouthamptonRoadRt10, 605541);
    doAddOverlay(EastStEastMainStRt9Rt32, 605540);
    doAddOverlay(AmherstRoadRt9, 605540);
    doAddOverlay(GilbertvilleRd_Rt32, 604376);
	//doAddOverlay(CapeCod6A, 604521);
    doAddOverlay(CambridgeTurnpikeRt2, 604629);
    doAddOverlay(ConcordTurnpikeRt2Walden, 604630, 'middle', 'blue');
    doAddOverlay(MechanicSt62, 604373, 'left');
    doAddOverlay(MechanicSt62V, 604373, 'none');
    doAddOverlay(WestSt122_32, 604373, 'none');
    doAddOverlay(NorthfieldMainStRoute63, 604221, 'middle', 'blue');
    doAddOverlay(NewAshfordRoute7, 605028, 'middle', 'blue');
    doAddOverlay(SouthStateHighwayRoute8, 605386);
    doAddOverlay(ScenicHighway, 604224, 'middle', 'blue');
    doAddOverlay(GARhighway2, 604314, 'middle', 'blue');		//3.      Westport-Resurfacing & related work on a section of Route 6 (State Road) 
    doAddOverlay(GARhighway, 605113, 'middle', 'blue');
    doAddOverlay(BedfordSt, 601104, 'middle', 'blue');
    doAddOverlay(YankeeDivisionHighway, 605018, 'middle', 'blue');
    doAddOverlay(Route116, 603550, 'middle', 'blue');
    doAddOverlay(Route2a, 605539, 'middle', 'blue');			//1.      Erving/Gill/Orange/Wendell
    doAddOverlay(Route2Boxboro, 604400, 'middle', 'blue');		//2.      Harvard/Littleton-Resurfacing & related work on a section of Route 2
}

function initialize()
{
    if (GBrowserIsCompatible())
    {
        map = new GMap2(document.getElementById("map_canvas"));
        
        map.setCenter(new GLatLng(42, -71.75), 8);
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl()); 	// hybrid/map/satellite
        map.enableContinuousZoom();
        map.enableScrollWheelZoom();
        drawStartLine();
    }
}

var xmlhttp;
function loadXMLDoc(url)
{
    //http://www.w3schools.com/XML/xml_http.asp
    xmlhttp = null;
    if (window.XMLHttpRequest)
    {// code for Firefox, Opera, IE7, etc.
        xmlhttp = new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {// code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (xmlhttp != null)
    {
        xmlhttp.onreadystatechange = state_Change;
        xmlhttp.open("GET", url, true);
        xmlhttp.send(null);
    }
    else
    {
        alert("Your browser does not support XMLHTTP.");
    }
}
function state_Change()
{
    if (xmlhttp.readyState == 4)// 4 = "loaded"
    {
        if (xmlhttp.status == 200)// 200 = "OK"
            map.openInfoWindowHtml(currentPoint, xmlhttp.responseText);
        else
            alert("Problem retrieving data:" + xmlhttp.statusText);
    }
}
