
map.Params = {};

map.Params.defaultParams = {
	  LAYERS	: []
	, LEVEL		: map.Config.defaultLevel
	, X			: -1
	, Y			: -1
	, POINT_ID	: 0
	, STREET_ID	: 0
};

map.Params.items = {
	  'layers'		: map.Params.defaultParams.LAYERS
	, 'level'		: map.Params.defaultParams.LEVEL
	, 'x'			: map.Params.defaultParams.X
	, 'y'			: map.Params.defaultParams.Y
	, 'pointId'		: map.Params.defaultParams.POINT_ID
	, 'streetId'	: map.Params.defaultParams.STREET_ID
};

map.Params.itemKeys = {
	  LAYERS	: 'layers'
	, LEVEL		: 'level'
	, X			: 'x'
	, Y			: 'y'
	, POINT_ID	: 'pointId'
	, STREET_ID	: 'streetId'
};

map.Params.AMPERSAND = '&';

map.Params.SLASH = '/';

map.Params.linkToMap = document.location.protocol + map.Params.SLASH
+ map.Params.SLASH + document.location.hostname + document.location.pathname + '?';

//---

map.Params.init = function(){
	var linkToMap = '';
	if(document.location.search.length > 0){
		var query = document.location.search.substr(1, document.location.search.length - 1);
		var tmp1 = query.split('&');
		for(var i = 0; i < tmp1.length; i++){
			var tmp2 = tmp1[i].split('=');
			if(tmp2.length == 2){
				if(tmp2[0].substr(0, map.Params.itemKeys.LAYERS.length) == map.Params.itemKeys.LAYERS)
					map.Params.items[map.Params.itemKeys.LAYERS].push(parseInt(tmp2[1]));
				else
					map.Params.items[tmp2[0]] = parseInt(tmp2[1]);
				if(tmp2[0] != map.Params.itemKeys.LEVEL && tmp2[0] != map.Params.itemKeys.X
				&& tmp2[0] != map.Params.itemKeys.Y){
					if(linkToMap != ''){
						linkToMap += map.Params.AMPERSAND;
					}
					linkToMap += tmp2[0] + '=' + tmp2[1];
				}
			}
		}
	}
	map.Params.linkToMap += linkToMap;
};

//---

map.Params.createLinkToMap = function(){
	var isPoint = map.Params.isExistPointId();
	var result = map.Params.linkToMap;
	for(var i in map.Params.items){
		if(
			   (i == map.Params.itemKeys.LEVEL && map.Params.items[i] != map.Params.defaultParams.LEVEL)
			|| (!isPoint && i == map.Params.itemKeys.X && map.Params.items[i] != map.Params.defaultParams.X)
			|| (!isPoint && i == map.Params.itemKeys.Y && map.Params.items[i] != map.Params.defaultParams.Y)
		){
			result += map.Params.AMPERSAND + i + '=' + map.Params.items[i];
		}
	}
	return result;
	//return map.Params.linkToMap + map.Params.AMPERSAND + 'level=' + map.Params.getLevel()
	//+ map.Params.AMPERSAND + 'x=' + map.Params.getX() + map.Params.AMPERSAND + 'y=' + map.Params.getY();
};

//---

map.Params.isExistXY = function(){
	return (map.Params.items[map.Params.itemKeys.X] > map.Params.defaultParams.X
	&& map.Params.items[map.Params.itemKeys.Y] > map.Params.defaultParams.Y);
};

map.Params.isExistPointId = function(){
	return (map.Params.items[map.Params.itemKeys.POINT_ID] > map.Params.defaultParams.POINT_ID);
};

map.Params.isExistStreetId = function(){
	return (map.Params.items[map.Params.itemKeys.STREET_ID] > map.Params.defaultParams.STREET_ID);
};

//---

map.Params.setLayers = function(value){
	map.Params.items[map.Params.itemKeys.LAYERS] = value;
};

map.Params.getLayers = function(){
	return map.Params.items[map.Params.itemKeys.LAYERS];
};

map.Params.setLevel = function(value){
	map.Params.items[map.Params.itemKeys.LEVEL] = value;
};

map.Params.getLevel = function(){
	return map.Params.items[map.Params.itemKeys.LEVEL];
};

map.Params.setX = function(value){
	map.Params.items[map.Params.itemKeys.X] = value;
};

map.Params.getX = function(){
	return map.Params.items[map.Params.itemKeys.X];
};

map.Params.setY = function(value){
	map.Params.items[map.Params.itemKeys.Y] = value;
};

map.Params.getY = function(){
	return map.Params.items[map.Params.itemKeys.Y];
};

map.Params.setPointId = function(value){
	map.Params.items[map.Params.itemKeys.POINT_ID] = value;
};

map.Params.getPointId = function(){
	return map.Params.items[map.Params.itemKeys.POINT_ID];
};

map.Params.setStreetId = function(value){
	map.Params.items[map.Params.itemKeys.STREET_ID] = value;
};

map.Params.getStreetId = function(){
	return map.Params.items[map.Params.itemKeys.STREET_ID];
};
