function ViewModelInterface(_logic)
{	
	var th = this
//--------------------------------//
	
	var _model = _logic
	var _obs = new Array()
	var pause = false
	var p = _model.getData()
	var tutor

	_model.registerObservers(this)	
	var tut = new createjs.Shape()
	tut.addEventListener("click", function(){
		var p = _model.getData()
		_visual.nextHint(p.cur_step)
	})
// Регистрация наблюдателей за изменениями
	this.registerObservers = function(v){
		_obs.push(v)
	}
	var _visual = new VisualInterface(this)

	

// События логики //
	this.notifyInterface = function(){
		p = _model.getData()
		// if(p.modal){
			changeInterface()
		// }else{
			changeTopIfaceView()
			updateBottomIface()
		// }
	}

// События визуальных элементов
	// верхняя
	this.randomClick = function(){
		_model.randomPlacing()
	}

	this.pauseClick = function(){
		if(!pause){
			t_allInPause()
			v_choiseLocation("pause")
		}else
			t_delAllInPause()
		pause = !pause ? true : false
		// v_choiseLocation("gameOver", {	
		// 								title: "text_red_victory", 
		// 								hit_rate_user: 33, 
		// 								hit_rate_bot: 33, 
		// 								treasures_user: 33, 
		// 								treasures_bot: 33, 
		// 								num_money:12341,
		// 								reason: "sunk"
		// 							});
		// v_choiseLocation("bonus", {name: "air_strike", life: 1})
	}

	this.shipClick = function(){
		_model.changeView()
	}

	this.readyClick = function(){
		if(p.game_data.selected_objects){
			var m = p.game_data.selected_objects
			for(var a=0; a<m.length; a++)
				if(m[a].getName() == "periskop"){
					if(!p.game_data.periskop_active)
						_model.activePeriskop()
					return
				}
		}
		_model.nextStep()
	}
	this.clickOnLoupe = function(){
		_model.changeScale()
	}

	this.clickOnMoney = function(){
		this.pauseClick()
		v_choiseLocation("shop", {logic: _model, notify: th.notifyInterface})
	}
	// нижняя
	this.clickOnShip = function(v){
		_model.createShip(v)
	}

	this.clickOnMine = function(){
		_model.createMine()
	}

	this.clickOnBonus = function(v){
		var p = _model.getData()
		for(var a=0; a< p.game_data.selected_objects.length; a++)
			if(p.game_data.selected_objects[a].getName() == v){
				_model.deActiveBonus(v)
				return
			}
		_model.createBonus(v)
	}

	this.clickOnTarget = function(){
		_model.createTarget()
	}

	this.modalClose = function(){
		// console.log(p.modal)
		if(p.modal == "text_setup_battlefield" || p.modal == "text_place_your_target")
			_model.setTutorial()
		_model.setModal(null, p.only_ready)
		_model.resetOnlyReady()
	}

	this.setTutorial = function(v){
		setTutorial(v)
	}
// Getters //
	this.getVisual = function(){
		return _visual
	}

	this.getTutorial = function(){
		return tut
	}

	this.getData = function(){
		return p
	}

// PRIVATE //

	changeTopIfaceView()
	updateBottomIface()
	function changeTopIfaceView() {
		for(var a=0; a<_obs.length; a++)
			if(_obs[a].updateTopIface)
				_obs[a].updateTopIface()
	}

	function updateBottomIface() {
		for(var a=0; a<_obs.length; a++)
			if(_obs[a].updateBottomIface)
				_obs[a].updateBottomIface()
	}

	function changeInterface(){
		for(var a=0; a<_obs.length; a++)
			if(_obs[a].updateIface)
				_obs[a].updateIface()
	}

	// Включение подсказок
	function setTutorial(v){
		tut.graphics.clear()
		if(v){
			var p = _model.getData()
			tut.graphics.beginFill("#000000").drawRect(0, 0, WIDTHGAME, HEIGHTGAME)
			tut.alpha = .01
			// console.log(p.cur_step, p)
			_visual.startTutorial(p.cur_step)
		}else{

		}
	}
};