Ext.ns('component.gvd');

component.gvd.editcompany = new function() {
	
	var maxDescriptionLength = 2000;
	
	this.countDescription = function(area) {
		var desccount = Ext.get('desccount');
		var count = maxDescriptionLength - area.textLength;
		
		if(area.textLength >= maxDescriptionLength) {
			var value = area.value.substring(0, maxDescriptionLength);
			area.value = value;
			
			count = 0;
		}
		
		desccount.update('Noch ' + count + ' Zeichen');
	};
	
	this.getCategories = function(term) {
		Ext.Ajax.request({
			url: 'ajax.php',
			success: component.gvd.editcompany.showCategories,
			params: {
				comp: 'com_gvd_companymap',
				action: 'getSearchedCategories',
				term: term
			}
		});
	};
	
	this.showCategories = function(response) {
		response = Ext.decode(response.responseText);
		var wrapper = Ext.get('category-wrapper');
		
		wrapper.update(' ');
		
		for(var i = 0; i < response.length; i++) {
			wrapper.insertHtml('beforeEnd', '<div class="find-category" onclick="component.gvd.editcompany.addCategory(' + response[i].id + ', \'' + response[i].name + '\');">' + response[i].name + '</div>')
		}
	};
	
	this.addCategory = function(categoryId, name) {
		var id = Ext.get('id').getValue();
		this.showCategoryOverlay();
		
		Ext.Ajax.request({
			url: 'ajax.php',
			success: component.gvd.editcompany.displayCategory,
			params: {
				comp: 'com_gvd_companymap',
				action: 'addCategoryToCompany',
				id: id,
				categoryId: categoryId,
				name: name
			}
		});
	};
	
	this.displayCategory = function(response) {
		response = Ext.decode(response.responseText);
		component.gvd.editcompany.hideCategoryOverlay();
		
		if(response.name != '') {
			var wrapper = Ext.get('exist-categories');
			
			wrapper.insertHtml('beforeEnd', '<div class="exist-category" onclick="component.gvd.editcompany.deleteCategory(' + response.categoryId + ', this);">' + response.name + '</div>')
		}
	};
	
	this.deleteCategory = function(categoryId, elm) {
		var id = Ext.get('id').getValue();
		
		elm = Ext.get(elm);
		elm.remove();
		
		Ext.Ajax.request({
			url: 'ajax.php',
			success: core.utils.doNothing,
			params: {
				comp: 'com_gvd_companymap',
				action: 'deleteCategoryFromCompany',
				id: id,
				categoryId: categoryId
			}
		});
	};
	
	this.deleteTag = function(tagId, companyId) {
		Ext.Ajax.request({
			url: 'ajax.php',
			success: component.gvd.editcompany.tagDeleted,
			params: {
				comp: 'com_gvd_showcompany',
				action: 'deleteTag',
				tagId: tagId,
				companyId: companyId
			}
		});
	};
	
	this.tagDeleted = function(response) {
		response = Ext.decode(response.responseText);
		
		if(response != null) {
			var container = Ext.get('tags');
			
			container.update('');
			
			for(var i = 0; i < response.length; i++) {
				container.insertHtml('beforeEnd', '<span class="tag" onclick="component.gvd.editcompany.deleteTag(' + response[i].id + ', ' + response[i].company + ');">' + response[i].tag + '</span>');
			}
		}
	};
	
	this.showCategoryOverlay = function() {
		Ext.get('category-overlay').setDisplayed('block');
	};
	
	this.hideCategoryOverlay = function() {
		Ext.get('category-overlay').setDisplayed('none');
	};
	
};
