
var Suggest = function() {
	
	this.ERR_MESS = "Please enter a note and a link.";
	this.SERVER_ERR_MESS = "We were unable to process your request at this time.";
	this.SUCCESS_MESS = "Your message had been sent.";
		
	this.init = function() {
		$('suggest-submit').disabled = false;	
		$('suggest-form').observe('submit', 		
			function(event) {
				event.stop();
				BF_Suggest.submit();
			}
		);
		
		$('suggest-button').observe('click', function(event) {
			event.stop();

			var offset = $('suggest-button').cumulativeOffset();
			var box_left = offset.left - ($('suggest-box').getWidth());
			$('suggest-box').removeClassName('right-box');
			if(box_left < 0) { 
				$('suggest-box').addClassName('right-box');
				box_left = offset.left + 20;
			}
			$('suggest-box').setStyle({ 
				top: offset.top + 18 - ($('suggest-box').getHeight() / 2) + 68  + 'px',
				left: box_left + 'px' 
			});
			
			$('share-email').hide();
			$('suggest-message-link').hide();
			$('suggest-message-note').hide();
			$('suggest-success').hide();
			$('suggest-error').hide();
			$('suggest-form').show();
			$('suggest-box').setOpacity(1);
			$('suggest-box').show();			
		});

		$('suggest-cancel').observe('click', function(event) {
			event.stop();			
			$('suggest-box').hide();
		});
			
	};

	this.submit = function() {
		$('suggest-submit').disabled = true;		
		if(this.validate()) {
			var params = {};
			params.note = $F('suggest-textarea').strip();
			params.link = $F('suggest-link').strip();
			params.name = $F('suggest-name').strip();
			params.email = $F('suggest-email');
			params.user = $F('suggest-username');
			var uri_element = $('suggest-uri');
			if(uri_element) {
				params.uri = uri_element.value;
			}
			var res = function(resp) {
				BF_Suggest.response(resp);
			};
			var fail = function(resp) {
				BF_Suggest.fail(resp);
			};
			//console.dir({parms: params});
			
			new Ajax.Request('/buzzfeed/_suggest_link', {method: 'post', parameters: params, onSuccess: res, onFailure: fail});
		}
	};

	this.response = function(resp) {
		try {
			$('suggest-submit').disabled = false;	
			// $('more_form').hide();
			// $('suggest-message').innerHTML = this.SENT;
			// $('suggest-message').className = 'message';
			$('suggest-message-link').hide();
			$('suggest-message-note').hide();
			$('suggest-textarea').value = '';
			$('suggest-link').value = '';
			$('suggest-name').value = '';
			$('suggest-email').value = '';
			$('suggest-form').hide();
			$('suggest-success').show();
			this.fadeOut();	
		}	catch(e) { 
			//console.dir({e:e}); 
		}
	}
	
	this.fail = function(resp) {
		$('suggest-submit').disabled = false;		
		// $('suggest-message').innerHTML = this.SUCCESS_MESS;
		// $('suggest-message').className = 'message error';
		$('suggest-form').hide();
		$('suggest-error').show();
		this.fadeOut();			
	};
	
	this.validate = function() {
		var status = true;
		if($F('suggest-textarea').strip() == '' || $F('suggest-link').strip() == '') {
			if($F('suggest-link').strip() == '') {				
				$('suggest-message-link').style.display = 'inline';
			}
			if($F('suggest-textarea').strip() == '') {
				$('suggest-message-note').style.display = 'inline';
			}
			var status = false;
			$('suggest-submit').disabled = false;	
		}
		return status;
	};		

	this.fadeOut = function(el) {		
		setTimeout(function(){fadeOut('suggest-box',100);},2000);		
	};	

};

	// var fadeOut = function(id,opacity) {
	// 	$(id).setOpacity(opacity/100);
	// 	if(opacity > 0) {
	// 		setTimeout("fadeOut('"+id+"',"+(opacity-2)+")",5);
	// 	} else {
	// 		$(id).hide();
	// 	}
	// };


var BF_Suggest = new Suggest();
Event.observe(window, 'load', function() {
	if($('suggest-button')) {
		BF_Suggest.init();
	}
});
