BF_UserNav = function() {
	this.init = function() {		
		this.update_session();
		if ( typeof report_manager == 'undefined' ) {
			var inject = document.createElement( 'script' );
			inject.src = BF_STATIC.static_root + '/js/public/report/report.js';
			document.getElementsByTagName( 'body' )[0].appendChild( inject );
		}
		if( $('usernav-ul') ) {

			var user = new BF_User();
			
			if(user.isLoggedIn()) {
				
				var user_info = user.getUserInfo();
				
				if(! user_info || ! user_info.username || user_info.username != user.getUsernameFromSession() ) {					
					var login = new BF_Login();
					login.init({action: 'userdata'});
					login.cookieLogin();
					
				} else {
					try{
						// init picks controller if js is loaded 
						picks_controller = null;
						if(typeof(BF_PicksController) != 'undefined') {
							picks_controller = new BF_PicksController();
							picks_controller.init();
						}
						var display_name = user_info.display_name ? user_info.display_name : user_info.username;
						$('usernav-displayname').update( display_name );
						$('usernav-displayname').show();
					} catch(e){ 
						console.error(e);
					}

					if( user_info.image && user_info.image != null && user_info.image != 'null'){
						try {
							$('usernav-image').childElements()[0].src = BF_STATIC.image_root + user_info.image;
						} catch( e ) {
							console.error(e);						
						}
					}
					$('usernav-image').show();

					$('usernav-profile').show();
					$('usernav-profile-link').href = BF_STATIC.web_root + '/' + user_info.username;
					if($('usernav-profile-link2')) $('usernav-profile-link2').href = BF_STATIC.web_root + '/' + user_info.username;

					$('usernav-signout').observe('click', function(e) {
						e.stop();
						facebook.logout(user_nav.signout);
						//this.signout();
					}.bindAsEventListener(this));
					$('usernav-signout').show();
					$('usernav-new-feed').show();
					$('usernav-settings').show();
					if($('guide_promo')) $('guide_promo').show();
					
					if ( typeof user_info.default_user != 'undefined' ) {
						$('usernav-switch').show();
						$('usernav-switch-link').observe('click',function(e){BF_UserSwitcher.switch_list_ui(e)});
						BF_UserSwitcher.show_warning();
						BF_UserSwitcher.disable_private_fields();
						var on_my_page = new RegExp('/'+user.getUserInfo().username+'#?$');
						if ($('site-blank-slate') && window.location.href.match(on_my_page)) $('site-blank-slate').show();
					}
					else {
						$('usernav-switch').hide();
					}
					if ( user_info.p_dashboard == 'true' ) {
						if ($('usernav-dashboard')) $('usernav-dashboard').removeClassName('hidden');
					}
					else {
						if ($('usernav-dashboard')) $('usernav-dashboard').addClassName('hidden');
					}
				}
							
			} else {
				$('usernav-signin').show();
				$('usernav-signup').show();								
				$('usernav-settings').hide();
				if($('signup_promo')) $('signup_promo').show();
			}
			$('usernav-ul').show();
		}
		
		if ( $('signup_promo-profile_page') && user.isLoggedIn() ) {			
			var user = new BF_User();
			var user_info = user.getUserInfo();
			if(! user_info || ! user_info.username || user_info.username != user.getUsernameFromSession() ) {
				var login = new BF_Login();
				login.init({action: 'userdata'});
				login.cookieLogin();				
			} else {
				var obj = $('signup_promo-profile_page');
				obj.href = '/' + user_info.username;				
			}
		}
	}
	this.update_session = function() {
		var user = new BF_User();
		if ( user.isLoggedIn() ) {
			var user_info = user.getUserInfo();
			var loginCookieVersion = user_info.login_cookie_version || 0;
			var currentCookieVersion = BF_STATIC.login_cookie_version || loginCookieVersion; 
			if ( loginCookieVersion != currentCookieVersion ) {
				if ( !BFW_Util.getCookie('session_reload_count') ) {
					BFW_Util.setCookie({name:'session_reload_count',value:1,seconds:60});
					new Ajax.Request('/buzzfeed/_user_session_update', {
						method: 'get',
						parameters: {action:'update'},
						onSuccess: bf_login.loggedIn,
						onFailure: bf_login.err
					});
				}
			}
		}
	}
	
	/*
	 * log out user. deletes cookies, and reloads page
	 */
	this.signout = function(args) {
		if ( typeof args == 'undefined' ) args = {};
		$('usernav-menu').hide();
		$('usernav-profile').update('<div style="padding: 5px;"><span id="usernav-loggingout"></span></div>');
		user_nav.logging_out_cnt = 0;
		user_nav.logging_out();	
		
		var lo = function() {		
			BFW_Util.deleteCookie(BFW_COOKIE);
			BFW_Util.deleteCookie(BFW_INFO_COOKIE);
			BFW_Util.deleteCookie(DEFAULT_USER);
			if (! args.no_reload && !window.location.href.match(/\/settings/) ) window.location.reload();
			else if (window.location.href.match(/\/settings/)) window.location.href = BF_STATIC.web_root + '/signin';
		};
		setTimeout(lo, 500);		
	}
	
	/*
	 * adds a little logout status animation to to logout process
	 */
	this.logging_out = function() {
		if (user_nav.logging_out_cnt < 5) {
			user_nav.logging_out_cnt++;
		} else {
			user_nav.logging_out_cnt = 0;
		}
		// console.log(user_nav.logging_out_cnt);			
		var periods = '';
		for(i = 0; i < user_nav.logging_out_cnt; i++) {periods += '&nbsp; .';}
		$('usernav-loggingout').innerHTML = 'Logging out' + periods
		setTimeout(function() { user_nav.logging_out() }, 300);
	}
	
}

var user_nav = new BF_UserNav();
BuzzLoader.register( function() {
	user_nav.init(); 
}, 1);
