/*script*/
function createMap(){
	map = new GMap2(document.getElementById("map"));
	map.addControl(new GMapTypeControl(1));
	map.addControl(new GLargeMapControl());
	map.addControl(new GScaleControl());
	map.addControl(new GOverviewMapControl());
	map.setMapType(getCardType()); 
	GEvent.addListener(map, "zoomend", 
		function(oldLevel, newLevel) { 
				set_object();
		}
	); 
	GEvent.addListener(map, "load", 
		function() { 
				document.getElementById("pleasewait").style.display = 'none';
				showMapSearch('');
		}
	); 
    var boxStyleOpts = {
      opacity: .2,
      border: "2px solid red"
    }
	if(document.getElementById("directions") != null){	
     gdir = new GDirections(map, document.getElementById("directions"));
     GEvent.addListener(gdir, "error", handleErrors);
	} 
    var otherOpts = { 
      buttonStartingStyle: {background: '#FFF', paddingTop: '4px', paddingLeft: '4px', border:'1px solid black'},
      buttonHTML: '<img title="Увеличение" src="/components/com_rgmap/images/zoomin.gif">',
      buttonStyle: {width:'25px', height:'23px'},
      buttonZoomingHTML: 'Для увеличения кликните и тяните мышку, затем отпустите. (Для отмены нажмите сюда)',
      buttonZoomingStyle: {background:'yellow',width:'75px', height:'100%'},
      backButtonHTML: '<img title="Отменить увеличение" src="/components/com_rgmap/images/zoomout.gif">',  
      backButtonStyle: {display:'none',marginTop:'5px',width:'25px', height:'23px'},
      backButtonEnabled: true, 
      overlayRemoveTime: 1500} 
	  map.addControl(new DragZoomControl(boxStyleOpts, otherOpts,{backButtonEnabled: true}, {}), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(80,8)));
}
function clearAll(){
	map.clearOverlays(); 
}
function setCenter(lat, lng, MapSize){
	point = new GLatLng(lat, lng);
	if(MapSize == -1){
	  MapSize = map.getZoom();
	}
	map.setCenter(point, MapSize);
}
function setCenterMarker(lat, lng, MapSize){
	setCenter(lat, lng, MapSize);
	if(document.getElementById("chSetMarker").checked != false){
		var marker;
		marker = new GMarker(map.getCenter(), {draggable: true});
		map.addOverlay(marker);
	}
}
function addRuler(){
	if (nomore==1){
		alert('Линейка активна');
		return;
	}
	nomore=1;
	var tRuler = document.getElementById("txtRuler");
	var polyline;
	var LMousemove;
	var LClick;
	polyline = new GPolyline([], "#0000ff", 2);
	map.addOverlay(polyline);
	polyline.enableDrawing();
	LMousemove = GEvent.addListener(map, "mousemove", function(point){
		try{
			tRuler.value = point.lat().toFixed(7) + ' , ' + point.lng().toFixed(7);
			var newDist = point.distanceFrom(polyline.getVertex(polyline.getVertexCount()-1));	
			var lineDist = polyline.getLength() + newDist;
			lineDist = lineDist.toFixed(0)+"m";
			if(parseInt(lineDist)>10000){
				lineDist = (parseInt(lineDist)/1000).toFixed(1)+"km";
			}
			if (document.getElementById("chSaveDistRuler").checked==false){
				tRuler.value = tRuler.value;
			}else{
				tRuler.value = tRuler.value + ' : ' + lineDist;
			}
		}catch(e){}	
	});
	
	LClick = GEvent.addListener(map, "click", 
		function(overlay, latlng){
			var tRulerLog =  document.getElementById("txtRulerLog");
			tRulerLog.value = tRulerLog.value + tRuler.value + '\n'; 			
		}
	);	

	var eLine = GEvent.addListener(polyline, "endline", 
		function(){
			nomore=0;
			GEvent.removeListener(LMousemove);
			GEvent.removeListener(LClick);
			GEvent.removeListener(eLine);
			
		}
	);	
}
function gmap_init(lat, lng, zoom,desc){
	createMap();
	setCenter(lat, lng, zoom);
	drawLayers();
	set_link();
	if(desc != null && desc != ''){
		set_link();
		var descText = desc;
		objMarker.openInfoWindowHtml(descText);
	}
}
/*ads*/
function cDesc(d){
	curAdd = d;
	try{
		var mTitle = document.getElementById("mTitle" + d).innerHTML;
	}catch(e){
		return oldAds[d];
	}	
	var r = '<table border="0" bgcolor="#ffffcc" width="285" cellpadding="0" cellspacing="0"><tr>';
	r = r + '<td align="center" valign="top">';
	r = r + '<div style="padding:5px 1px 5px 5px; width:98%; vertical-align:middle; height:27px; background-color:#dfdfff;"><b style="color:#000097;">' + mTitle + '</b></div>';
	r = r + '<div style="padding:5px 10px 5px 10px;">' + document.getElementById("dText" + d).innerHTML +  '<br>';
	try{
		r = r + '<b> Телефон: </b>'+document.getElementById("dPhone" + d).innerHTML +  '<br>';
	}catch(e){}	
	try{
		r = r + '<b> Адрес: </b>'+document.getElementById("dAddress" + d).innerHTML+  '<br>';
	}catch(e){}	
	r = r + '</div>';
	var mImg = document.getElementById("mImg" + d);
	if(mImg != null){
		r = r + '<div style="padding:5px 10px 5px 10px;"><b>Фото:</b></div><center>' + (mImg.innerHTML.replace("'20'", "").replace("lImage", "")) + '</center>';
	}
	r = r + '<br>&nbsp;<div style="width:100%; background-color:#efefff;">';
	if(comAdsOrOrg != 'org'){
		r = r + '<table width="100%" cellpadding="5" border="0"><tr><td><a onclick="javascript:open_popup_window(\'ad-'+d+'.htm\', \'650\'); return false;" href="/">читать далее..</a></td><td align="right" style="text-align:right;"><a onclick="javascript:try{mbox.style.visibility=\'hidden\';}catch(e){} try{closeBoxes(false,event);}catch(e){} return false;" href="/">Закрыть (Esc)</a></td></tr></table>';
	}else{
		r = r + '<table width="100%" cellpadding="5" border="0"><tr><td><a href="http://org.arka.uz/pr-'+d+'.htm" target="_blank" >читать далее..</a></td><td align="right" style="text-align:right;"><a onclick="javascript:try{mbox.style.visibility=\'hidden\';}catch(e){} try{closeBoxes(false,event);}catch(e){} return false;" href="/">Закрыть (Esc)</a></td></tr></table>';	
	}	
	r = r + '</div>';
	r = r + '</td></tr></table>';
	oldAds[d] = r;
	return r;
}
function adsOrOrg(cType){
	var orgCat = document.getElementById("orgCat");
	var adsCat = document.getElementById("adsCat");
	var h2Ads  = document.getElementById("h2Ads");
	var h2Org  = document.getElementById("h2Org");
	comAdsOrOrg = cType;
	if(cType == 'ads'){
		orgCat.style.display = 'none';
		h2Org.style.display = 'none';
		adsCat.style.display = '';
		h2Ads.style.display = 'inline';
	}else{
		orgCat.style.display = '';
		h2Org.style.display = 'inline';
		adsCat.style.display = 'none';
		h2Ads.style.display = 'none';
	}
	document.getElementById("mapAds").innerHTML = '';
	showMapSearch('');
}
function sOnC(i){
	try{
		mObjects[i].openInfoWindowHtml(cDesc(i));
	}catch(e){}	
}
function setSearchObj(adid,t,g,z,txtContent){
	if(mObjects[adid] != null){
		map.removeOverlay(mObjects[adid]);
	}
	var blueIcon = new GIcon(G_DEFAULT_ICON);
	blueIcon.image = "components/com_rgmap/images/blank.png";
	mObjects[adid] = new GMarker(new GLatLng(t, g), {draggable: true, icon: blueIcon});
	map.addOverlay(mObjects[adid]);
	GEvent.addListener(mObjects[adid], "mouseover", 
		function(point){
			if(mObjects[adid] != null){
				mObjects[adid].openInfoWindowHtml(cDesc(adid));
			}	

		}
	);
}
function clearListKart(){
	var chClearCart = document.getElementById("chClearCart");
	if(chClearCart.checked == true){
		try{
			for(el in mObjects){
				try{
				map.removeOverlay(mObjects[el]);
				mObjects[el] = null;
				oldAds[el] = null; 
				}catch(e){}
	       }
		}catch(e){}
	}
}
function cashListKart(){
	var chClearCart = document.getElementById("chClearCart");
	if(chClearCart.checked != true){
		try{
			for(el in mObjects){
				try{ oldAds[el] = cDesc(el); }catch(e){}
	       }
		}catch(e){}
	}
}
function showMapSearch(a){
		var s = document.frmMapSearch;
		var text_search;
		var catid;
		var ad_kindof;
		var ad_region;
		var ch   = '';
		try{
			text_search = s.text_search.value;	
			catid       = s.catid.value;	
			ad_kindof   = s.ad_kindof.value;	
			ad_region   = s.ad_region.value;	
			if (s.chWithKart.checked == true){
				ch = '&chwkart=1';
			}           
		}catch(e){return true;}
		var url_ = '/index.php?option=com_adsmanager&page=search&signsearch=2&catid='+catid+ch+'&ad_kindof='+ad_kindof+'&ad_region='+ad_region + '&mapsearch=1' +'&text_search='+text_search+'';
		if(comAdsOrOrg == 'org'){
			var orgCat = document.getElementById("categoryOrg").value;
			url_ = '/index.php?option=com_orgmanager&page=search&signsearch=2&catid='+orgCat+ch+'&ad_region='+ad_region + '&mapsearch=1' +'&text_search='+text_search+'';
		}
		var mAjax = document.getElementById("iMapSearch");
		if(a != '' ){
			url_ = a; 
			mAjax = document.getElementById("iMapSearchNav");
		}
		var chOnCart = '0';
		if(document.getElementById("chOnCart").checked == true){
			chOnCart = '1';
		}
    $j.ajax({
        url: url_,
        type: 'POST',
        data: 'sw_t='+ map.getBounds().getSouthWest().lat()+'&sw_g='+ map.getBounds().getSouthWest().lng()+'&ne_t='+map.getBounds().getNorthEast().lat()+'&ne_g='+map.getBounds().getNorthEast().lng() + '&choncart='+ chOnCart,
        dataType: 'JSON',
        timeout: 990000,
        beforeSend: function(){
			mAjax.style.display = '';
			cashListKart();
        },
        complete: function(){
			mAjax.style.display = 'none';
			var i =0;
			var c = '';
			clearListKart();
			$j('input[name^=mbm]').each(function(index) {
				var mAttrib = this.value.split(";");
				setSearchObj(this.id.substring(3),mAttrib[0],mAttrib[1],mAttrib[2],this.id.substring(3));
			  });
			 hMMenu('hide'); 
        },
        success: function(response){
			var reg= /<!--.*-->/ ;
			var response = response.replace(reg, "")
			var data = eval('('+ response +')');
			document.getElementById("mapAds").innerHTML = data;
        },
        error: function(){
			alert('Не удалось загрузить объявления. Попробуйте Попробуйте снова через 10 секунд.');	
            return false;
        }
    });
}
function sh_ad(mevent, d){
	closeBoxes(false,'');
	if(document.getElementById("chDescKart").checked == true){
		sOnC(d);
		if(mObjects[d] != null){
			try{ mbox.innerHTML = ''; }catch(e){}
			if(document.getElementById("chDescList").checked != true){
				return false;	
			}
		}	
	}
	if(document.getElementById("chDescList").checked != true){
		return false;	
	}
	base_scroll_height = document.documentElement.scrollHeight;
	mbox=document.getElementById("dShortD");
	mbox.innerHTML = cDesc(d);
	mbox.style.left=document.documentElement.offsetWidth-320  +'px'; //mbox.style.left=document.documentElement.scrollLeft+mevent.clientX+10+'px';
	if(document.documentElement.scrollTop+mevent.clientY-mbox.offsetHeight-5 >= 0){
		mbox.style.top=document.documentElement.scrollTop+mevent.clientY-mbox.offsetHeight-5+'px';
	} else {
		mbox.style.top = 0+'px';
	}
	if(mbox.offsetTop < document.documentElement.scrollTop) mbox.style.top = document.documentElement.scrollTop+'px';
	if(document.documentElement.scrollHeight > base_scroll_height || (mbox.offsetTop+mbox.offsetHeight) > document.documentElement.scrollHeight){
		mbox.style.top=base_scroll_height-mbox.offsetHeight+'px';
	}
	mbox.style.visibility="visible";
}
function getClientSTop(){
return self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop)
}
function getClientSLeft(){
return self.pageXOffset || (document.documentElement && document.documentElement.scrollLeft) || (document.body && document.body.scrollLeft);
}
function closeBoxes(chMouse,e){
		try{
			if(chMouse == true){
				var mbox  = document.getElementById("dShortD");
				var oX = mbox.offsetLeft - getClientSLeft();
				var oY = mbox.offsetTop - getClientSTop();
				var oW = mbox.offsetWidth ;
				var oH = mbox.offsetHeight;
				var sX = e.clientX;
				var sY = e.clientY;
				if( ((sX > oX) &&  (sX < (oX +  oW )) ) && (sY > oY) && (sY < (oY + oH))){
					return;
				}
				mbox.style.visibility="hidden";
			}
		}catch(e){}
		try{
			for(el in mObjects){
				try{
					if(!chMouse){
					  mObjects[el].closeInfoWindow();
					}
				}catch(e){}
	       }
		}catch(e){}
}
function hMMenu(k){
	var c = document.getElementById("tCheckers");
	var u = document.getElementById("aMUp");
	var d = document.getElementById("aMDown");
	var ud = document.getElementById("upDown");
	var ct = document.getElementById("category");
	var tf = document.getElementById("tbFields");
	if(k == 'hide'){
		if(document.getElementById("chNoHide").checked != true) return;
		d.style.display = 'none';
	}
	if(d.style.display == 'none'){
		ud.style.display = '';
		$j('#tCheckers').slideUp('slow', function() {
			//ct.style.display = 'none';
			//tf.style.display = 'none';
			d.style.display = '';
			u.style.display = 'none';
	    });
	}else{
		$j('#tCheckers').slideDown('slow', function() {
			//ct.style.display = '';
			//tf.style.display = '';
			d.style.display = 'none';
			u.style.display = '';
		});
	}
}
function setRegionOnMap(){
	var aM  = document.getElementById("ad_region");
	if(aM.value != null && aM.value != ""){
		setCenter(r[aM.value][1], r[aM.value][2], r[aM.value][0])
	}
}
/*vpanel*/
function chMenu(el, allways){
	var m = document.getElementById(el);
	if(allways){
		m.style.display = '';
	}else{
		if(el == "left_outer" || el == "dpanel"){
			if(m.style.display == 'none'){
				m.style.display = '';
			}else{
				m.style.display = 'none';
			}
		}else if(el == "dMapAds"){
			if(m.style.display == 'none'){
				m.style.display = '';
			}
		}
	}	
	map.checkResize();
}
function setHiddenMarkers(){
	var mapType_ = map.getCurrentMapType().getName(true);
	var mapType = '';
	if(mapType_ == 'Карта'){
		mapType = ''; 
	} else if(mapType_ == 'Спут.'){
		mapType = '2';
	} else if(mapType_ == 'Гибр.'){
		mapType = '3';
	}
	var w = document.frmMapLG;
	 w.gmap_lat35.value = adMarker.getPoint().lat().toFixed(10);
	 w.gmap_lng35.value = adMarker.getPoint().lng().toFixed(10);
	 w.gmap_z35.value = map.getZoom();
	 w.gmap_t35.value = mapType;
}
function adAd(cType){
	if(adMarker != null){
		map.removeOverlay(adMarker);
	}
	var blueIcon = new GIcon(G_DEFAULT_ICON);
	blueIcon.image = "components/com_rgmap/images/newad.png";
	adMarker = new GMarker(map.getCenter(), {draggable: true, icon: blueIcon});
	map.addOverlay(adMarker);
	var obyavlenie = 'объявление';
	var cLink = 'ad';
	if(cType == 'org'){
		obyavlenie ='организацию';
		cLink = 'pr';
	}
	var adT = '<center>Что бы добавить '+obyavlenie+' на карту<br>перенесите маркер на нужное вам место и нажмите на&nbsp;&nbsp;&nbsp;&nbsp; <br><input onclick="open_popup_window(\'write_'+cLink+'.asp?admap=1\', \'650\');" type="button" value="эту кнопку"></center>';
	map.openInfoWindowHtml(map.getCenter(),adT);
	try{
		map.removeOverlay(objMarker);
		objMarker = null;
	}catch(e){}
	adMarker.openInfoWindowHtml(adT);
	GEvent.addListener(adMarker, "onmouseover", 
		function(point){
			if(adMarker != null){
				adMarker.openInfoWindowHtml(adT);
				setHiddenMarkers();
			}	
		}
	);
	setHiddenMarkers();
	GEvent.addListener(adMarker, "dragend", 
		function(point){
			if(adMarker != null){
				adMarker.closeInfoWindow();
				adMarker.openInfoWindowHtml(adT);
				setHiddenMarkers();
			}	
		}
	);
}
function fullScreenMap(){
	document.getElementById("dMapAds").style.display = 'none';
	document.getElementById("dpanel").style.display = 'none';
	document.getElementById("left_outer").style.display = 'none';
	document.getElementById("map").style.width='100%';
	document.getElementById("tdAds").style.width='0';
	map.checkResize();
}
/*cards*/
function set_link_1(){
	if(objMarker == null){	
		set_object();
	}
	var last = '';
	if(cardOnly.checked){
		last +=	'&page=' + 'sc';
	}
	var linkText = 'Просмотр карты';
	if(objDesc.value != null && objDesc.value != '' ){
		last +=	'&o=' + encodeURI(objDesc.value);
		linkText = objDesc.value;
	}
	var mapType_ = map.getCurrentMapType().getName(true);
	var mapType = '';
	if(mapType_ == 'Карта'){
		mapType = '';
		document.getElementById("chCard0").checked = true;
	} else if(mapType_ == 'Спут.'){
		mapType = '&m=' + '2';
		document.getElementById("chCard1").checked = true;
	} else if(mapType_ == 'Гибр.'){
		mapType = '&m=' + '3';
		document.getElementById("chCard2").checked = true;
	}
	var latLngMass = hMainLink.value + '&t='+objMarker.getPoint().lat().toFixed(10) + '&g=' + objMarker.getPoint().lng().toFixed(10) + '&z=' + map.getZoom() +  mapType + last;
	txtLink.value =   '<a target="_blank" href="'+latLngMass+'">'+linkText+'</a>';
	txtForumLink.value = '[url='+latLngMass+']'+linkText+'[/url]';
	txtJustLink.value = latLngMass;
	predProsmotr.innerHTML = linkText;
	predProsmotr.href = latLngMass;
}
function set_link_newad(v){
	if(v == '1'){
		return;
	}
	if(objMarker == null){	
		set_object();
	}
	var mapType_ = map.getCurrentMapType().getName(true);
	var mapType = '';
	if(mapType_ == 'Карта'){
		mapType = ''; 
	} else if(mapType_ == 'Спут.'){
		mapType = '2';
	} else if(mapType_ == 'Гибр.'){
		mapType = '3';
	}
	var w = window.opener.document.adminForm;
	 w.gmap_lat35.value = objMarker.getPoint().lat().toFixed(10);
	 w.gmap_lng35.value = objMarker.getPoint().lng().toFixed(10);
	 w.gmap_z35.value = map.getZoom();
	 w.gmap_t35.value = mapType;
}
function set_object(){
	var redArrow = new GIcon(G_DEFAULT_ICON);
	redArrow.image = "components/com_rgmap/images/str_10.gif";
	if(objMarker == null){	
		objMarker = new GMarker(map.getCenter(), {draggable: true, icon: redArrow});
		map.addOverlay(objMarker);
	}else if(centerCard != null && centerCard){
		map.removeOverlay(objMarker);
		objMarker = new GMarker(map.getCenter(), {draggable: true, icon: redArrow});
		map.addOverlay(objMarker);
	}
	set_link();
	GEvent.addListener(objMarker, "drag", 
		function() {
			set_link();
		}
	);
}
/*panel*/
function showTool(tool,allways){
	if(tool=="closeAll"){
		try{
		  document.getElementById(oldTool).style.display = 'none'; 
		}catch(e){}
		return;
	}
	var a = document.getElementById(tool).style;
	if(allways){
		a.display='';
	}else{	
		if(a.display == 'none'){
			a.display='';
		}else{
			a.display= 'none';	
		}
	}	
	if((oldTool != null && oldTool != tool)){
		document.getElementById(oldTool).style.display = 'none'; 
	}
	oldTool = tool;	
}
function setDirections() {
	var fromAddress = document.getElementById("fromAddress").value;	
	var toAddress = document.getElementById("toAddress").value;	
	var locale = document.getElementById("locale").value;		  
	var t0 = document.getElementById("chRoot0").checked;	
	if(t0){
		if(amarker != null && bmarker != null){
			gdir.loadFromWaypoints([amarker.getPoint(),bmarker.getPoint()], { "locale": locale }); 
			map.removeOverlay(amarker);
			amarker == null;
			map.removeOverlay(bmarker);
			bmarker == null;
		}else{
			alert('Не установленны точки маршрута');
		}	
	}else{
		gdir.load("from: " + fromAddress + " to: " + toAddress, { "locale": locale });
	}
}
function handleErrors(){
	if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
    	alert("Адрес не найден. Возможно, адрес был введён недавно. Попробуйте ввести на Английском языке");
	else if (gdir.getStatus().code == G_GEO_SERVER_ERROR)
    	alert("Простите, произошла неизвестная ошибка на сервере, измените данные и попробуйте снова.");
	else if (gdir.getStatus().code == G_GEO_MISSING_QUERY)
		alert("Вы уверены , что вы ввели начальную и конечную точку маршрута?");
	else alert("Простите, произошла неизвестная ошибка, измените данные и попробуйте снова.");
}
function showRootPannel(){
	var c = document.getElementById("dRootCoord");
	var n = document.getElementById("dRootName");
	var cb = document.getElementById("chRoot0");
	var nb = document.getElementById("chRoot1");
	if(c.style.display == 'none'){
		c.style.display = '';
		cb.checked = true;
		n.style.display = 'none'
		nb.checked = false;
	}else{
		c.style.display = 'none';
		cb.checked = false;
		n.style.display = ''
		nb.checked = true;
	}
	
}
function setpm(m){
	if(amarker != null && m == 'a'){
		map.removeOverlay(amarker);
		amarker = null;
	}
	if(bmarker != null && m == 'b'){
		map.removeOverlay(bmarker);
		bmarker = null;
	}
	var marker;
	var blueIcon = new GIcon(G_DEFAULT_ICON);
	blueIcon.image = "components/com_rgmap/images/"+m+".png";
	marker = new GMarker(map.getCenter(), {draggable: true, icon: blueIcon});
	map.addOverlay(marker);
	var md = 'начало';
	if(m == 'a'){
		amarker = marker;
	}else{
		bmarker = marker;
		md = 'конец';
	}
	marker.openInfoWindowHtml('Перенесите этот маркер в ' + md + ' маршрута');
	GEvent.addListener(marker, "drag", 
		function(point){
			marker.closeInfoWindow();
		}
	);
}

