var add_marker;
var add_label;
var center_x=48.289818;
var center_y=25.933743;
var map;
var point;
var gmarkers = [];
var infowindow;
var infowindow_width=400;

var MarkerSettings = function(){
    var id;
	var icon;
	var title;
	var shadow;
	var iconSize;
	var shadowSize;
	var iconAnchor;
	var point;
	var infowindow;
    var zindex;
	var objectMarker;
	var objectLabel;
	var labelTopPadding;
}


function clearMarkers()
{
    if (infowindow) infowindow.close();	
	for (var key in gmarkers) 
	{
      gmarkers[key].objectMarker.setMap(null);
	  gmarkers[key].objectLabel.setMap(null);
      //alert(key);
	}

  gmarkers = [];
}

function processElemAjax(type)
{
  if(type=='lock')
  {
    $j("div#list_navigation").html('<img src="images/pix.gif" width="1" height="1" border="0">');
    document.getElementById("section_id").disabled = true;
	document.getElementById("sub_section_id").disabled = true;
	document.getElementById('ajax_process').style.display = "block";    
  }
  
  if(type=='unlock')
  {
    document.getElementById("section_id").disabled = false;
	document.getElementById("sub_section_id").disabled = false;
	document.getElementById('ajax_process').style.display = "none";
  }
}

function ShowMarkerInfo(id) {

  
  var point = gmarkers[id].objectMarker.getPosition();
  var html_content = ''; 

  if (document.getElementById(id) != null)
  html_content = document.getElementById(id).innerHTML; 
//alert();

   map.setZoom(17);

   if (infowindow) infowindow.close();	
   infowindow = gmarkers[id].infowindow;
   infowindow.setOptions({maxWidth: infowindow_width});

   infowindow.open(map,gmarkers[id].objectMarker);

}

function GenerateInfoWindowBody(data)
{
 var my_text='';
 var apartment_number='';
 var my_img='';
 var phone_office='';
 var phone_fax='';
 var phone_alternate='';
 var website='';
 var info_table='';

 if(data.apartment_number!='')
   apartment_number='офіс '+data.apartment_number;
    
 if((data.width_img!='')&& (data.height_img!=''))
 {
   my_img='<td  width="'+data.width_img+'"><img src="/mg/uploaded_image/'+data.id+'.jpg" width="'+data.width_img+'" height="'+data.height_img+'"></td>';
 }else{
   my_img='<td>&nbsp;</td>';
 }

  if(data.phone_office!='')
   phone_office='<tr><td style="font-weight: bold; text-align: right; padding: 0 5px 0 0 ;">тел.</td><td style="text-align: left;"> '+data.phone_office+'</td></tr>';
  
 if(data.phone_fax!='')
   phone_fax ='<tr><td style="font-weight: bold; text-align: right; padding: 0 5px 0 0 ;">факс.</td><td style="text-align: left;"> '+data.phone_fax+'</td></tr>';  
   
 if(data.phone_alternate!='')
   phone_alternate ='<tr><td style="font-weight: bold; text-align: right; padding: 0 5px 0 0 ;">інший тел.</td><td style="text-align: left;">'+data.phone_alternate+'</td></tr>';  

 if(data.website!='') 
   website ='<tr><td style="font-weight: bold; text-align: right; padding: 0 5px 0 0 ;">Веб-сайт</td><td style="text-align: left;"><a href="http://'+data.website+'" target=_blank rel="nofollow">'+'http://'+data.website+'</a></td></tr>';


  info_table+='<tr><td style="font-weight: bold; text-align: right; padding: 0 5px 0 0 ;">Адреса</td><td style="text-align: right;">'+data.address_street_name+' буд. '+data.house_number+' '+apartment_number+'</td></tr>';
  info_table+=phone_office;
  info_table+=phone_fax;
  info_table+=phone_alternate;  
  info_table+=website;
  info_table='<td align="center"><table>'+info_table+'</table></td>';
/*if(data.phone_alternate!='')
phone_alternate ='<tr><td style="font-weight: bold; text-align: right; padding: 0 5px 0 0 ;">інший тел.</td><td>'+data.phone_alternate+'</td></tr>';
*/

  my_text+='<table border="0">';
  my_text+='<tr><td style="font-weight:bold; text-align: center; font-size:12px; color:#0B578F;" colspan="2">'+data.name+'</td></tr>';  
  my_text+='<tr>'+my_img+info_table+'</tr>';
  
  my_text+='<tr><td colspan="2">'+data.description+'</td></tr>'; 
  
  my_text='<div id='+data.id+' style="display:none">'+my_text+'</div>';
  my_text+='</table>';
return my_text;
}


function createInfoWindowAndListener(data)
{
  $j("div#list_navigation").append('<div id="link_'+data.id+'" class="account" onMouseOver="this.style.color=\'#95C751\'" onMouseOut="this.style.color=\'#126D00\'"><img src="/images/form.png" width="15" height="9"> '+data.name+'</div>');
  document.getElementById('link_'+data.id).onclick = function(){
   ShowMarkerInfo(data.id);	  
  }
}

function createMarker(marker) {

 var add_marker = new google.maps.Marker({
        position: marker.point, 
        map: map,
        title: marker.title,
		icon: marker.icon,
		zIndex: marker.zindex
    });   

   google.maps.event.addListener(add_marker, 'click', function() { 
    if (infowindow) infowindow.close();	
	
    infowindow = marker.infowindow;
	infowindow.setOptions({maxWidth: infowindow_width});

    infowindow.open(map,add_marker);
  });


  return add_marker;
}


function createLabel(marker) {

	var add_label = new Label({ map: map });
	add_label.bindTo('position', marker.objectMarker, 'position');
	add_label.set('text', marker.title);
	add_label.set('labelTopPadding', '-'+marker.labelTopPadding);

  return add_label;
}

    function initialize() {
    

    point = new google.maps.LatLng(center_x, center_y);
    var mapOptions = {
      zoom: 13,
      center: point,
      mapTypeId: google.maps.MapTypeId.ROADMAP,
	  mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
	  scrollwheel: false
    }

    map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);

    getContent('get_companies_on_map','');	      
      
    }
    
    
    
function getNavigation(type_v, page_v, category_v)
{
  processElemAjax('lock');

    $j(document).ready(function(){  
        if(this.timer)
        {
          clearTimeout(this.timer);
        }

        this.timer = setTimeout(function() {
        
		$j.getJSON('/ajax/GetAjaxData.php', {type: type_v, page: page_v, category: category_v}, function(data) {

		if(data.length>0)
		{
			for(i=0;i<data.length;i++)
			{			
			  createInfoWindowAndListener(data[i]);
			}	

	           $j("div#list_navigation").append('<div class="navigation" style="padding: 7px 0 5px 10px;">'+data[0].navigation+'</div>');
            
        }
		processElemAjax('unlock');


      });

      }, 20);

   });
  
}

function getContent(type_v, category_v)
{
  clearMarkers(); 
 

  // Ajax Lock
  processElemAjax('lock');


  var newsContentMain ='';
    $j(document).ready(function(){  
        if(this.timer)
        {
          clearTimeout(this.timer);
        }

        this.timer = setTimeout(function() {

        //query to database via ajax
		//if($j('#section_id').val()!='')
		if(($j('#section_id').val()!='') &&	 ($j('#sub_section_id').val()=='')){
			processElemAjax('unlock');
		return;
		}
	
        $j.getJSON('/ajax/GetAjaxData.php', {type: type_v, category: category_v}, function(data) {
 
	  if(data.length>0)
      { 
        for(i=0;i<data.length;i++)
	    {		
	        var ret_data = GenerateInfoWindowBody(data[i]);         
	        $j("div#content").append(ret_data);   
	       
			var marker = new MarkerSettings();
            marker.id = data[i].id;
		    marker.point = new google.maps.LatLng(data[i].y_position,data[i].x_position);
			
			html_content ='';
			if (document.getElementById(marker.id) != null)
			  html_content = document.getElementById(marker.id).innerHTML;

            marker.infowindow = new google.maps.InfoWindow({content: html_content});

			marker.width_icon = data[i].width_icon;
			marker.height_icon = data[i].height_icon;

			marker.title = data[i].title;
			marker.icon = new google.maps.MarkerImage("/ico/"+data[i].icon_path);
			marker.labelTopPadding = data[i].label_top_padding;
            //marker.icon = new google.maps.MarkerImage("/ico/"+data[i].icon_path, new google.maps.Size(data[i].width_icon, data[i].height_icon),new google.maps.Point(0, 0), new google.maps.Point(16, 16));

			//marker.icon = new google.maps.MarkerImage("/ico/"+data[i].icon_path);

			marker.zindex = i+100;
            marker.objectMarker = createMarker(marker);
			marker.objectLabel = createLabel(marker);
	        gmarkers[data[i].id] = marker;
	        //map.addOverlay(gmarkers[data[i].id]);
		}


		getNavigation('get_companies_navigation', '1', category_v);

          }else{
		    processElemAjax('unlock');
		  }

      });

      }, 200);

   });
  
}

