BF_PicksController = function() {
	this.controller = '/buzzfeed/_picks';
	
	this.init = function() {
		if ( BF_STATIC && BF_STATIC['page'] && BF_STATIC.page.match(/Home/) )
		{
			return true;
		}
		
		if ( window.location.pathname.match(/\/submit\/\w+/) ){
			this.init_submissions();
		}
		else {
			var user_info = (new BF_User()).getUserInfo();
			$$('.make_pick').each( function(el){
				el.show();
				el.observe('click', picks_controller.launch_pick)
			});
			if ( $('pick-buzz-button') ) $('pick-buzz-button').observe('click', picks_controller.pick);
			$$('.microsite-name').each( function(el){
				el.update(user_info.display_name)
			});
			var page = (document.location.pathname.split('/')).pop();
			if ( page == user_info.username ) {
				if ($('pending-submissions-notice')) $('pending-submissions-notice').show();
				//if ($('submit-yours-link')) $('submit-yours-link').hide();
				$$('.delete_pick').each( function(el){
					$(el.parentNode).show();
					el.show();
					el.observe('click', picks_controller.delete_pick)
				});
				if ( document.location.pathname.match(/\/submissions\//) ) {
					$$('.accept_pick').each( function( el ){
						el.show();
						el.observe('click', picks_controller.launch_pick_accept)
					})
					$$('.delete-pick').each( function(el) {
						el.removeClassName('delete-pick');
						el.addClassName('accept-pick');
					});
				}
				else
				{
					$$('.edit_pick').each( function(el){
						el.show();
						el.observe('click', picks_controller.launch_pick_edit)
					});
					$$('.add-pick').each( function(el){
						var data = eval('('+el.getAttribute('data')+')');
						if ( data.username == user_info.username ) {
							$(el.parentNode).hide();
							el.hide();
						}
						else {
							el.addClassName('edit-pick');
						}
					});
				}
			}
			else {
				$$('.add-pick').each(function(el){
					var data = eval('('+el.getAttribute('rel:data')+')');
					if ( data && data.username == user_info.username ) {
						$(el.parentNode).hide();
						el.hide();
					}
				})
			}
		}
	}
	
	this.init_submissions = function() {
		picks_controller.add_microsite_id = function( obj ) {
			obj.submit_to_microsite = $('contest-entry-form').getAttribute('rel:submit_to_microsite');
		}
	
		picks_controller.login = function( target ) {
			var registration_div = $('registration-div');
			var reg = new BF_Register();
			reg.register_handler(false,{action:'microsite_submission'});
			reg.fb_register_handler(false,{action:'microsite_submission'});
			$('login-submit').value='Sign In';
			$('register-submit').value='Register';
			bf_login.args = { action: 'microsite_submission' };
			$('registration-div').show();
		}
	
		picks_controller.save_image = function(path, image, region, sendTo) {
			var params = region;
			if ( typeof sendTo == 'undefined' ) {
				sendTo = '/buzzfeed/_edit_user_image';
			}
			else {
				params.type = $('buzz-type').value + 'buzz';
			}
			if ($('user-loading')) $('user-loading').show();
			$('user-image-edit').hide();
			params.image = path.replace(/\.(jpg|gif)$/, '');
			params.action = 'imagecrop';
			var sr = function(resp) { picks_controller.image_saved(resp) };
			var er = function() { contest_manager.error(); };
			var ajax = new BF_Request();
			ajax.request(sendTo, {method: 'post', parameters: params, onSuccess: sr, onFailure: er});
		}

		picks_controller.image_saved = function(resp) {
			if ( $( 'user-loading' ) ) $('user-loading').hide();
			var obj = eval('(' + resp.responseText + ')');
			if(obj.saved) {
				if ($('quickpost-enhanced-image-file')) $('quickpost-enhanced-image-file').value = obj.thumb_image;
				if ($('quickpost-embed-image-file')) $('quickpost-embed-image-file').value = obj.thumb_image;
				if ($('quickpost-link-image-file')) $('quickpost-link-image-file').value = obj.thumb_image;
				if ($('quickpost-quiz-image-file')) $('quickpost-quiz-image-file').value = obj.thumb_image;
				if ($('quickpost-video-image-file')) $('quickpost-video-image-file').value = obj.thumb_image;
				if ($('quickpost-image-image-thumb')) $('quickpost-image-image-thumb').value = obj.thumb_image;
				if ($('quickpost-image-image-file')) $('quickpost-image-image-file').value = obj.large_image;
				if ($('enhanced-thumbnail')) {
					$('enhanced-thumbnail').src=bf_ir+obj.thumb_image;
					$('enhanced-thumbnail').show();
				}
				if ($('embed-thumbnail')) {
					$('embed-thumbnail').src=bf_ir+obj.thumb_image;
					$('embed-thumbnail').show();
				}
				if ($('link-thumbnail')) {
					$('link-thumbnail').src=bf_ir+obj.thumb_image;
					$('link-thumbnail').show();
				}
				if ($('video-link-thumbnail')) {
					$('video-link-thumbnail').src = bf_ir+obj.thumb_image;
					$('video-link-thumbnail').show();
				}
				if ($('image-preview')) {
					$('image-preview').src = bf_ir+obj.thumb_image;
					$('image-preview').show();
					$('image-preview-div').show();
				}
				if ($('quiz-thumbnail')) {
					$('quiz-thumbnail').src=bf_ir+obj.thumb_image;
					$('quiz-thumbnail').show();
				}
				this.settings.image = obj.image;
			} else {
				this.error(this.IMAGE_ERR)
				$('enhanced-thumnail').hide();
				$('embed-thumnail').hide();
				$('link-thumnail').hide();
				$('quiz-thumnail').hide();
				$('video-link-thumbnail').hide();
			}
		}
	
		picks_controller.save_ok = function( data ) {
			if ($('successful-entry')) $('successful-entry').show();
			if ($('select-quickpost-box')) $('select-quickpost-box').hide();
		}
		
		bf_login.init();
		user_post.init();
		user_post.observe('save:success', picks_controller.save_ok);
		user_post.observe('save:preparing', picks_controller.add_microsite_id);
		var user = new BF_User();
		if ( user.isLoggedIn() ) {
			if ( user.getUserInfo().terminal_user && user.getUserInfo().terminal_user == 'true' ) {
				if ($('quickpost-enhanced-settings')) $('quickpost-enhanced-settings').show();
			}
			else {
				if ($('quickpost-enhanced-settings')) $('quickpost-enhanced-settings').hide();
			}
			var regex = new RegExp('/submit/' + (user.getUserInfo()).username + '$');
			if (window.location.href.match(regex)) {
				if ($('error-div')) $('error-div').show();
			}
			else {
				$('contest-entry-form').show();
			}
		}
		else {
			this.login();
			this.onLogin = function() {
				var user = new BF_User();
				if ( user.isLoggedIn() ) {
					$('contest-entry-form').show();
				}
				else {
					if ( facebook.is_logged_in() ) {
						window.location.reload();
					}
					else {
						$('regsitration-form').hide();
						$('registration-success').update('Thanks for registering. We&rsquo;ve created your account, but we need you to validate your email address. We&rsquo;ve sent you a confirmation email with instructions. If you don&rsquo;t receive the mail in a few minutes, please check your spam folder.');
						$('registration-success').show();
					}
				}
			}
		}
		
	}
	
	this.make_request = function(action, buzz_id, note, success) {
		var ajax = new BF_Request();
		ajax.request( picks_controller.controller, {
			method:'post',
			parameters:{
				action : action,
				buzz_id : buzz_id,
				note: note
			},
			onSuccess: success
		});
	}
	
	this._accept = function(r) {
		var obj = eval( '('+ r.responseText +')' );
		if ( obj.success ) {
			var buzz_id = obj.buzz_id;
			if ($(buzz_id+'-accept_pick-spinner')) $(buzz_id+'-accept_pick-spinner').hide();
			if ($('post-'+buzz_id)) $('post-'+buzz_id).appendChild(new Element('span',{'class':"this-post-was-picked"}));
		}
	}
	
	this.delete_pick = function(e) {
		e.stop();
		var target = e.target;
		var parent = target;
		while ( parent.parentNode && !parent.getAttribute('rel:buzz_id') ) {
			parent = parent.parentNode;
		}
		var buzz_id = parent.getAttribute('rel:buzz_id');
		if ( buzz_id ) {
			if ($(buzz_id+'-delete_pick-spinner')) $(buzz_id+'-delete_pick-spinner').show();
			picks_controller.make_request('delete', buzz_id, '', picks_controller._delete);
		}
	}
	
	this._delete = function(r) {
		
		var obj = eval( '('+ r.responseText +')' );
		if ( obj.success ) {
			var buzz_id = obj.buzz_id;
			if ($(buzz_id+'-delete_pick-spinner')) $(buzz_id+'-delete_pick-spinner').hide();
			if ($('post-'+buzz_id)) $('post-'+buzz_id).hide();
		}


	}

	this.launch_pick = function(e) {
		e.stop();
		
		var target = e.target;
		var parent = target;
		while ( parent.parentNode && !parent.getAttribute('rel:buzz_id') ) {
			parent = parent.parentNode;
		}
		var buzz_id = parent.getAttribute('rel:buzz_id');

		(new BF_Request()).request(picks_controller.controller, {
			method: 'get',
			parameters: { 'buzz_id': buzz_id, 'action': 'get_pick' },
			onSuccess: function(o) { 

				picks_controller.launch_pick_edit(e, o);

			},
			onFailure: function(o) {

				$('pick-buzz-button').setAttribute('rel:buzz_id', buzz_id);
				$('pick-buzz-button').setAttribute('rel:action', 'pick');

				BF_UI.showDialog('pick_dialog', 'Add This To Your Feed?');
				$('pick_note').value = '';
			},
			evalJSON: true
		});
		return;

	}

	this.launch_pick_edit = function(e) {
		e.stop();
		var target = e.target;
		var parent = target;
		while ( parent.parentNode && !parent.getAttribute('rel:buzz_id') ) {
			parent = parent.parentNode;
		}
		var buzz_id = parent.getAttribute('rel:buzz_id');

		$('pick-buzz-button').value = "Update Note";
		$('pick-buzz-button').setAttribute('rel:buzz_id', buzz_id);
		$('pick-buzz-button').setAttribute('rel:action', 'update_note');
		
		$('pick_note').value = '';
		$('pick_note').disabled = true;
		
		var pick_edit = function(o) { 
			$('pick_note').disabled = false;
			var pick = o.responseText.evalJSON();
			
			$('pick_note').value = BF_UI.renderEntities( pick.note );
			// pick.is_pick == 2 means is a suggestion, 
			// so change action to accept if acceptance is still pending
			if(pick.is_pick == 2 && pick.pending_acceptance == 1) {
				$('pick-buzz-button').setAttribute('rel:action', 'accept_pick');
				$('pick-buzz-button').value = "Accept Buzz";
			}
		}
		
		if (arguments[1])
		{
			pick_edit( arguments[1] );
		}
		else
		{
			(new BF_Request()).request(picks_controller.controller, {
				method: 'get',
				parameters: { 'buzz_id': buzz_id, 'action': 'get_pick' },
				onSuccess: pick_edit,
				evalJSON: true
			});			
		}
		
		BF_UI.showDialog('pick_dialog', 'Edit Your Note');
	}
	
	
	this.launch_pick_accept = function(e) {
		e.stop();
		var target = e.target;
		var parent = target;
		while ( parent.parentNode && !parent.getAttribute('rel:buzz_id') ) {
			parent = parent.parentNode;
		}
		var buzz_id = parent.getAttribute('rel:buzz_id');

		$('pick-buzz-button').value = "Accept Buzz";
		$('pick-buzz-button').setAttribute('rel:buzz_id', buzz_id);
		$('pick-buzz-button').setAttribute('rel:action', 'accept');
		
		BF_UI.showDialog('pick_dialog', 'Accept a Submission');
	}
	
	this.pick = function(e) {
		e.stop();
		BF_UI.closeDialog('pick_dialog');

		var target = e.target;
		var parent = target;
		while ( parent.parentNode && !parent.getAttribute('rel:buzz_id') ) {
			parent = parent.parentNode;
		}
		var buzz_id = parent.getAttribute('rel:buzz_id');
		var action = $('pick-buzz-button').getAttribute('rel:action');
		var callback = picks_controller._pick;
		
		if (!action)
			action = 'pick';
		
		
		if ( action == 'update_note' )
		{
			var note = $$('#post-' + buzz_id + ' .buzznote .what').first();
			if (note)
			{
				note.update( $F('pick_note').replace(/</g,'&lt;').replace(/>/g, '&gt;') );
				$$('#post-' + buzz_id + ' .buzznote').first().show();			
			}
		}
		else if ( action == 'accept' )
		{
			callback = picks_controller._accept;
		}
		else if ( action == 'accept_pick' )
		{			
			action = 'accept';
		}
		
		if ( buzz_id ) {
			if ($(buzz_id+'-accept_pick-spinner')) $(buzz_id+'-accept_pick-spinner').show();
			if ($(buzz_id+'-make_pick-add')) $(buzz_id+'-make_pick-add').hide();
			if ($(buzz_id+'-make_pick-success')) $(buzz_id+'-make_pick-success').hide();
			if ($(buzz_id+'-make_pick-spinner')) $(buzz_id+'-make_pick-spinner').show();
			picks_controller.make_request(action,buzz_id, $F('pick_note'), callback);
		}
	}
	
	this._pick = function(r) {
		var obj = eval( '('+ r.responseText +')' );
		if ( obj.success ) {
			var buzz_id = obj.buzz_id;
			if ($(buzz_id+'-make_pick-add')) $(buzz_id+'-make_pick-add').hide();
			if ($(buzz_id+'-make_pick-spinner')) $(buzz_id+'-make_pick-spinner').hide();
			if ($(buzz_id+'-edit_pick-spinner')) $(buzz_id+'-edit_pick-spinner').hide();
			if ($(buzz_id+'-delete_pick-spinner')) $(buzz_id+'-delete_pick-spinner').hide();
			if ($(buzz_id+'-accept_pick-spinner')) $(buzz_id+'-accept_pick-spinner').hide();
			if ($(buzz_id+'-make_pick-success')) $(buzz_id+'-make_pick-success').show();
			var user = new BF_User();
			if ( user.isLoggedIn() ) {
				var username = (user.getUserInfo()).username;
				$$('.username').each(function(el){
					el.update(username);
				});
				if ($('social_message-rebuzz')) $('social_message-rebuzz').show();
			}
		}
	}

}
