/**
*	Se defineste array-ul de puncte 
*/	

var toatePunctele = []; // OBSOLETE	
 
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
    
	var dir_value = "/ymap/img/geopoints/";

    map.drawZoomAndCenter(new YGeoPoint(default_latitude,default_longitude), zoom_level);
    if(draw_center)
    {
    
        var myCenterMarker = new YImage();
      	myCenterMarker.src = dir_value+'housemare.png';
     	myCenterMarker.size = new YSize(26,31);
     	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);
        });
    }
	
	if(populate_all) {
		jQuery.getJSON('/ymap/jsonImobile.php', {'pret': 0, 'spatiu': 0, 'stadiu': 0, 'tipimobil': 0,'nrcamere': 0}, function(data) {					
							mapPoints = procJSONcautare(data);
						});					
	}
	
	if(admin_mode){
       
    
        function myCallback(_e, _c){  
	        var mapCoordCenter = map.convertLatLonXY(map.getCenterLatLon());  
            YLog.initPos(mapCoordCenter); //call initPos to set the starting location  
	          
			currentGeoPoint = new YGeoPoint( _c.Lat, _c.Lon);  
	        placeMarker(currentGeoPoint);  

			jQuery("#ylatShow").val(_c.Lat); jQuery("#ylat").val(_c.Lat);			
			jQuery("#ylongShow").val(_c.Lon); jQuery("#ylong").val(_c.Lon);
		}
		 YEvent.Capture(map, EventsList.MouseDoubleClick, myCallback); 	
	}	
}

	function placeMarker(geoPoint)
		{  
              var newMarker= new YMarker(geoPoint, createCustomMarkerImage());  
           
              map.addOverlay(newMarker);  
        } 
		
	function createCustomMarkerImage()
		{  
             var myImage = new YImage();  
             myImage.src = '/ymap/img/geopoints/house.png';    
             myImage.size = new YSize(36,42);   
             myImage.offsetSmartWindow = new YCoordPoint(0,0);  
             return myImage;   
        }  		


	/**
	 * Are rolul de a parcurge JSON-ul venit din php si de a crea un array mai usor de manevrat in JS
	 * La final printeaza toate punctele din arr pe harta si intoarce array-ul de markere
	 * Aceasta functie este folosita DOAR pentru POI avand in vedere diferentele dintre campurile POI/cautare
	 * 
	 * @param {Object} data
	 * @param {string} glyph
	 */
	function procJSONpoi(data,glyph)
	{
		var arrPuncteNEW = new Array();
		var cont = 0;
		jQuery.each(data, function(index,atribs){
			var attr = new Array();														
			attr["nume"] = atribs.nume;
			attr["desc"] = atribs.desc;
			attr["tip"] = atribs.tip;
			attr["lat"] = atribs.ylat;														
			attr["lon"] = atribs.ylong;
					
			arrPuncteNEW[cont] = attr;
			cont++;														
		});
		var ret = printPOI(arrPuncteNEW,glyph);
		return ret;					  
	}
	
	/**
	 * Are rolul de a parcurge array-ul provenit din JSON si de a creea cate un geo-marker pentru fiecare
	 * Intoarce array-ul cu markere
	 * Aceasta functie este folosita DOAR pentru POI avand in vedere diferentele dintre campurile POI/cautare
	 * 
	 * @param {Object} arr
	 * @param {string} glyph
	 */
	function printPOI(arr,glyph)
	{
		var ret = [];
		
		if(!glyph) var glyph = "";				
		for(var i in arr)
		{
			var newMarker = createMarker(arr[i],glyph);
			/**
			*	Se adauga efectiv pe harta markerul
			*/
			
			map.addOverlay(newMarker);
			
			ret[i] = newMarker;
		}
		return ret;		
	}
	
	/**
	 * Are rolul de a parcurge JSON-ul venit din php si de a crea un array mai usor de manevrat in JS
	 * La final printeaza toate punctele din arr pe harta si intoarce array-ul de markere
	 * Aceasta functie este folosita DOAR pentru CAUTARE avand in vedere diferentele dintre campurile POI/cautare
	 * 
	 * @param {Object} data
	 * @param {string} glyph
	 */
	function procJSONcautare(data)
	{
		var arrPuncteNEW = new Array();
		var cont = 0;
		jQuery.each(data, function(index,atribs){
			var attr = new Array();	
			attr["nume"] = atribs.nume;																
			attr["poza"] = atribs.poza;
			attr["lat"] = atribs.Ylat;
			attr["lon"] = atribs.Ylong;
			attr["id"] = index;
			attr["finalizare"] = atribs.finalizare;
			attr["stadiu"] = atribs.stadiu;	
			attr["unitati"] = atribs.unitati;
			attr["url"] = atribs.url;																																				
					
			arrPuncteNEW[cont] = attr;
			cont++;														
		});
		var mesg;
		if(cont == 0) {
			mesg = "Nici o oferta gasita";
		} else if(cont == 1) {
			mesg = "O oferta gasita";
		} else {
			mesg = cont+" oferte gasite";
		}
		jQuery("#oferte_gasite").html(mesg);
		var ret = printArray(arrPuncteNEW);
		return ret;					  
	}
	
	/**
	 * Are rolul de a parcurge array-ul provenit din JSON si de a creea cate un geo-marker pentru fiecare
	 * Intoarce array-ul cu markere
	 * Aceasta functie este folosita DOAR pentru CAUTARE avand in vedere diferentele dintre campurile POI/cautare
	 * 
	 * @param {Object} arr
	 * @param {string} glyph
	 */
	printArray = function(arr,gliph)
	{	
		
		var ret = [];
		
		if(!glyph) var glyph = "";				
		for(var i in arr)
		{
			var newMarker = createMarker(arr[i],glyph);
			/**
			*	Se adauga efectiv pe harta markerul
			*/
			
			map.addOverlay(newMarker);
			
			ret[i] = newMarker;
		}
		return ret;
	}
	
	/**
	 * Creeaza un marker pentru a putea fi adaugat pe harta
	 * 'glyph' este un parametru optional folosit doar la POI, acesta face si diferentierea dintre continutul POI / cautare
	 * 
	 * @param {Object} lat
	 * @param {Object} lon
	 * @param {Object} poza_nume
	 * @param {Object} oras_desc
	 * @param {Object} strada_tip
	 * @param {Object} pret
	 * @param {Object} glyph
	 */
	var createMarker = function(arr,glyph)
	{
		var dir_value = "/ymap/img/geopoints/";
			
			/**
			*	Se creeaza un YImage pentru imobile
			*/
			var markerImage = new YImage();
			
			switch(glyph)
			{
				case "farm":
					markerImage.src = dir_value+'farmacii.png';
				break;
				case "pte":
					markerImage.src = dir_value+'piete.png';
				break;
				case "trans":
					markerImage.src = dir_value+'metrou.png';
				break;
				case "superm":
					markerImage.src = dir_value+'supermarketuri.png';				
				break;
				case "sc":
					markerImage.src = dir_value+'scoli.png';				
				break;
				case "hotel":
					markerImage.src = dir_value+'hoteluri.png';				
				break;
				case "restaurant":
					markerImage.src = dir_value+'restaurante.png';				
				break;
				case "arta":
					markerImage.src = dir_value+'art.png';				
				break;
				case "bar":
					markerImage.src = dir_value+'pub.png';				
				break;
				case "banca":
					markerImage.src = dir_value+'banca.png';				
				break;				
				default:
					markerImage.src = dir_value+'house.png';
			}
	     	
			markerImage.size = new YSize(18,22);
//	     	markerImage.offsetSmartWindow = new YCoordPoint(12,20);
		
			/**
			*	Se creeaza un geopoint pentru fiecare dintre coordonatele array-ului
			*/
			var markerGeoPoint = new YGeoPoint( arr.lat, arr.lon );  
			
			/**
			 *  Adaugam punctul la array-ul de puncte
			 */
			toatePunctele.push(markerGeoPoint);
			
			/**
			*	Pe baza geopointului se face un marker, care mai apoi se adauga in array-ul arrPuncte
			*/
			var my_marker = new YMarker(markerGeoPoint,markerImage);
			//arr[i] = my_marker;
			
			/**
			*	Se creeaza detaliile imobilului si se ataseaza onClick
			*/
			if(glyph) var markerMarkup = arr.nume;
			else{
				var markerMarkup = "<div style='width:350px;padding:5px;'><p style='text-align:center; height: 80px;'><a href='"+arr.url+"'><img src='"+arr.poza+"'></a></p>";
				if(arr.nume) markerMarkup += '<a href="'+arr.url+'">'+arr.nume+"</a><br />";
				if(arr.pret) markerMarkup += "Pret de la: "+arr.pret+" E";
			    if(arr.suprafata) markerMarkup += "<br />Suprafata: "+arr.suprafata;
			    //if(arr.camere) markerMarkup += "<br />Camere: "+arr.camere;
				if(arr.finalizare) markerMarkup += "<br /><span style='color:blue;'>Finalizare</span>: "+arr.finalizare+"";					
				if(arr.stadiu) markerMarkup += "<br /><span style='color:blue;'>Stadiu</span>: "+arr.stadiu+"";
				if(arr.unitati) markerMarkup += "<br /><span style='color:blue;'>Unitati</span>:<br />"+arr.unitati+"<br />";
				markerMarkup += '<a href="'+arr.url+'">Vezi mai multe!</a></div>';				
			}
			
			// Adaugam expander
			my_marker.addAutoExpand(arr.nume);
			
//			console.log(markerMarkup);
			//my_marker.addAutoExpand(markerMarkup);
			
			YEvent.Capture(my_marker, EventsList.MouseClick,   
                function(){  
					my_marker.setSmartWindowColor('blue');			
                    my_marker.openSmartWindow(markerMarkup);  
                });  			 	

/*			
			YEvent.Capture(my_marker, EventsList.MouseClick, 
				function(){
					window.location = "/fisa-ansamblu.php?id="+arr.id;

				});
*/				
	
			return my_marker;		
	}



/**
*	Ascunde toate punctele din array-ul primit ca parametru
*/	
function delArray(arrPuncte)
	{
		var i=0;
		
		for(var i in arrPuncte)
		{        
			arrPuncte[i].hide();
		} 
	}
	
/**
*	Arata toate punctele dintr-un array
*/	
function showArray(arrPuncte)
	{
		var i=0;
		
		for(var i in arrPuncte)
		{        
			arrPuncte[i].unhide();
		} 
	}		
