﻿// zooms out
var OldGrid = '';
var TilesLoaded = 0;
var TilesLoading = 0;
var CountyLocation = '';
var MaximumProgress = 0;

function GetStreetStatus() {
    if (GetInnerText(document.getElementById(CurrentStreetsStatus)) == '-on-') {
        return true;
    }
    else
    {
        return false;
    }
}

function ChangeYears(NewYear) {

    if (CheckWait() == false) return false;
    
    ShowWait();
    var ti = document.getElementById(t).value;
    document.getElementById(t).value = 'changeyears';

    //copy the existing master grid for smooth transition
    var oGrid = document.getElementById(Grid);
    var NewGrid = document.createElement('table');
    NewGrid.className = oGrid.className;
    NewGrid.style.left = oGrid.style.left;
    NewGrid.style.top = oGrid.style.top;
    NewGrid.cellSpacing = oGrid.cellSpacing;
    NewGrid.cellPadding = oGrid.cellPadding;
    NewGrid.onselectstart = oGrid.onselectstart;
    NewGrid.style.borderCollapse = 'collapse';
    var TBody = document.createElement('tbody');
    NewGrid.appendChild(TBody);

    for (RowIndex = 0; RowIndex < oGrid.rows.length; RowIndex++) {
        TBody.appendChild(document.createElement('tr'));
        for (CellIndex = 0; CellIndex < oGrid.rows[RowIndex].cells.length; CellIndex++) {
            
            NewGrid.rows[RowIndex].appendChild(document.createElement('td'));
            NewGrid.rows[RowIndex].cells[CellIndex].style.width = oGrid.rows[RowIndex].cells[CellIndex].style.width;
            NewGrid.rows[RowIndex].cells[CellIndex].style.height = oGrid.rows[RowIndex].cells[CellIndex].style.height;
            NewGrid.rows[RowIndex].cells[CellIndex].style.borderWidth = oGrid.rows[RowIndex].cells[CellIndex].style.borderWidth;
            
            if (NewGrid.rows[RowIndex].cells[CellIndex].getElementsByTagName('img').length > 0) {
                NewGrid.rows[RowIndex].cells[CellIndex].removeChild(NewGrid.rows[RowIndex].cells[CellIndex].getElementsByTagName('img')[0]);
            }
        }
    }
    oGrid.id = Grid + 'back';
    oGrid.name = Grid + 'back';
    NewGrid.id = Grid;
    NewGrid.name = Grid;
    OldGrid = oGrid.id;

    document.getElementById(Main).insertBefore(NewGrid, document.getElementById(Wait))
    oGrid = document.getElementById(Grid);
    
    // hide the new year until it has finished fully loading
    oGrid.style.display = 'none';
    if (GetInnerText(document.getElementById(CurrentDissolveStatus)) == '-on-') {
        oGrid.style.filter = 'blendTrans(duration=3)';
    }
    
    MaximumProgress = 80;
    setTimeout("CheckImagesForProgress(true);",100);
    
    var Streets = GetInnerText(document.getElementById(CurrentStreetsStatus));
    AsyncWeb.ChangeYears(ti, NewYear, Streets, ChangeYearsCallBack, OnFailedDoNothing);
}

function ChangeYearsCallBack(result, userContext, methodName) {
  	if (result != '') {
  	    var Arguments = result[0,0].split('=');
  	    document.getElementById(t).value = Arguments[Arguments.length-1];
  	    ApplyGrid(result);
  	    setTimeout("CheckProgressForYearChange();",850)
  	}
}

var YearChangeDissolveGrid = '';

function CheckProgressForYearChange() {

    // we cannot let anything else clear the temporary grid until the dissolve has taken place
    if (OldGrid != '') { 
        if (GetInnerText(document.getElementById(CurrentDissolveStatus)) == '-on-') {
            YearChangeDissolveGrid = OldGrid;
            OldGrid = '';
        }
    }
    
    if (document.getElementById(ProgressMeterWidth).style.width.replace('%','') == '100') {
        var oGrid = document.getElementById(Grid);
        if (GetInnerText(document.getElementById(CurrentDissolveStatus)) == '-on-') {
            if (oGrid.outerHTML) {
                oGrid.filters.blendTrans.Apply() 
            }
        }
        oGrid.style.display = '';
        if (GetInnerText(document.getElementById(CurrentDissolveStatus)) == '-on-') {
            if (oGrid.outerHTML) {
                oGrid.filters.blendTrans.Play()
            }
        }
        if (YearChangeDissolveGrid != '') { 
            if (GetInnerText(document.getElementById(CurrentDissolveStatus)) == '-on-') {
                setTimeout("document.getElementById(Main).removeChild(document.getElementById(YearChangeDissolveGrid)); YearChangeDissolveGrid = ''; ",4000);
            }
        }
  	    HideWait();
    }
    else
    {
        setTimeout("CheckProgressForYearChange();",550)
    }
}

function CheckImagesForProgress(reset) {
    if (reset) {
        document.getElementById(ProgressMeterWidth).style.width = '0%';
        SetInnerText(document.getElementById(ProgressMeterWidth).rows[0].cells[0], '');
    }
    //update MaximumProgress
    if (TilesLoading > 0 && ((GetNumImagesLoaded() / TilesLoading) * 100) > MaximumProgress) {
        MaximumProgress = ((GetNumImagesLoaded() / TilesLoading) * 100);
    }
    if (((document.getElementById(ProgressMeterWidth).style.width.replace('%','') - 0) + 1) <= MaximumProgress) {
        if (MaximumProgress == 100) {
            document.getElementById(ProgressMeterWidth).style.width = '100%';
        }
        else
        {
            document.getElementById(ProgressMeterWidth).style.width = ((document.getElementById(ProgressMeterWidth).style.width.replace('%','') - 0) + 1) + '%';
        }
    }
    if (document.getElementById(ProgressMeterWidth).style.width != '100%') {
        if ((document.getElementById(ProgressMeterWidth).style.width.replace('%','')-0) > 40) {
            SetInnerText(document.getElementById(ProgressMeterWidth).rows[0].cells[0], 'Loading ' + Math.round(document.getElementById(ProgressMeterWidth).style.width.replace('%','')) + '%');
            document.getElementById(ProgressMeterWidth).rows[0].cells[0].style.fontSize = '10px';
        }
        else if ((document.getElementById(ProgressMeterWidth).style.width.replace('%','')-0) > 25) {
            SetInnerText(document.getElementById(ProgressMeterWidth).rows[0].cells[0], 'Loading');
            document.getElementById(ProgressMeterWidth).rows[0].cells[0].style.fontSize = '10px';
        }
        setTimeout("CheckImagesForProgress(false);",135);
    }
    else
    {
        if (CountyLocation != '') {
            SetInnerText(document.getElementById(ProgressMeterWidth).rows[0].cells[0], 'Loaded - ' + CountyLocation);
        }
        else
        {
            SetInnerText(document.getElementById(ProgressMeterWidth).rows[0].cells[0], 'Loaded');
        }
        document.getElementById(ProgressMeterWidth).rows[0].cells[0].style.fontSize = '10px';
        // we have loaded the image and need to get rid of the interim grid if we have one
        if (OldGrid != '') { document.getElementById(Main).removeChild(document.getElementById(OldGrid)); OldGrid = ''; }
    }
}

function GetNumImagesLoaded() {
    var tempTilesLoaded = 0;
    TilesLoading = 0;
    var oGrid = document.getElementById(Grid);
    for (Y = 0; Y < oGrid.rows.length; Y++) {
        for (X = 0; X < oGrid.rows[Y].cells.length; X++) {
            if (oGrid.rows[Y].cells[X].getElementsByTagName('img').length > 0) {
                if (ImageLoaded(oGrid.rows[Y].cells[X].getElementsByTagName('img')[0])) {
                    tempTilesLoaded = tempTilesLoaded + 1;
                }
                TilesLoading = TilesLoading + 1;
            }
        }
    }
    return tempTilesLoaded;
}

function ImageLoaded(img) {
    if (!img.complete) {
        return false;
    }
    if (typeof img.naturalWidth != 'undefined' && img.naturalWidth == 0) {
        return false;
    }
    return true;
}

function TileLoaded() {
    TilesLoaded = TilesLoaded + 1;
}

function ZoomOutClick(X, Y)
{
    // first expand all images double
    var oGrid;
    if (OldGrid != '') {
        // we already have a grid and the new one hasn't loaded yet
        oGrid = document.getElementById(OldGrid);
        var AdjustedX = X + (document.getElementById(Grid).style.left.replace('px','') - oGrid.style.left.replace('px',''));
        var AdjustedY = Y + (document.getElementById(Grid).style.top.replace('px','') - oGrid.style.top.replace('px',''));
        oGrid.style.left = (((document.getElementById(Main).style.width.replace('px','') / 2) - (AdjustedX / 2))) + 'px';
        oGrid.style.top = (((document.getElementById(Main).style.height.replace('px','') / 2) - (AdjustedY / 2))) + 'px';
        for (row = 0; row < oGrid.rows.length; row++) {
            for (cell = 0; cell < oGrid.rows[row].cells.length; cell++) {
                oGrid.rows[row].cells[cell].style.width = (oGrid.rows[row].cells[cell].style.width.replace('px','') / 2) + 'px';
                oGrid.rows[row].cells[cell].getElementsByTagName('img')[0].style.width = oGrid.rows[row].cells[cell].style.width;
                oGrid.rows[row].cells[cell].style.height = (oGrid.rows[row].cells[cell].style.height.replace('px','') / 2) + 'px';
                oGrid.rows[row].cells[cell].getElementsByTagName('img')[0].style.height = oGrid.rows[row].cells[cell].style.height;
            }
        }
        ShowWait();
    }
    else
    {
        oGrid = document.getElementById(Grid);
        var NewGrid = document.createElement('table');
        NewGrid.className = oGrid.className;
        NewGrid.style.left = oGrid.style.left;
        NewGrid.style.top = oGrid.style.top;
        NewGrid.cellSpacing = oGrid.cellSpacing;
        NewGrid.cellPadding = oGrid.cellPadding;
        NewGrid.onselectstart = oGrid.onselectstart;
        NewGrid.style.borderCollapse = 'collapse';
        var TBody = document.createElement('tbody');
        NewGrid.appendChild(TBody);

        oGrid.style.left = (((document.getElementById(Main).style.width.replace('px','') / 2) - (X / 2))) + 'px';
        oGrid.style.top = (((document.getElementById(Main).style.height.replace('px','') / 2) - (Y / 2))) + 'px';
        for (row = 0; row < oGrid.rows.length; row++) {
            TBody.appendChild(document.createElement('tr'));
            for (cell = 0; cell < oGrid.rows[row].cells.length; cell++) {
            
                NewGrid.rows[row].appendChild(document.createElement('td'));
                NewGrid.rows[row].cells[cell].style.width = oGrid.rows[row].cells[cell].style.width;
                NewGrid.rows[row].cells[cell].style.height = oGrid.rows[row].cells[cell].style.height;
                NewGrid.rows[row].cells[cell].style.borderWidth = oGrid.rows[row].cells[cell].style.borderWidth;
            
                oGrid.rows[row].cells[cell].style.width = (oGrid.rows[row].cells[cell].style.width.replace('px','') / 2) + 'px';
                oGrid.rows[row].cells[cell].getElementsByTagName('img')[0].style.width = oGrid.rows[row].cells[cell].style.width;
                oGrid.rows[row].cells[cell].style.height = (oGrid.rows[row].cells[cell].style.height.replace('px','') / 2) + 'px';
                oGrid.rows[row].cells[cell].getElementsByTagName('img')[0].style.height = oGrid.rows[row].cells[cell].style.height;
            }
        }

        ShowWait();
        oGrid.id = Grid + 'back';
        oGrid.name = Grid + 'back';
        NewGrid.id = Grid;
        NewGrid.name = Grid;
        OldGrid = oGrid.id;
        document.getElementById(Main).insertBefore(NewGrid, document.getElementById(Wait))
    }
    var ti = document.getElementById(t).value;
    document.getElementById(t).value = 'zoomout';

    MaximumProgress = 25;
    setTimeout("CheckImagesForProgress(true);",100);

    var Streets = GetInnerText(document.getElementById(CurrentStreetsStatus));
    AsyncWeb.Zoom(X, Y, ti, 2, Streets, ZoomCallBack, OnFailedDoNothing);
}

// zooms in
function ZoomInClick(X, Y)
{
    // check to make sure we aren't coming from the coverage map
    if (document.getElementById(CoverageMap).style.display != '') {
        // first expand all images double
        
        var oGrid;
        
        if (OldGrid != '') {
            // we already have a grid and the new one hasn't loaded yet
            oGrid = document.getElementById(OldGrid);
            var AdjustedX = X + (document.getElementById(Grid).style.left.replace('px','') - oGrid.style.left.replace('px',''));
            var AdjustedY = Y + (document.getElementById(Grid).style.top.replace('px','') - oGrid.style.top.replace('px',''));
            oGrid.style.left = (((document.getElementById(Main).style.width.replace('px','') / 2) - (AdjustedX * 2))) + 'px';
            oGrid.style.top = (((document.getElementById(Main).style.height.replace('px','') / 2) - (AdjustedY * 2))) + 'px';
            for (row = 0; row < oGrid.rows.length; row++) {
                for (cell = 0; cell < oGrid.rows[row].cells.length; cell++) {
                    oGrid.rows[row].cells[cell].style.width = (oGrid.rows[row].cells[cell].style.width.replace('px','') * 2) + 'px';
                    oGrid.rows[row].cells[cell].getElementsByTagName('img')[0].style.width = oGrid.rows[row].cells[cell].style.width;
                    oGrid.rows[row].cells[cell].style.height = (oGrid.rows[row].cells[cell].style.height.replace('px','') * 2) + 'px';
                    oGrid.rows[row].cells[cell].getElementsByTagName('img')[0].style.height = oGrid.rows[row].cells[cell].style.height;
                }
            }
            ShowWait();
        }
        else
        {
            oGrid = document.getElementById(Grid);
            var NewGrid = document.createElement('table');
            NewGrid.className = oGrid.className;
            NewGrid.style.left = oGrid.style.left;
            NewGrid.style.top = oGrid.style.top;
            NewGrid.cellSpacing = oGrid.cellSpacing;
            NewGrid.cellPadding = oGrid.cellPadding;
            NewGrid.onselectstart = oGrid.onselectstart;
            NewGrid.style.borderCollapse = 'collapse';
            var TBody = document.createElement('tbody');
            NewGrid.appendChild(TBody);

            oGrid.style.left = (((document.getElementById(Main).style.width.replace('px','') / 2) - (X * 2))) + 'px';
            oGrid.style.top = (((document.getElementById(Main).style.height.replace('px','') / 2) - (Y * 2))) + 'px';
            for (row = 0; row < oGrid.rows.length; row++) {
                TBody.appendChild(document.createElement('tr'));
                for (cell = 0; cell < oGrid.rows[row].cells.length; cell++) {
                
                    NewGrid.rows[row].appendChild(document.createElement('td'));
                    NewGrid.rows[row].cells[cell].style.width = oGrid.rows[row].cells[cell].style.width;
                    NewGrid.rows[row].cells[cell].style.height = oGrid.rows[row].cells[cell].style.height;
                    NewGrid.rows[row].cells[cell].style.borderWidth = oGrid.rows[row].cells[cell].style.borderWidth;
                
                    oGrid.rows[row].cells[cell].style.width = (oGrid.rows[row].cells[cell].style.width.replace('px','') * 2) + 'px';
                    oGrid.rows[row].cells[cell].getElementsByTagName('img')[0].style.width = oGrid.rows[row].cells[cell].style.width;
                    oGrid.rows[row].cells[cell].style.height = (oGrid.rows[row].cells[cell].style.height.replace('px','') * 2) + 'px';
                    oGrid.rows[row].cells[cell].getElementsByTagName('img')[0].style.height = oGrid.rows[row].cells[cell].style.height;
                }
            }
            ShowWait();

            oGrid.id = Grid + 'back';
            oGrid.name = Grid + 'back';
            NewGrid.id = Grid;
            NewGrid.name = Grid;
            OldGrid = oGrid.id;
            document.getElementById(Main).insertBefore(NewGrid, document.getElementById(Wait))
        }
    }
    else
    {
        ShowWait();
    }
    var ti = document.getElementById(t).value;
    document.getElementById(t).value = 'zoomin';
    
    MaximumProgress = 25;
    setTimeout("CheckImagesForProgress(true);",100);

    var Streets = GetInnerText(document.getElementById(CurrentStreetsStatus));
    AsyncWeb.Zoom(X, Y, ti, 1, Streets, ZoomCallBack, OnFailedDoNothing);
}

function ZoomCallBack(result, userContext, methodName) {
  	var CreatedNode;
  	if (result > 0) {
  	    var oGrid = document.getElementById(Grid);
  	    if (result == 1) {
  	        // no sense in zooming out beyond this point
  	        CountyLocation = '';
  	        MaximumProgress = 100;
            if (document.getElementById(CoverageMap).style.display == 'none') document.getElementById(CoverageMap).style.display = '';
            // erase all images
            for (Y = 0; Y < oGrid.rows.length; Y++) {
                for (X = 0; X < oGrid.rows[Y].cells.length; X++) {
                    if (oGrid.rows[Y].cells[X].getElementsByTagName('img').length > 0) {
                        oGrid.rows[Y].cells[X].removeChild(oGrid.rows[Y].cells[X].getElementsByTagName('img')[0]);
                    }
                }
            }
            // erase the temp grid if we need to
            if (OldGrid != '') { document.getElementById(Main).removeChild(document.getElementById(OldGrid)); OldGrid = ''; }
  	        HideWait();
  	        document.getElementById(t).value = 0;
  	    }
  	    else
  	    {
            MaximumProgress = 80;
  	        document.getElementById(t).value = result;
            oGrid.style.left = (-(((oGrid.rows[0].cells.length * oGrid.rows[0].cells[0].style.width.replace('px','')) - document.getElementById(Main).style.width.replace('px','')) / 2)) + 'px';
            oGrid.style.top = (-(((oGrid.rows.length * oGrid.rows[0].cells[0].style.height.replace('px','')) - document.getElementById(Main).style.height.replace('px','')) / 2)) + 'px';
            document.getElementById(o).value = oGrid.style.left.replace('px','') + ',' + oGrid.style.top.replace('px','');
  	        UpdateImage(result)
  	    }
  	}
}

function UpdateImage(t) {
    TilesLoading = 0;
    if (MaximumProgress == 0) {
        MaximumProgress = 80;
        setTimeout("CheckImagesForProgress(true);",100);
    }
    // just in case
    ShowWait();
    //now get the images
    var Streets = GetInnerText(document.getElementById(CurrentStreetsStatus));
    AsyncWeb.UpdateImage(t, Streets, UpdateICallBack, OnFailedDoNothing);
}

var NoErase = false;

function UpdateICallBack(result, userContext, methodName) {
  	if (result != '') {
  	    var Arguments = result[0,0].split('=');
  	    // make sure we are still dealing with the same t-value
  	    if (Arguments[Arguments.length-1] == document.getElementById(t).value) {
  	        if (!NoErase) {
  	            // first lets clear out all existing images
                var oGrid = document.getElementById(Grid);
                for (Y = 0; Y < oGrid.rows.length; Y++) {
                    for (X = 0; X < oGrid.rows[Y].cells.length; X++) {
                        if (oGrid.rows[Y].cells[X].getElementsByTagName('img').length > 0) {
                            oGrid.rows[Y].cells[X].removeChild(oGrid.rows[Y].cells[X].getElementsByTagName('img')[0]);
                        }
                    }
                }
                // now recenter the grid
                //oGrid.style.left = (-(((oGrid.rows[0].cells.length * oGrid.rows[0].cells[0].style.width.replace('px','')) - document.getElementById(Main).style.width.replace('px','')) / 2)) + 'px';
                //oGrid.style.top = (-(((oGrid.rows.length * oGrid.rows[0].cells[0].style.height.replace('px','')) - document.getElementById(Main).style.height.replace('px','')) / 2)) + 'px';
                //document.getElementById(o).value = oGrid.style.left.replace('px','') + ',' + oGrid.style.top.replace('px','');
            }
            else
            {
                NoErase = false;
            }
            
  	        ApplyGrid(result);
  	    }
  	}
  	HideWait();
}

function Back() {
    var ti = document.getElementById(t).value;
    if (ti.length > 0 && ti != '0') {
        ShowWait();
        var Streets = GetInnerText(document.getElementById(CurrentStreetsStatus));
        AsyncWeb.Back(ti, Streets, BackCallBack, OnFailedDoNothing);
    }
    else
    {
        alert('There are no images to which you can go back.');
    }
}

function BackCallBack(result, userContext, methodName) {
    if (result == 0) {
        alert('There are no images to which you can go back.');
      	HideWait();
    }
    else
    {
        document.getElementById(t).value = result;
        NoErase = true;
        MaximumProgress = 0;
        var oGrid = document.getElementById(Grid);
        // now recenter the grid
        oGrid.style.left = (-(((oGrid.rows[0].cells.length * oGrid.rows[0].cells[0].style.width.replace('px','')) - document.getElementById(Main).style.width.replace('px','')) / 2)) + 'px';
        oGrid.style.top = (-(((oGrid.rows.length * oGrid.rows[0].cells[0].style.height.replace('px','')) - document.getElementById(Main).style.height.replace('px','')) / 2)) + 'px';
        document.getElementById(o).value = oGrid.style.left.replace('px','') + ',' + oGrid.style.top.replace('px','');
        NoErase = false;
        UpdateImage(result)
    }
}

// updates the current position
function UpdatePosition(XMovement, YMovement)
{
    ShowWait();
    var ti = document.getElementById(t).value;
    
    document.getElementById(t).value = 'updateposition';
     
    MaximumProgress = 10;
    setTimeout("CheckImagesForProgress(true);",100);
    
    var oGrid = document.getElementById(Grid);
    var Streets = GetInnerText(document.getElementById(CurrentStreetsStatus));
    AsyncWeb.UpdatePosition(XMovement, YMovement, ti, Streets, oGrid.style.left.replace('px',''), oGrid.style.top.replace('px',''), UpdateGridCallBack, OnFailedDoNothing);
}

function UpdateGridCallBack(result, userContext, methodName) {
  	if (result > 0) {
        NoErase = true;
        MaximumProgress = 80;
        document.getElementById(t).value = result;
        UpdateImage(result)
  	}
  	HideWait();
}

function ApplyGrid(URLArray) {

    //check if coming from coverage map
    if (document.getElementById(CoverageMap).style.display == '') document.getElementById(CoverageMap).style.display = 'none';

    var CreatedNode;
    TilesLoading = 0;
    SetInnerText(document.getElementById(ProgressMeterWidth).rows[0].cells[0], ' ');
    document.getElementById(ProgressMeterWidth).rows[0].cells[0].style.fontSize = '0px';
    var oGrid = document.getElementById(Grid);
    for (Y = 0; Y < oGrid.rows.length; Y++) {
        for (X = 0; X < oGrid.rows[Y].cells.length; X++) {
            if (oGrid.rows[Y].cells[X].getElementsByTagName('div').length > 0) {
                oGrid.rows[Y].cells[X].innerHTML = '';
            }
            if (oGrid.rows[Y].cells[X].getElementsByTagName('img').length <= 0) {
                CreatedNode = document.createElement('img');
                CreatedNode.src = URLArray[(Y * oGrid.rows[Y].cells.length) + X];
                CreatedNode.style.width = oGrid.rows[Y].cells[X].style.width;
                CreatedNode.style.height = oGrid.rows[Y].cells[X].style.height;
                oGrid.rows[Y].cells[X].appendChild(CreatedNode);
                TilesLoading = TilesLoading + 1;
            }
        }
    }
    
    UpdateYearsList(false);
    
    
}
var ForceYearsUpdate = false;

function UpdateYearsList(force) {
    if ((document.getElementById(ProgressMeterWidth).style.width.replace('%','')-0) > 70) {
        var oGrid = document.getElementById(Grid);
        var ti = document.getElementById(t).value;
        ForceYearsUpdate = force;
        AsyncWeb.GetYears(((document.getElementById(Main).style.width.replace('px','') / 2) - oGrid.style.left.replace('px','')), ((document.getElementById(Main).style.height.replace('px','') / 2) - oGrid.style.top.replace('px','')), ti, GetYearsCallBack, OnFailedDoNothing);
    }
    else
    {
        setTimeout("UpdateYearsList(" + force + ")",500);
    }
}

function GetYearsCallBack(result, userContext, methodName) {
  	var CreatedNode;
    var ti = document.getElementById(t).value;
  	if (result != '') {
  	    var resultArray = result.split('|');
  	    var ProceedWithYears = false;
  	    // check first to see if the years are different...if they are not, don't bother
        var MainYearTable = document.getElementById(YearsPanel).getElementsByTagName('table');
  	    if (MainYearTable.length > 0 && ForceYearsUpdate == false) {
            var tables = MainYearTable[0].getElementsByTagName('table')
            var YearText = '';
  	        if (resultArray[2] == tables.length) {
  	            for (TableIndex = 0; TableIndex < tables.length; TableIndex++) {
  	                YearText = GetInnerText(tables[TableIndex].rows[0].cells[0]);
  	                if (resultArray[1].indexOf(YearText) <= 0) {
  	                    ProceedWithYears = true;
  	                }
  	            }
  	        }
  	        else
  	        {
  	            ProceedWithYears = true;
  	        }
        }
        else
        {
            ProceedWithYears = true;
        }
  	    if (ProceedWithYears) {
      	    document.getElementById(YearsPanel).innerHTML = '';
  	        if (resultArray[0] == ti && resultArray.length > 1) {
  	            document.getElementById(YearsPanel).innerHTML = resultArray[1];
  	            MoveInYears();
      	    }
      	}
      	// this will update the county location and other things such as scale
      	GetInfo();
  	}
}

function MoveInYears() {

    var Years = document.getElementById(YearsPanel).getElementsByTagName('table')[0].getElementsByTagName('table');
    if (Years.length > 0) {
        // if we have loaded at least half of the images
        if ((document.getElementById(ProgressMeterWidth).style.width.replace('%','')-0) > 80) {
            for (X = 0; X < Years.length; X++) {
                if ((Years[X].style.left.replace('px','') - 0) >= 10 && (Years[X].style.left.replace('px','') - 0) != 1) {
                    Years[X].style.left = (Years[X].style.left.replace('px','') - 10) + 'px';
                    setTimeout("MoveInYears()",10);
                    return true;
                }
                else
                {
                    Years[X].style.left = '1px';
                }
            }
        }
        else
        {
            setTimeout("MoveInYears()",500);
        }
    }
    
}

function GetInfo() {
    var ti = document.getElementById(t).value;
    AsyncWeb.GetInfo(ti, GetInfoCallBack, OnFailedDoNothing);
}

function GetInfoCallBack(result, userContext, methodName) {
    var ti = document.getElementById(t).value;
  	if (result != '') {
  	    var resultArray = result.split('|');
  	    if (resultArray[0] == ti) {
  	        if (resultArray.length >= 2) {
                CountyLocation = resultArray[1];  	 
                if (document.getElementById(ProgressMeterWidth).style.width == '100%') {
                    document.getElementById(ProgressMeterWidth).rows[0].cells[0].innerHTML = 'Loaded - ' + CountyLocation;
                }   
            }
  	        if (resultArray.length >= 3) {
                document.getElementById(CurrentScale).innerHTML = resultArray[2];
            }
  	    }
  	}
}

// Gets the progress of a currently processing request
function GetMostRecentUserView(ActionID, IPAddress)
{
    AsyncWeb.GetMostRecentUserView(ActionID, IPAddress, UpdateMostRecentUserView, OnFailedDoNothing);
}

// Gets the progress of a currently processing request
function GetProgress(SessionID)
{
    AsyncWeb.GetProgress(SessionID, OnSucceededWithContext, OnFailed);
}

// Gets the progress of a currently processing request
function GetAddressPoint(Address)
{
    AsyncWeb.GetProgress(SessionID, OnSucceededWithContext, OnFailed);
}

function OnSucceededWithContext(result, userContext, methodName)
{
	// Page element to display the feedback message.    
    var RsltElem = 
        document.getElementById(ProgressLabel);
    
  	RsltElem.innerHTML =  result;
 	
}

function OnFailed(error)
{
    // Display the error.    
    var RsltElem = 
        document.getElementById(ProgressLabel);
    RsltElem.innerHTML = 
        "Service Error: " + error.get_message();
}

function OnFailedDoNothing(error)
{
    // This is an error handler for things that are honestly not important
    // enough to report, for example if the user previews cannot be updated
    window.status = 'Error' + error.get_message();   
}

function UpdateMostRecentUserView(result, userContext, methodName)
{
	// Page element to display the feedback message.    
  	// alert(result);
  	if (result != '') {
  	    // let's update the most recent user view
  	    var items;
  	    items = result.split('|');
  	    var ActionID = items[0];
  	    var Year = items[1];
  	    var Location = items[2];
  	    var Link = items[3];
  	    var o = new Image();
  	    o.src = '/preview.aspx?ActionID=' + ActionID;
  	    
  	    if (document.getElementById(PreviewImage).filters) document.getElementById(PreviewImage).filters.blendTrans.Apply();
  	    document.getElementById(PreviewImage).src = '/preview.aspx?ActionID=' + ActionID;
  	    if (document.getElementById(PreviewImage).filters) document.getElementById(PreviewImage).filters.blendTrans.Play();
  	    SetInnerText(document.getElementById(PreviewYear), Year);
  	    SetInnerText(document.getElementById(PreviewCountyLocation), Location);
        document.getElementById(PreviewIDs).value = ActionID;
        document.getElementById(PreviewLink).href = Link;
  	}
}

if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();
