jQuery.fn.adds = function(options)
{
     var settings = jQuery.extend(
      {
        wsurl:null,
        zoom:10,
        map : null,
        lang:null,
        imgcontroller: null
      }
      , options);

      container        = this;
      var lang         = settings.lang;
      var activeheader = null;
      var activeitem   = null;
      var poimarkers = new OpenLayers.Layer.Markers( "poi_srch_result" );
      var map  = settings.map.getMapInstance();
      map.addLayer(poimarkers);
      map.events.register('moveend',null,getPois);

      jQuery.setAddsZoom = function(z)
      {
          settings.zoom = z;
      };

      jQuery(container).accordion
      ({
                header: 'div.title',
                alwaysOpen: false,
                animated: false,
                navigation: true,
                autoheight: false
                
      }).bind("change.ui-accordion", function(event, ui)
      {
          jQuery('#'+activeheader).hide();
          activeheader = null;
      });
        
      
      function renderOnMap(id,lonlat,description,op,phone,email,www,opentime,gsm,address)
      {
         var size = new OpenLayers.Size(14,19);
         var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
         icon = new OpenLayers.Icon(settings.imgcontroller+'/'+'i'+'/geosrch',size,offset,null,id+'_poilocation');
         marker = new OpenLayers.Marker(lonlat,icon);
         poimarkers.addMarker(marker);
         jQuery('#'+id+'_poilocation').css('cursor','pointer');
         jQuery('#'+id+'_poilocation').click(function(){popuppoi = addPopup(id,lonlat,description,op,phone,email,www,opentime,gsm,address); } );
         
      }
      
      function deleteMarkers() 
      {            
         poimarkers.clearMarkers();
      }
      
      function getPois()
      {
         
          if (map.getZoom() >= settings.zoom)
          {    
              ex = map.getExtent();
              var exwgs = ex.transform
              (
                new OpenLayers.Projection("EPSG:900913"),
                new OpenLayers.Projection("EPSG:4326")
              ); 

              wgsbb = ex.toArray();    
             
              jQuery.get(settings.wsurl+'/getPoi/'+wgsbb[0]+'/'+wgsbb[1]+'/'+wgsbb[2]+'/'+wgsbb[3],{} ,function(data)
              {
                  activeheader = jQuery ("div[@id*=poi_content_]:visible").attr('id');
                  jQuery(container).empty();
                  parsePoiData(data);
                  jQuery('#'+activeheader).show();
                

              });
               
          }
      }
      
      function parsePoiData(data)
      {
                if(jQuery.browser.msie)
                  var xmldatapoi = jQuery.text2xml(data);
                else
                  var xmldatapoi = data;

                var plist = jQuery(xmldatapoi).find('poilist');
                c = 0;
                plist.each(function(){

                    c++;
                    var poitype     = jQuery(this).find('poitype').text();
                    var description = jQuery(this).find('description').text();
                    var phone       = jQuery(this).find('phone').text();
                    var email       = jQuery(this).find('email').text();
                    var www         = jQuery(this).find('www').text();
                    var opentime    = jQuery(this).find('opentime').text();
                    var gsm         = jQuery(this).find('gsm').text();
                    var address_orig = jQuery(this).find('address').text();
                    var address     = address_orig.replace('null','');//če ni hš
                    var op          = jQuery(this).find('about').text();
                    var x           = jQuery(this).find('x').text();
                    var y           = jQuery(this).find('y').text();


                    lonlat = new OpenLayers.LonLat(parseFloat(x),parseFloat(y)).transform(
                    new OpenLayers.Projection("EPSG:4326"),
                    new OpenLayers.Projection("EPSG:900913")
                    );
                        
                    var id = c+"poi_" + String(lonlat.lon).replace('.','_')+"_"+String(lonlat.lat).replace('.','_');

                    if (document.getElementById('poi_group_'+poitype) == null)
                    {
                        f = eval("lang.t_"+poitype);
                        jQuery(container).append("<div id='poi_group_"+poitype+"'><div class='title' id='poi_header_"+poitype+"'>"+f+"</div><div style='display:none' class='acontent' title='"+lang.hint1+"' id='poi_content_"+poitype+"'></div></div>");
                    }    
                    
                    jQuery('#poi_content_'+poitype).append("<div class='adds' id='"+id+"'>"
                    +description
                    +"</div>");
                    setDragable(id,lonlat,description,op,phone,email,www,opentime,gsm,address);
                });
               
                jQuery('#'+activeitem).css('font-weight','bold');
      }
      
     
      
      function setDragable(id,lonlat,description,op,phone,email,www,opentime,gsm,address)
      {
          jQuery('#'+id).draggable({appendTo:'body',zIndex:999999,opacity:0.5,distance:5,delay:100,revert:true,helper:'clone',revertDuration:200,
          drag:function(e,ui)
          {
               jQuery(this).fadeOut("slow");

          },
          stop:function(e,ui)
          {
               popuppoi = addPopup(id,lonlat,description,op,phone,email,www,opentime,gsm,address);
               renderOnMap(id,lonlat,description,op,phone,email,www,opentime,gsm,address);
               jQuery(this).fadeIn("slow");
               activeitem = jQuery(this).attr('id');
          },
          start:function(e,ui)
          {
              deleteMarkers(); 
          }
          });
      }
      
    
      
      function addPopup(id,lonlat,description,op,phone,email,www,opentime,gsm,address)
      {
               
               if ( document.getElementById("popup_"+id)== null)
               {
                   popupc= "<div>";
                    popupc+="<div class='popupTitle'><div class='popupDetailToggle' id='popupDetailToggle"+id+"'></div>"+description+"</div>";
                      popupc+="<div class='popupDetail' style='display:none' id=popup_detail_"+id+">";
                      popupc+="<table class='popupTable'>";
                        popupc+="<tr>";
                          popupc+="<td><b>"+lang.adds_popup_field_tel_lbl+":</b></td><td>&nbsp;"+phone+"</td>";
                        popupc+="</tr>";
                        popupc+="<tr>";
                          popupc+="<td><b>"+lang.adds_popup_field_gsm_lbl+":</b></td><td>&nbsp;"+gsm+"</td>";
                        popupc+="</tr>";
                        popupc+="<tr>";
                          popupc+="<td><b>"+lang.adds_popup_field_mail_lbl+":</b></td><td>&nbsp;"+email+"</td>";
                        popupc+="</tr>";
                        popupc+="<tr>";
                          popupc+="<td><b>"+lang.adds_popup_field_www_lbl+":</b></td><td>&nbsp;"+www+"</td>";
                        popupc+="</tr>";
                        popupc+="<tr>";
                          popupc+="<td><b>"+lang.adds_popup_field_open_lbl+":</b></td><td>&nbsp;"+opentime+"</td>";
                        popupc+="</tr>";
                        popupc+="<tr>";
                          popupc+="<td><b>"+lang.adds_popup_field_address_lbl+":</b></td><td>&nbsp;"+address+"</td>";
                        popupc+="</tr>";
                        popupc+="<tr>";
                          popupc+="<td><b>"+lang.adds_popup_field_op_lbl+":</b></td><td>&nbsp;"+op+"</td>";
                        popupc+="</tr>";
                      popupc+="</table>";
                      popupc+="<table>";
                        popupc+="<tr>";
                          popupc+="<td>";
                            popupc+=lang.adds_popup_routeplan_label+":<br>";
                          popupc+="</td>";
                        popupc+="</tr>";
                        popupc+="<tr>";
                          popupc+="<td>";
                            popupc+=lang.adds_route_plan_start_label+" : <img id='optims_"+id+"' style='cursor:pointer' src='"+lang.image_start_optim_menu+"' />";
                            popupc+=" | "+lang.adds_route_plan_via_label+" : <img id='optimv_"+id+"' style='cursor:pointer' src='"+lang.image_via_optim_menu+"' /> | ";
                            popupc+=lang.adds_route_plan_end_label+" : <img id='optime_"+id+"' style='cursor:pointer' src='"+lang.image_stop_optim_menu+"' />";
                          popupc+="</td>";
                       popupc+="</td>";
                      popupc+="</tr>";
                      popupc+="<tr>";
                        popupc+="<td id='zoomtopoi_"+id+"' style='cursor:pointer' >";
                          popupc+=lang.adds_popup_zoom_label+"&nbsp;<img src='"+lang.image_blue_zoom+"' /><br>";
                        popupc+="</td>";
                      popupc+="</tr>";
                      popupc+="</table>";
                      popupc+="</div>";
                   popupc+="</div>";


                   var popuppoi = new OpenLayers.Popup.Anchored("popup_"+id,
                                             lonlat,
                                             null,
                                             popupc,
                                             null, true, function afterclose(){
                                                     map.removePopup(popuppoi);
                                                     
                  });

                  popuppoi.autoSize = true;
                  map.addPopup(popuppoi);
                  
                  lawgs = new OpenLayers.LonLat(lonlat.lon,lonlat.lat).transform(
                   new OpenLayers.Projection("EPSG:900913"),
                   new OpenLayers.Projection("EPSG:4326")
                  );
                      
                  jQuery("#popupDetailToggle"+id).toggle(
                    function (){jQuery("#popup_detail_"+id).show();popuppoi.updateSize();},function (){jQuery("#popup_detail_"+id).hide();popuppoi.updateSize();}
                  );
          
                  jQuery('#optime_'+id).click(function(){jQuery.addOptimPoint(jQuery.routens.typeend,lawgs.lon,lawgs.lat,description )});
                  jQuery('#optimv_'+id).click(function(){jQuery.addOptimPoint(jQuery.routens.typevia,lawgs.lon,lawgs.lat,description )});
                  jQuery('#optims_'+id).click(function(){jQuery.addOptimPoint(jQuery.routens.typestart,lawgs.lon,lawgs.lat,description )});
                  jQuery('#zoomtopoi_'+id).click(function(){map.setCenter(lonlat,9)});
                  map.setCenter(lonlat);
              }
              return popuppoi;
      }
  
}


