function AddNewAlbumGUIModel(viewHolder) {
	//Observar esta propriedade eh obrigatorio nos models
	//o model precisa saber a view que o exibe. 
	//passa o nome do handler
    this.currentView = viewHolder;
    this.modelWasLoaded = false;
    this.categoria = null;

	this.getCategoria = function(){
		var textFunc = this.currentView.valueOf();
		var myRequest = new Request({method: 'post', 
									url: './content/getCategoria.php',
									onSuccess: function(dataFromServer) {viewHandler.getView(textFunc).currentModel.getCategoriaCallback(dataFromServer)}
									});
		myRequest.send();
	}

	this.getCategoriaCallback = function (result){
		this.categoria = JSON.decode(result);
		this.modelWasLoaded = true;
		viewHandler.getView(this.currentView).draw();
	}
	
	this.saveAlbum = function (album) {
		alert(album.name);
		var textFunc = this.currentView.valueOf();
		var myRequest = new Request({method: 'post', 
									url: './content/addNewAlbum.php',
									onSuccess: function(dataFromServer) {viewHandler.getView(textFunc).currentModel.saveAlbumCallback(dataFromServer)}
									});
		myRequest.send(JSON.encode(album));
	}
	
	this.saveAlbumCallback = function (result) {
		
		alert('Album foi salvo: ' + result);
		
	}
	
	
}

function AddNewAlbumGUIView(viewHolder, template) {
	this.id = ( new Date() ).getTime();
	this.currentModel = new AddNewAlbumGUIModel(viewHolder);
    this.currentView = viewHolder;
    this.currentViewInstanceTemplate = 'viewHandler.getView(\'' + this.currentView +'\')';
    this.categoriaSelecionada = null;
    this.albumSelecionado = null;
    
	this.draw = function() {
		if(!this.currentModel.modelWasLoaded){
			return;
		}
		
		var viewContentBuffer = '';
		viewContentBuffer = templateManager.loadTemplate(template);
		if(browser.tipo=='IE'){
			viewContentBuffer = templateManager.setVars(viewContentBuffer, /@@@MOUSEOVER@@@/g, 'onmouseenter');
			viewContentBuffer = templateManager.setVars(viewContentBuffer, /@@@MOUSEOUT@@@/g, 'onmouseleave');
		}else{
			viewContentBuffer = templateManager.setVars(viewContentBuffer, /@@@MOUSEOVER@@@/g, 'onmouseover');
			viewContentBuffer = templateManager.setVars(viewContentBuffer, /@@@MOUSEOUT@@@/g, 'onmouseout');
		}
		viewContentBuffer = templateManager.setVars(viewContentBuffer, /@@@IMG_PATH@@@/g, IMG_PATH);
		viewContentBuffer = templateManager.setVars(viewContentBuffer, /@@@METHOD_PATH@@@/g, this.currentViewInstanceTemplate);
		
		viewContentBuffer = templateManager.setVars(viewContentBuffer, '@@@ALBUM_SOURCE@@@', 'img/gv/temp/');
		viewContentBuffer = templateManager.setVars(viewContentBuffer, '@@@ALBUM_DATE@@@', '');
		viewContentBuffer = templateManager.setVars(viewContentBuffer, '@@@ALBUM_NAME@@@', '');
		viewHandler.drawView(viewHolder, viewContentBuffer);
		
		
		var categoria = this.currentModel.categoria;
		for ( var key in categoria) {
			var value = categoria[key];
			$('categoryCombo').add(new Option(value.title, value.id), null);
		}
	}
	
	this.adicionar = function(){
		
		var source = $('albumSource').value;
		var date = $('albumDate').value;
		var name = $('albumName').value;
		var category = $('categoryCombo').value;
		if (!Validator.isDateValid(date) && date!=''){
			alert('Data Inválida!');
			return;
		}
		if (category == -1){
			alert('Selecione uma categoria!');
			return;
		}

		if (name.length == 0){
			alert('Informe o nome do album!');
			return;
		}
		var splited = date.split( "/" );
		var day   = splited[0];
		var month = splited[1];
		var year  = splited[2];		
		var dateDB = year + '-' + month + '-' + day;
		
		var saveVO = {
				source: source,
				date: dateDB,
				name: name,
				category: category
		};
		this.currentModel.saveAlbum(saveVO);
	}
	
	this.evalTipo = function(dbType){
		
	}
	
	this.start= function() {
		this.currentModel.getCategoria();
		
	}
		
	this.unload= function() {
		this.currentModel = null;
	}
	
	/*
    * Metodo obrigatorio nas views
    * para garantir flexibilidade a view.
    * A view nao depende do seu holder para ser exibida.
    */
    this.setViewHolder = function(viewHolder) {
	     this.currentView = viewHolder;
    }
    
}