/**********************************************************************
 *
 * $Id: startUp.js,v 1.5 2006/09/07 15:14:33 lbecchi Exp $
 *
 * purpose: start up code to bootstrap initialization of kaMap within
 *          the sample interface.  Examples of using many parts of
 *          the kaMap core api.
 *
 * purpose: This is the sample ka-Map interface.  Feel free to use it 
 *          as the basis for your own applications or just to find out
 *          how ka-Map works.
 *
 * author: Lorenzo Becchi and Andrea Cappugi (www.ominiverdi.org)
 *
 * ka-Explorer interface has been developer for Food and Agriculture 
 * Organization of the United Nations (FAO-UN)
 *
 *
 **********************************************************************
 *
 * Copyright (c) 2006 Food and Agriculture Organization of the United Nations (FAO-UN)
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the "Software"),
 * to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 * and/or sell copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included
 * in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 * DEALINGS IN THE SOFTWARE.
 *
 **********************************************************************/


var myKaMap = myKaNavigator = myKaQuery = myScalebar = myKaQueryStopped = myBalloon = myKaRuler = myKaPrint = myKaPanoramio = null;
var myKaCurrentService = null;
var queryParams = null;
var myPropeditMapOverlay=null;
var xmlHttp=null;
var myMessageMapOverlay=null;
var myMessageSearchArea; //minx,miny,maxx,maxy 


/**
 * parse the query string sent to this window into a global array of key = value pairs
 * this function should only be called once
 */
function parseQueryString() {
    queryParams = {};
    var s=window.location.search;
    if (s!='') {
        s=s.substring( 1 );
        var p=s.split('&');
        for (var i=0;i<p.length;i++) {
            var q=p[i].split('=');
            queryParams[q[0]]=q[1];
        }
    }
}

/**
 * get a query value by key.  If the query string hasn't been parsed yet, parse it first.
 * Return an empty string if not found
 */
function getQueryParam(p) {
    if (!queryParams) {
        parseQueryString();
    }
    if (queryParams[p]) {
        return queryParams[p];
    } else if ((p == 'cps') && (typeof(default_x) != "undefined") && (typeof(default_y) != "undefined") && default_x && default_y) {
            return default_x+','+default_y+','+default_scale;
    } else {
        return '';
    }
}

function myOnLoad() {
	window.onresize=drawPage;

	myKaMap = new kaMap( 'viewport' );

	var szMap = getQueryParam('map');
	var iVerID = getQueryParam('ver_id');
    var szExtents = getQueryParam('extents');
    var szCPS = getQueryParam('cps');

    var legendOptions = {};
    legendOptions.visibility = typeof gbLegendVisibilityControl != 'undefined' ? gbLegendVisibilityControl : true;
    legendOptions.opacity = typeof gbLegendOpacityControl != 'undefined' ? gbLegendOpacityControl : true;
    legendOptions.order = typeof gbLegendOrderControl != 'undefined' ? gbLegendOrderControl : true;
    legendOptions.query = typeof gbLegendQueryControl != 'undefined' ? gbLegendQueryControl : false;
    
    var myKaLegend = new kaLegend( myKaMap, 'legend', false, legendOptions, typeof(layerTree) == "object" ? layerTree : false);
    var myKaKeymap = new kaKeymap( myKaMap, 'keymap' );
    myKaNavigator = new kaNavigator( myKaMap );
    myKaNavigator.activate();
    myKaQuery = new kaQuery( myKaMap, KAMAP_POINT_QUERY );

    myPropedit = new kaQuery(myKaMap, KAMAP_POINT_QUERY);
    myKaPanoramio = new kaQuery( myKaMap, KAMAP_POINT_QUERY );

    myKaRubberZoom = new kaRubberZoom( myKaMap );
    myKaTracker = new kaMouseTracker(myKaMap);
    myKaTracker.activate();
    
    myKaMap.registerForEvent( KAMAP_INITIALIZED, null, myInitialized );
    myKaMap.registerForEvent( KAMAP_MAP_INITIALIZED, null, myMapInitialized );
    myKaMap.registerForEvent( KAMAP_SCALE_CHANGED, null, myScaleChanged );
    myKaMap.registerForEvent( KAMAP_EXTENTS_CHANGED, null, myExtentChanged );
    myKaMap.registerForEvent( KAMAP_LAYERS_CHANGED, null, myLayersChanged );
    myKaMap.registerForEvent( KAMAP_LAYER_STATUS_CHANGED, null, myLayersChanged );
    //myKaMap.registerForEvent( KAMAP_QUERY, null, myGPClicked );
    myKaMap.registerForEvent( KAMAP_QUERY, null, myPanoramioQuery );
    myKaMap.registerForEvent( KAMAP_MAP_CLICKED, null, myMapClicked );
    myKaMap.registerForEvent( KAMAP_MOUSE_TRACKER, null, myMouseMoved );

    myScalebar = new ScaleBar(1);
    myScalebar.divisions = 3;
    myScalebar.subdivisions = 2;
    myScalebar.minWidth = 150;
    myScalebar.maxWidth = 200;
    myScalebar.place('scalebar');
	myBalloon = new kaBalloon( myKaMap, 'myBalloon');
    
	myToolTip = new kaToolTip( myKaMap );
    myKaRuler = new myKaRuler( myKaMap);
    toolobjects = new Array();
    toolobjects['ruler'] = myKaRuler;
    myKaPrint = new kaPrint(myKaMap, toolobjects);
	
	myKaUliceSearch = new kaUliceSearch( myKaMap );
	myKaParceleSearch = new kaParceleSearch( myKaMap );
//test


	drawPage();
    //myKaMap.initialize( szMap, szExtents, szCPS );
    myKaMap.initialize( iVerID ? szMap + '&ver_id='+iVerID : szMap, szExtents, szCPS );
    
	var bm = parseInt(getQueryParam('show_bm')); /*izborne jedinice*/
    if (bm>0)
    {
        myObjectShowObject('izborne_jedinice','bm='+bm,2500);    
    }
    
}
/**
 * event handler for KAMAP_INITIALIZED.
 *
 * at this point, ka-Map! knows what map files are available and we have
 * access to them.
 */
function myInitialized() {
    //myMapInitialized( null, myKaMap.getCurrentMap().name );
}

/**
 * event handler for KAMAP_MAP_INITIALIZED
 *
 * the scales are put into a select ... this will be used for zooming
 */
function myMapInitialized( eventID, mapName ) {
    //get list of maps and populate the maps select box
    var aMaps = myKaMap.getMaps();
    // Update map selection list if one is available
    var oSelect = document.forms[0].maps;
    if (oSelect)
    {
        var j = 0;
        var opt = new Option( 'select a map', '', true, true );
        oSelect[j++] = opt;
        for(var i in aMaps) {
          oSelect[j++] = new Option(aMaps[i].title,aMaps[i].name,false,false);
        }

        //make sure the map is selected ...
        var oSelect = document.forms[0].maps;
        if (oSelect.options[oSelect.selectedIndex].value != mapName) {
            for(var i = 0; i < oSelect.options.length; i++ ) {
                if (oSelect.options[i].value == mapName) {
                    oSelect.options[i].selected = true;	
                    break;
                }
           }
        }
    } 


	//update the scales select
    var currentMap = myKaMap.getCurrentMap();
    var scales = currentMap.getScales();
    

    var current_scale = default_scale;
    var szCPS = getQueryParam('cps');
    aCPS = szCPS.split(',');
    if (aCPS[2]) {
        current_scale = aCPS[2];
    }
    
	oSelect = document.forms[0].scales;
    var current_scale_index = 0;
	if(oSelect){
		while( oSelect.options[0] ) oSelect.options[0] = null;
	    j=0;
	    for(var i in scales)
	    {
            var c = current_scale == scales[i] ? true : false;
            if (c) current_scale_index = j;
            var dc = default_scale == scales[i] ? true : false;
            oSelect.options[j++] = new Option("1:"+scales[i],scales[i],dc,c);
	    }
        var o = getRawObject("zoomslider_div");
        if (o) {
            $("#zoomslider_div").slideDown("slow");
            var steps = oSelect.options.length-1
            $('#zoomslider').slider({ animate : true, min: steps, max: 0, steps: steps, startValue : current_scale_index, change: function(e,ui) { oSelect.selectedIndex = ui.value;mySetScale(oSelect.options[ui.value].value);} });
        }
	}
    
    myKaMap.zoomToScale(current_scale);
    

    
    //Activate query button
    switchService('toolPan');
    
    
	
	/* handle request for layer visibility */
	var layers = getQueryParam('layers');
	if (layers != '') {
		var map = myKaMap.getCurrentMap();
		//turn off all layers
		var allLayers = map.getAllLayers();
		for (var i=0; i<allLayers.length; i++) {
			allLayers[i].setVisibility(false);
		}
		aLayers = layers.split(',');
		for (var i=0;i<aLayers.length; i++) {
			map.setLayerVisibility (unescape(aLayers[i]), true);
		}
	}
    //alert('initialized');
    myKaStoppedQuery = new kaQuery(myKaMap, KAMAP_MOUSE_STOPPED, 1000);
    setKaStoppedQueryState();
    myKaMap.registerForEvent( KAMAP_MOUSE_STOPPED, null, myMouseOver);
    var initBox = 'toolLegend';
    var search = getQueryParam('search');
    if (search != '') {
        var obj = getQueryParam('obj');
        if (obj == '') obj = 'ulica';
        if (obj == 'parcela') {
            document.parcele_search.parcela.value = search;
            if (typeof(ko) == 'undefined') ko=0;
            myKaUliceSearch.searchParcele(search, ko, 0);
        } else if (obj == 'ulica') {
            document.ulice_search.ulica.value = search;
            myKaUliceSearch.searchUlice(search);
        }
        initBox = 'toolSearch';
    }
    //Activate service box
    switchService(initBox);
}

/**
 * handle the extents changing by updating a link in the interface that links
 * to the current view
 */
function myExtentChanged( eventID, extents ) {
	updateLinkToView();
    setKaStoppedQueryState();
}

function myMouseMoved( eventID, position) {
    var geopos = document.getElementById('geoPosition');
    if(geopos) geopos.innerHTML = 'x: ' + roundIt(position.x,2) + '<BR>y: ' + roundIt(position.y,2);
}

function myLayersChanged(eventID, map) {
	updateLinkToView();
    setKaStoppedQueryState();
}

function updateLinkToView()  {
	var port = (window.location.port)? window.location.port : 80;
	var url = window.location.protocol+'/'+'/'+window.location.host +':'+ port +''+window.location.pathname+'?';
	var extents = myKaMap.getGeoExtents();
	var cx = (extents[2] + extents[0])/2;
	var cy = (extents[3] + extents[1])/2;
	var cpsURL = 'cps='+cx+','+cy+','+myKaMap.getCurrentScale();
	var mapURL = 'map=' + myKaMap.currentMap;
    var theMap = myKaMap.getCurrentMap();
	var aLayers = theMap.getLayers();
	var layersURL = 'layers=';
	var sep = '';
	for (var i=0;i<aLayers.length;i++) {
		layersURL += sep + aLayers[i].name;
		sep = ',';
	}

	var link = getRawObject('linkToView');
	if(link) link.href = url + mapURL + '&' + cpsURL + '&' + layersURL;
	
	var linkContent = getRawObject('linkContent');
	if(linkContent) linkContent.value = myUrlEncode('Pozicija na mapi GIS prezentacije Kragujevca:\n-------\n'+ url + mapURL + '&' + cpsURL + '&' + layersURL.replace(/ /g, '%20') +'\n-------\n\nIskopirajte link u celini!.');


	//this should stay in an independant function
	var geoExtent = getRawObject('geoExtent');
	
	if(geoExtent) {
		geoExtent.innerHTML = 'minx: ' + roundIt(extents[0],2) +'<br>' +
							'miny: ' + roundIt(extents[1],2) +'<br>' +
							'maxx: ' + roundIt(extents[2],2) +'<br>' +
							'maxy: ' + roundIt(extents[3],2) +'<br>';
	}
}


function sendLinkToView(email,body) {
	
	var mySubject = myUrlEncode('GIS Kragujevac - pozicija na mapi');
	var myBody = myUrlEncode(body);
		
	location.replace( 'mailto:' + email + '?subject=' + mySubject + '&body=' + body);
}



/**
 * called when kaMap tells us the scale has changed
 */
function myScaleChanged( eventID, scale ) {


	var oSelect = document.forms[0].scales;
	if(oSelect){
	    for (var i=0; i<oSelect.options.length; i++)
	    {
	        if (oSelect.options[i].value == scale)
	        {
	            oSelect.options[i].selected = true;
	            //document.forms[0].zoomout.disabled = (i==0);
	            //document.forms[0].zoomin.disabled = (i==oSelect.options.length - 1);
	        }
	    }
    }
    $('#zoomslider').slider("moveTo", oSelect.selectedIndex); 
    var o = getRawObject('zoomslider_scale');
    if (o) {
        o.title = scale;
    }
    //todo: update scale select and enable/disable zoomin/zoomout
    var currentMap = myKaMap.getCurrentMap();
    var scales = currentMap.getScales();
    for(var i in scales){
        var imgString = 'img'+scales[i];
        var scaleString = 'img'+scale;
        if(getRawObject(imgString)) {
            if(imgString == scaleString) {
                getRawObject(scaleString).src = 'images/pixel-red.png';
            } else {
                getRawObject(imgString).src = 'images/pixel-blue.png';
            }
        }
    }
    myScalebar.update(scale);
   
    /*
    if (scale >= 1000000) {
        scale = scale / 1000000;
        scale = scale + " Million";
    }
    var outString = 'current scale 1:'+ scale;
    getRawObject('scale').innerHTML = outString;
    */
    if (myBalloon.visible)
    {
        myKaMap.zoomTo(myBalloon.curr_geoX,myBalloon.curr_geoY);
        
        myBalloon.moveGeo(myBalloon.curr_geoX,myBalloon.curr_geoY);
    } 
    myKaRuler.reset();
    if (myKaRuler.state) {
        myKaRuler.deactivate();
        myKaRuler.activate();
    }
    
    setKaStoppedQueryState();
}

/**
 * called when the user changes scales.  This will cause the map to zoom to
 * the new scale and trigger a bunch of events, including:
 * KAMAP_SCALE_CHANGED
 * KAMAP_EXTENTS_CHANGED
 */
function mySetScale( scale ) {
    myKaMap.zoomToScale( scale );
}

/**
 * called when the map selection changes due to the user selecting a new map.
 * By calling myKaMap.selectMap, this triggers the KAMAP_MAP_INITIALIZED event
 * after the new map is initialized which, in turn, causes myMapInitialized
 * to be called
 */
function mySetMap( name ) {
    myKaMap.selectMap( name );
}

function myIsMapPointVisible(x,y)
{
    var rect;
    rect=myKaMap.getGeoExtents(); //minx,miny,maxx,maxy
    if ( (x>rect[0]) && (x<rect[2]) && (y>rect[1]) && (y<rect[3]))
        return true;
    else
        return false;
}


function myPropeditMarkPoint(geo_x,geo_y)
{
    if (myPropeditMapOverlay == null)
    {
        myPropeditMapOverlay = new kaXmlOverlay( myKaMap, 250 );
    }

    myPropeditMapOverlay.removePoint();
    var my_point = myPropeditMapOverlay.addNewPoint('propedit_point', geo_x, geo_y);
    var my_symbol = new kaXmlSymbol();
    my_symbol.size = 12;
    my_symbol.color = '#ff0000';
    
    my_point.addGraphic(my_symbol);            
    
  
}
function myPropeditSwitchMode(mode)
{
    myPropeditMode=mode;
    if (mode==2)
    {
        document.getElementById("propedit_by_parcela").style.display="none";
        document.getElementById("propedit_search").style.display="block";
        if (document.getElementById("propedit_search_form")==null)
            myPropeditExecute("search=1","search");
    }
    else
    {
        document.getElementById("propedit_by_parcela").style.display="block";
        document.getElementById("propedit_search").style.display="none";        
    }
}

function myPropeditCallback()
{
    if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
    {  
        var a=xmlHttp.responseText;
        var start,end;
        start=a.search('<vars>')+6;
        if (start!=-1)
            end=a.search('</vars>'); 

        var var_str=a.substring(start,end);
        a=a.substr(end+7);// 7 is strlen of </vars>
        var vars=var_str.split(' ');
        var reason=vars[0];
        var edit_id=vars[3];// -2 none, -1 insert, >0 edit
        var balloon_height=vars[4];
        

        if ((reason=="open") || (reason=="open_first") || (reason=="search"))
        {
            myBalloon.move();
            if (myPropeditMode==1)
                myPropeditMarkPoint(parseFloat(vars[1]),parseFloat(vars[2]));

            if (reason=="search")
            {
                document.getElementById("propedit_search").innerHTML=a;

                myPropeditOnSearchResult(vars);
                myResizeDiv("propedit");                                                
                myResizeDiv("propedit_search");                                
                myResizeDiv("propedit_search_result");                
            }
            else
            {
                if (myPropeditMode==1)
                    document.getElementById("propedit_by_parcela").innerHTML=a;
            }

            if ((reason=="open_first") && (edit_id>-2))
                myPropeditOnEditClick(edit_id,1);
            
        }
        else if (reason=="edit")
        {
            var x=parseFloat(vars[1]);
            var y=parseFloat(vars[2]);
            
            myBalloon.resizeHeight(vars[4]);
            myBalloon.setText(a);
            if ((myPropeditMode==1) && (myKaMap.getCurrentScale()>2500))
                myKaMap.zoomTo(x,y,2500);
            
            if (myIsMapPointVisible(x,y)==false)
                myKaMap.zoomTo(x,y);
            
            myBalloon.moveGeo( x , y );
        }
        else
        {
            if (reason!="")
                alert("myPropeditCallback unknown ajax reason!\n"+var_str+"\nReason"+reason+"!");
            
        }
    }  
}

function myPropeditOnSearchResult(vars)
{
    var count=vars[1];
    var i;
    var x=parseFloat(vars[2]);
    var y=parseFloat(vars[3]);    
    var min_X=x;
    var min_Y=y;
    var max_X=x;
    var max_Y=y;

    if (myPropeditMapOverlay==null)
    {
        myPropeditMapOverlay = new kaXmlOverlay( myKaMap, 250 );
    }

    myPropeditMapOverlay.removePoint();
    for(i=2;i<2+(count*2);i=i+2)
    {
        x=parseFloat(vars[i]);
        y=parseFloat(vars[i+1]);
        if (x<min_X)
            min_X=x;
        else if (x>max_X)
            max_X=x;
        if (y<min_Y)
            min_Y=y;
        else if (y>max_Y)
            max_Y=y;
        
        var my_point = myPropeditMapOverlay.addNewPoint(i,x,y);
        var my_symbol = new kaXmlSymbol();
        my_symbol.size = 12;
        my_symbol.color = '#00ff00';
        
        my_point.addGraphic(my_symbol);                    
    }

    if (count==1)
        myKaMap.zoomTo(min_X,min_Y,2500);
    else if (count>1)
    {
        myKaMap.zoomToExtents(min_X,min_Y,max_X,max_Y);
    }

    myPropeditSearchArea=[min_X,min_Y,max_X,max_Y];    
}

function myPropeditShowAllSearchResults()
{
    myKaMap.zoomToExtents(myPropeditSearchArea[0],
                          myPropeditSearchArea[1],
                          myPropeditSearchArea[2],
                          myPropeditSearchArea[3]);    
}

function myPropeditOnSearchResultMouseOver(x,y)
{
    var my_point = myPropeditMapOverlay.addNewPoint("pointer",x,y);
    if (x!=-1)
    {
        var my_symbol = new kaXmlSymbol();
        my_symbol.size = 16;
        my_symbol.color = '#ffff00';
        my_point.addGraphic(my_symbol);                    
    }   

}

function myPropeditOnSearchClick()
{
    var url="search=1&action=search";
    url+="&search_naziv="+document.propedit_search_form.search_naziv.value;
    url+="&search_tip="+document.propedit_search_form.search_tip.value;
    url+="&search_adresa="+document.propedit_search_form.search_adresa.value;
    url+="&search_mesto="+document.propedit_search_form.search_mesto.value;
    url+="&search_odg_lice="+document.propedit_search_form.search_odg_lice.value;
    myPropeditExecute(url,"search");   

    /*resize result div*/
 //   var res_dir=document.getElementByID("propedit_search_result");
//    var parent_dir=document.getElementByID("propedit");
}

function myPropeditExecute(url,reason)
{
    if(window.XMLHttpRequest)
    {
      xmlHttp=new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    if(xmlHttp==null)
    {
      alert ("Browser does not support HTTP Request");
      return;
    }

    xmlHttp.onreadystatechange=myPropeditCallback;
    xmlHttp.open("GET","manufaktura/propedit?"+url+"&a_reason="+reason,true);
    xmlHttp.send(null);
}

function myPropeditOnSaveClick(isOk)
{
    if (isOk==false)
    {
        myBalloon.move();
        return;
    }

    var url;
    var trimmed_naziv = document.propedit_detail_form.naziv.value.replace(/^\s+|\s+$/g, '') ;
    if (isOk==true)
    if ((trimmed_naziv=="" ) || ( document.propedit_detail_form.tip.value==-1))
    {
        alert("Morate uneti tip i naziv objekta!");
        return;
    }

    url="parcela_id="+document.propedit_detail_form.parcela_id.value;
    url+="&desc_parcele_id="+document.propedit_detail_form.desc_parcele_id.value;
    if (isOk)
    {
        var checked=0;
        if (document.propedit_detail_form.private.checked)
            checked=1;
        
        url+="&tel="+document.propedit_detail_form.telefon.value;
        url+="&odg_lice="+document.propedit_detail_form.odg_lice.value;
        url+="&fax="+document.propedit_detail_form.fax.value;
        url+="&naziv="+document.propedit_detail_form.naziv.value;
        url+="&tip_id="+document.propedit_detail_form.tip.value;
        url+="&opis="+document.propedit_detail_form.opis.value;
        url+="&broj="+document.propedit_detail_form.broj.value;
        url+="&ulica_id="+document.propedit_detail_form.ulica_id.value;
        url+="&slika="+document.propedit_detail_form.slika.value;
        url+="&private="+checked;
       url+="&action=save";
    }
    else
    {
        var iesucks=document.getElementById('propedit_post_frame');
        if (iesucks!=null) 
            iesucks.src='manufaktura/propedit_img_edit.php?show=0&delete_image='+document.propedit_detail_form.slika.value;
        
    }
    myPropeditExecute(url,"open");
}


function myPropeditOnDeleteImage()
{
    document.getElementById('propedit_post_div').style.display='block';
    document.getElementById('propedit_img_div').style.display='none';
    document.getElementById('propedit_post_frame').src='manufaktura/propedit_img_edit.php?delete_image='+
                    document.propedit_detail_form.slika.value;
    document.propedit_detail_form.slika.value="";
}

function myPropeditOnEditClick(id,action,parcela_id) /*action: 1 - insert,update | -1 - delete*/
{
    var url,frm,reason,search_str;
    frm=document.getElementById("propedit_form");
    if (parcela_id>-1)
        url="parcela_id="+parcela_id;
    else
        url="parcela_id="+document.propedit_form.parcela_id.value;

    reason='edit';        
    
    if (id>-1) //edit
        url+="&desc_parcele_id="+id;
    if (action<1)
    {
        reason='open';        
        url+="&action=del";
        if (confirm("Da li ste sigurni da zelite izbrisati selektovani objekat?")!=true)
            return;
    }
    else
    {
        url+="&action=add";
    }
        

    if (myPropeditMode==2)
        search_str+="&search=1";
    myPropeditExecute(url,reason);
}

function myAjaxExecute(url,callbackFunction)
{
    if(window.XMLHttpRequest)
    {
      xmlHttp=new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    if(xmlHttp==null)
    {
      alert ("Browser does not support HTTP Request");
      return;
    }

    if ((xmlHttp.readyState==2) || (xmlHttp.readState==3))
        return;
    xmlHttp.onreadystatechange=callbackFunction;
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
}


function myMessageSearchCallback()
{
    /*vars:
     * 0 - target_div
     * 1 - results count
     * 2^3,4^5... - x^y coords
     */
    if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
    {
        var a=xmlHttp.responseText;
        var start,end;
        start=a.search('<vars>');
        var var_str;
        var vars;
        if (start!=-1)
        {
            start=start+6;
            end=a.search('</vars>'); 

            var_str=a.substring(start,end);
            a=a.substr(end+7);// 7 is strlen of </vars>
            vars=var_str.split(' ');
        }

        document.getElementById(vars[0]).innerHTML=a;
        if (vars[1]>0)
        {
            document.getElementById("searchShowAll").innerHTML="Rezultata : "+vars[1];        
            myMessageOnSearchResult(vars);
        }
        else
        {
            if (myMessageMapOverlay!=null)
                myMessageMapOverlay.removePoint();
            document.getElementById("searchShowAll").innerHTML="";            
        }

    }
    
}

function myMessageInitSearch()
{
    if (document.msgsearch_form==null)
        myAjaxExecute("manufaktura/message_search.php",myMessageSearchCallback);
}

function myMessageSearchClick()
{
    var url="manufaktura/message_search.php?action=search";
    url+="&ulica_broj="+document.msgsearch_form.ulica_broj.value;
    url+="&predmet_zalbe="+document.msgsearch_form.predmet_zalbe.value;
    url+="&tekst_zalbe="+document.msgsearch_form.tekst_zalbe.value;
    url+="&kontakt_lice="+document.msgsearch_form.kontakt_lice.value;
    url+="&kontakt_tel="+document.msgsearch_form.kontakt_tel.value;
    url+="&kontakt_mejl="+document.msgsearch_form.kontakt_mejl.value;
    
    var my_div=document.getElementById("mapMsg");
    my_div.style.height=document.getElementById("viewport").offsetHeight+"px";
    myResizeDiv("msgsearch_results");
    document.getElementById("msgsearch_results").innerHTML="<h4>Pretrazujem...</h4>";
    myAjaxExecute(url,myMessageSearchCallback);
}

function myMessageOnSearchResult(vars)
{
    var count=vars[1];
    var i;
    var x=parseFloat(vars[2]);
    var y=parseFloat(vars[3]);    
    var min_X=x;
    var min_Y=y;
    var max_X=x;
    var max_Y=y;

    if (myMessageMapOverlay==null)
    {
        myMessageMapOverlay = new kaXmlOverlay( myKaMap, 250 );
    }

    myMessageMapOverlay.removePoint();
    for(i=2;i<2+(count*2);i=i+2)
    {
        x=parseFloat(vars[i]);
        y=parseFloat(vars[i+1]);
        if (x<min_X)
            min_X=x;
        else if (x>max_X)
            max_X=x;
        if (y<min_Y)
            min_Y=y;
        else if (y>max_Y)
            max_Y=y;
        
        var my_point = myMessageMapOverlay.addNewPoint(i,x,y);
        var my_symbol = new kaXmlSymbol();
        my_symbol.size = 12;
        my_symbol.color = '#00ff00';
        
        my_point.addGraphic(my_symbol);                    
    }

    if (count==1)
        myKaMap.zoomTo(min_X,min_Y,2500);
    else if (count>1)
    {
        myKaMap.zoomToExtents(min_X,min_Y,max_X,max_Y);
    }

    myMessageSearchArea=[min_X,min_Y,max_X,max_Y];    
} 

function mySearchShowAll()
{
    myKaMap.zoomToExtents(  myMessageSearchArea[0],
                            myMessageSearchArea[1],
                            myMessageSearchArea[2],
                            myMessageSearchArea[3] );
}


function myGPClicked( eventID, queryType, coords ) {
    var szLayers = '';
    var layers = myKaMap.getCurrentMap().getQueryableLayers();
    if(layers.length==0) {
        var warn = 'Na ovom delu mape nema lejera sa informacijama!';
        if (queryable_groups && queryable_groups.length) {
             warn += '\nNa legendi uključite lejere: \n"' + queryable_groups.join('", "') +'"';
        }
        alert(warn);
        return;
    }
    for (var i=0;i<layers.length;i++) {
        szLayers = szLayers + "," + layers[i].name;
    }


    var extent = myKaMap.getGeoExtents();
    var scale = myKaMap.getCurrentScale();
    var cMap = myKaMap.getCurrentMap().name;
	var params='map='+cMap+'&q_type='+queryType+'&scale='+scale+'&groups='+szLayers+'&coords='+coords+'&extent='+extent[0]+'|'+extent[1]+'|'+extent[2]+'|'+extent[3];
		
	getRawObject('queryOut').innerHTML = '<h3>Traženje podataka. <br> sačekajte...</h3><hr>';
    var url = baseurl + 'manufaktura/kaGPQuery.php?'+params;
//    alert(url);
	call(url,this, myGPClickedOutput);
	
//    alert( "Map: " + cMap + " | Scale: " + scale + " | Extent: " + extent + " | QUERY: " + queryType + " " + coords + " on layers " + szLayers );
}

function myGPClickedOutput (szText){
    var atext = szText.split('_**_');
	getRawObject('queryOut').innerHTML=atext[0];
    if (atext.length > 1) {
        aids = atext[1].split('_');
        for (i=0;i<aids.length;i++) {
            popwindow('layer_info.php?i='+aids[i], 'gup'+aids[i], 800, 600);
        }
    }
}
function setKaStoppedQueryState() {
    if (typeof(myKaStoppedQuery) == 'undefined') return false;
    try {
        var layer=myKaMap.getCurrentMap().getLayer('Putevi');
        if(layer.visible) {
            myKaStoppedQuery.activate();
        } else {
            myKaStoppedQuery.deactivate();
        }
    } catch(e) {
    }
}
function myMouseOver(eventID, queryType, coords) {
    if (coords == undefined) return false;
    myKaStoppedQuery.deactivate();
    var szLayers = "";
    for (var i=0;i<layers.length;i++) {
        szLayers = szLayers + "," + layers[i].name;
    }
    var extent = myKaMap.getGeoExtents();
    var scale = myKaMap.getCurrentScale();
    var cMap = myKaMap.getCurrentMap().name;
	var params='map='+cMap+'&scale='+scale+'&groups='+szLayers+'&coords='+coords+'&extent='+extent[0]+'|'+extent[1]+'|'+extent[2]+'|'+extent[3];
    var url = baseurl + 'manufaktura/kaMouseOverQuery.php?'+params;
	call(url,this, myMouseOverOutput);

}
function myMouseOverOutput (szText) {
    if (szText != "empty") {
        var a = szText.split('_::_');
        var x = a.shift();
        var y = a.shift();
        var tip = '<b>' + (a.length > 1 ? 'Putevi:' : 'Put:') + '</b>';
        tip +='<br>';
        tip += a.join('<br>');
        tip += '<div class="close"><a class="ql" onclick="myToolTip.move();">zatvori</a></div>';
        myToolTip.setText(tip);
        myToolTip.moveGeo(x, y);
//        setTimeout('hideToolTip()', 1000);
//        alert(tip);
    }
    setKaStoppedQueryState();
}
function hideToolTip() {
    myToolTip.move();
}


function myMapClicked( eventID, coords ) {
    var layer = myKaMap.getCurrentMap().getLayer('panoramio');
    if (layer && layer.visible) {
        myPanoramioQuery(eventID, KAMAP_POINT_QUERY, coords);
    }
    //alert( 'myMapClicked('+coords+')');
	//myKaMap.zoomTo(coords[0],coords[1]);
}

function myZoomIn() {
    myKaMap.zoomIn();
    setKaStoppedQueryState();
}

function myZoomOut() {
    myKaMap.zoomOut();
    setKaStoppedQueryState();
}




/**
 * drawPage - calculate sizes of the various divs to make the app full screen.
 */
function drawPage() {
    var browserWidth = getInsideWindowWidth();
    var browserHeight = getInsideWindowHeight();

    var viewport = getRawObject('viewport');
    var page = getRawObject('page');
    var layoutFrame = getRawObject('layoutFrame');
    var explorer = getRawObject('explorer');
    var toolbar = getRawObject('toolbar');
    var service = getRawObject('service');
    var uliceSearchRes= getRawObject('ulice_searchres');
    var parceleSearchRes= getRawObject('parcele_searchres');

    var identifier = getRawObject('identifier');
	
		var mapInfo = getRawObject('mapInfo');
		var legend = getRawObject('legend');
		var keymap = getRawObject('keymap');
		var link = getRawObject('link');
		var search = getRawObject('search');
		var mapLegend = getRawObject('mapLegend');
		var content = getRawObject('content');
		var contentBackground = getRawObject('contentBackground');
		var contentText = getRawObject('contentText');
		var ruler = getRawObject('ruler');
        var propedit = getRawObject('propedit');
		
		
	//Set Viewport Width
    if(isIE4) {
        //terrible hack to avoid IE to show scrollbar
        page.style.width = (browserWidth -2) + "px";
    } else {
        page.style.width = browserWidth + "px";
    }
    
     if(isIE4) {
        //terrible hack to avoid IE to show scrollbar
        page.style.height = (browserHeight -2) + "px";
    } else {
        page.style.height = browserHeight + "px";
    }
	//layoutFrame
	layoutFrame.style.width = parseInt(page.style.width) + "px";
    var tbh = parseInt(toolbar.offsetHeight);
    tbh = tbh + 5;
	layoutFrame.style.height = parseInt(page.style.height) -parseInt(getObjectHeight(explorer)) -tbh + "px";
	layoutFrame.style.top= parseInt(getObjectHeight(explorer)) +tbh + "px";
	layoutFrame.style.left="0";
	layoutFrame.style.right="0";
	
	//VIEWPORT
	viewport.style.width = parseInt(getObjectWidth(layoutFrame)) - parseInt(getObjectWidth(service))-2 + "px";
	viewport.style.height = parseInt(getObjectHeight(layoutFrame)) -1  + "px";
	viewport.style.top="0px";
	viewport.style.left= parseInt(getObjectWidth(service)) + "px";
	viewport.style.right="0px";
	
    var splash = getRawObject('splash');
    if (splash) {
        splash.style.top = parseInt((viewport.offsetHeight - splash.offsetHeight)/2) + 'px';
        splash.style.left = parseInt((viewport.offsetWidth - splash.offsetWidth)/2) + 'px';
    }
	
	//CONTENT
	//content.style.top = viewport.style.top;
	content.style.left = parseInt(viewport.style.left) +10  + "px";
	content.style.width = parseInt(viewport.style.width) -20  + "px";
	content.style.height = parseInt(viewport.style.height) -20  + "px";
	contentBackground.style.height = parseInt(viewport.style.height) -20  + "px";
	contentText.style.height = parseInt(viewport.style.height) -65  + "px";
	contentText.style.width = parseInt(viewport.style.width) -50  + "px";
	
	//SERVICE - left space
	service.style.height = parseInt(getObjectHeight(layoutFrame)) -2  + "px";
	identifier.style.height = parseInt(getObjectHeight(layoutFrame)) -2  + "px"; 
	mapInfo.style.height = parseInt(getObjectHeight(layoutFrame)) -2  + "px"; 
	mapLegend.style.height = parseInt(getObjectHeight(layoutFrame)) -2  + "px"; 
	link.style.height = parseInt(getObjectHeight(layoutFrame)) -2  + "px"; 
	search.style.height = parseInt(getObjectHeight(layoutFrame)) -2  + "px"; 
	ruler.style.height = parseInt(getObjectHeight(layoutFrame)) -2  + "px"; 
	propedit.style.height = parseInt(getObjectHeight(layoutFrame)) -2  + "px"; 
    if (uliceSearchRes) {
        uliceSearchRes.style.height = parseInt(getObjectHeight(layoutFrame)) -2 - uliceSearchRes.offsetTop + 'px';
    }
    if (parceleSearchRes) {
        parceleSearchRes.style.height = parseInt(getObjectHeight(layoutFrame)) -2 - parceleSearchRes.offsetTop + 'px';
    }
	
    if (myKaMap) {	
        myKaMap.resize();
        /*resize kaObject search*/
        kaObjectResize();
    }

}

function showContent(url) {
	var content = getRawObject('content');
	var viewport = getRawObject('viewport');
	content.style.top = parseInt(viewport.style.top) + 10 + "px";
	call(url,this, setContent);
}

function setContent(szContent){
	var contentText = getRawObject('contentText');
	contentText.innerHTML = szContent;
}
function hideContent() {
	var content = getRawObject('content');
	var viewport = getRawObject('viewport');
	content.style.top = parseInt(viewport.style.top) + parseInt(viewport.style.height) + "px";
}

/**
 * getFullExtent
 * ...
 */
function getFullExtent() {
    var exStr = myKaMap.getCurrentMap().defaultExtents.toString();
    var ex = myKaMap.getCurrentMap().defaultExtents;
    myKaMap.zoomToExtents(ex[0],ex[1],ex[2],ex[3]);
}

/**
 * switchService
 * ...
 */
function switchService(id) {
    getRawObject('toolPanoramio').style.backgroundImage = 'url(images/icon_set_explorer/tool_panoramio_1.png)';
    getRawObject('toolQuery').style.backgroundImage = 'url(images/icon_set_explorer/tool_query_1.png)';
    getRawObject('toolLegend').style.backgroundImage = 'url(images/icon_set_explorer/tool_legend_1.png)';
    getRawObject('toolMapinfo').style.backgroundImage = 'url(images/icon_set_explorer/tool_mapinfo_1.png)';
    getRawObject('toolZoomRubber').style.backgroundImage = 'url(images/icon_set_explorer/tool_rubberzoom_1.png)';
    getRawObject('toolLink').style.backgroundImage = 'url(images/icon_set_explorer/tool_link_1.png)';
    getRawObject('toolSearch').style.backgroundImage = 'url(images/icon_set_explorer/tool_search_1.png)';
    getRawObject('toolMsg').style.backgroundImage = 'url(images/icon_set_explorer/tool_msg2_1.png)';
    getRawObject('toolRuler').style.backgroundImage = 'url(images/icon_set_explorer/tool_ruler_1.png)';
    getRawObject('toolPropedit').style.backgroundImage = 'url(images/icon_set_explorer/objekti_1.png)';
    getRawObject('toolPlanSearch').style.backgroundImage = 'url(images/icon_set_explorer/planovi_1.png)';
    getRawObject('toolUvidSearch').style.backgroundImage = 'url(images/icon_set_explorer/uvid_1.png)';
    getRawObject('toolLdozvole').style.backgroundImage = 'url(images/icon_set_explorer/ldozvole_1.png)';
    
    if (id=='toolPan') {
        myKaNavigator.activate();
        getRawObject('toolPan').style.backgroundImage = 'url(images/icon_set_explorer/tool_pan_2.png)';
    } else if (id=='toolZoomRubber') {
        myKaRubberZoom.activate();
        getRawObject('toolZoomRubber').style.backgroundImage = 'url(images/icon_set_explorer/tool_rubberzoom_2.png)';
    } else {
        myKaCurrentService = id;
        getRawObject('mapInfo').style.display = "none";
        getRawObject('mapLegend').style.display = "none";
        getRawObject('identifier').style.display = "none";
        getRawObject('curtain').style.display = "none";
        getRawObject('link').style.display = "none";
        getRawObject('search').style.display = "none";
        getRawObject('ruler').style.display = 'none';
        getRawObject('propedit').style.display = 'none';
        getRawObject('mapMsg').style.display = 'none';
        getRawObject('ulice_search').style.display =  "none";
        getRawObject('planSearch').style.display =  "none";
        getRawObject('uvidSearch').style.display =  "none";
        getRawObject('ldozvoleSearch').style.display =  "none";
        getRawObject('statPanoramio').style.display =  "none";

        
        if (id=='toolQuery') {
            myKaMap.deregisterForEvent( KAMAP_QUERY, null, myGPClicked);
            myKaMap.deregisterForEvent( KAMAP_QUERY, null, myPropeditClick );
            myKaMap.deregisterForEvent( KAMAP_QUERY, null, myMessageClick );
            myKaMap.deregisterForEvent( KAMAP_QUERY, null, myPanoramioQuery );

            myKaMap.registerForEvent( KAMAP_QUERY, null, myGPClicked);
            myKaQuery.activate();
            getRawObject('toolQuery').style.backgroundImage = 'url(images/icon_set_explorer/tool_query_2.png)';
            getRawObject('identifier').style.display = "block";
            
        } else if (id=='toolPanoramio') {
            myKaMap.deregisterForEvent( KAMAP_QUERY, null, myGPClicked);
            myKaMap.deregisterForEvent( KAMAP_QUERY, null, myPropeditClick );
            myKaMap.deregisterForEvent( KAMAP_QUERY, null, myMessageClick );
            myKaMap.deregisterForEvent( KAMAP_QUERY, null, myPanoramioQuery );
            
            myKaMap.registerForEvent( KAMAP_QUERY, null, myPanoramioQuery );
            
            myKaPanoramio.activate();
            myKaMap.getCurrentMap().getLayer('panoramio').setVisibility(true);
            myKaMap.setMapLayers(); 
            myKaMap.getCurrentMap().setLayerVisibility ('panoramio', true);

            getRawObject('toolPanoramio').style.backgroundImage = 'url(images/icon_set_explorer/tool_panoramio_2.png)';
            getRawObject('statPanoramio').style.display = 'block';
        } else if (id=='toolLegend') {
            myKaNavigator.activate();
            getRawObject('toolLegend').style.backgroundImage = 'url(images/icon_set_explorer/tool_legend_2.png)';
            getRawObject('toolPan').style.backgroundImage = 'url(images/icon_set_explorer/tool_pan_2.png)';
            getRawObject('mapLegend').style.display = "block";
        } else if (id=='toolLink') {
            myKaNavigator.activate();
            getRawObject('toolPan').style.backgroundImage = 'url(images/icon_set_explorer/tool_pan_2.png)';
            getRawObject('toolLink').style.backgroundImage = 'url(images/icon_set_explorer/tool_link_2.png)';
            
            getRawObject('link').style.display = "block";
        
        } else if (id=='toolSearch') {
            myKaNavigator.activate();
            getRawObject('toolPan').style.backgroundImage = 'url(images/icon_set_explorer/tool_pan_2.png)';
            getRawObject('toolSearch').style.backgroundImage = 'url(images/icon_set_explorer/tool_search_2.png)';
            getRawObject('ulice_search').style.display =  "block";

            
        } else if (id=='toolMapinfo') {
            myKaNavigator.activate();
            getRawObject('toolMapinfo').style.backgroundImage = 'url(images/icon_set_explorer/tool_mapinfo_2.png)';
            getRawObject('toolPan').style.backgroundImage = 'url(images/icon_set_explorer/tool_pan_2.png)';
            getRawObject('mapInfo').style.display = "block";
            
        } else if (id=='toolMsg')
        {
            myKaQuery.activate();
            myObjectInitSearch('message','mapMsg','search');		
            myKaMap.deregisterForEvent( KAMAP_QUERY, null, myGPClicked );
            myKaMap.deregisterForEvent( KAMAP_QUERY, null, myPropeditClick );
            myKaMap.deregisterForEvent( KAMAP_QUERY, null, myMessageClick );
            myKaMap.deregisterForEvent( KAMAP_QUERY, null, myPanoramioQuery );
            myKaMap.registerForEvent( KAMAP_QUERY, null, myMessageClick );

            getRawObject('toolPan').style.backgroundimage = 'url(images/icon_set_explorer/tool_pan_2.png)';
            getRawObject('toolMsg').style.backgroundimage = 'url(images/icon_set_explorer/tool_msg2_2.png)';
            getRawObject('mapMsg').style.display =  "block";

        } else if (id=='toolRuler') {
            myKaRuler.activate();
            getRawObject('toolRuler').style.backgroundImage = 'url(images/icon_set_explorer/tool_ruler_2.png)';

            getRawObject('ruler').style.display = 'block';
        } else if (id=='toolPropedit') {
            myKaMap.deregisterForEvent( KAMAP_QUERY, null, myGPClicked);
            myKaMap.deregisterForEvent( KAMAP_QUERY, null, myPropeditClick );
            myKaMap.deregisterForEvent( KAMAP_QUERY, null, myMessageClick );
            myKaMap.deregisterForEvent( KAMAP_QUERY, null, myPanoramioQuery );
            myKaMap.registerForEvent( KAMAP_QUERY, null, myPropeditClick );
            getRawObject('toolPropedit').style.backgroundImage = 'url(images/icon_set_explorer/objekti_2.png)';
            getRawObject('propedit').style.display = 'block';
            myPropedit.activate();
            if (!g_search_initialized['object']) {
                myObjectInitSearch('object','propedit');
            }
        } else if (id=='toolPlanSearch') {
            
            myKaMap.deregisterForEvent( KAMAP_QUERY, null, myGPClicked);
            myKaMap.deregisterForEvent( KAMAP_QUERY, null, myPropeditClick );
            myKaMap.deregisterForEvent( KAMAP_QUERY, null, myMessageClick );
            myKaMap.deregisterForEvent( KAMAP_QUERY, null, myPanoramioQuery );

            getRawObject('toolPlanSearch').style.backgroundImage = 'url(images/icon_set_explorer/planovi_2.png)';
            getRawObject('planSearch').style.display =  "block";

            myObjectInitSearch('plan','planSearch','search', 'search', 'true');
        } else if (id=='toolUvidSearch') {
            
            myKaMap.deregisterForEvent( KAMAP_QUERY, null, myGPClicked);
            myKaMap.deregisterForEvent( KAMAP_QUERY, null, myPropeditClick );
            myKaMap.deregisterForEvent( KAMAP_QUERY, null, myMessageClick );
            myKaMap.deregisterForEvent( KAMAP_QUERY, null, myPanoramioQuery );

            getRawObject('toolUvidSearch').style.backgroundImage = 'url(images/icon_set_explorer/uvid_2.png)';
            getRawObject('uvidSearch').style.display =  "block";

            myObjectInitSearch('uvid','uvidSearch','search', 'search', 'true');
        } else if (id=='toolLdozvole') {
            
            myKaMap.deregisterForEvent( KAMAP_QUERY, null, myGPClicked);
            myKaMap.deregisterForEvent( KAMAP_QUERY, null, myPropeditClick );
            myKaMap.deregisterForEvent( KAMAP_QUERY, null, myMessageClick );
            myKaMap.deregisterForEvent( KAMAP_QUERY, null, myPanoramioQuery );

            getRawObject('toolLdozvole').style.backgroundImage = 'url(images/icon_set_explorer/ldozvole_2.png)';
            getRawObject('ldozvoleSearch').style.display =  "block";

            myObjectInitSearch('ldozvole','ldozvoleSearch','search', 'search', 'true');
        } else {
            myKaNavigator.activate();
        }
    }
}



/*
 *  applyPNGFilter(o)
 *
 *  Applies the PNG Filter Hack for IE browsers when showing 24bit PNG's
 *
 *  var o = object (this png element in the page)
 *
 * The filter is applied using a nifty feature of IE that allows javascript to
 * be executed as part of a CSS style rule - this ensures that the hack only
 * gets applied on IE browsers :)
 */
function applyPNGFilter(o) {
    var t="images/a_pixel.gif";
    if( o.src != t ) {
        var s=o.src;
        o.src = t;
        o.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+s+"',sizingMethod='scale')";
    }
}

//functions to open popup

function WOFocusWin( nn ) {
	eval( "if( this."+name+") this."+name+".moveTo(50,50); this."+name+".focus();" );
}

function WOOpenWin( name, url, ctrl ) {
    eval( "this."+name+"=window.open('"+url+"','"+name+"','"+ctrl+"');" );

    /*IE needs a delay to move forward the popup*/
    // window.setTimeout( "WOFocusWin(nome);", 300 );
}

function WinOpener() {
    this.openWin=WOOpenWin;
	this.focusWin=WOFocusWin;
}


//URL SYNTAX ENCODING
function myUrlEncode(string) {
  encodedHtml = escape(string);
  encodedHtml = encodedHtml.replace("/","%2F");
  encodedHtml = encodedHtml.replace(/\?/g,"%3F");
  encodedHtml = encodedHtml.replace(/=/g,"%3D");
  encodedHtml = encodedHtml.replace(/&/g,"%26");
  encodedHtml = encodedHtml.replace(/@/g,"%40");
  return encodedHtml;
};
  
function myUrlDecode(sz){
	return unescape(sz).replace(/\+/g," ");
};

//MATH FUNCTIONs
function roundIt(number,decimals){
	var base10 = 10;
	for(var i=0;i<decimals-1;i++)
		base10 = base10 *10;
	 
	return Math.round(number * base10)/base10;
}
function closeDynContent() {
    return true;
}
function myPanoramioQuery( eventID, queryType, coords ) {
    myBalloon.move();
    var szLayers = '';
    for (var i=0;i<layers.length;i++) {
        szLayers = szLayers + (szLayers == '' ? '' : ',') + layers[i].name;
    }
    var extent = myKaMap.getGeoExtents();
    var scale = myKaMap.getCurrentScale();
    var cMap = myKaMap.getCurrentMap().name;
	var params='map='+cMap+'&q_type='+queryType+'&scale='+scale+'&groups='+szLayers+'&coords='+coords+'&extent='+extent[0]+'|'+extent[1]+'|'+extent[2]+'|'+extent[3];
		
    var url = baseurl + 'manufaktura/kaPanoramioQuery.php?'+params;
//    alert(url);
	call(url,this, myPanoramioQueryOut);

}
function myPanoramioQueryOut(resp) {
    var o = getRawObject('statPanoramio_det');
    if (o) {
        o.innerHTML = '';
        var delim1 = "_::_";
        var delim2 = "-::-";
        var aresp = resp.split(delim1);
        var count = aresp.shift();
        var first = true;
        for (var i in aresp) {
            var adet = aresp[i].split(delim2);
            o.innerHTML += decodeURIComponent(adet[3]);  
            if (first) {
                showPanoramio(adet[0],adet[1],adet[2]);
                first = false;
            }
        }
    }

}
function showPanoramio(id, x,y) {
    var o;
    if (o = getRawObject('panoramio_det_'+id)) {
        myBalloon.resizeWidth(260);
        myBalloon.resizeHeight(320);

        myBalloon.setText(o.innerHTML);
        myBalloon.moveGeo(x,y);
    }
    if (myKaMap.currentTool.name != 'kaQuery') {
        switchService('toolPanoramio');
    }
    
}
function gradPlanClick(broj_plana) {

    var html = '';
    if (broj_plana == 4844) {
        html = '<div id="message"><div id="message_form_div"><table width="100%"><tr><td align="right" style="width:100px">Naziv:</td><td align="left">Prostorni plan Grada Kragujevca</td></tr><tr><td align="right" style="width:100px">Datum odluke:</td><td align="left">2009-09-24</td></tr><tr><td align="right" style="width:100px">Br. sl. glasn.:</td><td align="left">32/09</td></tr><tr><td align="right" style="width:100px">Broj odluke:</td><td align="left">350-82/08-I</td></tr><tr><td align="right" style="width:100px">Broj plana:</td><td align="left">4844</td></tr><tr><td align="right" style="width:100px">Tekst:</td><td align="left"><a target="_blank" href="http://www.urbanizam.co.rs/pdf/4844 text PP Kragujevac.pdf" >pdf</a></td></tr><tr><td align="right" style="width:100px">Grafika:</td><td align="left"><a target="_blank" href="http://www.urbanizam.co.rs/dwf/4844 GRAFIKA PP Kragujevac.ZIP" >dwf (zip)</a></td></tr></table></div></div>';
    } else if (broj_plana == 4949) {
    html = '<div id="message"><div id="message_form_div"><table width="100%"><tbody><tr><td align="right" style="width: 100px;">Naziv:</td><td align="left">GUP "Kragujevac 2015"<input type="hidden" value="GUP &quot;Kragujevac 2015&quot;" name="obj_naziv_plan"></td></tr><tr><td align="right" style="width: 100px;">Datum odluke:</td><td align="left">2010-02-26<input type="hidden" value="2010-02-26" name="obj_datum_odlu"></td></tr><tr><td align="right" style="width: 100px;">Br. sl. glasn.:</td><td align="left">7/10<input type="hidden" value="7/10" name="obj_broj_glasn"></td></tr><tr><td align="right" style="width: 100px;">Broj odluke:</td><td align="left">350-82/10-I<input type="hidden" value="350-82/10-I" name="obj_broj_odluk"></td></tr><tr><td align="right" style="width: 100px;">Tekst:</td><td align="left"><a href="http://www.urbanizam.co.rs/pdf/4949 GUP Kragujevac revizija 2015.pdf" target="_blank">pdf</a><input type="hidden" value="&lt;a target=&quot;_blank&quot; href=&quot;http://www.urbanizam.co.rs/pdf/4949 GUP Kragujevac revizija 2015.pdf&quot; &gt;pdf&lt;/a&gt;" name="obj_tekst"></td></tr><tr><td align="right" style="width: 100px;">Grafika:</td><td align="left"><a href="http://www.urbanizam.co.rs/dwf/4949 grafika GUP Kragujevac.zip" target="_blank">dwf (zip)</a><input type="hidden" value="&lt;a target=&quot;_blank&quot; href=&quot;http://www.urbanizam.co.rs/dwf/4949 grafika GUP Kragujevac.zip&quot; &gt;dwf (zip)&lt;/a&gt;" name="obj_grafika"></td></tr><tr><td align="right" style="width: 100px;">Povrsina:</td><td align="left">63.46<input type="hidden" value="63.4649004588000025250948965549468994140625" name="obj_shape_area"></td></tr><tr><td align="right" style="width: 100px;">Obim:</td><td align="left">31.71<input type="hidden" value="31.705820027899999757892146590165793895721435546875" name="obj_shape_leng"></td></tr></tbody></table><input type="hidden" value="pregled" name="obj_view_name"><input type="hidden" value="12504" name="obj_id"><div align="right"><table width="100%"><tbody><tr><td></td><td align="right"></td></tr></tbody></table></div></div></div>';
    }
    if (myBalloon) {
        myBalloon.resizeHeight(200);
        myBalloon.resizeWidth(350);
        myBalloon.setText(html);
        var ex = myKaMap.getCurrentMap().defaultExtents;
        myKaMap.zoomToExtents(ex[0],ex[1],ex[2],ex[3]);
        myBalloon.moveGeo(Math.round((ex[2] + ex[0])/2), Math.round((ex[3] + ex[1])/2));
        
    }
}

