//var city_code=27612; //Размеры картинки var pw=640; var ph=480; //Размеры виртуального окна для малого вида var ww=340; var wh=235; var layers="1,2,3,4"; //Выезд карты и зум в контейнере обвязки var cc_slide_height=ww+20+36; var cc_started=0; var cc_objid=0; var cc_timeout_state = null; var cc_start_height=0; var cc_plus=10; var cc_direction=1; var domain=document.domain.split("."); if (document.domain.toLowerCase().indexOf('hmn.ru') > -1) var cc_map_url="http://map.hmn.ru/get_map_merc_image.php?city_code="+city_code+"&w="+pw+"&h="+ph+"&lon="+layers; else var cc_map_url="http://map.meteonovosti.ru/get_map_merc_image.php?city_code="+city_code+"&w="+pw+"&h="+ph+"&lon="+layers; var cc_loaded=false; var cc_speed=1; var cc_map_img=0; var cc_tmp_img=null; var f_start=true; function Slide(event) { if (event.pageX != null) { left_p =event.pageX; top_p = event.pageY; } else { left_p=event.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft); top_p=event.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); } cc_objid=document.getElementById("cc_map"); if (!cc_objid) return; cc_map_img=document.getElementById("cc_map_src"); // Инициализация события mousewheel if (cc_map_img.addEventListener) // mozilla, safari, chrome cc_map_img.addEventListener('DOMMouseScroll', mouse_wheel, false); // IE, Opera. cc_map_img.onmousewheel = mouse_wheel; OpenFullMap("small"); //Инициализация малого вида if (cc_started && cc_started!=cc_slide_height) return; if (cc_started==cc_slide_height) cc_direction=0; else { document.getElementById("cc_map_container").style.top=(top_p+10)+"px"; if (!cc_loaded) { cc_tmp_img=new Image(); cc_tmp_img.onload=cc_image_loaded; cc_tmp_img.src = cc_map_url+"&zoom=2"; document.getElementById("cc_map_starter").style.cursor="wait"; } cc_direction=1; document.getElementById("cc_map_starter").src="img/map_close.gif"; document.getElementById("cc_map_container").style.display="block"; } cc_timeout_state = setTimeout("DoSlide()", cc_speed); } function DoSlide() { if (!cc_loaded) { cc_timeout_state = setTimeout("DoSlide()", cc_speed); return; } if (cc_direction==1) cc_started=cc_started+cc_plus; else cc_started=cc_started-cc_plus; cc_objid.style.left=(cc_start_height+cc_started-cc_slide_height)+"px"; if (cc_direction==1 && cc_started>=cc_slide_height) { clearTimeout(cc_timeout_state); cc_started=cc_slide_height; cc_map_img.onload=cc2_image_ready; } else { if (cc_direction==0 && cc_started<=0) { cc_started=0; document.getElementById("cc_map_container").style.display="none"; document.getElementById("cc_map_starter").src="img/map_open.gif"; clearTimeout(cc_timeout_state); } else cc_timeout_state = setTimeout("DoSlide()", cc_speed); } } var MapTopS=0; var MapLeftS=0; var disable_mz=false; function cc_image_loaded() { cc_map_img.src = cc_tmp_img.src; document.getElementById("cc_map_starter").style.cursor="pointer"; MapTopS=parseInt(cc_map_img.style.top); MapLeftS=parseInt(cc_map_img.style.left); cc_map_img.width=cc_tmp_img.width; cc_map_img.height=cc_tmp_img.height; cc_loaded=true; if (!Get_Cookie("geo_data")) { disable_mz=true; OnOffElements("zoom_out,zoom_in,PanTop,PanRight,PanBottom,PanLeft","off","default"); cc_map_img.style.cursor="default"; } else { cc_map_img.style.cursor="move"; if (cc_map_img.addEventListener) { cc_map_img.addEventListener('touchend', EndMapMove, false); cc_map_img.addEventListener('touchmove', MapMove, false); cc_map_img.addEventListener('touchstart', BeginMapMove, false); } } } var cc2_loading=false; var _isIE = -1; //Если 1, то IE, если 0 - то не IE function cc_isIE() { if (_isIE != -1) {return _isIE;} else { if (cc_map_img.style.opacity=="") _isIE = 0; else _isIE = 1; } return _isIE; } function image_loading() { cc2_loading=true; OnOffElements("cc_map_src,full_map,zoom_out,zoom_in,PanTop,PanRight,PanBottom,PanLeft","off","wait"); } function cc2_image_ready() { cc2_loading=false; cc_map_img.style.top=MapTopS+"px"; cc_map_img.style.left=MapLeftS+"px"; cc_map_img.width=pw; cc_map_img.height=ph; OnOffElements("cc_map_src","on","move"); if (!disable_mz) { OnOffElements("full_map,PanTop,PanRight,PanBottom,PanLeft","on","pointer"); if (zoom>=max_zoom) OnOffElements("zoom_in","off","default") else OnOffElements("zoom_in","on","pointer"); if (zoom<=min_zoom) OnOffElements("zoom_out","off","default") else OnOffElements("zoom_out","on","pointer"); } else OnOffElements("full_map,zoom_out,zoom_in,PanTop,PanRight,PanBottom,PanLeft","off","default"); } var zoom=2; var max_zoom=16; var min_zoom=-6; var zoom_quant=2; function map_zoom(zoom_dir,zomm_level) { if (zomm_level == undefined) zomm_level=0; if (disable_mz) return; if (cc2_loading) return; if (whell_moving) return; var zoom_to=1; if (zoom_dir==0) { image_loading(); zoom_to=zoom+zomm_level; if (zoom_to>max_zoom) { zoom_to=max_zoom-zoom; zoom=max_zoom; } else if (zoom_to=3) zoom_quant=4; else zoom_quant=2; zoom=zoom+zoom_quant; if (zoom==0) zoom++; if (zoom==1) zoom++; zoom_to=zoom_quant; cc_map_img.src=cc_map_url+"&zoom="+zoom_to+"&nx=1&ext="+Get_Cookie("geo_data"); } if (zoom_dir==1 && zoom>min_zoom) { image_loading(); if (zoom-zoom_quant<3) zoom_quant=2; else zoom_quant=4; zoom=zoom-zoom_quant; if (zoom==0) zoom--; if (zoom==-1) zoom--; zoom_to=-zoom_quant; cc_map_img.src=cc_map_url+"&zoom="+zoom_to+"&nx=1&ext="+Get_Cookie("geo_data"); } } return; } //Определяет, какой тип айвента использовать - IE или Mozilla function cm_GetEventType(evt) { _evt = evt ? evt : window.event; if (_evt.preventDefault) _evt.preventDefault(); else _evt.returnValue = false; // для IE _evt.mysource = _evt.target ? _evt.target : _evt.srcElement; if (_evt.touches && _evt.touches.length==1) { var touch = _evt.touches[0]; _evt.myx = touch.pageX; _evt.myy = touch.pageY; } else { _evt.myx = _evt.pageX ? _evt.pageX : _evt.clientX + document.documentElement.scrollLeft; _evt.myy = _evt.pageY ? _evt.pageY : _evt.clientY + document.documentElement.scrollTop; } return _evt; } mapXshift=0; mapYshift=0; MouseXOffset=0; MouseYOffset=0; cc_IsDraggable=false; function BeginMapMove(evt) { if (disable_mz) return; if (whell_moving) return; _evt = cm_GetEventType(evt); if (_evt.button && (_evt.button == 2)) return; MouseXOffset = _evt.myx; MouseYOffset = _evt.myy; cc_IsDraggable = true; } function EndMapMove(evt) { if (!cc_IsDraggable) return; cc_IsDraggable=false; var fXshift=(MapLeftS-parseInt(cc_map_img.style.left)); var fYshift=(MapTopS-parseInt(cc_map_img.style.top))*-1; image_loading(); cc_map_img.src=cc_map_url+"&nx=1&oX="+fXshift+"&oY="+fYshift+"&ext="+Get_Cookie("geo_data"); } function PanMap(direction) { if (disable_mz) return; var fXshift; var fYshift; switch (direction) { case 1: fXshift=0; fYshift=-Math.round(ph/4); break; case 2: fXshift=Math.round(pw/4); fYshift=0; break; case 3: fXshift=0; fYshift=Math.round(ph/4); break; case 4: fXshift=-Math.round(pw/4); fYshift=0; break; } image_loading(); cc_map_img.style.top=MapTopS+fYshift+"px"; cc_map_img.style.left=MapLeftS-fXshift+"px"; cc_map_img.src=cc_map_url+"&nx=1&oX="+fXshift+"&oY="+fYshift+"&ext="+Get_Cookie("geo_data"); } function MapMove(evt) { if (!can_whell_zoom) { if (whell_timeout) clearTimeout(whell_timeout); whell_timeout = setTimeout("reset_whell()", 300); } if (!cc_IsDraggable) return; _evt = cm_GetEventType(evt); cc_map_img.style.top=(MapTopS+(_evt.myy-MouseYOffset))+"px"; cc_map_img.style.left=(MapLeftS+(_evt.myx-MouseXOffset))+"px"; } function MapOut(evt) { if (whell_timeout) { clearTimeout(whell_timeout); can_whell_zoom=false; } if (!cc_IsDraggable) return; cc_IsDraggable=false; cc_map_img.style.top=MapTopS+"px"; cc_map_img.style.left=MapLeftS+"px"; } var clicks_count=0; var wh_timeout_state = null; function Wc_counter() { wh_timeout_state=null; whell_moving=false; map_zoom(0,clicks_count*2); clicks_count=0; } var whell_moving=false; function mouse_wheel(event) { if (disable_mz) return; if (!can_whell_zoom) return; whell_moving=true; var delta = 0; event=cm_GetEventType(event); if (wh_timeout_state) clearTimeout(wh_timeout_state); wh_timeout_state = setTimeout("Wc_counter()", 1000); if (event.wheelDelta) { delta = event.wheelDelta/120; // IE, Opera, safari, chrome - кратность дельта равна 120 } else if (event.detail) { delta = -event.detail/3; // Mozilla, кратность дельта равна 3 } if (delta<0) { clicks_count--; cc_map_img.style.top=parseInt(cc_map_img.style.top)+Math.round(cc_map_img.height/4)+"px"; cc_map_img.style.left=parseInt(cc_map_img.style.left)+Math.round(cc_map_img.width/4)+"px"; cc_map_img.width=Math.round(cc_map_img.width/2); cc_map_img.height=Math.round(cc_map_img.height/2); } else { clicks_count++; cc_map_img.style.top=parseInt(cc_map_img.style.top)-Math.round(cc_map_img.height/2)+"px"; cc_map_img.style.left=parseInt(cc_map_img.style.left)-Math.round(cc_map_img.width/2)+"px"; cc_map_img.width=cc_map_img.width*2; cc_map_img.height=cc_map_img.height*2; } //alert(cc_map_img.style.top+" "+cc_map_img.style.left+" "+cc_map_img.width+" "+cc_map_img.height); } var can_whell_zoom=false; var whell_timeout=null; function reset_whell() { clearTimeout(whell_timeout); can_whell_zoom=true; } map_visible=false; function OpenFullMap(view) { var open_type; if (view == undefined) open_type=0; else if (view=="full") open_type=1; else open_type=2; if ((!map_visible && open_type!=2) || (open_type==1)) { document.getElementById("map_table").style.width=(pw+15+35)+"px"; document.getElementById("map_table").style.height=(ph+35+44)+"px"; document.getElementById("cc_map_container").style.clip="rect(0px "+(pw+15+35)+"px "+(ph+35+44)+"px 0px)"; document.getElementById("cc_map").style.width=(pw+15+35)+"px"; document.getElementById("cc_map").style.height=(ph+35+44)+"px"; document.getElementById("cc_map_src_container").style.clip="rect(0px "+pw+"px "+ph+"px 0px)"; cc_map_img.style.top="0px"; cc_map_img.style.left="0px"; MapTopS=0; MapLeftS=0; cc_slide_height=pw+20+36; map_visible=true; } else { document.getElementById("map_table").style.width=(ww+15+35)+"px"; document.getElementById("map_table").style.height=(wh+35+44)+"px"; document.getElementById("cc_map_container").style.clip="rect(0px "+(pw+15+35)+"px "+(ph+35+44)+"px 0px)"; document.getElementById("cc_map").style.width=(ww+15+35)+"px"; document.getElementById("cc_map").style.height=(wh+35+44)+"px"; document.getElementById("cc_map_src_container").style.clip="rect(0px "+ww+"px "+wh+"px 0px)"; MapTopS=-Math.round(ph/2-wh/2); MapLeftS=-Math.round(pw/2-ww/2); cc_map_img.style.top=MapTopS+"px"; cc_map_img.style.left=MapLeftS+"px"; cc_slide_height=ww+20+36; map_visible=false; } } function OnOffElements(elemList,action,cursor_type) { var elements=elemList.split(","); var cursor="default"; if ((cursor_type != undefined) && (cursor_type != "")) cursor=cursor_type; for (var i=0; i