var DocumentPositionContainer = function(configuration){
	this.jqelement = configuration.jqelement;
	this.canvas = configuration.canvas;
	this.scale = configuration.scale;
	this.collection = [];
	this.selectedElement = null;
};
DocumentPositionContainer.prototype = {
	init: function(){
		this.cacheElements();
		this.bindEvents();
	},
	cacheElements: function(){
		//this.jqfieldsContainer = jqelement;
	},
	bindEvents: function(){
		this.jqelement.on("click", ".position", this.onPositionClick.bind(this));
	},
	onPositionClick: function(ev){
		var jqel = jq(ev.currentTarget);
		var documentPosition = jqel.data("documentPosition");
		documentPosition.onDescriptionElementSelect();
$//		this.canvas.setActiveObject(jqel.data("documentPosition").figure);
	},
	initDocumentPositionFromDefinition: function(serverDefinition){
		var documentPosition = new DocumentPosition(this);
	
		//width, height, left, top, dataSourceCode, dataSourcePath, sourceType, ownFieldType
		jq.extend(documentPosition, serverDefinition.definitionMap);
		
		documentPosition.id = serverDefinition.id;
		documentPosition.name = serverDefinition.name;
	
		var figure = documentPosition.createFigure();
		var jqdescriptionElement = documentPosition.createDescriptionElement();

		documentPosition.figure = figure;
		//documentPosition.jqdescriptionElement = jqdescriptionElement;
		figure.set("documentPosition", documentPosition);
		jqdescriptionElement.data("documentPosition", documentPosition);
	
		this.canvas.add(figure);
		jqdescriptionElement.appendTo(this.jqelement);
	
		return documentPosition;
	},
	createNewDocumentPosition: function(definition){
		var documentPosition = new DocumentPosition(this);
		documentPosition.width = definition.width / this.scale;
		documentPosition.height = definition.height / this.scale;
		documentPosition.left = definition.left / this.scale;
		documentPosition.top = definition.top / this.scale;
		
		var figure = documentPosition.createFigure();
		var jqdescriptionElement = documentPosition.createDescriptionElement();
		
		documentPosition.figure = figure;
		
		figure.set("documentPosition", documentPosition);
		jqdescriptionElement.data("documentPosition", documentPosition);
	
		this.canvas.add(figure);
		jqdescriptionElement.appendTo(this.jqelement);
	
		return documentPosition;
	},
	clear: function(){
		this.collection.forEach(function(el){
			el.remove();
		});
	},
	selectDocumentPosition: function(documentPosition){
		if(this.selectedElement != documentPosition){
			if(this.selectedElement) this.selectedElement.unSelect();
			documentPosition.select();
			this.selectedElement = documentPosition;
		}
	}
};