cs.pro.app = {

	userName: null,
	
	init: function()
	{
		Ext.BLANK_IMAGE_URL = 'ext-2.2.1/resources/images/default/s.gif';
		Ext.QuickTips.init();
		Ext.apply(Ext.QuickTips.getQuickTip(), { trackMouse: true });
		Ext.Ajax.disableCaching = false;
		Ext.Ajax.method = 'POST';

		cs.pro.app.getRole();
	},
	
	getRole: function()
	{
		Ext.Ajax.request({
			url: 'json/role',
			callback: cs.pro.app.gotRole
		});
	},

	gotRole: function(options, success, response)
	{
		if(! success)
		{
			cs.common.lib.connectionError(cs.pro.app.getRole);
			return;
		}
		response = Ext.util.JSON.decode(response.responseText);
		if(! response.role)
		{
			cs.pro.viewport.hide();
			cs.pro.login.show();
			return;
		}
		else if(response.role == 'pro')
		{
			cs.pro.app.userName = response.userName;
			cs.pro.viewport.show();
			//cs.pro.project.show();
		}
		else
		{
			alert('Must be a pro user to access this service.');
			cs.pro.app.logout();
		}
	},
	
	logout: function()
	{
		Ext.Ajax.request({
			url: 'json/login/logout',
			callback: cs.pro.app.gotLogout
		});
	},

	gotLogout: function(options, success, response)
	{
		if(! success)
		{
			cs.common.lib.connectionError(cs.app.getRole);
			return;
		}

		response = Ext.util.JSON.decode(response.responseText);
		if(! response.success)
		{
			cs.common.lib.jsonErrors(response.errors);
			return;
		}

		cs.pro.app.getRole();
	},

	getDownload: function()
	{
		var file;
		if((file = cs.pro.viewport.getSelectedFile()) == false)
		{
			return;
		}
		Ext.Ajax.request({
			url: 'json/pro_download',
			params: {
				file: file.get('id')
			},
			callback: cs.pro.app.gotDownload
		});
	},
	
	gotDownload: function(options, success, response)
	{
		if(response = cs.common.lib.errorFilter(success, response, cs.pro.app.getDownload))
		{
			window.location.href = response.url;
		}
	},

	getProDelete: function()
	{
		var file;
		if((file = cs.pro.viewport.getSelectedFile()) == false)
		{
			return;
		}
		Ext.Ajax.request({
			url: 'json/pro_delete',
			params: {
				file: file.get('id')
			},
			callback: cs.pro.app.gotProDelete
		});
	},
	
	gotProDelete: function(options, success, response)
	{
		if(response = cs.common.lib.errorFilter(success, response, cs.pro.app.getProDelete))
		{
			cs.pro.viewport.refreshGrid();
		}
	}
};
