window.addEvent('domready', function() {
	var entries = $('content').getElements('.row');	// Get entries
	
	// Prepare entries
	entries.each(function(entry) {
		var voteLink = entry.getElement('.vote-link'); // Get the vote link
		var voteNum = entry.getElement('.votes');
		var voteEmbed = entry.getElement('.embed-code');
		var voteBox = entry.getElement('.embed-box');
		
		voteBox.setStyle('display', 'none');

		voteEmbed.addEvent('click', function() {
			if (voteBox.getStyle('display') == 'none') {
				voteBox.setStyle('display', 'block');
				voteBox.getElement('input').select();
			} else {
				voteBox.setStyle('display', 'none');
			}

			return false;
		});

		var emailLink = entry.getElement('.emaillink');
		var emailBox = entry.getElement('.email-box');
		
		emailBox.setStyle('display', 'none');
		emailLink.setStyle('display', 'block');
		
		var blogLink = entry.getElement('.bloglink');
		
		blogLink.setStyle('display', 'block');
		
		var formtest = new FormTest(emailBox.getElement('form'), {
			error: {showText: false}
		});

		formtest.addEvent('formSubmit', function(valid, event) {
			event.stop();

			if (valid) {
				var request = new Request({
					url: emailBox.getElement('form').get('action'),
					onSuccess: function () {
						var heading = new Element('h4', {'class': 'thanks', 'text': 'thanks'});
						heading.inject(emailBox, 'top');

						emailBox.getElement('form').setStyle('display', 'none');

						(function () {
							new Fx.Tween(heading, {duration: 500}).start('opacity', 0).chain(function () {
								heading.destroy();
							});
						}).delay(2000);
					}
				});

				request.send();
			}
		});

		emailLink.addEvent('click', function() {
			if (emailBox.getStyle('display') == 'none') {
				emailBox.setStyle('display', 'block');
				emailBox.getElement('form').setStyle('display', 'block');
			} else {
				emailBox.setStyle('display', 'none');
				emailBox.getElement('form').setStyle('display', 'none');
			}

			return false;
		});

		// Closure to store display state of vote area status
		var active = function() {
			var isActive = false;

			return {
				get: function () {
					return isActive;
				},
				set: function (active) {
					isActive = active;
				}
			}
		}();

		if ($defined(voteLink)) {
			// Attach voteLink event
			voteLink.addEvent('click', function(event) {
				if (active.get())
					return false;

				var voteArea = new Element('div', {'class': 'vote-area'});
				
				var heading = new Element('h4', {text: 'Confirm your vote'});

				// Create vote form
				var form = new Element('form', {
					'method': 'post',
					'action': voteLink.get('href').replace('#', '')
				}).adopt(
					// Append form elements
					new Element('p').adopt(
						new Element('label', {'for': 'vote-email', text: 'Enter your email and you will also be entered into our FREE prize draw.'}),
						new Element('input', {type: 'text', name: 'email', id: 'vote-email', 'rel': 'required|isEmail'})
					),
					new Element('p', {text:'You can vote for as many blogs as you like but you will only be entered into the draw once each month.'}),
					new Element('p', {'class': 'form-multi-input'}).adopt(
						new Element('input', {type: 'checkbox', name: 'sub', id: 'vote-optin', value: 2075812076, checked: true}),
						new Element('label', {'for': 'vote-optin', html: 'Tick if you don\'t mind us contacting you again (we never share your details with anyone else)'})
					),
					new Element('p', {'class': 'form-multi-input'}).adopt(
						new Element('input', {type: 'checkbox', name: 'optin2', id: 'vote-optin2', value: 1, 'rel': 'required'}),
						new Element('label', {'for': 'vote-optin2', html: 'Tick this box to accept the <a href="/fun-stuff/little-blog-awards/terms" class="popup">terms &amp; conditions</a> of the FREE prize draw.*'})
					),
					new Element('input', {type: 'hidden', 'name': 'fsub', 'value': '2075776800'}),
					new Element('input', {type: 'submit', 'name': 'submit', 'value': 'Vote'})
				);

				// Set form send options
				form.set('send', {
					onSuccess: function (text) {
						form.destroy();
						voteLink.destroy();

						voteNum.set('text', text+' votes');

						voteFx.start({
							'border-color': ['#F60', '#FFF']
						}).chain(function(){
							voteFx.start({
								'border-color': ['#F60', '#FFF']
							})
						});
						heading.addClass('thanks');
						heading.set('text', 'Thank you for your vote');
					}
				});

				var closeBtn = new Element('a', {'href': '#', 'text': 'close', 'class': 'btn-close'});
				closeBtn.addEvent('click', function() {
					voteArea.destroy();
					active.set(false);
					return false;
				});

				voteArea.adopt(heading, form, closeBtn);
				voteArea.inject(entry);

				// Run FX on form display
				var voteFx = new Fx.Morph(voteArea, {duration: 250});
					voteFx.start({
					opacity: [0, 1]
				});

				var formtest = new FormTest(form, {
					error: {showText: false}
				});

				formtest.addEvent('formSubmit', function (valid, event) {
					event.stop();
					if (valid) {
						form.send(form.get('action'));
					}

					return false;
				});

				active.set(true);

				return false;
			});
		}
	});
});
