function startMap()
{
    // Add the ability to change between Sat, Hybrid, and Regular Maps
    map.addTypeControl(); 	
    // Add the zoom control. Long specifies a Slider versus a "+" and "-" zoom control
    map.addZoomShort();
    // Add the Pan control to have North, South, East and West directional control
    //map.addPanControl();  
    // Specifying the Map starting location and zoom level
    
    
    map.drawZoomAndCenter(new YGeoPoint(default_latitude,default_longitude), zoom_level);
    
    if(draw_center)
    {
    
    	//alert(p_pdi_tip_id);
    	if(p_pdi_tip_id)
    	{
    		switch(p_pdi_tip_id)
    		{
    			case 10:
    				var myCenterMarker = new YImage();
      				myCenterMarker.src = dir_value+'/images/markers/10.gif';
      				//alert(myCenterMarker.src);
     				myCenterMarker.size = new YSize(18,18);
    			break;
    			
    			default:
    				var myCenterMarker = new YImage();
      				myCenterMarker.src = dir_value+'/images/markers/7.gif';
     				myCenterMarker.size = new YSize(16,25);
    			break;
    		}
        	
    	}
    	else
    	{
    		var myCenterMarker = new YImage();
      		myCenterMarker.src = dir_value+'/images/markers/7.gif';
     		myCenterMarker.size = new YSize(16,25);
    	}
    	
     	myCenterMarker.offsetSmartWindow = new YCoordPoint(12,20);
        
        var cgp = map.getCenterLatLon();
        var my_marker = new YMarker(cgp,myCenterMarker);
        map.addOverlay(my_marker);
        YEvent.Capture(my_marker, EventsList.MouseClick, function()
        { 
            my_marker.openSmartWindow(default_text);
            map.panToLatLon(cgp);
        });
    }
    else
    {
        var myCenterMarker = new YImage();
      	myCenterMarker.src = dir_value+'/images/markers/flag.gif';
     	myCenterMarker.size = new YSize(18,18);
     	myCenterMarker.offsetSmartWindow = new YCoordPoint(12,20);
        
        var cgp = map.getCenterLatLon();
        var my_marker = new YMarker(cgp,myCenterMarker);
        
        map.addOverlay(my_marker);
        
        
        
        YEvent.Capture(my_marker, EventsList.MouseClick, function()
        { 
            my_marker.openSmartWindow(default_text);
            map.panToLatLon(cgp);
        });
        
        
    }
    center_marker_id = my_marker.id;
    
    try
    {
        if(marker_values)
        {
            create_markers(marker_values,7);
        }
    }
    catch(e)
    {}
    
    
   
    	YEvent.Capture(map, EventsList.endPan, 
        function()
        {
        	try
    		{
            	//alert("end map draw");
            	show_map_poi();
             }
    		catch(e)
    		{}     	
        }
        );
   	
    
    
}

function create_markers(marker_values,category)
{
    var i=0;
    
    //alert ("sunt in create markers");
    var points_array = new Array();
    
    if(!markers_array[category])
    {
        markers_array[category] = new Array();
        //alert ("nu am tipul asta de marker "+category);
    }
    
    while(marker_values[i])
    {
        //alert("creez markere");
        if(!markers_array[category]["mark_"+marker_values[i]["p_pdi_id"]])
        {
            markers_array[category]["mark_"+marker_values[i]["p_pdi_id"]] = add_marker(marker_values[i]);
            points_array[i] = new YGeoPoint(marker_values[i]["p_pdi_lat"], marker_values[i]["p_pdi_long"]);
        }
        //alert(marker_values[i]["p_pdi_lat"] + " : "+ marker_values[i]["p_pdi_long"]);
        i++;
    }
    
    //alert(category);
    switch(category)
    {
    	case 7:
    	case 10:
	    	var obj = map.getBestZoomAndCenter(points_array);
	    	
	        
	        //alert("zoom level :" + obj.zoomLevel);
	        //alert(obj.YGeoPoint.Lat + " : " + obj.YGeoPoint.Lon);
	        
	        
	        var zoomLevel = obj.zoomLevel>5?obj.zoomLevel:5;
	        
	        
	        
	        //alert(zoomLevel);
	        map.drawZoomAndCenter(obj.YGeoPoint,zoomLevel);
    	break;
    	
    	default:
    	break;
    }
   
        
}

function add_marker(marker_values)
{
    //alert("sunt in adaugare de markere ");
    if(!marker_images_array[marker_values['p_pdi_tip_id']])
    {
        //alert("nu am tipul asta de poza ");
        marker_images_array[marker_values['p_pdi_tip_id']] = create_marker_image(marker_values['p_pdi_tip_id']);
        //alert("am creat si tipul asta de poza");
    }
    

    var my_geo_point = new YGeoPoint(marker_values['p_pdi_lat'],marker_values['p_pdi_long']);
    //alert ("geopoint creat ");
    var my_marker = new YMarker(my_geo_point,marker_images_array[marker_values['p_pdi_tip_id']],"marker_" + marker_values["p_pdi_id"]);
    //alert ("marker creat ");
    my_marker.disableAutoContain();
    if(marker_values["p_pdi_nume"] && marker_values["p_pdi_adresa"])
    {
      //  alert ("Tre sa adaug autoexpand ");
        //my_marker.addAutoExpand();
        my_marker.addAutoExpand("<div id='container_"+marker_values["p_pdi_id"]+"'><b>"+marker_values["p_pdi_nume"]+"</b></div>");
        
        YEvent.Capture(my_marker, EventsList.MouseClick, 
        function()
        {
            try
            {
                map_width = getElementWidth('map');
                map_height = getElementHeight('map');
                my_marker.openSmartWindow("<div id='container_"+marker_values["p_pdi_id"]+"'><b>"+marker_values["p_pdi_nume"]+"</b><br>"+marker_values["p_pdi_adresa"]+"</div>"); 
                
                var current_x_y = map.convertLatLonXY(my_geo_point);
                var container = new Object;
                container.width = getElementWidth ("container_"+marker_values["p_pdi_id"])+40;
                container.height= getElementHeight("container_"+marker_values["p_pdi_id"])+48;
                
                
                
                pan_x = (current_x_y.x + container.width > map_width?(map_width/2 - (current_x_y.x + container.width - map_width)):map_width/2);
                pan_y = (current_x_y.y - container.height<0 ?container.height-current_x_y.y + map_height/2:map_height/2);
            
                map.panToXY(new YCoordPoint(pan_x,pan_y));
            }
            catch(e)
            {
                alert(e);
            }
            //map.panToXY();
            //map.drawZoomAndCenter(my_geo_point);
            //alert(my_geo_point);
            
        });
     // alert ("Am adaugat autoexpand ");
     
    }
    
    
    map.addOverlay(my_marker);
    
    //alert(my_marker.ID);
    //alert("marker_" + marker_values["p_pdi_id"]);
    //alert ("am adaugat la harta markerul");
    return my_marker;
}


function create_marker_image(image_marker_type)
{
    var myImage = new YImage();
  	myImage.src = dir_value+'/images/markers/'+image_marker_type+'.gif';
  	switch(image_marker_type)
  	{
  		case 7:
  		case "7s":
  		case "7n":
  			 myImage.size = new YSize(16,25);
  		break;
  		
  		default:
  			myImage.size = new YSize(18,18);
  		break;
  	}
  	
  	/*
  	if(image_marker_type=="7" || image_marker_type=="7s" || image_marker_type=="7n")
  	{
  	    myImage.size = new YSize(16,25);
  	}
  	else
  	{
     	myImage.size = new YSize(18,18);
  	}
  	*/
  	
  	myImage.offsetSmartWindow = new YCoordPoint(12,20);
  	
  	return myImage;
}

function hide_markers(marker_array)
{
    
    for (var i in marker_array)
    {
        if(i.substr(0,5)=='mark_')
        {
            marker_array[i].hide();
        }
    }
}

function unhide_markers(marker_array)
{

    for (var i in marker_array)
    {
        if(i.substr(0,5)=='mark_')
        {
            marker_array[i].unhide();
        }
    }
    
    /*
    while(marker_array[i])
    {
        
        marker_array[i].unhide();
        i++;
    }
    */
}

function destroy_markers(marker_array)
{

    for (var i in marker_array)
    {
        if(i.substr(0,5)=='mark_')
        {
            map.removeMarker(marker_array[i]);
        }
    }
    
    /*
    var i=0;
    
    
    while(marker_array[i])
    {
        map.removeMarker(marker_array[i]);
        i++;
    }
    */
}
