
UserCtl = function() {

	this.register = function() {}
	
	this.onload = function() {
		var parms = this.c;
		parms.authed = false;
		parms.session_user = '';
		if(this.getCookie('atco_session')) {
			parms.authed = true;
			var atco_cookie = this.getCookie('atco_session');
			var session_data = atco_cookie.split(/\//);
			parms.session_user = session_data[0].toLowerCase();		
		}
				
		var out = this.parseTemplate('user_login_form_template', parms);
		$('user_login_form').innerHTML = out;
		$('user_login_form').show();
		
		if(parms.authed) {			
			$('loggedin').show();
		} else {
			$('loggedout').show();
		}
		
	}
	
	this.editField = function(name) {
		$('user_message').hide();
		if(name != 'other_location') {
			$(name).hide();
		}
		if(name != 'zipcode' && name != 'other_location') {
			$(name + '_newvalue').value = $(name + '_value').innerHTML;
		}
		$(name + '_edit').show();
	}

	this.unEditField = function(name) {
		$(name).show();
		$(name + '_edit').hide();		
		$(name + '_save').disabled = false;
		$(name + '_save').value= 'Save';
		if(name != 'zipcode' && name != 'other_location') {
			$(name + '_newvalue').value =  $(name + '_value').innerHTML;		
		}
	}
	
	this.saveOtherLocation = function() {
		var other_field = $('other_location_newvalue');		
		if(other_field.value.strip() != '') {
			var uri = this.c.root_url + '/EditUser';
			var ol = function(res) {
				BFInstance.getController('UserCtl').otherLocalResp(res);
			}
			var params = 'field=' + 'city_state';
			params += '&value=' + escape(other_field.value.strip());
			params += '&atco_session='	+ escape( this.getCookie('atco_session') );
			$('other_location_save').value= 'Saving...';
			$('other_location_save').disabled = true;
			new Ajax.Request(uri, {method:'post', parameters:params, onSuccess:ol, onFailure:this.editErr});
		}		
	}
	
	this.otherLocalResp = function(resp) {
		$('other_location_save').value= 'Save';
		$('other_location_save').disabled = false;
		$('zipcode_edit').hide();
		$('other_location_edit').hide();
		if(resp) {
			$('zipcode_value').innerHTML = $('other_location_newvalue').value.strip().replace(/<|>|&/g, '');
		}
		$('zipcode').show();				
	}
	
	this.saveField = function(name) {
		if($(name + '_newvalue').value.strip() == '' || $(name + '_newvalue').value.strip() == $(name + '_value').innerHTML) {
			this.unEditField(name);			
		} else {
			$(name + '_save').value= 'Saving...';
			$(name + '_save').disabled = true;
			var uri = this.c.root_url + '/EditUser';
			var er = function(res) {
				BFInstance.getController('UserCtl').editRes(res, name);
			}
			var value = $(name + '_newvalue').value.strip().replace(/<|>|&/g, '');
			if(name == 'url' && ! value.match(/http:\/\//) ) {
				value = 'http://' + value;
				$(name + '_newvalue').value = value;
			}
			var params = 'field=' + name;
			params += '&value=' + escape(value);
			params += '&atco_session='	+ escape( this.getCookie('atco_session') );
			new Ajax.Request(uri, {method:'post', parameters:params, onSuccess:er, onFailure:this.editErr});		
		}
	}

	this.editRes = function(res, name) {
		var resp_ob = eval('(' + res.responseText + ')');		
		if(resp_ob.edited == false && resp_ob.dup_screen_name == true) {
			$('user_message').innerHTML = 'A user with that screen name already exists. Please choose another screen name.';
			$('user_message').show();
		} else {
			$(name + '_value').innerHTML = $(name + '_newvalue').value.replace(/<|>|&/g, '');
			if(name == 'url') {
				$('url_href').href = $(name + '_newvalue').value.replace(/<|>|&/g, '');
			}
		}
		this.unEditField(name);				
	}
	
	this.editErr = function(res) {
		$('err_message').show();
	}
	
	this.logout = function() {
		var session_data = this.getCookie('atco_session').split(/\//);	
		this.deleteCookie('atco_session', this.c.domain);
		window.location.href = this.c.root_url + '/User/' + session_data[0].toLowerCase();
	}
	
}