/**
 * Import & Invite Class
 *
 * $Id: import_invite.js 24 2008-05-19 21:41:30Z samsoffes $
 *
 * @package	   One Prayer
 * @author     Josh Turmel
 * @copyright  (c) 2008 LifeChurch.tv
 */
 
var Import_invite = new Class({
	
	initialize: function()
	{
		// Add events
		if ($('individual_form'))
		{
			this.individualFormProcess();
		}
		
		if ($('import_form'))
		{
			this.importFormProcess();
		}
		
		if ($('invite_form'))
		{
			this.inviteFormProcess();
		}
		
		if ($('import').getElement('h4 a'))
		{
			this.safeWarning();
		}
		
		if ($('badges'))
		{
			this.badgeShutter();
		}
	},
	
	badgeShutter: function()
	{
		var el = $('badges').set('tween', {duration: 600});
		$('badge_button').addEvent('click', function(e) {
			if (el.getProperty('rel') != 'open') {
				el.tween('height', 1100);
				$('badge_button').setHTML('Close the Badges Library');
				el.setProperty('rel', 'open');
				new Fx.Scroll(window).toElement(el);
			} else {
				el.tween('height', 0);
				$('badge_button').setHTML('Access the Badges Library');
				el.setProperty('rel', 'closed');
			}
		});
		
		$('close_badges').addEvent('click', function() {
			el.tween('height', 0);
			$('badge_button').setHTML('Access the Badges Library');
			el.setProperty('rel', 'closed');
		});
	},
	
	safeWarning: function()
	{
		$('import').getElement('.warning a').addEvent('click', function(e) {
			e = new Event(e).stop();
			
			if ($('import').getElement('.warning p').getStyle('display') == 'none') {
				$('import').getElement('.warning p').setStyle('display', 'block');
			} else {
				$('import').getElement('.warning p').setStyle('display', 'none');			
			}
		});
	},
	
	individualFormProcess: function()
	{
		$('individual_form').addEvent('submit', function(e) {
			e = new Event(e).stop();
			
			// Request
			var ajax = new Request.JSON({
				url: '/invite/ajax_individualForm',
				data: $('individual_form').toQueryString(),
				onRequest: function(instance) {
					
					$('individual').getElement('.errors').setStyle('display', 'none');					
					$('individual').getElement('.submit').setStyle('display', 'none');
					$('individual').getElement('.indicator').setStyle('display', 'block');
				
				},
				onComplete: function(response, responseXML) {
					
					var html = '';
					
					// Valid form
					if (response.success == true) {
						
						// Clear form
						$('individual_form').reset();
						
						$('individual').getElement('.message').setHTML(response.message);
						$('individual').getElement('.message').setStyle('display', 'block');
						
						$('individual').getElement('.message').set('tween', {duration: '2000'});
						$('individual').getElement('.message').tween('background-color', '#FCF786', '#E6E3DF');
						
						$('individual').getElement('.submit').setStyle('display', 'block');
						$('individual').getElement('.indicator').setStyle('display', 'none');
					} else {
						
						var html = '<ul>'+response.errors+'</ul>';
						
						$('individual').getElement('.errors').setHTML(html);
						$('individual').getElement('.errors').setStyle('display', 'block');
						
						$('individual').getElement('.submit').setStyle('display', 'block');
						$('individual').getElement('.indicator').setStyle('display', 'none');
					}	
				}
			}).send();
		});
	},
	
	importFormProcess: function()
	{	
		$('import_form').addEvent('submit', function(e) {
			e = new Event(e).stop();

			$('invite').setStyle('display', 'none');
			$('import_table').setHTML('');
			
			$('import').getElement('.errors').setStyle('display', 'none');
			$('import').getElement('.submit').setStyle('display', 'none');
			$('import').getElement('.indicator').setStyle('display', 'block');


			// Request
			var ajax = new Request.JSON({
				url: '/invite/ajax_importForm',
				data: $('import_form').toQueryString(),
				onComplete: function(response) {
					
					var html = '';
					
					// Valid form
					if (response.success == true) {
					
						$('email_invite').value = response.email;
					
						html += '<tr><th scope="col"><input class="checkbox" type="checkbox" id="checkall" name="checkall" /></th><th scope="col">Name</th><th scope="col">Email</th></tr>';
					
						$each(response.contacts, function(value, key) {
							// suck it
							html += '<tr><td><input class="checkbox" type="checkbox" value="'+value.email+'" name="emails[]" /></td><td class="import_name">'+value.name+'</td><td class="import_email">'+value.email+'</td></tr>';
						});
						
						$('import_table').setHTML('<table>'+html+'</table>');
						$('invite').setStyle('display', 'block');
						
						$('checkall').addEvent('click', function() {
							var val = $('checkall').checked;
							var frm = $('invite_form');
							var len = frm.elements.length;
							for (i = 0; i < len; i++) {
								if (frm.elements[i].name == 'emails[]') {
									frm.elements[i].checked = val;
								}
							}
						}.bind(this));
						
						$('import').getElement('.message').setHTML(response.message);
						$('import').getElement('.message').setStyle('display', 'block');
						
						$('import').getElement('.message').set('tween', {duration: '2000'});
						$('import').getElement('.message').tween('background-color', '#FCF786', '#E6E3DF');
						
						$('import').getElement('.submit').setStyle('display', 'block');
						$('import').getElement('.indicator').setStyle('display', 'none');

					// Invalid form
					} else {

						// Construct the error message
						html = '<ul>'+response.errors+'</ul>';
						
						// Display and scroll to the error
						$('import').getElement('.errors').setHTML(html);
						$('import').getElement('.errors').setStyle('display', 'block');
						
						// Turn the button back on and the indicator off
						$('import').getElement('.submit').setStyle('display', 'block');
						$('import').getElement('.indicator').setStyle('display', 'none');
					}
				}.bind(this)
			});
			
			ajax.send();
		});
	},
	
	inviteFormProcess: function()
	{
		$('invite_form').addEvent('submit', function(e) {
			e = new Event(e).stop();
			
			var ajax = new Request.JSON({
				url: '/invite/ajax_inviteForm',
				data: $('invite_form').toQueryString(),
				onRequest: function(instance) {
					$('invite').getElement('.submit').setStyle('display', 'none');
					$('invite').getElement('.indicator').setStyle('display', 'block');
					$('invite').getElement('.errors').setStyle('display', 'none');
				},
				onComplete: function(response, responseXML)
				{
					var html = '';
					
					// Successful
					if (response.success == true)
					{
						$('import_table').setHTML('');
						
						$('import').getElement('.message').setHTML(response.message);
						$('import').getElement('.message').setStyle('display', 'block');
						
						$('import').getElement('.message').set('tween', {duration: '2000'});
						$('import').getElement('.message').tween('background-color', '#FCF786', '#E6E3DF');
						
						$('invite').getElement('.submit').setStyle('display', 'block');
						$('invite').getElement('.indicator').setStyle('display', 'none');
						$('invite').setStyle('display', 'none');
						
					} else {
					
						// Construct the error message
						var html = '<ul>'+response.errors+'</ul>';
						
						// Display the error
						$('invite').getElement('.errors').setHTML(html);
						$('invite').getElement('.errors').setStyle('display', 'block');
						
						// Turn the button back on and indicator off
						$('invite').getElement('.submit').setStyle('display', 'block');
						$('invite').getElement('.indicator').setStyle('display', 'none');
					}
				}
			}).send();
			
		}.bind(this));
	}
	
});

var import_invite;
window.addEvent('domready', function() {
	import_invite = new Import_invite();
});