/**********************************************************************
 *
 * $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.
 *
 **********************************************************************/

/******************************************************************************
 *
 * To customize startUp:
 *
 * 1) modify toolbar Layout
 *  act on screen.css file and modify the funcion myMapInitialized().
 *  If you change pan and identifyer images edit switchMode() function too.
 *
 *****************************************************************************/

var myKaMap = myKaNavigator = myKaQuery = myScalebar = myOparceleQuery = myNepokretnostQuery = myKaRuler = myKaUliceSearch = myOparceleSearch = myKaPrint = terOverlay = myRasvetaQuery = myKaPanoramio  = null;
var queryParams = null;
var xmlHTTP=null;
var myPropeditMapOverlay=null;
var myPropeditMode=1; // 0 - nije unet; 1 - po parcelama; 2 - pretraga
var myPropeditSearchArea; //minx,miny,maxx,maxy
var delim = '_::_';
var delim2 = '-::-';
var disableMouseOverQuery = false;
var mouseOverQueryLayers = ['Generalni plan', 'Vodovod','Vodovod nesnimljeni','Kanalizacija','Elektrika','elektrika_ev','Gasovod','gasovod_suboticagas','Toplovod','Telefon','Naftovod'];
var rasvetaInitialized = false;
var panoramioInitialized = false;
var currentTabAlati = 'toolRuler';
var currentTabPretraga = 'toolSearch';
/**
 * 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;
    
    $("#service > ul").tabs();
    $("#service > ul").tabs('select',0);
    
    $("#mainsearch > ul").tabs();
    $("#alati> ul").tabs();

	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 );
    myOparceleQuery = new kaQuery(myKaMap, KAMAP_POINT_QUERY);
    myNepokretnostQuery = new kaQuery(myKaMap, KAMAP_POINT_QUERY);
    myRasvetaQuery = 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, myOparceleClick );
    myKaMap.registerForEvent( KAMAP_QUERY, null, myPanoramioQuery );
    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 );
	
	myKaUliceSearch = new kaUliceSearch( myKaMap );
	myOparceleSearch= new kaOparceleSearch( myKaMap );
    myNepokretnostSearch = new kaNepokretnostSearch(myKaMap);
    myKaRuler = new myKaRuler( myKaMap);
    
    getRawObject('oparcelemenu').style.display = (typeof('layertitles') != 'undefined') && (typeof(layertitles['opstinske_parcele']) == 'undefined') ? 'none' : 'list-item' ;
    getRawObject('nepokretnostmenu').style.display = (typeof('layertitles') != 'undefined') && (typeof(layertitles['nepokretnost']) == 'undefined')  && (typeof(layertitles['kucestanovi']) == 'undefined') && (typeof(layertitles['zemljista']) == 'undefined') && (typeof(layertitles['poslovne']) == 'undefined') && (typeof(layertitles['garaze']) == 'undefined') && (typeof(layertitles['placevi']) == 'undefined') ? 'none' : 'list-item' ;
    
    toolobjects = new Array();
    toolobjects['ruler'] = myKaRuler;
    myKaPrint = new kaPrint(myKaMap, toolobjects);
//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);    
    }
   	var kvar = parseInt(getQueryParam('show_kvar')); /*rasveta kvarovi*/
    if (kvar>0) {
        showKvar(kvar);    
    }

    
}
/**
 * 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
    switchMode('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);
		}
	}
    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) + ' y: ' + roundIt(position.y,2);
}

function myLayersChanged(eventID, map) {
    if ((eventID == KAMAP_LAYER_STATUS_CHANGED) && map.visible) {
        for (var i in mouseOverQueryLayers) {
            if (map.name == mouseOverQueryLayers[i]) {
                disableMouseOverQuery = false;
            }
        }
    }
    hideToolTip();
	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 Subotica:\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 Subotica - 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;
    */
    setKaStoppedQueryState();
    myKaRuler.reset();
    if (myKaRuler.state) {
        myKaRuler.deactivate();
        myKaRuler.activate();
    }

    if (myBalloon.visible)
    {
        myKaMap.zoomTo(myBalloon.curr_geoX,myBalloon.curr_geoY);
        
        myBalloon.moveGeo(myBalloon.curr_geoX,myBalloon.curr_geoY);
    }

}

/**
 * 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 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 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 myResizeDiv(div_id)
{
    var div=document.getElementById(div_id);
    if (div==null)
        alert("Can't find div : "+div_id);
    var div_parent=div.parentNode;
    var childs=div_parent.childNodes;
    var tmp=parseInt(div_parent.offsetHeight);
    if (div_parent.offsetParent==div.offsetParent)
        tmp=tmp-(div.offsetTop-div_parent.offsetTop);
    else
        tmp=tmp-parseInt(div.offsetTop);
    for(var i=0;i<childs.length;i++)
    {
        if (childs[i].tagName=="DIV")
        {
            var margin=parseInt(childs[i].style.marginTop);
            if (margin>0)
                alert(5);
        }
        if ((childs[i].tagName=="DIV") && (childs[i].offsetTop>div.offsetTop))
            tmp=tmp-parseInt(childs[i].offsetHeight);
    }
    div.style.height=tmp+'px';
}


function myOparceleClick( eventID, queryType, coords ) {
    myBalloon.resizeHeight(200);
    myBalloon.move();
    szLayers = 'opstinske_parcele';
/*
    var szLayers = '';
    var layers = myKaMap.getCurrentMap().getQueryableLayers();
    if(layers.length==0) {
        var warn = 'Na ovom delu mape nema lejera sa informacijama!';
        if ((typeof(queryable_groups) != 'undefined') && 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/kaOparceleQuery.php?'+params;
//    alert(url);
	call(url,this, myOparceleClickOutput);
	
//    alert( "Map: " + cMap + " | Scale: " + scale + " | Extent: " + extent + " | QUERY: " + queryType + " " + coords + " on layers " + szLayers );
}

function myOparceleClickOutput (szText){
    var a = szText.split("|::|"); 
    if (a.length) {
    	getRawObject('oparcele_results').innerHTML=a[0];
    }
    if (a.length > 1) {
        eval(a[1]);
    }
}
function myNepokretnostClick( eventID, queryType, coords ) {
    myBalloon.resizeHeight(200);
    myBalloon.move();
    var f = document.forms['nepokretnost_search'];
    f.elements['coords'].value = coords;
    f.elements['scale'].value = myKaMap.getCurrentScale();
    myNepokretnostSearch.search();
		
}



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

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 leftcontent = getRawObject('leftcontent');
    var divRasveta = getRawObject('divRasveta');
    var explorer = getRawObject('explorer');
    var service = getRawObject('service');
    var leftmenu = getRawObject('leftmenu');
    var uliceSearch = getRawObject('ulice_search');
    var toolbar = getRawObject('toolbar');

    var identifier = getRawObject('identifier');
	
    var mapInfo = getRawObject('mapInfo');
    var legend = getRawObject('legend');
    var keymap = getRawObject('keymap');
    var search = getRawObject('ulice_search');
    var mapLegend = getRawObject('mapLegend');
    var content = getRawObject('content');
    var contentBackground = getRawObject('contentBackground');
    var contentText = getRawObject('contentText');
    var oparcele = getRawObject('oparcele');
    var propedit = getRawObject('propedit');
    var ruler = getRawObject('ruler');
    var panoramio = getRawObject('statPanoramio');
    var toggle_leftcontent = getRawObject('toggle_leftcontent');
    var toggle_leftcontent_img = getRawObject('toggle_leftcontent_img');
    var toggle_map_overview = getRawObject('toggle_map_overview');
    var map_overview = getRawObject('map_overview');
    var zoomslider = getRawObject('zoomslider_div');
		
		
	//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";
    }
    explorer.style.width = page.offsetWidth -explorer.offsetLeft+ 'px';
    leftcontent.style.top = explorer.offsetHeight + 'px';
    var leftcontentLeft = findPosX(leftcontent);
    var leftcontentTop = findPosY(leftcontent);
    zoomslider.style.left = leftcontentLeft + leftcontent.offsetWidth + 5 + 'px';
	//layoutFrame
	layoutFrame.style.width = parseInt(page.style.width) + "px";
	layoutFrame.style.height = parseInt(page.style.height) -parseInt(getObjectHeight(explorer)) + "px";
	layoutFrame.style.top= parseInt(getObjectHeight(explorer)) + "px";
//	layoutFrame.style.left=leftcontentLeft + parseInt(getObjectWidth(leftcontent)) + "px";
	layoutFrame.style.left="0";
	layoutFrame.style.right="0";
	
	//VIEWPORT
	viewport.style.width = parseInt(getObjectWidth(layoutFrame)) - 2 + "px";
	viewport.style.height = parseInt(getObjectHeight(layoutFrame)) -1  + "px";
	viewport.style.top="0px";
	viewport.style.left= "0px";
	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
    var serviceHeight = parseInt(getObjectHeight(page)) - parseInt(getObjectHeight(explorer));
	service.style.height = serviceHeight  + "px";
    var toolHeight = serviceHeight - parseInt(getObjectHeight(leftmenu));
	identifier.style.height = toolHeight + 'px'; 
	mapInfo.style.height = toolHeight + 'px'; 
	mapLegend.style.height = toolHeight + 'px'; 
	search.style.height = toolHeight + 'px'; 
	oparcele.style.height = toolHeight + 'px'; 
	propedit.style.height = toolHeight + 'px'; 
    ruler.style.height =toolHeight + 'px' ;
    divRasveta.style.height = toolHeight + 'px';
    uliceSearch.style.height = toolHeight + 'px';
    panoramio.style.height = toolHeight + 'px';
    var or,o;
    if ((or = getRawObject('rasveta_search_result_list'))) {
        or.style.height = parseInt(page.style.height) - findPosY(or) - 2 + 'px';
    }
    if ((or = getRawObject('nepokretnost_result_list'))) {
        or.style.height = parseInt(page.style.height) - findPosY(or) - 2 + 'px';
    }
    
    if (toggle_leftcontent && toggle_leftcontent_img) {
        var pad = 0;
        toggle_leftcontent.style.display = 'block';
        toggle_leftcontent.style.top = leftcontentTop +'px';
        if (leftcontentLeft < 0) {
            toggle_leftcontent.style.left = pad + "px";
            toggle_leftcontent_img.src = 'images/sexpand.png';
        } else {
            toggle_leftcontent.style.left = leftcontentLeft + leftcontent.offsetWidth + pad + "px";
            toggle_leftcontent_img.src = 'images/scollapse.png';
        }
    }
    if (toggle_map_overview && map_overview) {
        var pad = 0;
        toggle_map_overview.style.display = 'block';
        toggle_map_overview.style.top = leftcontentTop + leftcontent.offsetHeight - toggle_map_overview.offsetHeight-1+'px';
        map_overview.style.top = leftcontentTop + leftcontent.offsetHeight - 100 -1 +'px';
        toggle_map_overview.style.left = toggle_leftcontent.style.left;
        map_overview.style.left = toggle_leftcontent.style.left;

    }

    
    if (myKaMap) {	
        myKaMap.resize();
    }
}

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]);
}

/**
 * switchMode
 * ...
 */
function switchMode(id) {
    if (id=='toolQuery') {
        myKaQuery.activate();
//        getRawObject('toolQuery').style.backgroundImage = 'url(images/icon_set_explorer/tool_query_2.png)';
        getRawObject('toolPan').style.backgroundImage = 'url(images/icon_set_explorer/tool_pan_1.png)';
        getRawObject('toolZoomRubber').style.backgroundImage = 'url(images/icon_set_explorer/tool_rubberzoom_1.png)';
        getRawObject('toolRuler').style.backgroundImage = 'url(images/icon_set_explorer/tool_ruler_1.png)';
        getRawObject('toolOparcele').style.backgroundImage = 'url(images/icon_set_explorer/parcele_1.png)';
        getRawObject('toolPropedit').style.backgroundImage = 'url(images/icon_set_explorer/objekti_1.png)';
        getRawObject('toolIzbori').style.backgroundImage = 'url(images/icon_set_explorer/tool_izbori_1.png)';
    } else if (id=='toolPropedit') {

//        myPropedit.activate();
        myObjectInitSearch('object','propedit','search');
        getRawObject('toolPropedit').style.backgroundImage = 'url(images/icon_set_explorer/objekti_2.png)';
        getRawObject('toolOparcele').style.backgroundImage = 'url(images/icon_set_explorer/parcele_1.png)';
        getRawObject('toolPan').style.backgroundImage = 'url(images/icon_set_explorer/tool_pan_1.png)';
        getRawObject('toolZoomRubber').style.backgroundImage = 'url(images/icon_set_explorer/tool_rubberzoom_1.png)';
        getRawObject('toolRuler').style.backgroundImage = 'url(images/icon_set_explorer/tool_ruler_1.png)';
        getRawObject('toolIzbori').style.backgroundImage = 'url(images/icon_set_explorer/tool_izbori_1.png)';
    } else if (id=='toolPan') {
        myKaNavigator.activate();
//        getRawObject('toolQuery').style.backgroundImage = 'url(images/icon_set_explorer/tool_query_1.png)';
        getRawObject('toolPan').style.backgroundImage = 'url(images/icon_set_explorer/tool_pan_2.png)';
        getRawObject('toolZoomRubber').style.backgroundImage = 'url(images/icon_set_explorer/tool_rubberzoom_1.png)';
        getRawObject('toolRuler').style.backgroundImage = 'url(images/icon_set_explorer/tool_ruler_1.png)';
        getRawObject('toolOparcele').style.backgroundImage = 'url(images/icon_set_explorer/parcele_1.png)';
        getRawObject('toolPropedit').style.backgroundImage = 'url(images/icon_set_explorer/objekti_1.png)';
        getRawObject('toolIzbori').style.backgroundImage = 'url(images/icon_set_explorer/tool_izbori_1.png)';
    } else if (id=='toolZoomRubber') {
        myKaRubberZoom.activate();
//        getRawObject('toolQuery').style.backgroundImage = 'url(images/icon_set_explorer/tool_query_1.png)';
        getRawObject('toolPan').style.backgroundImage = 'url(images/icon_set_explorer/tool_pan_1.png)';
        getRawObject('toolZoomRubber').style.backgroundImage = 'url(images/icon_set_explorer/tool_rubberzoom_2.png)';
        getRawObject('toolRuler').style.backgroundImage = 'url(images/icon_set_explorer/tool_ruler_1.png)';
        getRawObject('toolOparcele').style.backgroundImage = 'url(images/icon_set_explorer/parcele_1.png)';
        getRawObject('toolPropedit').style.backgroundImage = 'url(images/icon_set_explorer/objekti_1.png)';
        getRawObject('toolIzbori').style.backgroundImage = 'url(images/icon_set_explorer/tool_izbori_1.png)';
    } else if (id=='toolRuler') {
        getRawObject('toolRuler').style.backgroundImage = 'url(images/icon_set_explorer/tool_ruler_2.png)';
//        getRawObject('toolQuery').style.backgroundImage = 'url(images/icon_set_explorer/tool_query_1.png)';
        getRawObject('toolPan').style.backgroundImage = 'url(images/icon_set_explorer/tool_pan_1.png)';
        getRawObject('toolZoomRubber').style.backgroundImage = 'url(images/icon_set_explorer/tool_rubberzoom_1.png)';
        getRawObject('toolOparcele').style.backgroundImage = 'url(images/icon_set_explorer/parcele_1.png)';
        getRawObject('toolPropedit').style.backgroundImage = 'url(images/icon_set_explorer/objekti_1.png)';
        getRawObject('toolIzbori').style.backgroundImage = 'url(images/icon_set_explorer/tool_izbori_1.png)';
    } else if (id=='toolIzbori') {
        getRawObject('toolRuler').style.backgroundImage = 'url(images/icon_set_explorer/tool_ruler_1.png)';
        getRawObject('toolPan').style.backgroundImage = 'url(images/icon_set_explorer/tool_pan_1.png)';
        getRawObject('toolZoomRubber').style.backgroundImage = 'url(images/icon_set_explorer/tool_rubberzoom_1.png)';
        getRawObject('toolOparcele').style.backgroundImage = 'url(images/icon_set_explorer/parcele_1.png)';
        getRawObject('toolPropedit').style.backgroundImage = 'url(images/icon_set_explorer/objekti_1.png)';
        getRawObject('toolIzbori').style.backgroundImage = 'url(images/icon_set_explorer/tool_izbori_2.png)';
    } else {
        myKaNavigator.activate();
    }
}


/**
 * switchMode
 * ...
 */
function switchService(id) {
	var service = getRawObject('service');
	
//    getRawObject('toolQuery').style.backgroundImage = 'url(images/icon_set_explorer/tool_query_1.png)';
    getRawObject('toolPanoramio').style.backgroundImage = 'url(images/icon_set_explorer/tool_panoramio_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('toolOparcele').style.backgroundImage = 'url(images/icon_set_explorer/parcele_1.png)';
    getRawObject('toolPropedit').style.backgroundImage = 'url(images/icon_set_explorer/objekti_1.png)';
    getRawObject('toolPan').style.backgroundImage = 'url(images/icon_set_explorer/tool_pan_1.png)';
    getRawObject('toolRuler').style.backgroundImage = 'url(images/icon_set_explorer/tool_ruler_1.png)';
    getRawObject('toolIzbori').style.backgroundImage = 'url(images/icon_set_explorer/tool_izbori_1.png)';
    getRawObject('toolRasveta').style.backgroundImage = 'url(images/icon_set_explorer/rasveta_prijava_1.png)';
    getRawObject('toolMsg').style.backgroundImage = 'url(images/icon_set_explorer/tool_msg2_1.png)';
    
		
    getRawObject('mapLegend').style.display = 'none'; 
    getRawObject('mapInfo').style.display = 'none';
    getRawObject('identifier').style.display = 'none';
    getRawObject('curtain').style.display = 'none';
    getRawObject('ulice_search').style.display = 'none';
    getRawObject('oparcele').style.display = 'none';
    getRawObject('propedit').style.display = 'none';
    getRawObject('ruler').style.display = 'none';
    getRawObject('statIzbori').style.display = 'none';
    getRawObject('divRasveta').style.display = 'none';
    getRawObject('mapMsg').style.display =  "none";
    getRawObject('statPanoramio').style.display =  "none";


    if (id=='toolQuery') {
        myKaQuery.activate();
        getRawObject('identifier').style.display = 'block';
    } else if (id=='toolLegend') {
        myKaNavigator.activate();
        getRawObject('toolLegend').style.backgroundImage = 'url(images/icon_set_explorer/tool_legend_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)';
	} else if (id=='toolSearch') {
        currentTabPretraga = '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=='toolPropedit') {
        currentTabPretraga = 'toolPropedit';
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myOparceleClick );
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myNepokretnostClick);
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myObjectSuClick );
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, rasvetaClick );
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myMessageClick );
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myPanoramioQuery );

        myKaMap.registerForEvent( KAMAP_QUERY, null, myObjectSuClick );
        myPropedit.activate();
        if (!g_search_initialized['object_su']) {
            myObjectInitSearch('object_su','propedit','search');
        }
        
		getRawObject('toolPropedit').style.backgroundImage = 'url(images/icon_set_explorer/objekti_2.png)';
        getRawObject('propedit').style.display = 'block';
    } else if (id=='toolNepokretnost') {
        currentTabPretraga = 'toolNepokretnost';
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myObjectSuClick );
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myOparceleClick );
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myNepokretnostClick);
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, rasvetaClick );
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myMessageClick );
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myPanoramioQuery );

        myKaMap.registerForEvent( KAMAP_QUERY, null, myNepokretnostClick);
        
        
        myNepokretnostQuery.activate();
        myBalloon.resizeHeight(200);
        getRawObject('nepokretnost').style.display = 'block';

    } else if (id=='toolOparcele') {
        currentTabPretraga = 'toolOparcele';
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myObjectSuClick );
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myOparceleClick );
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myNepokretnostClick);
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, rasvetaClick );
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myMessageClick );
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myPanoramioQuery );

        myKaMap.registerForEvent( KAMAP_QUERY, null, myOparceleClick );
        
        myOparceleQuery.activate();
        myBalloon.resizeHeight(200);
		getRawObject('toolOparcele').style.backgroundImage = 'url(images/icon_set_explorer/parcele_2.png)';
        getRawObject('oparcele').style.display = 'block';

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

    } else if (id=='toolIzbori') {
        myPropedit.activate();
        myObjectInitSearch('izborne_jedinice','statIzbori','empty_search');
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myObjectSuClick );
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myOparceleClick );
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myNepokretnostClick);
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, rasvetaClick );
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myMessageClick );
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myPanoramioQuery );

        myKaMap.registerForEvent( KAMAP_QUERY, null, myGetCoords );

        getRawObject('toolIzbori').style.backgroundImage = 'url(images/icon_set_explorer/tool_izbori_2.png)';
        getRawObject('statIzbori').style.display = 'block';
    } else if (id=='toolRasveta') {
        currentTabAlati= 'toolRasveta';
        getRawObject('toolRasveta').style.backgroundImage = 'url(images/icon_set_explorer/rasveta_prijava_2.png)';
        getRawObject('divRasveta').style.display = 'block';
//        myObjectInitSearch('rasveta','divRasveta','','edit');
//        myPropedit.activate();
        myRasvetaQuery.activate();
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myObjectSuClick );
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myOparceleClick );
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myNepokretnostClick);
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, rasvetaClick );
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myPanoramioQuery );
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myMessageClick );

        myKaMap.registerForEvent( KAMAP_QUERY, null, rasvetaClick );
        $("#service > ul").tabs('select',2);
        $("#alati > ul").tabs('select',1);


        initRasveta();
    } else if (id=='toolMsg') {
        currentTabAlati= 'toolMsg';
        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)';

        myPropedit.activate();
        var msgAdmin = (user.level_4 != undefined) || user.admin ? true : false;
        myObjectInitSearch('message','mapMsg','search', msgAdmin ? 'pan' : 'insert');		
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myObjectSuClick );
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myOparceleClick );
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myNepokretnostClick);
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, rasvetaClick );
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myMessageClick );
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myPanoramioQuery );
        
        if (!msgAdmin) {
            myKaMap.registerForEvent( KAMAP_QUERY, null, myMessageClick );
        }
        
		getRawObject('mapMsg').style.display =  "block";
    } else if (id=='toolPanoramio') {
        currentTabAlati= 'toolPanoramio';
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myObjectSuClick );
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myOparceleClick );
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, myNepokretnostClick);
        myKaMap.deregisterForEvent( KAMAP_QUERY, null, rasvetaClick );
        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 {
        myKaNavigator.activate();
    }
    var showlayer = id == 'toolRasveta';
    myKaMap.getCurrentMap().getLayer('Rasveta').setVisibility(showlayer);
    myKaMap.setMapLayers(); 
    myKaMap.getCurrentMap().setLayerVisibility ('Rasveta', showlayer);

    showlayer = id == 'toolPanoramio';
    myKaMap.getCurrentMap().getLayer('panoramio').setVisibility(showlayer);
    myKaMap.setMapLayers(); 
    myKaMap.getCurrentMap().setLayerVisibility ('panoramio', showlayer);
    
    showlayer = id == 'toolOparcele';
    try {
        myKaMap.getCurrentMap().getLayer('opstinske_parcele').setVisibility(showlayer);
        myKaMap.setMapLayers(); 
        myKaMap.getCurrentMap().setLayerVisibility ('opstinske_parcele', showlayer);
    } catch (e) {}

    drawPage();

}

function myGetCoords( eventID, queryType, coords ) 
{
    var div=document.getElementById("coords_text");
    if (div==null)
    {
        div=document.createElement("DIV");
        div.id='coords_text';
        div.style.display="block";
        div.style.position='absolute';
        div.style.width="200px";        
        div.style.height="20px";
        div.style.top="0px";
        div.style.left="400px";
        document.body.appendChild(div);
        
    }
    div.innerHTML=coords;
}



/*
 *  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 setKaStoppedQueryState() {
    if (typeof(myKaStoppedQuery) == 'undefined') return false;
    var activate = false;
    if (!disableMouseOverQuery) {
        for (var i in mouseOverQueryLayers) {
            var layer=myKaMap.getCurrentMap().getLayer(mouseOverQueryLayers[i]);
            if (layer && layer.visible) {
                activate = true;
            }
        }
    }
    if(activate) {
        myKaStoppedQuery.activate();
    } else {
        myKaStoppedQuery.deactivate();
        hideToolTip();
    }
}
function myMouseOver(eventID, queryType, coords) {
    if ((coords == undefined) || disableMouseOverQuery) return false;
    myKaStoppedQuery.deactivate();
    var szLayers = "";
    var layers = myKaMap.getCurrentMap().getLayers();
    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 = a[0];
        tip += '<div class="close"><a class="ql" onclick="disableMouseOverQuery = true;setKaStoppedQueryState();">zatvori</a></div>';
        myToolTip.setText(tip);
        myToolTip.moveGeo(x, y);
//        myKaMap.zoomTo(x,y);
//        setTimeout('hideToolTip()', 1000);
//        alert(tip);
    }
    setKaStoppedQueryState();
}
function hideToolTip() {
    myToolTip.move();
}

function setMapPosition(map, layers, cps) {
    var cm = myKaMap.getCurrentMap(); 
    if ((map != '') && (map != cm.name)) { 
        myKaMap.selectMap(map);
    }
	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);
		}
	}
    var acps = cps.split(',');
    myKaMap.zoomTo(acps[0], acps[1], acps[2]);
}

function showDynContent_resp(r, obj) {
    var aresp = r.split(delim);
    if (aresp[0] == "ok") {
        if (obj != undefined) {
            obj.style.display = 'block';
        } else {
            myBalloon.setDynContent(aresp[1], aresp[2], decodeURIComponent(aresp[3]));
        }
        if (aresp.length > 4) { 
            try {
                eval(aresp[4]);
            } catch(e) {
                alert(e);
            }
        }
    } else {
        alert(aresp[0]);
    }
}
function showOparceleResult(id, x, y, points, zoom) {
    if (zoom == undefined) zoom = false;
    if (zoom) {
        x = parseFloat(x);
        y = parseFloat(y);
        myOparceleSearch.zoomToScale(x,y);
    }
    drawPoly(points);
    var o;
    if (o = getRawObject(id)) {
        var html = o.innerHTML.replace(/op_/g, 'dynop_');
        myBalloon.setDynContent(600, 400, html);
        $("#dyncontent_content > ul").tabs();
    }
    
}
function showNepokretnostResult(id, x, y, points) {
    myBalloon.move();
    var zoom = x && y;
    if (zoom) {
        x = parseFloat(x);
        y = parseFloat(y);
        myNepokretnostSearch.zoomToScale(x,y);
    }
    var o;
    if (o = getRawObject(id)) {
        var html = o.innerHTML.replace(/nepokretnost_/g, 'dyn_nepoketnost_');
        if (zoom) {
            myBalloon.resizeWidth(300);
            myBalloon.resizeHeight(250);

            myBalloon.setText(html);
            myBalloon.moveGeo(x,y);
            $("#balloonHTML > ul").tabs();
        } else {
            myBalloon.setDynContent(600, 400, html);
            $("#dyncontent_content > ul").tabs();
        }
    }
    
}
function drawPoly(points) {
    if (typeof(points) == "object") {
        points = points.innerHTML;
    }
    if (terOverlay) {
        terOverlay.remove(); 
        terOverlay = null;
    }
    if (points == '') return false;
    terOverlay = new kaXmlOverlay( myKaMap, 250 );
    var apoints = points.split(',');
    for (var i in apoints) {
        if (i == (apoints.length -1)) {
            var p = apoints[i].split(' ');
        }
    }
    var my_point = terOverlay.addNewPoint("parcPoly",p[0], p[1]);
    var poly = new kaXmlPolygon(my_point);
    poly.readCoordinates(my_point, points);
    poly.color = 'green';
    poly.opacity = .5;
    my_point.addGraphic(poly);
}
function drawPoint(x,y, color, size, opacity) {
    if (size == undefined) size = 30;
    if (color == undefined ) color = '#ff3333';
    if (opacity == undefined) opacity = .8;
    if (terOverlay) {
        terOverlay.remove(); 
        terOverlay = null;
    }
    if (x != undefined) {
        terOverlay = new kaXmlOverlay( myKaMap, 250 );
        var my_point = terOverlay.addNewPoint("rasvetaPoint",x, y);
        var my_symbol = new kaXmlSymbol();
        my_symbol.size = size;
        my_symbol.opacity = opacity;
        my_symbol.color = color;
        
        my_point.addGraphic(my_symbol);             
    }
}
function initRasveta() {
    if (!rasvetaInitialized) {
        call('manufaktura/kaRasvetaEdit.php?action=init', this, initRasveta_resp);
    }
}
function initRasveta_resp(r) {
    var o = getRawObject('divRasveta');
    o.innerHTML = r;
    rasvetaInitialized = true;
    
}
function rasvetaClick( eventID, queryType, coords) {
    drawPoint();
    var url = "manufaktura/kaRasvetaEdit.php?x="+coords[0]+"&y="+coords[1]+"&tool=rasveta&action=show";
	call(url,this,showDynContent_resp);
}

function rasvetaPrijaviKvar() {
    var primedba = document.rasveta_prijava_form.primedba.value.replace(/^\s+|\s+$/g, '');
    var vrsta_kvara = document.rasveta_prijava_form.vrsta_kvara.value.replace(/^\s+|\s+$/g, '');
    var ime = document.rasveta_prijava_form.ime.value.replace(/^\s+|\s+$/g, '');
    var tel = document.rasveta_prijava_form.tel.value.replace(/^\s+|\s+$/g, '');
    var id = document.rasveta_prijava_form.lampa_id.value.replace(/^\s+|\s+$/g, '');
    var err = (primedba == '') || (ime == '') || (tel == '') ? true : false;
    var o;
    if (o = getRawObject('rasveta_podaci_warning')) {
        o.style.display = err ? 'block' : 'none';
    }
    if (!err) {
        var url = 'manufaktura/kaRasvetaEdit.php?action=prijava_kvara&id='+id+'&primedba='+primedba+'&vrsta_kvara='+vrsta_kvara+'&ime='+ime+'&tel='+tel;
        call(url,this,showDynContent_resp);
    }    
}

function rasvetaPromeniKvar(elem_id, del) {
    if (del == undefined) del = false;
    var conf;
    var action;
    if (del) {
        conf = 'Zaista \u017eelite brisati prijavu kvara?';
        action = 'brisanje_kvara';
    } else {
        conf = 'Zaista \u017eelite podesiti da je kvar ura\u0111en?';
        action = 'promena_kvara';
    }
    if (confirm(conf)) {
        var url = 'manufaktura/kaRasvetaEdit.php?action='+action+'&elem_id='+elem_id;
        call(url, this, showDynContent_resp);
    }
    return false;
}
function rasvetaDodajPrimedbu() {
    var primedba_admin = document.rasveta_primedbe_form.primedba_admin.value.replace(/^\s+|\s+$/g, '');
    var id = document.rasveta_primedbe_form.lampa_id.value.replace(/^\s+|\s+$/g, '');
    var err = (primedba_admin == '') ? true : false;
    var o;
    if (o = getRawObject('rasveta_primedbe_warning')) {
        o.style.display = err ? 'block' : 'none';
    }
    if (!err) {
        var url = 'manufaktura/kaRasvetaEdit.php?action=primedba_dodaj&id='+id+'&primedba_admin='+primedba_admin;
        call(url,this,showDynContent_resp);
    }    
}
function dateValidate(datestr) {
    if (datestr.match(/^(\d{1,2})(\/|\.|-)(\d{1,2})(\/|\.|-)(\d+)(\/|\.|-)?$/)) {
        var dan = parseInt(RegExp.$1);
        var mesec = parseInt(RegExp.$3);
        var godina = parseInt(RegExp.$5);
        if ((godina > 2000) && (godina < 2020) && (dan > 0) && (dan < 32) && (mesec > 0) && (mesec < 13)) {
            return godina + '-' + mesec + '-' + dan;
        }
    }
    return false;
    
}
function rasvetaSearch() {
    var uradjeno = document.rasveta_search.uradjeno.options[document.rasveta_search.uradjeno.selectedIndex].value; 
    var vrsta_kvara = document.rasveta_search.vrsta_kvara.options[document.rasveta_search.vrsta_kvara.selectedIndex].value; 
    var datum_primedbe_from = document.rasveta_search.datum_primedbe_from.value.replace(/^\s+|\s+$/g, '');
    var datum_primedbe_to = document.rasveta_search.datum_primedbe_to.value.replace(/^\s+|\s+$/g, '');
    var err = false;
    if (datum_primedbe_from != '') {
        datum_primedbe_from = dateValidate(datum_primedbe_from);
        if (!datum_primedbe_from) err = true;
    }
    if (datum_primedbe_to != '') {
        datum_primedbe_to = dateValidate(datum_primedbe_to);
        if (!datum_primedbe_to) err = true;
    }
    if (err) {
        alert('Format datuma nije ispravan (dd.mm.gggg)');
    } else {
        var url = 'manufaktura/kaRasvetaEdit.php?action=search&uradjeno='+uradjeno+'&vrsta_kvara='+vrsta_kvara+'&datum_primedbe_from='+datum_primedbe_from+'&datum_primedbe_to='+datum_primedbe_to;
        call(url, this, rasvetaSearch_resp);
    }
}
function rasvetaSearch_resp(r) {
    var o = getRawObject('divRasveta');
    if (o) {
        o.innerHTML = r;
    }
    var oe;
    if (oe = getRawObject('rasveta_search_extent')) {
        var e = oe.innerHTML.split(' ');
        if (e.length == 4) {
            myKaMap.zoomToExtents(parseFloat(e[0]), parseFloat(e[1]), parseFloat(e[2]), parseFloat(e[3]));
        }
    }
    drawPage();
}
function showKvar(elem_id) {
    drawPoint();
    var url = 'manufaktura/kaRasvetaEdit.php?action=show&elem_id='+elem_id;
	call(url,this,showDynContent_resp);
}
function rasvetaPrint() {
    var id = document.rasveta_print_form.lampa_id.value;
    var slika =  document.rasveta_print_form.slika.checked ? 1 : 0;
    var url='manufaktura/kaRasvetaEdit.php?action=print&id='+id+'&slika='+slika;
    popwindow(url, 'rasveta_print', 800, 600);
}

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');
    var op = getRawObject('service');
    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;
            }
        }
        if (op) {
            o.style.height = parseInt(getObjectHeight(op)) - o.offsetTop + 'px';
        }
    }

}
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 mapLogin() {
    var o = document.getElementById('loginBox');
    if (o) {
        showDynContent_resp('ok'+delim+'240'+delim+'160'+delim+o.innerHTML);
    }
}

var linkBox = null;
function mapSaveLink() {
    if (!linkBox) {
        linkBox = getRawObject('linkBox');
    }
    showDynContent_resp('ok'+delim+'400'+delim+'420'+delim+ '' + updateLinkToView, linkBox);
    
}
function toggleLeftcontent() {
    var leftcontent = getRawObject('leftcontent');
    if (leftcontent) {
        var x = findPosX(leftcontent);
        leftcontent.style.left = x < 0 ? 0 : - leftcontent.offsetWidth + 'px';
    }
    drawPage();
}
function toggleMapOverview() {
    var mo = getRawObject('map_overview');
    if (mo) {
        mo.style.display = mo.style.display == 'none' ? 'block' : 'none';
        var tmo = getRawObject('toggle_map_overview_img');
        if (tmo) {
            tmo.src = mo.style.display == 'block' ? 'images/ocollapse.png' : 'images/oexpand.png';
        }
    }
    drawPage();

}

