var moveState = false;
var x0, y0;
var divX0, divY0;
var dragelem = 0;

$(document).ready(function(){
	$('#addbrand').dialog({
		autoOpen:false, modal: true, autoResize: true, resizable: false,
		overlay: {'opacity':0.6, 'background':'black'},
		buttons: {
			'Отменить': function() {
				$(this).dialog('close');
			},
			'Отправить': function() {
				$('form#addbrandform').submit();
				$(this).dialog('close');
			}
		}

	});
});
function addBrand(){
	$('#addbrand').dialog('open');
}

document.onmouseup = function(event) {
	event = event || window.event;
	if(dragelem>0){
		endDrag(event);
	}	
};

window.onmousemove = function(event){
	if(dragelem>0){
		event = event || window.event;
		elem = document.getElementById('dragbrandtitle'+dragelem);
        	elem.style.left = divX0 + defPosition(event).x - x0 + 'px';
	        elem.style.top  = divY0 + defPosition(event).y - y0 + 'px';
        }
};

function startDrag(id, event){
	event = event || window.event;
	img = new Image();
	img.src = document.getElementById('brandtitle'+id).src;
	img.className = 'alphaelem60';
	img.style.position = 'absolute';
	img.id = 'dragbrandtitle'+id;
	img.style.zIndex = 1000;
	img.onmousemove = function(event){
		if(dragelem>0){
			event = event || window.event;
			elem = document.getElementById('dragbrandtitle'+dragelem);
        		elem.style.left = divX0 + defPosition(event).x - x0 + 'px';
	        	elem.style.top  = divY0 + defPosition(event).y - y0 + 'px';
	        }
	};
	document.body.appendChild(img);
	x0 = defPosition(event).x;
	y0 = defPosition(event).y;
	img.style.left = x0 + 1+ 'px';
	img.style.top = y0 + 1 + 'px';
	divX0 = parseInt(img.style.left);
	divY0 = parseInt(img.style.top);
	dragelem = id;
}

function defPosition(event) {
    var x = y = 0;
    if (document.attachEvent != null) { // Internet Explorer & Opera
        x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
        y = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop;
    }
    if (!document.attachEvent && document.addEventListener) { // Gecko
        x = event.clientX + window.scrollX;
        y = event.clientY + window.scrollY;
    }
    return {x:x, y:y};
}

function endDrag(event){
	event = event || window.event;
	document.body.removeChild(document.getElementById('dragbrandtitle'+dragelem));
	if(event.target && event.target.tagName && event.target.tagName.toLowerCase() == 'img' && event.target.src.indexOf('google') != -1){
		openAddMarker({lng:0, lat:0}, dragelem);
	}
	dragelem = 0;
}

function openAddMarker(point, dragelem){
	zoomindex = map.getZoom();
	document.getElementById('markerform').reset();
	$('form#markerform input[name=x]').val(point.lng);
	$('form#markerform input[name=y]').val(point.lat);
	$('form#markerform input[name=brand_id]').val(dragelem);
	$('form#markerform select[name=size]').val(zoomindex);
	$('form#markerform input[name=act]').val('');
	$('form#markerform input[name=address]').val('');
	$('form#innercodeblock').hide();
	$('form#markerform input[name=id]').val(0);
	document.getElementById('region').innerHTML = '';
	document.getElementById('city').innerHTML = '';
	showCountries();
	$('#addmarker').dialog('open');
}

function addMarker(){
	var req = new JsHttpRequest	();
	req.onreadystatechange = function() {
		if (req.readyState == 4){
			if(req.responseJS.res == 1){
				var center = new GLatLng($('form#markerform input[name=x]').val(), $('form#markerform input[name=y]').val());
				var afsIcon = new GIcon(G_DEFAULT_ICON);
				afsIcon.image = brandimg[$('form#markerform input[name=brand_id]').val()].src;
				afsIcon.iconSize = new GSize(parseInt(brandimg[$('form#markerform input[name=brand_id]').val()].width/2), parseInt(brandimg[$('form#markerform input[name=brand_id]').val()].height/2));
				                
				// Set up our GMarkerOptions object
				markerOptions = { icon:afsIcon, draggable: true };
				
				var marker = new GMarker(center, markerOptions);
				map.addOverlay(marker);

				if(req.responseJS.imgdata) {
					initImageDesign(false, req.responseJS.imgdata);
				}
			}
		}
	};	
	req.open(null, root+'/ajax_addafs/1.html', true);
	req.send({zoomindex: $('form#markerform select[name=size]').val(), 
		x: $('form#markerform input[name=x]').val(), 
		y: $('form#markerform input[name=y]').val(),
		title: $('form#markerform input[name=title]').val(),
		brand_id: $('form#markerform input[name=brand_id]').val(),
		city: $('form#markerform select[name=city]').val(),
		region: $('form#markerform select[name=region]').val(),
		country: $('form#markerform select[name=country]').val(),
		address: $('form#markerform input[name=address]').val(),
		innercode: $('form#markerform input[name=innercode]').val(),
		photo: document.getElementById('markerform').photo
		//id: $('form#markerform select[name=country]').val(),
	});

	dragelem = 0;
}

function saveMarker(){
	var req = new JsHttpRequest	();
	req.onreadystatechange = function() {
		if (req.readyState == 4){
			if(req.responseJS.imgdata) initImageDesign(false, req.responseJS.imgdata);
		}
	};
	req.open('post', root+'/ajax_saveafs/1.html', true);
	req.send({zoomindex: $('form#markerform select[name=size]').val(), 
		x: $('form#markerform input[name=x]').val(), 
		y: $('form#markerform input[name=y]').val(),
		title: $('form#markerform input[name=title]').val(),
		brand_id: $('form#markerform input[name=brand_id]').val(),
		city: $('form#markerform select[name=city]').val(),
		region: $('form#markerform select[name=region]').val(),
		country: $('form#markerform select[name=country]').val(),
		id: $('form#markerform input[name=id]').val(),
		address: $('form#markerform input[name=address]').val(),
		innercode: $('form#markerform input[name=innercode]').val(),
		photo: document.getElementById('markerform').photo
	});
}
function saveAFSFromAnotherPage(){
	var newafs=($('form#markerform input[name=id]').val()>0);
	var req = new JsHttpRequest();
	req.onreadystatechange = function() {
		if (req.readyState == 4){
			if(req.responseJS.imgdata) initImageDesign(false, req.responseJS.imgdata);
		}
	};
	req.open('post', root+'/ajax_saveafs/1.html', true);
	req.send({zoomindex: $('form#markerform select[name=size]').val(), 
		x: $('form#markerform input[name=x]').val(), 
		y: $('form#markerform input[name=y]').val(),
		title: $('form#markerform input[name=title]').val(),
		brand_id: $('form#markerform input[name=brand_id]').val(),
		city: $('form#markerform select[name=city]').val(),
		region: $('form#markerform select[name=region]').val(),
		country: $('form#markerform select[name=country]').val(),
		id: $('form#markerform input[name=id]').val(),
		address: $('form#markerform input[name=address]').val(),
		innercode: $('form#markerform input[name=innercode]').val(),
		photo: document.getElementById('markerform').photo
	});
}

$(document).ready(function(){
	$('#addmarker').dialog({
		autoOpen:false, modal: true, autoResize: true, resizable: false,
		overlay: {'opacity':0.6, 'background':'black'},
		buttons: {
			'Отмена': function() {
				$(this).dialog('close');
			},
			'Сохранить': function() {
				if($('form#markerform input[name=act]').val() == ''){
					addMarker();
				}else{
					saveMarker();
				}	
				$(this).dialog('close');
			}
		}

	});
	$('#prices').dialog({
		autoOpen:false,modal:true,width:660,
		buttons: {
			'Закрыть': function() {
				$(this).dialog('close');
			},
			'Сохранить': function() {
				savePrices();
				$(this).dialog('close');
			}
		}

	});
});

function savePrices(){
	var inps = document.getElementById('pricesvalues').getElementsByTagName('input');
	var ids = '';
	var vals = '';
	for(var key in inps){
		if((typeof inps[key].id != 'undefined') && (inps[key].id!='probe_date')){
		        ids += inps[key].id+'|';
		        vals += inps[key].value+'|';
		}
	}
	var req = new JsHttpRequest();
	req.open(null, root+'/ajax_saveafsqual/1.html', true);
	req.send({id: document.getElementById('pricesid').value, probe_date: document.getElementById('probe_date').value, ids: ids, vals: vals});
}

function savePricesFromAnotherPage(id){
	var inps = document.getElementById('pricesvalues').getElementsByTagName('input');
	var ids = '';
	var vals = '';
	for(var key in inps){
		if((typeof inps[key].id != 'undefined') && (inps[key].id!='probe_date')){
		        ids += inps[key].id+'|';
		        vals += inps[key].value+'|';
		}
	}
	var req = new JsHttpRequest();
	req.open(null, root+'/ajax_saveafsqual/1.html', true);
	req.send({id: id, probe_date: document.getElementById('probe_date').value, ids: ids, vals: vals});
}

function openPrices(id){
	$('#prices').dialog('open');
}

function editAFS(id){
	zoomindex = map.getZoom();
	point = map.markers[id].getLatLng();

	$('form#markerform input[name=act]').val('save');
	document.getElementById('markerform').reset();

	var req = new JsHttpRequest	();
	req.onreadystatechange = function() {
		if (req.readyState == 4){
			$('form#innercodeblock').show();
			document.getElementById('country').innerHTML = req.responseJS.countries;
			document.getElementById('region').innerHTML = req.responseJS.regions;
			document.getElementById('city').innerHTML = req.responseJS.cities;
			$('form#markerform input[name=x]').val(point.lng());
			$('form#markerform input[name=y]').val(point.lat());
			$('form#markerform input[name=brand_id]').val(req.responseJS.brand);
			$('form#markerform input[name=title]').val(req.responseJS.title);
			document.getElementById('size').value = map.markers[id].size;
			document.getElementById('size').title = map.markers[id].size;
			$('form#markerform select[name=country]').val(req.responseJS.country);
			$('form#markerform select[name=region]').val(req.responseJS.region);
			$('form#markerform select[name=city]').val(req.responseJS.city);
			$('form#markerform input[name=address]').val(req.responseJS.address);
			$('form#markerform input[name=innercode]').val(req.responseJS.innercode);
			$('#probe_date').val(req.responseJS.probe_date);
			$('form#markerform input[name=id]').val(id);
			document.getElementById('pricesid').value = id;
			for(var key in req.responseJS.resqualsids1){
				document.getElementById(req.responseJS.resqualsids1[key]+'_'+req.responseJS.resqualsids2[key]).value = req.responseJS.resqualsvals[key];
			}

			document.getElementById('openprices').onclick = function(){
				openPrices(id);
			};
			$('#addmarker').dialog('open');
		}
	};	
	req.open('post', root+'/ajax_getlocation/1.html', true);
	req.send({id: id});
}

function editAFSFromAnotherPage(id){
	var req = new JsHttpRequest	();
	req.onreadystatechange = function() {
		if (req.readyState == 4){
			$.unblockUI();
			var d = document.getElementById('manafs');
			if(!d) d = document.createElement('div');
			d.id = new Date().getTime();
			d.id = 'manafs';
			d.title = 'Редактирование АЗС';
			d.innerHTML = req.responseJS.html;
			document.body.appendChild(d);
			for(var key in req.responseJS.resqualsids1){
				document.getElementById(req.responseJS.resqualsids1[key]+'_'+req.responseJS.resqualsids2[key]).value = req.responseJS.resqualsvals[key];
			}

			$('#'+d.id).dialog({
				autoOpen:true, modal: true, autoResize: true, resizable: false,
				overlay: {'opacity':0.6, 'background':'black'},
				buttons: {
					'Отмена': function() {
						$(this).dialog('close');
					},
					'Сохранить': function() {
						saveAFSFromAnotherPage();
						$(this).dialog('close');
					}
				},
				close: function(){
					$('#prices').dialog('destroy');
					document.getElementById('prices').parentNode.removeChild(document.getElementById('prices'));
					$(this).dialog('destroy');
				}
			});
			document.getElementById('openprices').onclick = function(){
				openPrices(id);
				return false;
			};
			$('#prices').dialog({
				autoOpen:false, modal: true,width:660,
				overlay: {'opacity':0.6, 'background':'black'},
				buttons: {
					'Закрыть': function() {
						$(this).dialog('close');
					},
					'Сохранить': function() {
						savePricesFromAnotherPage(id);
						$(this).dialog('close');
					}
				}
			});
		}
	};
	$.blockUI(bui);
	req.open('post', root+'/ajax_manageafs/1.html', true);
	req.send({id: id});
}

function getAFS(zoomindex, brand){
	if(window.reqExists)
		window.reqExists.abort();
	var req = new JsHttpRequest	();
	req.onreadystatechange = function() {
		if (req.readyState == 4){
			if(!req.responseJS) return;
			if(req.responseJS.res == 1){
				r = req.responseJS;
				if(!mgr) mgr = new MarkerManager(map);
				var tmpmarkers = [];
				if(mgr.mapZoom_ != map.getZoom()) {
					mgr.clearMarkers();
					map.markers = [];
				}
				for(var i=0;i<r.count;i++){
					if(brand && (r.brand[i] != brand)) continue;
					if(map.markers[r.id[i]]) continue;
					// Создание маркера  
					var markerPoint = new GLatLng(parseFloat(r.y[i]), parseFloat(r.x[i]));
					// Задаем возможность перетаскивания  
					var markerOptions = {};
					//marker.draggable(false);  
					// Всплывающая подсказка  
					markerOptions.title = r.title[i];  
					markerOptions.draggable = false;
	
					var icon = new GIcon(G_DEFAULT_ICON);
					icon.image = brandimg[r.brand[i]].src;
					icon.shadow = images+'/blank.gif';
					icon.iconSize = new GSize(16, 16);
					icon.iconAnchor = new GPoint(8, 8);
					icon.infoWindowAnchor = new GPoint(18, 0);
					markerOptions.icon = icon;
	
					var newmarker = new GMarker(markerPoint, markerOptions);
					map.markers[r.id[i]] = newmarker;
					tmpmarkers.push(newmarker);
						
					prices = '<p style="text-align:left;clear:right;">';
					for(pk in r.prices[i]){
						prices += r.prices[i][pk]['title'] + ': '+r.prices[i][pk]['price']+'<br/>';
					}
					prices += '</p>';
					// Задаем заголовок и текст информационного окна  
					map.markers[r.id[i]].targetId = r.id[i];
					map.markers[r.id[i]].info = "<div style='textblack;font-size:11px !important;'>"+r.title[i]+'<br/>'+r.rating[i]+'<img src="'+r.brandlogo[i].replace("small", '')+'" style="float:left;width:32px;height:32px;"><p style="clear:right;"><a href="#" class="textblue" onClick="editAFS('+r.id[i]+');return false;">редактировать...</a><br/><a class="textblue" href="'+root+'/gas_deleteafs/'+r.id[i]+'.html" onclick="return confirm(\'Вы действительно хотите безвозвратно удалить АЗС?\');">Удалить АЗС</a></p>';
					map.markers[r.id[i]].size = r.size[i];
					map.markers[r.id[i]].brand = r.brand[i];
					GEvent.addListener(map.markers[r.id[i]], "click", function() {
					    this.openInfoWindowHtml(this.info);
					});
					GEvent.addListener(map.markers[r.id[i]], 'infowindowopen', function(){
						infoopened = this;
					});
					GEvent.addListener(map.markers[r.id[i]], 'infowindowclose', function(){
						infoopened = null;
					});
				}
				if(tmpmarkers.length>0) mgr.addMarkers(tmpmarkers, map.getZoom(), map.getZoom());
				// Перерисовка карты  					
				infoopenedCache = infoopened;
				mgr.refresh(); 
				if(infoopenedCache){
					infoopenedCache.openInfoWindowHtml(infoopenedCache.info);
					infoopenedCache = null;
				}
			}else{
			}
			window.reqExists = null;
		}
	};	
	x1 = map.getBounds().getSouthWest().lng();
	y1 = map.getBounds().getSouthWest().lat();
	x2 = map.getBounds().getNorthEast().lng();
	y2 = map.getBounds().getNorthEast().lat();
				
	req.open('post', root+'/ajax_showafs/1.html', true);
	req.send({zoomindex: zoomindex, x1: x1, x2: x2, y1: y1, y2: y2});
	window.reqExists = req;
}

function prevBrands(div){
	div = document.getElementById(div);
	if(div.sid){
		return false;
	}
	div.startOffset = parseInt((div.scrollWidth-100)%div.clientWidth)/2;
	if(div.scrollLeft == div.startOffset){
		return false;
	}else{
		div.speed = 4;
		div.sid = setInterval("scrBLeft('"+div.id+"',"+parseInt(div.scrollLeft-div.clientWidth)+");", 10);
	}
}

function nextBrands(div){
	div = document.getElementById(div);
	if(div.sid){
		return false;
	}
	div.startOffset = parseInt((div.scrollWidth-100)%div.clientWidth)/2;
	if(div.scrollLeft == div.scrollWidth - 100 - div.clientWidth - div.startOffset){
		return false;
	}else{
		div.speed = 4;
		div.sid = setInterval("scrBRight('"+div.id+"',"+parseInt(div.scrollLeft+div.clientWidth)+");", 10);
	}
}
function scrBRight(div, limit){
	div = document.getElementById(div);
	if(limit - div.scrollLeft > (div.clientWidth - 220)){
		div.scrollLeft += div.speed;
		div.speed += 2;
	}else{
		if(limit - div.scrollLeft > 0){
			div.scrollLeft += div.speed;
			div.speed -= 4;
		}else{
			div.scrollLeft = limit;
			clearInterval(div.sid);
			div.sid = 0;
		}	
	}
}
function scrBLeft(div, limit){
	div = document.getElementById(div);
	if(div.scrollLeft - limit > (div.clientWidth - 220)){
		div.scrollLeft -= div.speed;
		div.speed += 2;
	}else{
		if(div.scrollLeft - limit > 0){
			div.scrollLeft -= div.speed;
			div.speed -= 4;
		}else{
			div.scrollLeft = limit;
			clearInterval(div.sid);
			div.sid = 0;
		}	
	}
}

function changeCities(id){
	var req = new JsHttpRequest	();
	req.onreadystatechange = function() {
		if (req.readyState == 4){
			document.getElementById('city').innerHTML = '';
			options = '';
			for(var i=0; i<req.responseJS.cities.length; i++){
				options += '<option value="'+req.responseJS.cities[i][0]+'">'+req.responseJS.cities[i][1]+'</option>';
			}	
			var cities = document.getElementById('city');
			cities.innerHTML = options;
			if(req.responseJS.count > 0){
				cities.style.visibility = 'visible';
			}else{
				cities.value = 0;
				cities.style.visibility = 'hidden';
			}	
		}
	};
	req.open('post', root+'/ajax_showcities/1.html', false);
	req.send({id:id});
}

function changeRegions(id){
	var req = new JsHttpRequest	();
	req.onreadystatechange = function() {
		if (req.readyState == 4){
			document.getElementById('region').innerHTML = '';
			options = '';
			for(var i=0; i<req.responseJS.regions.length; i++){
				options += '<option value="'+req.responseJS.regions[i][0]+'">'+req.responseJS.regions[i][1]+'</option>';
			}	
			document.getElementById('region').innerHTML = options;
			changeCities(document.getElementById('region').value);
			if(req.responseJS.count > 0){
				document.getElementById('region').style.visibility = 'visible';
			}else{
				document.getElementById('region').value = 0;
				document.getElementById('region').style.visibility = 'hidden';
			}	
		}
	};
	req.open('post', root+'/ajax_showregions/1.html', false);
	req.send({id:id});
}

function showCountries(){
	var req = new JsHttpRequest	();
	req.onreadystatechange = function() {
		if (req.readyState == 4){
			document.getElementById('country').innerHTML = '';
			options = '';
			var selected = '';
			for(var i in req.responseJS.countries) {
				if(i == 220) selected = 'selected="selected"';
				else selected = '';
				options += '<option value="'+i+'" '+selected+'>'+req.responseJS.countries[i]+'</option>';
			}	
			document.getElementById('country').innerHTML = options;
			changeRegions(220);
		}
	};
	req.open('post', root+'/ajax_showcountries/1.html', false);
	req.send();
}
function hideAfs(){
	if(mgr){
		mgr.clearMarkers();
		map.markers = [];
	}
}
function viewAFS(zoomindex){
	if(window.reqExists) window.reqExists.abort();
	var req = new JsHttpRequest	();
	req.onreadystatechange = function() {
		if (req.readyState == 4){
			if(!req.responseJS) return;
			if(req.responseJS.res == 1){
				r = req.responseJS;
				if(!mgr) mgr = new MarkerManager(map);
				var tmpmarkers = [];
				mgr.clearMarkers();
				map.markers = [];
				for(var i=0;i<r.count;i++) {
					// Создание маркера  
					var markerPoint = new GLatLng(parseFloat(r.y[i]), parseFloat(r.x[i]));
					// Задаем возможность перетаскивания  
					var markerOptions = {};
					//marker.draggable(false);  
					// Всплывающая подсказка  
					markerOptions.title = r.title[i];  
					markerOptions.draggable = false;

					var icon = new GIcon(G_DEFAULT_ICON);
					icon.image = brandimg[r.brand[i]].src;
					icon.shadow = images+'/blank.gif';
					icon.iconSize = new GSize(16, 16);
					icon.iconAnchor = new GPoint(8, 8);
					icon.infoWindowAnchor = new GPoint(18, 0);
					markerOptions.icon = icon;

					var newmarker = new GMarker(markerPoint, markerOptions);
					
					prices = '<p style="text-align:left;clear:right;">';
					for(pk in r.prices[i]){
						prices += r.prices[i][pk]['title'] + ': '+r.prices[i][pk]['price']+'<br/>';
					}
					prices += '</p>';
					// Задаем заголовок и текст информационного окна  
					newmarker.info = "<div style='textblack;font-size:11px !important;'>"+r.title[i]+'<br/>'+r.rating[i]+'<img src="'+r.brandlogo[i].replace("small", '')+'" style="float:left;width:32px;height:32px;margin-right:10px;">'+r.address[i]+'<br/>'+prices+'<br/><div class="clear"></div><a class="textblue" href="'+root+'/gas_afs/'+r.id[i]+'.html">детальнее...</a><br/></div>';
					//newmarker.size = r.size[i];
					newmarker.brand = r.brand[i];
					newmarker.targetId = r.id[i];
					GEvent.addListener(newmarker, "click", function() {
					    this.openInfoWindowHtml(this.info);
					  });
					GEvent.addListener(newmarker, 'infowindowopen', function(){
						infoopened = this;
					});
					GEvent.addListener(newmarker, 'infowindowclose', function(){
						infoopened = null;
					});
					map.markers[r.id[i]] = newmarker;
					tmpmarkers.push(newmarker);
				}
				infoopenedCache = infoopened;
				if(tmpmarkers.length>0) {
					mgr.addMarkers(tmpmarkers, map.getZoom());
					mgr.refresh(); 
					updateAFS();
				}
				if(infoopenedCache) {
					infoopenedCache.openInfoWindowHtml(infoopenedCache.info);
					infoopenedCache = null;
				}
			}
			window.reqExists = null;
		}
	};	
	x1 = map.getBounds().getSouthWest().lng();
	y1 = map.getBounds().getSouthWest().lat();
	x2 = map.getBounds().getNorthEast().lng();
	y2 = map.getBounds().getNorthEast().lat();

	req.open('post', root+'/ajax_showafs/1.html', true);
	req.send({zoomindex: zoomindex, x1: x1, x2: x2, y1: y1, y2: y2});
	window.reqExists = req;
}

function updateAFS(){
	for(var key in map.markers){
		if(alowedbrands[map.markers[key].brand]){
			map.markers[key].show();
		}else{
			map.markers[key].hide();
		}
	}
	//mgr.refresh(); 
}

function allowAllBrands(ch, className){
	$('#'+className+' input[type=checkbox]').each(function(i, elem){
		elem.checked = ch.checked;
	});
	if(ch.checked){
		for(var key in alowedbrands)
			alowedbrands[key] = 1;
	}else{
		for(var key in alowedbrands)
			alowedbrands[key] = 0;
	}
	updateAFS();
};

function allowBrand(ch, id){
	if(ch.checked){
		alowedbrands[id] = 1;
	}else{
		alowedbrands[id] = 0;
	}
	updateAFS();
}
function startAddCheckpoint(){
	if(!checkpointimg){
		checkpointimg = new Image();
		checkpointimg.src = images+'/theme1/route-c.png';
		checkpointimg.style.position = 'absolute';
		checkpointimg.id = 'checkpointdrag';
		document.body.appendChild(checkpointimg);
	}
	checkpointdrag = true;
	if(document.addEventListener){
		document.addEventListener("mousemove", dragcheckpoint, false);
	}else{
		document.attachEvent("onmousemove", dragcheckpoint);
	}
}
function dragcheckpoint(e){
	var event = e || window.event;
	if(!checkpointdrag){
		if(document.addEventListener){
			document.removeEventListener("mousemove", dragcheckpoint, false);
		}else{
			document.detachEvent("onmousemove", dragcheckpoint);
		}
		return false;
	}
	var cursorXY = defPosition(event);
	checkpointimg.style.left = cursorXY.x - 13 + 'px';
	checkpointimg.style.top = cursorXY.y - 40 + 'px';
}
function addCheckPoint(overlay, latlng, overlaylatlng){
	if(!checkpointdrag) return;
	var x = latlng.lng();
	var y = latlng.lat();

	var markerPoint = new GLatLng(parseFloat(y), parseFloat(x));
	var markerOptions = {};
	markerOptions.draggable = true;

	var icon = new GIcon(G_DEFAULT_ICON);
	icon.image = images+'/theme1/route-c.png';
	icon.shadow = images+'/blank.gif';
	icon.iconSize = new GSize(24, 33);
	icon.iconAnchor = new GPoint(12, 33);
	icon.infoWindowAnchor = new GPoint(12, 0);
	markerOptions.icon = icon;
	var checkpoint = new GMarker(markerPoint, markerOptions);
	checkpoints.push(checkpoint);
	checkpointsInfo.push({title: 'Введите название метки'});
	mgrsf.addMarkers([checkpoint], 1, 21);
	mgrsf.refresh();
	checkpointdrag = false;
	if(document.getElementById('checkpointdrag').parentNode.removeChild(document.getElementById('checkpointdrag'))){
		checkpointimg = null;
	}
	var index = checkpointsInfo.length - 1;
	GEvent.addListener(checkpoint, 'click', function(){
		editCheckPoint(index);
	});
	editCheckPoint(index);
}
function showCheckpointsHints(){
//	for(var i = 0; i < checkpoints.length; i++){
//		checkpoints[i].openInfoWindowHtml(checkpointsInfo[i].title);
//	}
}
function hideCheckpointsHints(){
//	for(var i = 0; i < checkpoints.length; i++){
//		checkpoints[i].closeInfoWindow();
//	}
}
function editCheckPoint(index){
	$('#checkpointinfo').dialog({
		autoOpen: true, modal: false, autoResize: true, resizable: false,
		buttons: {
			'Ок': function(){
				checkpointsInfo[index].title = document.getElementById('checkpointinfoTitle').value || ('Метка №'+(index+1));
				var number = 1;
				for(var i = 0; i< checkpointsInfo.length; i++){
					if(checkpointsInfo[i].title == 'Введите название метки'){
						checkpointsInfo[i].title = 'Метка №'+number;
					}else{
						if(checkpointsInfo[i].title.indexOf('Метка №') != -1){
							checkpointsInfo[i].title = 'Метка №'+number;
						}else
							continue;
					}
					number++;
				}
				$(this).dialog('close');
			},
			'Отмена': function(){
				checkpointsInfo[index].title = document.getElementById('checkpointinfoTitle').value || ('Метка №'+(index+1));
				var number = 1;
				for(var i = 0; i< checkpointsInfo.length; i++){
					if(checkpointsInfo[i].title == 'Введите название метки'){
						checkpointsInfo[i].title = 'Метка №'+number;
					}else{
						if(checkpointsInfo[i].title.indexOf('Метка №') != -1){
							checkpointsInfo[i].title = 'Метка №'+number;
						}else
							continue;
					}
					number++;
				}
				$(this).dialog('close');
			}
		},
		close: function(){
			$(this).dialog('destroy');
			fillCheckpointsTable();
		},
		open: function(){
			document.getElementById('checkpointinfoTitle').value = checkpointsInfo[index].title;
			document.getElementById('removeCheckPoint').onclick = function(){
				removeCheckPoint(index);
				$('#checkpointinfo').dialog('destroy');
				return false;
			};
		}
	});
	fillCheckpointsTable();
}
function removeCheckPoint(num){ 	
	mgrsf.removeMarker(checkpoints[num]);
	mgrsf.refresh();
	checkpoints.splice(num, 1);
	checkpointsInfo.splice(num, 1);
	if(polyline)
		map.removeOverlay(polyline);
	fillCheckpointsTable();
}
function setSF(){
	mgrsf.clearMarkers();
	if(polyline)
		map.removeOverlay(polyline);
	sfmarkers = [];
	
	var c10km = 0.02000009;
	var x1 = map.getCenter().lng();
	var y1 = map.getCenter().lat();
	var dirX = Math.random(0, 1) - 0.5 > 0 ? 1 : -1;
//	var dirY = Math.random(0, 1) - 0.5 > 0 ? 1 : -1;
	
	var x2 = x1 + dirX*( c10km + Math.random(0, c10km)/2);//random X in +/- ( 10 + 0..5 km )
	var y2 = y1 + dirX*( c10km + Math.random(0, c10km)/2);//random Y in +/- ( 10 + 0..5 km )

	var markerPoint = new GLatLng(parseFloat(y1), parseFloat(x1));
	var markerOptions = {};
	markerOptions.draggable = true;

	var icon = new GIcon(G_DEFAULT_ICON);
	icon.image = images+'/theme1/route-s.png';
	icon.shadow = images+'/blank.gif';
	icon.iconSize = new GSize(24, 33);
	icon.iconAnchor = new GPoint(12, 33);
	icon.infoWindowAnchor = new GPoint(18, 0);
	markerOptions.icon = icon;
	var my_startmarker = new GMarker(markerPoint, markerOptions);
	sfmarkers.push(my_startmarker);

	var markerPoint2 = new GLatLng(parseFloat(y2), parseFloat(x2));
	var markerOptions2 = {};
	markerOptions2.draggable = true;

	var icon2 = new GIcon(G_DEFAULT_ICON);
	icon2.image = images+'/theme1/route-f.png';
	icon2.shadow = images+'/blank.gif';
	icon2.iconSize = new GSize(24, 33);
	icon2.iconAnchor = new GPoint(12, 33);
	icon2.infoWindowAnchor = new GPoint(18, 0);
	markerOptions2.icon = icon2;
	var my_endmarker = new GMarker(markerPoint2, markerOptions2);
	sfmarkers.push(my_endmarker);
	
  	mgrsf.addMarkers(sfmarkers, 1, 21);
	for(var i = 0; i < checkpoints.length; i++){
		checkpoints.splice(i, 1);
		checkpointsInfo.splice(i, 1);
	}
	mgrsf.refresh();
	fillCheckpointsTable();
};
function fillCheckpointsTable(){
	var table = document.getElementById('checkpointstable');
	var tmpdiv = document.createElement('div');
	var html = "<table cellpadding='0' cellspacing='0' id='checkpointstable'>";
	html += "<tr>"+table.rows[0].innerHTML+"</tr>";
	//add start marker
	rowHTML = "<tr><td style='width:40px;text-align:center;' class='noleftborder'><img style='width:16px;height:24px;' src='"+images+"/theme1/route-s.png'></td>";
	rowHTML += "<td class='textblack' style='text-align:left;'>Начальная точка</td>";
	rowHTML += "<td class='textblack' style='text-align:center;' id='routelength0'>-</td>";
	rowHTML += "<td class='textblack norightborder' style='text-align:center;'></td></tr>";
	html += rowHTML;
	for(var i=0; i < checkpoints.length; i++){
		rowHTML = "<tr><td style='width:40px;text-align:center;' class='noleftborder'><img src='"+images+"/theme1/route-a.png'></td>";
		rowHTML += "<td class='textblack' style='text-align:left;'>"+checkpointsInfo[i].title+"</td>";
		rowHTML += "<td class='textblack' style='text-align:center;' id='routelength"+(i+1)+"'></td>";
		rowHTML += "<td class='textblack norightborder' style='text-align:center;'><a href='#' class='textblue underlined' onclick='editCheckPoint("+i+");return false;'>Редактировать</a></td></tr>";
		html += rowHTML;
	}
	rowHTML = "<tr><td style='width:40px;text-align:center;' class='noleftborder'><img style='width:16px;height:24px;' src='"+images+"/theme1/route-f.png'></td>";
	rowHTML += "<td class='textblack' style='text-align:left;'>Конечная точка</td>";
	rowHTML += "<td class='textblack' style='text-align:center;' id='routelength"+(checkpoints.length+1)+"'></td>";
	rowHTML += "<td class='textblack norightborder' style='text-align:center;'></td></tr>";
	html = html + rowHTML;
	tmpdiv.innerHTML = html + "</table>";
	var parent = table.parentNode;
	parent.removeChild(table);
	parent.appendChild(tmpdiv.firstChild);
}
function setRoute(){
	if((typeof my_startmarker != 'undefined') && (typeof my_endmarker != 'undefined'))
		setSF();
/*	my_startmarker.enddrag(  
		function(point) {  
			calcRoute();
		}  
	);                          
	my_endmarker.enddrag(
		function(point) {  
			calcRoute();
		}  
	);                          
	calcRoute();*/
}
function calcRoute(){
	if(typeof my_startmarker == 'undefined')
		setRoute();
	var directions = new GDirections(/*map, document.getElementById('directions')*/);
	if(polyline)
		map.removeOverlay(polyline);
	GEvent.addListener(directions, "load", function() {
		polyline = directions.getPolyline();
		map.addOverlay(polyline);
		if(rashod[parseInt(0+parseInt(document.getElementById('routeauto').value))]){
			route_length = directions.getDistance().meters;
			document.getElementById('routeresults').innerHTML = "Длина маршрута: <b class='orangeb'>"+(route_length/1000).toFixed(2)+" км</b><br>"+
			"Примерный расход: <b class='blueb'>"+((route_length/100000)*rashod[parseInt(0+parseInt(document.getElementById('routeauto').value))]).toFixed(2)+" л</b>";
		}else{
			route_length = directions.getDistance().meters;
			document.getElementById('routeresults').innerHTML = "Длина маршрута: <b class='orangeb'>"+(route_length/1000).toFixed(2)+" км</b><br>"+
			"Примерный расход: <b class='blueb'>неизвестно</b>";
		}
		var routes_num = directions.getNumRoutes();
		for(var i = 0; i < routes_num; i++){
			var route_info = directions.getRoute(i);
			document.getElementById('routelength'+(i+1)).innerHTML = (route_info.getDistance().meters/1000).toFixed(2);
		}
	});	
	var waypoints = [];
	waypoints.push([sfmarkers[0].getLatLng().lat(), sfmarkers[0].getLatLng().lng()]);
	for(var i=0; i < checkpoints.length; i++){
		waypoints.push([checkpoints[i].getLatLng().lat(), checkpoints[i].getLatLng().lng()]);
	}
	waypoints.push([sfmarkers[1].getLatLng().lat(), sfmarkers[1].getLatLng().lng()]);
	directions.loadFromWaypoints(waypoints, { "locale": 'ru_RU' , 'preserveViewport': true, 'getPolyline': true});
/*
	
	
	if(typeof my_routelayer != 'undefined'){map.remove(my_routelayer);}
	route_length = 0;
	my_routelayer = new VLayer();  
	map.add(my_routelayer);  
	map.repaint();

	document.getElementById('routeresults').innerHTML = "<img src='../images/theme1/preloader.gif' style='margin-left:30px;margin-top:8px;'/>";
	var var_query = new Array();
	var_query.push("route");
	var_query.push(my_startmarker.coords()[0]);
	for(var o = 0;o<checkpoints.length;o++){
		var_query.push({lng: checkpoints[o].coords()[0].lng, lat: checkpoints[o].coords()[0].lat});
	}
	var_query.push(my_endmarker.coords()[0]);
	for(o=1;o<var_query.length-1;o++){
		if(o==var_query.length-2){
			VRemoteCall.request(var_query[0], var_query[o], var_query[o+1], function callback(route){
				my_routelayer.add(route);  
				//map.add(route);
				if(rashod[parseInt(0+parseInt(document.getElementById('routeauto').value))]){
					route_length += route.distance();
					document.getElementById('routeresults').innerHTML = "Длина маршрута: <b class='orangeb'>"+(route_length/1000).toFixed(3)+" км</b><br>"+
					"Примерный расход: <b class='blueb'>"+((route_length/100000)*rashod[parseInt(0+parseInt(document.getElementById('routeauto').value))]).toFixed(2)+" л</b>";
				}else{
					route_length += route.distance();
					document.getElementById('routeresults').innerHTML = "Длина маршрута: <b class='orangeb'>"+(route_length/1000).toFixed(3)+" км</b><br>"+
					"Примерный расход: <b class='blueb'>неизвестно</b>";
				}
				map.repaint();
				return false;
			});
		}else{
			VRemoteCall.request(var_query[0], var_query[o], var_query[o+1], function callback(route){
				my_routelayer.add(route);  
				//map.add(route);
				if(rashod[parseInt(0+parseInt(document.getElementById('routeauto').value))]){
					route_length += route.distance();
					//document.getElementById('routeresults').innerHTML = "Длина маршрута: <b class='orangeb'>"+(route.distance()/1000).toFixed(3)+" км</b><br>"+
					//"Примерный расход: <b class='blueb'>"+((route.distance()/100000)*rashod[parseInt(0+parseInt(document.getElementById('routeauto').value))]).toFixed(2)+" л</b>";
				}else{
					route_length += route.distance();
					//document.getElementById('routeresults').innerHTML = "Длина маршрута: <b class='orangeb'>"+(route.distance()/1000).toFixed(3)+" км</b><br>"+
					//"Примерный расход: <b class='blueb'>неизвестно</b>";
				}
				return false;
			});
		}	
	}         */
	//VRemoteCall.request(var_query[0], var_query[i], var_query[i+1], var_query[var_query.length-1]);
    	//map.repaint();
}


