(function($) {
	var currentType = '';
	var defaultHeights = new Array();
	var formFields = new Array();
	var saving = false;
	var current = new Object();
	
	function setupButtons(d) {
		var data = d;
		
		$(data.events).each(function(i) {
			var main = $('#e'+data.events[i].id).css({ position:'relative', overflow:'hidden' });
			var newDiv = $('<div class="original"></div>').css({ top:'0px', width:'440px' }).appendTo(main);
			$(main).prev().css({ position:'absolute' }).end().children().not(':last').appendTo(newDiv);
			if ($.browser.safari || $.browser.opera) { 
				$(main).prev().css({ marginTop:'25px' });
				var f = $('.event:first').attr('id');
				if(data.events[i].id==f.substr(1)) $(main).prev().css({ marginTop:'30px' });
			}
			
			var images = new Array();
			var files = new Array();
			var links = new Array();
			var ul = $('<ul class="attachments"></ul>').appendTo(newDiv);
			
			$(data.events[i].files).each(function(j, file) {
				switch(data.events[i].files[j].type) {
					case 'image':	images.push(file); break;
					case 'link':	links.push(file); break;
					default:		files.push(file); break;
				}
			});
				
			if(images.length>0) $('<li><a href="#" class="blue btn left tiny">Related Images</a></li>').appendTo(ul).hide().fadeIn().find('a').click(function() { showImages(images); return false; });
			if(files.length>0) $('<li><a href="#" class="green btn left tiny">Related Files</a></li>').appendTo(ul).hide().fadeIn().find('a').click(function(e) { showFiles(files, e, 'files', data.events[i].id); return false; });
			if(links.length>0) $('<li><a href="#" class="orange btn left tiny">Related Links</a></li>').appendTo(ul).hide().fadeIn().find('a').click(function(e) { showFiles(links, e, 'links', data.events[i].id); return false; });
			if(data.events[i].form) $('<li><a href="#" class="blue btn left tiny">'+(data.events[i].form.button ? data.events[i].form.button : 'Sign Up')+'</a></li>').appendTo(ul).css('height','12px').hide().fadeIn().find('a').click(function(e) { current.event = data.events[i].id; showForm(data.events[i].form, e); return false; });
			
			$(main).find('.original').css({ position:'absolute' });
			$(main).css({ height:$(main).find('.original').height()-20 }).animate({ height:$(main).find('.original').height() });
		});
	}
	
	function showImages(files) {
		$('.lightbox').remove();
		for(var i=0; i<files.length; i++) {
			$('<a class="lightbox" href="/images/news/'+files[i].link+'" rel="preview"><img src="/images/news/thumbs/'+files[i].link+'" /></a>').appendTo('#lightboxReserve');
		}
		$('.lightbox').lightbox({ autoStart:true });
	}
	
	function showFiles(files, e, type, id) {
		var o = $(e.target).parents(".original");
		$(o).parent().css({ overflow:'hidden' });
		if($(o).css('top') != '0px') {
			$(o).parent().animate({  height:defaultHeights[id] }).end().animate({ top:'0' }, 300, function() { 
				$(o).find('.related').remove(); 
				if(!$.browser.safari && !$.browser.opera) if(currentType!=type) showFiles(files, e, type, id);  
			});
		} else {
			currentType = type;
			defaultHeights[id] = $(o).height();
			var div = $('<div class="related"><h3>Related '+type.charAt(0).toUpperCase()+type.substr(1)+'</h3></div>').appendTo(o).css({ position:'relative', float:'left', clear:'left' });
			$('<img src="/styles/images/related-hide.png" alt="Hide" />').appendTo(div).css({ position:'absolute', top:'-5px', right:'-5px', cursor:'pointer', opacity:.7 }).click(function(e) { hideFiles(e,id); }).hover(function() { $(this).css('opacity', 1); }, function() { $(this).css('opacity', .7); });
			var ul = $('<ul class="file-list"></ul>').appendTo(div);
			for(var i=0; i<files.length; i++)
				$('<li class="'+files[i].type.toLowerCase()+'"><a href="'+(type=='files'? '/files/news/'+files[i].link : (files[i].link.indexOf('www.')==0 ? 'http://'+files[i].link : files[i].link))+'">'+(files[i].name?files[i].name:files[i].link)+'</a></li>').appendTo(ul).find("a[@href^='http://'],a[@href$='.doc'],a[@href$='.pdf'],a[@href$='.jpg']").attr("target", "_blank");	
			var offset = 0;
			if($(div).height()+50 > defaultHeights[id]) {
				$(o).parent().animate({ height:$(div).height()+50 });
				offset = $(div).height()-defaultHeights[id]+50;
			}
			$(o).animate({ top:-$(div).height()-18+offset }, 300);
		}
	}
	
	function hideFiles(e, id) {
		var o = $(e.target).parents(".original");
		$(o).parent().animate({  height:defaultHeights[id] }).end().animate({ top:'0' }, 300, function() { 
			$(o).find('.related').remove();  
		});
	}
	
	function showForm(form, e) {
		formFields = [['name','Name'],['phone','Phone'],['email','E-mail']];
		if(form.custom_field_1) formFields.push(['custom_field_1', form.custom_field_1]);
		if(form.custom_field_2) formFields.push(['custom_field_2', form.custom_field_2]);

		
		$('<div id="formOverlay"></div>').css({ backgroundColor:'#000000', top:0, position:'absolute', zIndex:100, display:'block', opacity:0 }).appendTo('body').each(resizeOverlay).animate({ opacity:.6 }, 400);
		$(window).resize(resizeOverlay);
		var html =  '<div class="popup section">';
		html +=		'	<h2>'+form.headline+'</h2>';
		html += 	'	<div class="body">';
		html +=		'		<p id="errors"></p>';
		html +=				form.text;
		html +=		'		<form><fieldset>';
		$(formFields).each(function(i) {
			html +=		'		<label class="contain required"><input type="text" class="text" id="'+formFields[i][0]+'" name="'+formFields[i][0]+'" /> '+formFields[i][1]+'</label>';
		});
		html +=		'			<label class="contain required"><textarea name="text" id="details" name="details" /> Details</label>';
		html +=		'			<input id="submit" type="submit" style="display:none;" />';
		html +=		'		</fieldset></form>';
		html +=		'		<p id="continue"><a class="submit" href="#">Submit</a> | <a class="close" href="/events.php">Cancel</a></p>';
		html +=		'	</div>';
		html += 	'	<div class="foot"></div>';
		html +=		'</div>';
		$(html).appendTo('body').css({ position:'absolute', zIndex:101, left:450-450/2, top:e.pageY-$('.popup').height()/2, opacity:0 }).find('#errors').css({ color:'#AF1515', marginBottom:0 });
		$('.close').click(closeAnnouncement);
		$('.submit, #submit').click(submitForm);
		$('form').submit(function() { submitForm(); return false; });
		var h = $('.popup').height();
		$('.popup').animate({ opacity:0 }, 800).animate({ opacity:1 }, 500, function() { $('#name').focus(); });
		resizeOverlay();
	}
	
	function submitForm() {
		if(!saving) {
			var errors = '';
			$(formFields).each(function(i) {
				if(!$('#'+formFields[i][0]).attr('value')) errors += 'Please fill in the '+formFields[i][1].toLowerCase()+' field.<br />';
			});
			if(!$('#details').attr('value')) errors += 'Please fill in the details field.<br />';
			if(errors) { 
				$('#errors').slideUp('normal', function() { $(this).html(errors).slideDown('normal').css({ marginBottom:'13px' }); });
			} else {
				saving = true;
				var p = { action:'eventsSignUp', eventID:current.event };
				$(formFields).each(function(i) {
					eval("p."+formFields[i][0]+"='"+$('#'+formFields[i][0]).attr('value')+"'");
				});
				p.details = $('#details').attr('value');
				 $.post('ajax-data.php', p, signUpSuccess);
			}
		}
		return false;	
	}
	
	function signUpSuccess() {
		saving = false;
		$('.body').html('<p>Thank your for your interest.  Your information has been sent to the Woodburn Missionary Church.</p><p id="continue"><a class="close" href="/events.php">Close</a></p>').find('.close').click(closeAnnouncement);
	}
	
	function resizeOverlay() {
		var l =- ($(window).width()-$('body').width())/2;
		var site = $('#wrap').height();
		$('#formOverlay').css({ width:($('#wrap').width()>$(window).width() ? $('#wrap').width() : $(window).width()), height:($(window).height()>site+180 ? $(window).height() : site+180), left:(l>0 ? 0 : -($(window).width()-$('body').width())/2) });
	}
	
	function closeAnnouncement() {
		$('.popup').remove();
		$('#formOverlay').animate({ opacity:0 }, 350, function() { $(this).remove(); });
		return false;
	}
		  
	$(document).ready(function() {
		$('<div id="lightboxReserve"></div>').appendTo('body').css({ display:'none' });
		$.getJSON('ajax-data.php', { action:'events' }, setupButtons);
	});
})(jQuery);