﻿var activePOISearch = null;

var panels = new Array();

function Panel(id, preserveState, state, onLoadEvent)
{
    this.panelId = id;
    this.preserveState = preserveState; 
    this.panelState = state;
    this.DoOnLoad = onLoadEvent;
}

function getPanelById(panelId)
{
    var retVal = null;

    for (i=0; i < panels.length; i++)
    {
	    pnl = panels[i];
	 
	    if(pnl.panelId==panelId)
	    {	
	        retVal = pnl            
            
            break;
	    }		
    }
    
    return retVal;
}

//SHOW PANELS
function showPanel(panelId, data)
{  
    var lang = getCurrentLanguage();
            
    var pnl = getPanelById($("#sidebar").attr("panel"));
    
    $("#sidebar").css("background-color","");
    
    if (pnl != null && pnl.preserveState)
    {
        pnl.panelState = $("#sidebar").html();    
    }
    
    pnl = getPanelById(panelId);
    
    if (pnl != null && pnl.panelState != "")
    {       
        showPanel_CallBack(pnl.panelState);            
    } else {
        doWaitingSearch("sidebar");
    
        if (data != null)
        {
            $.post("Panel.aspx", data, showPanel_CallBack);
        } else {
            $.post("Panel.aspx", { id : panelId, lang : lang }, showPanel_CallBack);
        }            
    }          
                        
    return false;

    function showPanel_CallBack(response)
    {
        $("#sidebar").attr("panel",panelId);            
        $("#sidebar").html(response);
        
        var pnl = getPanelById(panelId);
        
        if (pnl != null && pnl.DoOnLoad != null)
        {
            pnl.DoOnLoad();
                        
        }
        	    
	    return false;
    }    
}

function panel_onKeyPress(control, e, func)
{                
    var characterCode;  
                
    if(e && e.which)
    { //if which property of event object is supported (NN4)
        e = e;
        characterCode = e.which;
    }
    else
    {
        e = event;
        characterCode = e.keyCode; //character code is contained in IE's keyCode property
    }    

    //(if enter key)
    if(characterCode == 13)
    {                
        if (document.getElementById("panelControlPrefix") != null)
        {
            controlPrefix = document.getElementById("panelControlPrefix").value;
        }
     
        if (func != null)
        {
            func();
        } else {
            executeSearch(controlPrefix);
        }
        
        return false;
    }
    
    return true;        
}


function poiSearch(mainClass, subClass, name, address, admin1, admin2, geometry)
{
    this.Class = mainClass;
    this.SubClass = subClass;
    this.Name = name;
    this.Address = address;
    this.MainAdminUnit = admin1;
    this.SubAdminUnit = admin2;
    this.Geometry = geometry;
}

function searchArea(index, selected, searchFunction, controlPrefix)
{
    this.myIndex = index;
    this.mySelected = selected;	    	    
    this.doSearch = searchFunction;
    this.myControlPrefix=controlPrefix;
}

var searchAreas=new Array();
searchAreas[searchAreas.length]= new searchArea("0", false, null);
searchAreas[searchAreas.length]= new searchArea("1", false, function () {btn_searchPlaces_onclick(null, "pnl_Lista");}); 
searchAreas[searchAreas.length]= new searchArea("2", false, function () {btn_searchStreets_onclick(null, "pnl_Lista");});
searchAreas[searchAreas.length]= new searchArea("3", true, function () {btn_searchPOI_onclick(null, "pnl_Lista");});

var searchAreasItineraries = new Array();
searchAreasItineraries[searchAreasItineraries.length]= new searchArea("0", false, null);
searchAreasItineraries[searchAreasItineraries.length]= new searchArea("1", false, function () {btn_searchItineraries_onclick(null,'pnl_Lista_Percursos');}); 
searchAreasItineraries[searchAreasItineraries.length]= new searchArea("2", false, function () {btn_searchItineraries_onclick(null,'pnl_Lista_Percursos');});
searchAreasItineraries[searchAreasItineraries.length]= new searchArea("3", false, function () {btn_searchItineraries_onclick(null,'pnl_Lista_Percursos');});
searchAreasItineraries[searchAreasItineraries.length]= new searchArea("4", false, function () {btn_searchItineraries_onclick(null,'pnl_Lista_Percursos');});

function showSearchArea(areaObj, arrayAreas, index, animation)
{		
    var searchArea;
    
    if (document.getElementById("btn_sidebar_search") != null)
    {
        document.getElementById("btn_sidebar_search").style.visibility="hidden";
    }
    
    if (areaObj != null)
    {
        $("div.searchHeaderNav").css("background-image","url('../images/page/nav_band_expand.gif')");
    }
    	    	
    for (i=0; i<arrayAreas.length; i++)
    {	    	     
        searchArea = arrayAreas[i];
        
        if (index != searchArea.myIndex)
        {	
            if (document.getElementById("searchArea" + searchArea.myIndex) != null)          	        
            {               
                if (animation)
                {
                    $("#searchArea" + searchArea.myIndex).hide(500);
                } else {
                    document.getElementById("searchArea" + searchArea.myIndex).style.display = "none";
                }
            }
            searchArea.mySelected = false;	            	            
        } else {
        
            if (document.getElementById("searchArea" + searchArea.myIndex) != null)          	        
            {   
                if (document.getElementById("searchArea" + searchArea.myIndex).style.display != "block")
                {
                    document.getElementById("searchArea" + searchArea.myIndex).style.display = "block";
                    
                    if (areaObj != null)
                    {                    
                        $(areaObj).css("background-image","url('../images/page/nav_band_contract.gif')");                    
                    }
                                                   
                } else {
                    if (animation)
                    {
                        $("#searchArea" + searchArea.myIndex).hide(500);
                    } else {
                        document.getElementById("searchArea" + searchArea.myIndex).style.display = "none";                        
                    }                   
                }                   
            }
            
            if (index != "0")
            {
                if (document.getElementById("btn_sidebar_search") != null)
                {
			        document.getElementById("btn_sidebar_search").style.visibility="visible";            
			    }
			}
           
            if (!searchArea.mySelected)
            {	           
                searchArea.mySelected = true;	            	           	            
                activePOISearch = null;
                $("#pnl_Lista").html("");                               
            }	            
        }	        
    }	    
    
    return false;
}


function toggleSearchAreaVisibility(areaObj, controlId, animation)
{		        	    		
    if (document.getElementById(controlId) != null)          	        
    {
        if (document.getElementById(controlId).style.display != "block")
        {
            document.getElementById(controlId).style.display = "block";
            
            if (areaObj != null)
            {
                $(areaObj).css("background-image","url('../images/page/nav_band_contract.gif')");     
            }            
                                            
        } else {
            if (animation)
            {
                $("#" + controlId).hide(500);
            } else {
                document.getElementById(controlId).style.display = "none";
            }
            
            if (areaObj != null)
            {
                $(areaObj).css("background-image","url('../images/page/nav_band_expand.gif')");     
            }             
        }                                          	            
    }
    	       
    return false;
}

function executeSearch(controlPrefix)
{
    var searchArea;
    
    if (controlPrefix == null || controlPrefix == "")
    {
        if (document.getElementById("panelControlPrefix") != null)
        {
            controlPrefix = document.getElementById("panelControlPrefix").value;
        }
    }
    	    	
    for (i=0; i<searchAreas.length; i++)
    {	    	     
        searchArea = searchAreas[i];
        
        if (searchArea.mySelected)
        {                                        	            	        	        
            searchArea.myControlPrefix=controlPrefix;            
            searchArea.doSearch();            
                                    
            $("#searchArea" + searchArea.myIndex).hide(500); 
            
            $("searchHeaderNav").css("background-image","url('../images/page/nav_band_expand.gif')");           
            
            return false;
        }
    }        
    
    return false;	        
}
function doWaitingSearch(controlId)
{        
    $("#" + controlId).html($("#tmpLoadindBar").html());
}
function getControlPrefix()
{
    var controlPrefix = "";

     for (i=0; i<searchAreas.length; i++)
    {	    	     
        searchArea = searchAreas[i];
        
        if (searchArea.mySelected)
        {	
            controlPrefix = searchArea.myControlPrefix            	        	                    
            break;
        }
    }
    
    return controlPrefix;
}



function updateDOM(inputField) { 

    if (typeof inputField == "string")
    {
        inputField = document.getElementById(inputField);    
    }
    
    if (inputField.type == "select-one")
    {
        for (var i=0; i<inputField.options.length; i++)
        {
            if (i == inputField.selectedIndex)
            {
                inputField.options[inputField.selectedIndex].setAttribute("selected","selected");
            }
        }        
    } else if (inputField.type == "text") {
        inputField.setAttribute("value",inputField.value);
    } else if (inputField.type == "textarea") {
        inputField.setAttribute("value",inputField.value);    
    } else if ((inputField.type == "checkbox") || (inputField.type == "radio")) {
        if (inputField.checked) {
            inputField.setAttribute("checked","checked");        
        } else {            
            inputField.removeAttribute("checked"); 
        }    
    }

} 