    function g_u (bounds) {
		var res = this.map.getResolution();
        var x = Math.round ((bounds.left - this.maxExtent.left) / (res * 256));
        var y = Math.round ((this.maxExtent.top - bounds.top) / (res * 256));
        var z = this.map.getZoom();
		var c=Math.pow(2,z);
 
        var d=x; var e=y; var f="t";
        for(var g=0;g<z;g++){
            c=c/2;
            if(e<c){
                if(d<c){f+="q";}
                else{f+="r";d-=c;}
            }
            else{
                if(d<c){f+="t";e-=c;}
                else{f+="s";d-=c;e-=c;}
            }
        }
        return "karta/"+f+".jpg";        
    }
	
    var map, selectControl, selectedFeature;
	OpenLayers.Lang.setCode('bg');

	function onPopupClose(evt) {
        selectControl.unselect(this.feature);
	}

	function onFeatureSelect(evt) {
    	feature = evt.feature;
	    popup = new OpenLayers.Popup.FramedCloud("featurePopup",
                             feature.geometry.getBounds().getCenterLonLat(),
                             new OpenLayers.Size(400,100),
                             "<h2>"+feature.attributes.title + "</h2>" +
                             feature.attributes.description,
                             null, true, onPopupClose);
    feature.popup = popup;
    popup.feature = feature;
    map.addPopup(popup);
	}

	function onFeatureUnselect(evt) {
    feature = evt.feature;
    if (feature.popup) {
        popup.feature = null;
        map.removePopup(feature.popup);
        feature.popup.destroy();
        feature.popup = null;
    }
	}

	function init(){
			
            map = new OpenLayers.Map('map', {
			 	controls:[new OpenLayers.Control.Navigation(), new OpenLayers.Control.PanZoomBar(), new OpenLayers.Control.LayerSwitcher(),new OpenLayers.Control.Attribution()],
	            maxExtent: new OpenLayers.Bounds(0, 0, 8192, 8192),
				maxResolution:32,
				numZoomLevels:6,
	            units: 'pixels'
	        });
            layer = new OpenLayers.Layer.TMS( "Карта на Велинград", "http://gradvelin.com/karta/karta/", {type:'jpg', 'getURL':g_u, 'attribution': '<a href="http://gradvelin.com/">Градвелин.КОМ</a> (c) 2009' } );
            map.addLayer(layer);
			
			var obekti = new OpenLayers.Layer.GML("Обекти", "http://gradvelin.com/karta/obekti.txt", { format: OpenLayers.Format.Text }); 					
			var snimki = new OpenLayers.Layer.GML("Снимки", "http://gradvelin.com/karta/snimki.txt", { format: OpenLayers.Format.Text }); 								
			
    		obekti.events.on({ "featureselected": onFeatureSelect, "featureunselected": onFeatureUnselect });
			snimki.events.on({ "featureselected": onFeatureSelect, "featureunselected": onFeatureUnselect });

			map.addLayer(snimki); map.addLayer(obekti);
			
			selectControl = new OpenLayers.Control.SelectFeature([obekti,snimki]); selectControl.layers = [obekti,snimki]; map.addControl(selectControl); selectControl.activate();	
			
			map.setCenter(new OpenLayers.LonLat(4866,4096),3);	
			map.render('map');
						
        }