// Ensure global UserAdmin namespace
UserAdmin.nameSpace('Member');

(function(UA) {    
	UA.Member.Manager = function(options) {
		// global private variables
		var _self = {},
			_options = $.extend({
				id: 'ua-container',
				target: 'body',
				loadMember: true,
				url: UA.handlerPath + 'member.ashx',
				headerHtml: '<h1>Member Info</h1>'
			}, options);
		// form tool options overrides, via formOptions
		var _formOptions = $.extend({
				title: 'Edit Profile',
				dialog: false,
				context: 'member',
				url: _options.url,
				passwordUrl: UA.handlerPath + 'memberpassword.ashx',
				lists: {}
			}, options.formOptions);
	    var _displayOptions = $.extend({
				context: 'member',
				objectType: 'User'
	        }, options.displayOptions);
	    
	    var _form, _display;
	    if(UA.User && UA.User.Form) {
	        _form = UA.User.Form(_formOptions);
	    }
	    if(UA.Common.Display) {
	        _display = UA.Common.Display(_displayOptions);
	    }
	    
		var $container;
		
		_self.init = function() {
			$container = $('<div id="' + _options.id + '"></div>').appendTo(_options.target);
			
			if(_options.headerHtml) {
				$container.append(_options.headerHtml);
			}
	        
	        if(_options.loadMember) {
	            _self.load(function(data) {
                    if(_form) {
                        _form.init(_self, data);
                    }
                    if(_display) {
                        _display.init(_self, data);
                    }
	            });
	        } else {
	            if(_form) {
	                _form.init(_self);
	            }
                if(_display) {
                    _display.init(_self);
                }
	        }
		};
		
		_self.load = function(complete) {
            $.ajax({
                url: _options.url,
                type: 'GET',
                dataType: 'json',
                cache: false,
                success: function(data) {
                    if(complete) {
                        complete(data);
                    } else {
                        if(_form) {
                            _form.load(data);
                        }
                        if(_display) {
                            _display.load(data);
                        }
                    }
                },
                error: function(resp) {
                    throw { name:'Get Member Error', type:'AjaxException', message:resp.responseText };
                    alert('Error getting user info');
                }
            });
		};
		
		return _self;
	};
})(UserAdmin);