// JavaScript Document

<!--//--><![CDATA[//><!--

var upoly, load_group, load_u, uonmap = [];

function UserOnMap(bounds, data) {
	this.bounds_ = bounds;
	this.data_ = data || [];
}

function UserRouteOnMap(bounds, data) {
	this.bounds_ = bounds;
	this.data_ = data || [];
}

function drawPolygon(pp) {
	var normalProj = map.getCurrentMapType().getProjection();
	var zoom = map.getZoom();
	var polyPoints = [];
	for(var a=0;a<pp.length;a++) {
		polyPoints.push(new GPoint(parseFloat(pp[a][0]),parseFloat(pp[a][1])));
	}
	upoly = new GPolygon(polyPoints,'blue',1,0.5,'blue',0.5);
	map.addOverlay(upoly);
}

//jQuery section
function ongeoJS() {
	makeHeight();
	//снимаем фокус с кликов
	$("a").focus(function() {
		this.blur();
	});
	$("input[@type='checkbox']").focus(function() {
		this.blur();
	});
	$("input[@type='radio']").focus(function() {
		this.blur();
	});
	//создание групп
	$("#grouptype small").hide();
	$("#grouptype input[@type='radio']").focus(function() {
		$("#grouptype small").hide();
		$("label").removeClass();
		$("label[@for='"+($(this).attr("id"))+"']").addClass("active");
		$("#grouptype small."+($(this).attr("id"))).fadeIn();
	});
	$("#invite input.input_text").focus(function() {
		$("#invite input.input_text").val("");
	});

	// ресайз окна
	$(window).resize(function() {makeHeight()});
}


function makeHeight() {
	var wH = $(window).height();
	$('#map').css("height", wH-110);
	$('.groups .list').css("height", wH-135)
};

function showAddInfo (location) {
	if($(".additional").attr("class")=="additional"){
		if(location) $('#city').val(location);
		$("#additional").fadeIn();
	} else {
		$("#additional").hide();
	}
	$(".additional").toggleClass("active");
};

function map_addUsers(u) {
	if(!u || !map) return;
	map.clearOverlays();
	var bounds = new GLatLngBounds();
	for(i=0;i<u.length;i++) {
		if(u[i].lat==null || u[i].lat==0) continue;
		var p = new GLatLng(u[i].lat,u[i].lon);
		bounds.extend(p);
		map.addOverlay(new UserOnMap(p,u[i]));
	}
	if(!p) return;
	var bz=map.getBoundsZoomLevel(bounds);
	map.setZoom(bz>=8 ? (bz>14 ? 14 :bz) : 8);
	var clat = (bounds.getNorthEast().lat() + bounds.getSouthWest().lat()) /2;
	var clng = (bounds.getNorthEast().lng() + bounds.getSouthWest().lng()) /2;
	map.setCenter(new GLatLng(clat,clng));
}

function map_addUserRoute(d) {
	if(!d) return;

	map.clearOverlays();
	var bounds = new GLatLngBounds();
	for(i=0;i<d.length;i++) {
		var p = new GLatLng(d[i].lat,d[i].lon);
		bounds.extend(p);
		map.addOverlay(new UserRouteOnMap(p,d[i]));
	}
	map.setZoom(map.getBoundsZoomLevel(bounds)>=8 ? map.getBoundsZoomLevel(bounds) : 8);
	var clat = (bounds.getNorthEast().lat() + bounds.getSouthWest().lat()) /2;
	var clng = (bounds.getNorthEast().lng() + bounds.getSouthWest().lng()) /2;
	map.setCenter(new GLatLng(clat,clng));
}

function load(a,p,p2) {
	var req = new JsHttpRequest();
	req.onreadystatechange = function() {
		if (req.readyState == 4) {
			var data = req.responseJS.ret==1 ? req.responseJS.data : false;
			switch(a) {
				case 'initusers':
				map_addUsers(req.responseJS.ulist);
				break;
				case 'gu':
				$('#gu'+p).html(data);
				map_addUsers(req.responseJS.ulist);
				break;
				case 'search':
				$('.searchresults').html(data);
				break;
				case 'upoly':
				if(!data) return;
				var t = [];
				var d = data[0];
				for(var i=0;i<d.length;i++) {
					t[i] = [d[i][1], d[i][0]];
				}
				if(upoly) map.removeOverlay(upoly);
				drawPolygon(t);
				map.setCenter(new GLatLng(data[1].lat,data[1].lon));
				break;
				case 'uroute':
				if(!data) alert('Нет информации о перемещениях для этого пользователя');
				map_addUserRoute(data);
				break;
				default:
				return p;
			}
			$("a").focus(function() {
				this.blur();
			});
		}
	}
	req.open(null, '/actions/iweb.php', true);
	req.send( { 'a': a, 'p': p, 'p2': p2 } );
}

function login(f) {
	$("#warmes").hide();
	$("#warmes").removeClass("green");
	if(!f) $('#forgotform').hide();
	var req = new JsHttpRequest();
	req.onreadystatechange = function() {
		if (req.readyState == 4) {
			if(req.responseJS.ret==true) {
				document.location = '/groups.html';
			} else {
				if(f) {
					if(!req.responseJS.bad) $("#warmes").addClass("green");
				}
				$("#warmes").html(req.responseJS.ret);
				$("#warmes").show();
				if(f) {$('#forgotform').toggle(); $('#fgtmail').val('');}
			}
		}
	}
	req.open(null, '/actions/login.php', true);
	req.send( { 'email': $('#email').val(), 'pas': $('#pas').val(), 'remme': $('#remme').val(), 'fgt': (f ? f : null) } );
}

function regchkpas() {
	if($('#pass1').val()==$('#pass2').val()) {
		$('#testpass').hide();
	} else {
		$('#testpass').show();
	}
}

function grp_userswt(el) {
	usrctrlsvis = false;
	$('div[@id^=gu] > li').removeClass("active");
	$('#umenu').remove();
	$('#gu'+el[0]+'_'+el[1]).addClass("active");
	if(el[0]) {
		$('#gu'+el[0]+'_'+el[1]).append('<div id="umenu"><div class="inumenu"><a href="/user/'+el[1]+'.html">Профиль</a><a href="/groups.html" onclick="load(\'uroute\','+el[1]+');showAddCtrls();return false;">История перемещений</a><a href="/user.html" onclick="grp_outuser('+el[0]+', '+el[1]+'); return false;">Удалить из группы</a></div><a href="javascript:showAddCtrls();" class="edit">Дополнительно</a></div>');
	} else{
		$('#gu'+el[0]+'_'+el[1]).append('<div id="umenu"><a href="/" onclick="load(\'uroute\','+el[1]+');return false;" class="edit">История перемещений</a></div>');
	}
	if($('#gu'+el[0]+'_'+el[1]).attr("class")=='active') {
		load('upoly',el[2]);
	}
}

var usrctrlsvis = false;
function showAddCtrls() {
	usrctrlsvis = !usrctrlsvis;
	$('a.edit').toggleClass('active').blur();
	$('div.inumenu').toggle();
}

function grp_grpswt(el) {
	$('#'+el+' > ul').toggle();
	$('#'+el+' div.settings').toggle();
	$('#'+el+' > a > .grp_inf').toggle();
	if($('#'+el+' > ul').css('display')=='none') {
		$('#'+el).removeClass('active');
		setCookie("ghide["+el.substring(2)+"]", '1', "Mon, 01-Jan-2015 00:00:00 GMT", "/");
	} else {
		$('#'+el).addClass('active');
		setCookie("ghide["+el.substring(2)+"]", '0', "Mon, 01-Jan-2015 00:00:00 GMT", "/");
	}
}

function fsubmit(t, f) {
	var req = new JsHttpRequest();
	req.onreadystatechange = function() {
		if (req.readyState == 4) {
			if(req.responseJS.ret==true) {
				if(req.responseJS.comment) alert(req.responseJS.comment);
				if(req.responseJS.r) document.location = req.responseJS.r;
			} else {
				alert(req.responseJS.ret);
			}
		}
	}
	req.open(null, '/actions/'+t, true);
	req.send( { 'data': f } );
}

function joinGroup() {
	$("li.forjoin").toggleClass("active");
	$("#joinform").toggle();
};

function joinquery_send(id,silent) {
	var req = new JsHttpRequest();
	req.onreadystatechange = function() {
		if (req.readyState == 4) {
			if(req.responseJS.ret==true) {
				if(req.responseJS.act && !silent) alert(req.responseJS.act);
				parent.document.location = parent.document.location;
			} else {
				alert(req.responseJS.ret);
			}
		}
	}
	req.open(null, '/actions/grp_action.html', true);
	req.send( { 'a': 'JoinOut', 'id': id, 'text': $('#joinquery').val() } );
}

function grp_outuser(g,u) {
	var req = new JsHttpRequest();
	req.onreadystatechange = function() {
		if (req.readyState == 4) {
			switch(req.responseJS.ret) {
				case true:
				load('gu', g);
				break;
				case 'f5':
				parent.document.location = parent.document.location;
				break;
				default:
				alert(req.responseJS.ret);
			}
		}
	}
	req.open(null, '/actions/grp_action.html', true);
	req.send( { 'a': 'OutUser', 'id': g, 'u': u } );
}

function comment(o,t,txt) {
	var req = new JsHttpRequest();
	req.onreadystatechange = function() {
		if (req.readyState == 4) {
			if(req.responseJS.ret==true) {
				$('#comments').html(req.responseJS.data);
				$('#comment_text').val('');
			} else {
				alert(req.responseJS.ret);
			}
		}
	}
	req.open(null, '/actions/comments.php', true);
	req.send( { 'o': o, 't': t, 'txt': txt } );
}

function sendinv(id) {
	var req = new JsHttpRequest();
	req.onreadystatechange = function() {
		if (req.readyState == 4) {
			if(req.responseJS.ret==true) {
				if(req.responseJS.act) alert(req.responseJS.act);
				parent.document.location = parent.document.location;
			} else {
				alert(req.responseJS.ret);
			}
		}
	}
	req.open(null, '/actions/grp_action.html', true);
	req.send( { 'a': 'sendInv', 'id': id, 'email': $('#invm'+id).val() } );
}

function sendMes() {
	$("li.forsend").toggleClass("active");
	$("#sendform").toggle();
};

function sendmes(id) {
	var req = new JsHttpRequest();
	req.onreadystatechange = function() {
		if (req.readyState == 4) {
			sendMes();
			alert(req.responseJS.ret);
		}
	}
	req.open(null, '/actions/user_action.html', true);
	req.send( { 'a': 'sendMes', 'id': id, 'text': $('#message').val() } );
}

function isNotMax(e){
	e = e || window.event;
	var target = e.target || e.srcElement;
	var code=e.keyCode?e.keyCode:(e.which?e.which:e.charCode)
	switch (code){
		case 13:
		case 8:
		case 9:
		case 46:
		case 37:
		case 38:
		case 39:
		case 40:
		return true;
	}
	return target.value.length <= target.getAttribute('maxlength');
}

function showNotes() {
	$('#notes a').blur();
	$('#notes').toggleClass('active');
	$('#notesform').toggle();

}

function fixPNG(element)
{
	if (/MSIE (5\.5|6).+Win/.test(navigator.userAgent))
	{
		var src;

		if (element.tagName=='IMG')
		{
			if (/\.png$/.test(element.src))
			{
				src = element.src;
				element.src = "img/spacer.gif";
			}
		}
		else
		{
			src = element.currentStyle.backgroundImage.match(/url\("(.+\.png)"\)/i)
			if (src)
			{
				src = src[1];
				element.runtimeStyle.backgroundImage="none";
			}
		}

		if (src) element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "',sizingMethod='crop')";
	}
}

function setCookie (name, value, expires, path, domain, secure) {
	document.cookie = name + "=" + escape(value) +
	((expires) ? "; expires=" + expires : "") +
	((path) ? "; path=" + path : "") +
	((domain) ? "; domain=" + domain : "") +
	((secure) ? "; secure" : "");
}

function getCookie(name) {
	var cookie = " " + document.cookie;
	var search = " " + name + "=";
	var setStr = null;
	var offset = 0;
	var end = 0;
	if (cookie.length > 0) {
		offset = cookie.indexOf(search);
		if (offset != -1) {
			offset += search.length;
			end = cookie.indexOf(";", offset)
			if (end == -1) {
				end = cookie.length;
			}
			setStr = unescape(cookie.substring(offset, end));
		}
	}
	return(setStr);
}

function onGLoad() {
	UserOnMap.prototype = new GOverlay();
	UserOnMap.prototype.initialize = function(map) {
		var div = document.createElement("div");
		div.cid = this.data_.cid;
		div.sector = $('div.ma[cid='+this.data_.cid+']').length+1;
		div.id = 'ma'+this.data_.id;
		div.style.position = "absolute";
		div.className = 'ma';
		div.detail = '<img src="'+this.data_.avatar_url+'" height="60px" onclick="$(\'#'+div.id+'\').trigger(\'onclick2\');"/><p class="nickname"><a href="/user/'+this.data_.id+'.html">'+this.data_.name+'</a></p><p class="times">'+this.data_.dt_seen+'</p><div class="close"><a href="/" onclick="$(\'#'+div.id+'\').trigger(\'onclick2\');return false;">X</a></div>';
		div.innerHTML = div.short = '<div title="'+this.data_.name+'" class="mashort" style="background:url(/i/win'+(this.data_.old==0 ? 1 : 2)+'.gif) no repeat;"><div style="background:url('+this.data_.avatar_url+') center;" class="maav" onclick="$(\'#'+div.id+'\').trigger(\'onclick1\'); $(\'#'+div.id+' img\').attr(\'src\', \''+this.data_.avatar_url+'?f\');"></div></div>';
		div.onclick1 = function() {this.className='mabig'; this.innerHTML = this.detail; $(this).fadeTo(1, 1);}
		div.onclick2 = function() {this.className='ma'; this.innerHTML = this.short;}

		map.getPane(G_MAP_MAP_PANE).appendChild(div);

		this.map_ = map;
		this.div_ = div;
	}
	UserOnMap.prototype.remove = function() {this.div_.parentNode.removeChild(this.div_);}
	UserOnMap.prototype.copy = function() {return new UserOnMap(this.bounds_, this.data_);}
	UserOnMap.prototype.redraw = function(force) {
		if (!force) return;
		var c1 = this.map_.fromLatLngToDivPixel(this.bounds_);
		var c2 = this.map_.fromLatLngToDivPixel(this.bounds_);

		var n=$('div.ma[cid='+this.data_.cid+']').length;
		var s = this.div_.sector % 5;
		if(s==0) s=5;
		c1.y=c1.y+40*s - 40;
		c1.x=c1.x+(Math.ceil(this.div_.sector/5) *40) - 40;

		var z = map.getZoom();
		this.div_.style.display = z<13 && this.div_.sector>1 ? 'none' : 'block';

		var op = 1-(13-z)/5;
		if(op<0.1) op = 0;
		$('#'+this.div_.id).fadeTo(1, op);

		this.div_.style.left = c1.x + "px";
		this.div_.style.top = c1.y + "px";
		this.div_.top = c1.y;
	}

	UserRouteOnMap.prototype = new GOverlay();
	UserRouteOnMap.prototype.initialize = function(map) {
		var div = document.createElement("div");
		div.className = 'routepoint';
		div.innerHTML = this.data_.ghtml;
		div.title = this.data_.dt;
		map.getPane(G_MAP_MAP_PANE).appendChild(div);
		this.map_ = map;
		this.div_ = div;
	}
	UserRouteOnMap.prototype.remove = function() {this.div_.parentNode.removeChild(this.div_);}
	UserRouteOnMap.prototype.copy = function() {return new UserRouteOnMap(this.bounds_, this.data_);}
	UserRouteOnMap.prototype.redraw = function(force) {
		if (!force) return;

		var c1 = this.map_.fromLatLngToDivPixel(this.bounds_);
		var c2 = this.map_.fromLatLngToDivPixel(this.bounds_);

		this.div_.style.left = c1.x + "px";
		this.div_.style.top = c1.y + "px";
	}

	if(load_group) load("gu", load_group);
	if(load_u) map_addUsers([load_u]);

}

//--><!]]>