YandexMaps ={
        objMap: null,
        typeMap: null, 
        canvasDivId: 'gmap', 
        zoomMap: 10, 
        defLat: 0, 
        defLng: 0,
        init: function(typeMap, canvasDivId, zoomMap, defLat, defLng){
			YandexMaps.typeMap = typeMap;
			YandexMaps.canvasDivId = canvasDivId;
			YandexMaps.zoomMap = zoomMap;
			YandexMaps.defLat = defLat;
			YandexMaps.defLng = defLng;
			YMaps.load(YandexMaps.showMap);
		},
        showMap: function(){
            if(typeof mapParams != 'undefined'){
                YandexMaps.objMap = new YMaps.Map(document.getElementById(YandexMaps.canvasDivId));
                if(YandexMaps.typeMap == 'rubricator'){
                    YandexMaps.objMap.setCenter(new YMaps.GeoPoint(YandexMaps.defLat, YandexMaps.defLng), YandexMaps.zoomMap);
                }else if(YandexMaps.typeMap == 'firmpage'){
                    for(var firmId in mapParams){
                        YandexMaps.objMap.setCenter(new YMaps.GeoPoint(mapParams[firmId]['latitude'], mapParams[firmId]['longitude']), YandexMaps.zoomMap);
                    }
                }
                YandexMaps.objMap.addControl(new YMaps.Zoom());
                YandexMaps.showMarker(YandexMaps.typeMap);
            }
        },
        showMarker: function(typeMap){            
            var bStyle = new YMaps.Style();
            bStyle.balloonContentStyle = new YMaps.BalloonContentStyle(YandexMaps.getTemplate());           
            for(var firmId in mapParams){
                if(mapParams[firmId]['show_point'] == 1){
                    if(typeMap == 'rubricator'){
                        eval("var placemark" + firmId + " = new YMaps.Placemark(new YMaps.GeoPoint(mapParams[" + firmId + "]['latitude'], mapParams[" + firmId + "]['longitude']), {style: bStyle, balloonOptions: {maxWidth: 200} })");
                        eval("placemark" + firmId + ".name = document.getElementById('f_title_' + firmId).innerHTML");
                        eval("placemark" + firmId + ".description = YandexMaps.getFirmPhoneStr(" + firmId + ")");
                        eval("placemark" + firmId + ".firmId = " + firmId);
                        eval("placemark" + firmId + ".firmLink = document.getElementById('f_title_' + firmId)");
                        eval("placemark" + firmId + ".setIconContent(document.getElementById('f_num_' + firmId).innerHTML)");
                        eval("YandexMaps.objMap.addOverlay(placemark" + firmId + ")");
                    }else if(typeMap == 'firmpage'){
                        var bStyleFirm = new YMaps.Style();
                        bStyleFirm.balloonContentStyle = new YMaps.BalloonContentStyle(YandexMaps.getTemplateFirmCard());
                        //bStyleFirm.iconStyle = YMaps.Styles.get("default#buildingsIcon");
                        var placemark = new YMaps.Placemark(new YMaps.GeoPoint(mapParams[firmId]['latitude'], mapParams[firmId]['longitude']), {style: bStyleFirm, balloonOptions: {maxWidth: 200}});
                        placemark.name = document.getElementById('f_title_' + firmId).innerHTML;
                        placemark.firmId = firmId;
                        YandexMaps.objMap.addOverlay(placemark);
                    }
                }
            }
        },
        getTemplate: function(){
            var template = new YMaps.Template("<b><a target=\"_blank\" href=\"$[firmLink]\">$[name]</a></b><div><br/>$[description]<br/><a href=\"javascript: void(0);\" onclick=\"YandexMaps.zoomFirm($[firmId]|0);\" class=\"map_tools\">приблизить</a></div>");
            return template;
        },
        getTemplateFirmCard: function(){
            var template = new YMaps.Template("<b>$[name]</b><div><a href=\"javascript: void(0);\" onclick=\"YandexMaps.zoomFirm($[firmId]|0);\" class=\"map_tools\">приблизить</a></div>");
            return template;
        },
        getFirmPhoneStr: function(firmId){
		var content = "";
		var strPhone = document.getElementById('map_phone_' + firmId).value;
		var strPhoneCode = document.getElementById('map_phone_code_' + firmId).value;
		if(strPhone != ""){
			var startPos = strPhone.substring(0, 1);
			if(startPos == '('){
				var endPos = strPhone.search(/\)/i);
				var newPhoneCode = strPhone.substring(0, (endPos + 1));
				var newPhone = strPhone.substring((endPos + 2), strPhone.length);
				content = newPhoneCode + " " + newPhone;
			}else if(startPos != 'w'){
				if(strPhone.length <= 9 && strPhoneCode != ""){
					content = '(' + strPhoneCode + ') ';
				}
				content = content + '<span class="map_phone">' + strPhone + '</span>';
			}
			if(content != ""){
				content = "Тел.: " + content;
			}
		}
		return content;
	},
        zoomFirm: function(firmId){
            var zoomOptions = new Object();
            zoomOptions['position'] = new YMaps.GeoPoint(mapParams[firmId]['latitude'], mapParams[firmId]['longitude']);
            zoomOptions['centering'] = true;
            YandexMaps.objMap.setZoom(16, zoomOptions);
	}
}

