/**
 * Canvas 2D Map
 *
 * Author: Afutin Dmitry (dim@sevsky.net)
 * Date: 2011
 */

var mWrap=null,sellers={},v2DMapInfoBalloonArr=[],markerType=1001,noFoundFlag=false,sampleDrugs=['Актовегин','Феноксиметилпенициллин','Валидол','Анаферон','Арбидол','Анальгин','Линекс','Эссенциале','Виагра','Терафлю','Пенталгин','Энап','Мезим'];function onFocus(a,b){if(a.value==b)a.value='';$(a).removeClass('gray');$(a).addClass('black')}function onBlur(a,b){if(a.value==''){a.value=b;$(a).removeClass('black');$(a).addClass('gray')}}function showSubcat(a){var b=$(a.target),img=$(b).parent().find('img').eq(0),span=$(b).parent().find('span').eq(0);if(span.css('display')=='none'){$(b).parent().find('span, table').show();img.removeClass('collapse');img.addClass('expand')}else{$(b).parent().find('span, table').hide();img.removeClass('expand');img.addClass('collapse')}}function closeSubcat(){mWrap.v2DMapComponent.marker.m511();sellers={};var a=$('.drugCatNameHeader span.drugNameHeader').length;for(var b=0;b<a;b++){$('#resDrug'+b).remove();$('#drugNameHeader'+b+' img').removeClass('expand');$('#drugNameHeader'+b+' img').addClass('collapse')}}$(function(){$("button").button();$("button").click(function(){$.startSearch(1,0)});$('#searchQuery').val('введите название лекарства');$('#searchQuery').keypress(function(e){if(e.which==13)$.startSearch(1,0)});$('#sampleQry').html('например '+(sampleDrugs[$.randomNumber(sampleDrugs.length-1)]));if($.browser.msie||$.browser.safari)$('#sampleQry').addClass('gch-ie');else if($.browser.opera||$.browser.mozilla)$('#sampleQry').addClass('gch-ie');$('#sampleQry').click(function(){var a=$('#sampleQry').html().split(' ')[1];$('#searchQuery').val(a);$.startSearch(1,0);$('#searchQuery').removeClass('gray');$('#searchQuery').addClass('black')});mWrap=new MapsWrapper({mapDivId:"map2d"});$(window).resize(function(){$.searchPanelSetHeight()});$.searchPanelSetHeight();$("#overlay").position({of:$("#searchResult"),my:"left top",at:"left top"})});$.searchPanelSetHeight=function(){var a=$(window).height();$('#searchResult').css('height',(a-70)+'px')};$.showOverlay=function(a){if(a){$("#overlay").css('width',$('#searchResult').width()+'px');$("#overlay").css('height',$('#searchResult').height()+'px');$("#overlay").show();$('#searchResult').addClass('overlay')}else{$("#overlay").hide();$('#searchResult').removeClass('overlay')}};$.startSearch=function(b,c){if(b==2){if($('#resDrug'+c).length>0){closeSubcat();return}if($('.drugstores-list').length>0)closeSubcat()}var d=(b==1?$('#searchQuery').val():$('.srch-res-header').attr('id'));$.showOverlay(true);$.ajax({url:'../php/main.php',type:'GET',data:{pattern:d,allds:'yes',step:b,num:c},success:function(a){mWrap.v2DMapComponent.marker.m511();sellers={};if(b==1){$('#searchResult').html('');$('<div class="big srch-res-header" id="'+d+'">Группы лекарств:'+'<div id="options"><input type="checkbox" id="opt1" /><label class="normal" for="opt1">показать доставку</label></div>'+'</div>'+'<div id="foundDrug">'+a+'</div>'+'<div id="about"><a href="mailto:dim@sevsky.net">связь</a></div> ').appendTo($('#searchResult'));$('#opt1').toggle(function(){$(this).parent().find('span').html('скрыть доставку');$.refreshPoints()},function(){$(this).parent().find('span').html('показать доставку');$.refreshPoints()});$("#options").buttonset()}else{$($('.drugNameHeader').eq(c)).after('<div id="resDrug'+c+'" class="drugstores-list">'+a+'</div>');$('#drugNameHeader'+c+' img').removeClass('collapse');$('#drugNameHeader'+c+' img').addClass('expand');$.refreshPoints()}$.showOverlay(false)},error:function(a){},statusCode:{404:function(){alert('page not found')}}})};$.refreshPoints=function(){if(!mWrap.v2DMapComponent.marker.balloon.window){v2DMapInfoBalloonArr=[];var h=mWrap.v2DMapComponent.m407(),deliveryOption=$("#options label.ui-state-active"),cnt=1;mWrap.v2DMapComponent.marker.m511();$.each(sellers,function(f,g){$.each(g,function(c,d){var e=d.split(' '),markerID=cnt;e[0]=parseInt(e[0]),e[1]=parseInt(e[1]);if((e[2]&&deliveryOption.length>0)||(e[0]>h.x0&&e[0]<h.x1&&e[1]>h.y1&&e[1]<h.y0)){if(noFoundFlag){noFoundFlag=false;$('#no-found').hide()}$('#'+c).removeClass('hide');if(cnt<100)$('#'+c+' .marker').html('<span class="normal">'+cnt+'</span>');else $('#'+c+' .marker').html('<span class="small">'+cnt+'</span>');$('#'+c+' .marker, #'+c+' .drugstore').unbind();$('#'+c+' .marker, #'+c+' .drugstore').click(function(){$.gotoMarker({'id':markerID,'crd':{'x':e[0],'y':e[1]}})});v2DMapInfoBalloonArr[cnt]=mWrap.v2DMapComponent.marker.m503({crd:{x:e[0],y:e[1]},name:cnt,description:'загрузка информации об аптеке...',openOnClick:true,type:markerType,callBackFunc:function(b){b.window.html(b.window.html()+'<div class="note-loading"></div>');$.ajax({type:"GET",url:"../php/info.php?s="+c,success:function(a){if(a){mWrap.v2DMapComponent.marker.m514({pos:{x:b.servX,y:b.servY},context:'<div>'+a+'</div>',oncloseFunc:function(){$.refreshPoints()}})}else{}}})},oncloseFunc:function(){$.refreshPoints()}});cnt++}else{$('#'+c).addClass('hide')}})});if(cnt==1){noFoundFlag=true;if($('#no-found').length>0)$('#no-found').show();else $('<i id="no-found" class="normal"><b>для выбранного участка карты не найдено аптек, уменьшите масштаб карты или измените область поиска</b></i>').appendTo($('.drugstores-list'))}}};$.gotoMarker=function(a){mWrap.v2DMapComponent.m410(a.crd);mWrap.v2DMapComponent.marker.m512(v2DMapInfoBalloonArr[a.id])};$.randomNumber=function(a){return Math.round((Math.random()*(a)))};MapsWrapper=function(a){this.initialize(a)};$.extend(MapsWrapper.prototype,{v2DMapDiv:null,v2DMapComponent:null,initialize:function(a){this.v2DMapDiv=a.mapDivId;this.initMap()},initMap:function(){var a={staticMapUrl:["http://gate.looxity.ru:8088/map.html","http://zain.looxity.ru:8088/map.html","http://kaph.looxity.ru:8088/map.html"],initCrd:{x:7445,y:9925},initZoom:0.25,zoomList:[1,0.5,0.25,0.1,0.05,0.025],tilePxlSize:256,miniMap:true,tools:{scaler:true,polygoner:true}};this.v2DMapComponent=new C04(this.v2DMapDiv);this.v2DMapComponent.m02(a);this.v2DMapComponent.m402("MoveEnd",function(){$.refreshPoints()});this.v2DMapComponent.m402("mousewheel",function(){$.refreshPoints()})}});
