﻿// JScript File
var COMACMaxHeight = 0;

function COMPageLoadHandler()
{
    // track async postbacks to show/hide progress image   
    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(COMBeginRequestHandler);
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(COMEndRequestHandler);
}

//// this is used when in VE mode to repostion the map programatically
//// called by an indentify feature hyperlink click (zoom-to)
function COMZoomToFeature(lat, lon, zl)
{
    MDNGetVEMap().SetCenterAndZoom(new VELatLong(lat, lon), zl);
}

// get map area width
function COMGetMapWidth()
{
    var c = document.getElementById('InfoCell');
    return MDNGetClientWidth() - parseInt(c.style.width);
    //return MDNGetClientWidth() - c.offsetWidth);
}

// get map area height
function COMGetMapHeight()
{
    var mh = 1;
    var ch = 0;

    var h = document.getElementById('headerDIV');
    if (h && h.style && h.style.height)
    {
        mh += parseInt(h.style.height);
    }
    
    ch = mh;
    
    var sb = document.getElementById('searchBarDiv');
    //if (sb && sb.style && sb.style.height)
    if (sb)
    {
        ch += sb.offsetHeight;
    }

    var cd = document.getElementById('contentDiv');    
    if (cd)
    {
        cd.style.height = (MDNGetClientHeight() - ch) + "px";
    }
    
    COMToggleContentPanel();
    
    var logo = document.getElementById('MDNSLogo');
    if (logo)
    {
        logo.style.top = (MDNGetClientHeight() - 40) + "px";
    }

    COMACMaxHeight = (MDNGetClientHeight() - ch - 30);
    
    return MDNGetClientHeight() - mh;
}

var COMTabdescs = new Array("Enter an address", "Enter an owner", "Enter a folio");

function COMSelectSearchTab(tabid)
{
    var st = document.getElementById('searchTypeId');
    var tb = document.getElementById('SearchTextBox');
    
    var tabs = new Array(document.getElementById('Address'),
        document.getElementById('Owner'),
        document.getElementById('Folio'));

    if (st) st.value = tabid;
    
    for (var ii=0; ii<tabs.length; ii++)
    {
        if (tabs[ii].id == tabid)
        {
            tabs[ii].className = "TabHeaderSel";
            tb.value = COMTabdescs[ii];      
        }
        else
        {
            tabs[ii].className = "TabHeader";
        }
    }
}

function COMClearSearchTextBox()
{
    var tb = document.getElementById('SearchTextBox');
    
    if (tb)
    {
        for (ii in COMTabdescs)
        {
            if (COMTabdescs[ii] == tb.value) 
            {
     
                tb.value = "";
                return;
            }
        }
    }
}

// AutoComplete stuff 

var selIdx = -1;
var acTimer;
var cancelHide = false;
var cancelAC = false;

function COMSearchKeyDown(ev)
{
    if (acTimer) 
    {
        clearTimeout(acTimer);
        acTimer = null;
    }

    // just in case, clear out
    cancelAC = false;

	ev = (ev) ? ev : ((event) ? event : null);

	var acd = document.getElementById("AutoCompleteDiv");

	var k = ev.keyCode ? ev.keyCode : ev.rawEvent.keyCode;

	if (k === 27)
	{
		acd.style.display = "none";
		
		return false;
	}
	else if (k == 38) // up
	{
		if (selIdx > 0)
		{
			selIdx--;
			COMHighlightACOption();
		}
		
		return false;
	}
	else if (k == 40) //down
	{
		if (selIdx < acd.childNodes.length-1)
		{
			selIdx++;
			COMHighlightACOption();
		}
		
		return false;
	}
	else if (k == 13) // enter
	{
        // if we fail don't have ac list, we have submitted what is in the text box
        // cancel an AC 
	    if (!GrabAutoCompleteVal()) cancelAC = true;

	    return false;
	}
	else
	{
	    acTimer = window.setTimeout("COMDoAutoCompleteCallback()", 500);
	}
	
	return true;
}

function COMDoAutoCompleteCallback()
{
    var stb = document.getElementById("SearchTextBox")
    var stid = document.getElementById('searchTypeId');
    if (stb.value.length > 3)
    {
        CallbackMethods.AutoCompleteCallback(stid.value,stb.value,COMAutoCompleteCallbackHandler);
    }
	else COMHideAutoComplete();
}

function COMAutoCompleteCallbackHandler(state)
{

    if (state.RedirectUrl && state.RedirectUrl.length>0)
    {
        window.location = state.RedirectUrl;
    }

    if (!cancelAC && state.Html && state.Html != "")
    {
        selIdx = -1;
        var acd = document.getElementById("AutoCompleteDiv");
        var stb = document.getElementById("SearchTextBox");
        var sbc = document.getElementById("SearchBoxTable");
        acd.style.left = sbc.offsetLeft + "px";
	    acd.style.width = stb.style.width;
        acd.innerHTML = state.Html;
        acd.scrollTop = 0;

        //alert(acd.childNodes.length + ' ' + acd.childNodes[0].offsetHeight + ' ' + COMACMaxHeight);
        if (acd.childNodes.length * 25 > COMACMaxHeight) 
        {
            acd.style.height = COMACMaxHeight + "px";
        }
        else 
        {   
            acd.style.height = "";
        }
        
   	    acd.style.display = "block";
    }
    else
    {
        COMHideAutoComplete();
        
        if (state.Error)
        {
            alert(state.Error);
        }

    }
}

function COMHideAutoComplete()
{
    // clear out
    cancelAC = false;

    if (!cancelHide)
    {
	    var acd = document.getElementById("AutoCompleteDiv");
	    acd.style.display = "none";
   	    acd.innerHTML = "";
   	    selIdx = -1;
   	}
   	else cancelHide = false;
}

function COMHighlightACOption()
{
	var acd = document.getElementById("AutoCompleteDiv");
	var children = acd.childNodes;

	for (var i = 0; i < children.length; i++) 
	{
		var child = children[i];
		if (selIdx == i)
		{
			child.className = "AutoCompleteMenuItemSelect"
			
			if (child.offsetTop < acd.scrollTop) 
			    acd.scrollTop = child.offsetTop;
			else if (child.offsetTop + child.offsetHeight > acd.scrollTop + acd.offsetHeight) 
			    acd.scrollTop += (child.offsetTop + child.offsetHeight) - (acd.scrollTop + acd.offsetHeight);
	    }
		else if (child.className != "AutoCompleteMenuItem")
			child.className = "AutoCompleteMenuItem"		
	}
}

function COMMouserOverACOption(idx)
{
	selIdx = idx;
	COMHighlightACOption();
}

// Progress Image Stuff
function COMBeginRequestHandler(sender, args)
{
     var d = document.getElementById("ProgressImageDiv");
     if (d) d.style.display = "inline";
}

function COMEndRequestHandler(sender, args)
{
     var d = document.getElementById("ProgressImageDiv");
     if (d) d.style.display = "none";
}

function COMBufferSizeCheck()
{
    var tb = document.getElementById("ExportBufferTextBox"); 
    var defval = 150;
    
    if (tb)
    {
        if (isNaN (tb.value))
        {
            alert ("Buffer must be number");
            tb.value = defval;
        }
 
        var val = parseInt(tb.value);
        
        if (val <= 0 || val > 1000)
        {
            alert ("Buffer must be greater than zero and less than 1000");
            tb.value = defval;       
        }
 
    }
}

// js for details ddl

function COMToggleDetailsDDL()
{
    document.detachEvent("onclick", COMHideDetailsDDL);

    var dh = document.getElementById("DetailsList");
    var ddl = document.getElementById("DropPanel");
    ddl.style.left = dh.offsetLeft + "px";
    ddl.style.display = "block";
    
    window.setTimeout("document.attachEvent('onclick', COMHideDetailsDDL);", 100);
}

function COMHideDetailsDDL()
{
   var ddl = document.getElementById("DropPanel");
    
   if (ddl) ddl.style.display = "none";
 
   document.detachEvent("onclick", COMHideDetailsDDL);
}

var COMactivePropertyDetailId = "ZoningView";
var COMdetailTitles = new Array('Zoning','Property',"Add'l Property Info",'Sales & Taxes','Exemptions','City Information');
function COMShowPropertyDetail()
{
   var ddl = document.getElementById('DropPanel');
   if (ddl) ddl.style.display = 'none';
   var active = document.getElementById(COMactivePropertyDetailId);
   if (!active) return;
   var views = new Array(document.getElementById("ZoningView"),
       document.getElementById("PropertyView"),
       document.getElementById("AddlPropView"),
       document.getElementById("SalesTaxesView"),
       document.getElementById("ExemptionsView"),
       document.getElementById("CityInfoView"));
   for (var ii=0; ii<views.length; ii++)
   {
       if (views[ii] == active)
       {
           active.style.display = "block";
           document.getElementById("DetailTitle").innerHTML = COMdetailTitles[ii];
       }
       else views[ii].style.display = "none";
   }
}

function COMClearLegendChecks()
{
    var CommissionDistrictsLegend_LegendRadioButton = document.getElementById('CommissionDistrictsLegend_LegendRadioButton');
    CommissionDistrictsLegend_LegendRadioButton.checked = false;
    var FutureLandUseLegend_LegendRadioButton = document.getElementById('FutureLandUseLegend_LegendRadioButton');
    FutureLandUseLegend_LegendRadioButton.checked = false;
    var ExistingLandUseControl_LegendRadioButton = document.getElementById('ExistingLandUseControl_LegendRadioButton');
    ExistingLandUseControl_LegendRadioButton.checked = false;
    var FloodZonesThemeControl_LegendRadioButton = document.getElementById('FloodZonesThemeControl_LegendRadioButton');
    FloodZonesThemeControl_LegendRadioButton.checked = false;
    var PrimaryZoningLegendControl_LegendRadioButton = document.getElementById('PrimaryZoningLegendControl_LegendRadioButton');
    PrimaryZoningLegendControl_LegendRadioButton.checked = false;
}

function COMSetActiveLegend(activelid)
{
    var CommissionDistrictsLegend_f = 'CommissionDistrictsLegend' == activelid;
    document.getElementById('CommissionDistrictsLegend_LegendRadioButton').checked = CommissionDistrictsLegend_f;
    var FutureLandUseLegend_f = 'FutureLandUseLegend' == activelid;
    document.getElementById('FutureLandUseLegend_LegendRadioButton').checked = FutureLandUseLegend_f;
    var ExistingLandUseControl_f = 'ExistingLandUseControl' == activelid;
    document.getElementById('ExistingLandUseControl_LegendRadioButton').checked = ExistingLandUseControl_f;
    var FloodZonesThemeControl_f = 'FloodZonesThemeControl' == activelid;
    document.getElementById('FloodZonesThemeControl_LegendRadioButton').checked = FloodZonesThemeControl_f;
    var PrimaryZoningLegendControl_f = 'PrimaryZoningLegendControl' == activelid;
    document.getElementById('PrimaryZoningLegendControl_LegendRadioButton').checked = PrimaryZoningLegendControl_f;
}

var COMactivePanelId = "WelcomeView";
function COMToggleContentPanel() 
{
    var contentDiv = document.getElementById("contentDiv");
    var activePanel = document.getElementById(COMactivePanelId);
    
    var WelcomeHeader = document.getElementById("WelcomeHeader");
    var WelcomeView = document.getElementById("WelcomeView");
    if (activePanel && WelcomeView == activePanel) {activePanel.style.display = "block";WelcomeHeader.style.fontWeight="bold";} 
    else {WelcomeView.style.display = "none";WelcomeHeader.style.fontWeight="normal";} 
    
    var SearchResultsHeader = document.getElementById("SearchResultsHeader");
    var SearchResultsView = document.getElementById("SearchResultsView");
    if (activePanel && SearchResultsView == activePanel) {activePanel.style.display = "block";SearchResultsHeader.style.fontWeight="bold";} 
    else {SearchResultsView.style.display = "none";SearchResultsHeader.style.fontWeight="normal";} 
    
    var PropertyDetailsHeader = document.getElementById("PropertyDetailsHeader");
    var PropertyDetailsView = document.getElementById("PropertyDetailsView");
    if (activePanel && PropertyDetailsView == activePanel) {activePanel.style.display = "block";PropertyDetailsHeader.style.fontWeight="bold";} 
    else {PropertyDetailsView.style.display = "none";PropertyDetailsHeader.style.fontWeight="normal";} 
    
    var LayersHeader = document.getElementById("LayersHeader");
    var LayersView = document.getElementById("LayersView");
    if (activePanel && LayersView == activePanel) {activePanel.style.display = "block";LayersHeader.style.fontWeight="bold";} 
    else {LayersView.style.display = "none";LayersHeader.style.fontWeight="normal";} 
    
    var ExportHeader = document.getElementById("ExportHeader");
    var ExportView = document.getElementById("ExportView");
    if (activePanel && ExportView == activePanel) {activePanel.style.display = "block";ExportHeader.style.fontWeight="bold";} 
    else {ExportView.style.display = "none";ExportHeader.style.fontWeight="normal";} 
    if (activePanel) {activePanel.style.height = (parseInt(contentDiv.style.height)  - WelcomeHeader.offsetHeight - SearchResultsHeader.offsetHeight - PropertyDetailsHeader.offsetHeight - LayersHeader.offsetHeight - ExportHeader.offsetHeight) + 'px';}
}