function getObjLength(object) {
	var j = 0;

	for (var i in object) {

		j++;
	}
	return j;
}

function changePane(paneID, menuID) { 
	
	/* Find the tab with active class */ 
	jQuery('.active').removeClass('active'); /* and then remove it */
	/* Give the active class to the menuID that was passed through */
	jQuery('#' + menuID).parent().addClass('active');
	
	/* Hide all panes */
	jQuery('#edit-profile-description, #edit-profile-image, #edit-profile-skin, #edit-profile-location, #edit-group-members, #invite-members, #remove-event').hide();
	/* Now show the paneID */
	jQuery('#' + paneID).show();
	
	return false;
	
}

function updateLocation (form_location) {
	
	jQuery.ajax({
		url: form_location,
		type: "POST",
		data: 'ajax=true&submit=true&lat=' + jQuery('#lat').val() + '&lng=' + jQuery('#lng').val() + '&zoom=' + jQuery('#zoom').val() + '&address1=' + jQuery('#address1').val() + '&address2=' + jQuery('#address2').val() + '&city=' + jQuery('#city').val() + '&postcode=' + jQuery('#postcode').val() + '&country=' + jQuery('#country').val(),
		async: false,
		success: function(msg) {

		},
		error: function(msg) {
			
		}
	});	

}


jQuery(document).ready(function(){
			

	var newGroup = jQuery('#group-new, #event-new');
	var editGroup = jQuery('#group-edit, #event-edit');
	var isEvent = ( (newGroup.attr('id') == 'event-new') || (editGroup.attr('id') == 'event-edit') );
	var isNew = ( (newGroup.attr('id') == 'group-new') || (newGroup.attr('id') == 'event-new') );
	var success = jQuery('.success');

	var groupType = 'group';
	if (isEvent) groupType = 'event';

	var modal = jQuery('#prompt');
	function dialog(url) {
 
		modal.load(url, function() {
			var buttons = jQuery('button.closebtn', modal).click(function(e) {
				e.preventDefault();
				modal.overlay().close();
			});

			modal.overlay({
				expose: {
					color: '#333',
					loadSpeed: 200,
					opacity: 0.9
				},
				closeOnClick: false,
				api: true,
				close: '.close'
			}).load();
		});
	}

	function groupUpdate(form, f) {

		// var loader = form.find('.ajax-loader:last');
		// ar success = form.find('.success');
		var url = form.attr('action');

		var postData = form.serialize() + '&submit=true&ajax=true';
		

		success.fadeOut('fast');
		// loader.fadeIn('fast', function() {

			jQuery.ajax({
				url: url,
				type: "POST",
				data: postData,
				async: false,
				success: function(msg) {

					if (msg.indexOf('INVALID') == 0) {
						//loader.fadeOut('fast');
						return false;
					}

					if (msg.indexOf('NOT LOGGED IN') == 0) {
						window.location.href = '/usercp/login/';
						return false;
					}

					// loader.fadeOut('fast', function() {
						success.fadeIn('fast');
						if (typeof(f) == 'function') f(msg);
					// });
				},
				error: function(msg, b, c) {
				}
			});
		//});
		return false;
	}


	var editContent = jQuery('#edit-content');
	
	
	var editProfileImageCont = jQuery('#edit-profile-image', editContent);
	var inviteMembers = jQuery('#invite-members', editContent);
	var editSkin = jQuery('#edit-profile-skin', editContent);
	var editAbout = jQuery('#edit-profile-description', editContent);
	var editLocation = jQuery('#edit-profile-location', editContent)
	var editGroupMembers = jQuery('#edit-group-members', editContent);
	
	
	
	/*
	var editProfileImageCont = jQuery('#edit-profile-image');
	var inviteMembers = jQuery('#invite-members');
	var editSkin = jQuery('#edit-profile-skin');
	var editAbout = jQuery('#edit-profile-description');
	var editLocation = jQuery('#edit-profile-location')
	var editGroupMembers = jQuery('#edit-group-members');
	*/
	

	var urlParams = location.href.split('/');
	var singlePage = false;
	var lastParam = urlParams[urlParams.length - 1];
	if (lastParam <= '') lastParam = urlParams[urlParams.length - 2];
	if ( (lastParam != 'new') && (lastParam != 'edit')) singlePage = true;

	if ((!singlePage) && ( (newGroup.length > 0) || (editGroup.length > 0) ) ) {


		jQuery('#edit-profile-menu li a').each(function() {
			jQuery(this).removeAttr('href');
		});

		var firstPage = false;
		if (newGroup.length > 0) firstPage = true;

		var nav = editContent.scrollable( { size: 1, clickable: false, speed: 100, vertical:true, onBeforeSeek: function() { if (firstPage) return false; } }).navigator( { navi: "#edit-profile-menu", naviItem: 'li a', activeClass: 'selected', api: true });
		nav.getConf().keyboard = false;
		nav.reload();
	}

	var aboutForm = jQuery('form', editAbout);
	var setup = true;
	var categories = jQuery('.categories', aboutForm);
	if (newGroup.length > 0) {

		setup = false;
		var header = jQuery('h1', newGroup);

		var name = jQuery('#name', aboutForm);
		var privacy = jQuery('#privacy', aboutForm);

		name.keyup(function() {
			name.parent().find('p.error').hide('fast');

			if (jQuery(this).val() === '') jQuery('span', header).text('Untitled ' + (isEvent ? 'Event' : 'Group'));
			else jQuery('span', header).text(jQuery(this).val());
		});

		jQuery('#name', newGroup).counter();
	}

	jQuery('input', categories).change(function() {
		
			if (jQuery('input:checked', categories).length > 0) categories.find('p.error').hide('fast');
	});

	var tagInput = jQuery('.tag-input', aboutForm);
	tagInput.autocomplete('/ajax/get_tags/', { 
		multiple: true, 
		multipleSeparator: ',',
		delay: 100,
		matchContains: false,
		mustMatch: false,
		minChars: 2, 
		width: 291,
//		extraParams: { type: function() {

//			if (group_cat > '') return group_cat;
//			return categoryInput.val();
//		}},
//		canShow: function() {
//			if (jQuery('input:checked', categories).length > 0) {
//				jQuery('.tag-nocat', aboutForm).show('fast');
//				return false;
//			}
//			else {
//				jQuery('.tag-nocat', aboutForm).hide('fast');
//				return true;
//			}
//		}
	});
	//tagInput.keyup(function() {
//		if (categoryInput.val() == '') jQuery('.tag-nocat', aboutForm).show('fast');
//		else jQuery('.tag-nocat', aboutForm).hide('fast');
//	});
//	jQuery('input', categories).change(function() {
//		jQuery('.tag-nocat', aboutForm).hide('fast');
//		tagInput.flushCache();
//	});
	function addTag(tagName, tagList) {
		// Params - the tag name to add and the tag list to add it to. 
		// function returns true or false;

		tagName = jQuery.trim(tagName.toLowerCase());
		
		var firstTag = jQuery('li:first', tagList);
		
		if ( tagName == '' ) return true;
		
		if (tagName.length < 3) {
			return false;
		} else if (! tagName.match('^[a-zA-Z0-9_]*$')) { 
			return false;
		}else {

			tagList.parent().find('.error').hide('fast');
			
			var lastTag = jQuery('li:last', tagList);
			var newTag = jQuery('<div style="display:none;" class="tag">' + tagName + ' <span>X</span></div>');
			tagList.append(newTag);
			newTag.fadeIn('slow');
			return true;
		}
	}
	function addTags(tagField) {
		// Creates tags from the csv string in the tagField passed in.

		var failedTags = [];
		var tagList = jQuery(tagField).parent().find('.tagholder');
		var tagArray = tagField.val().split(',');

		tagField.val('');
		var i;

		for (i = 0; i < tagArray.length; i++) {
			if (!addTag(tagArray[i], tagList)) failedTags.push(tagArray[i]);
		}
		
		var failedString = '';
	
		for (i = 0; i < failedTags.length; i++) {
			failedString += failedTags[i];
			if (i + 1 < failedTags.length) failedString += ',';
		}

		tagField.val(failedString);
		

		if (failedTags.length > 0 ) {
			jQuery(tagField).parent().find('.invalid').show('fast');
			return false;
		}
		else {
			jQuery(tagField).parent().find('.invalid').hide('fast');
			return true;
		}
	}
	jQuery('.add-tag', aboutForm).click(function(e) {
		e.preventDefault();
		
		addTags(jQuery(this).parent().find('.tag-input'));
	});
	function removeTag() {
		
		var el = jQuery(this).parent();
		el.fadeOut('slow', function() {
			el.remove();
		});
	}
	jQuery('.tag span').live('click', removeTag);
	
	jQuery('form', editSkin).submit(function() {

		groupUpdate(jQuery(this), function(msg) {

			if (isNew) jQuery(this).pause(500).show(1, function() {
				nav.next();
			});
		});
		
		return false;
	});

	jQuery('#save-about', editAbout).click(function(e) {
		e.preventDefault();

		var cont = true;

		if (newGroup.length > 0) {

			if (name.val() === '') {

				name.parent().find('p.error').show('fast');
				cont = false;
			}
		}
		
		if (jQuery('input:checked', categories).length == 0) {
			categories.find('p.error').show('fast');
			cont = false;
		}

	
		cont = addTags(jQuery('.tag-input', editAbout)) && cont;
		var tags = '';
		var tag;
		jQuery('.tagholder .tag', editAbout).each(function() {
			tag = jQuery(this).text();
			tag = tag.substr(0, tag.length - 2);
			tags += tag + ',';
		});
		jQuery('.hiddenTags').val(tags);
		

		if (isEvent) cont = validateDates() && cont;

		if (cont)
		groupUpdate(aboutForm, function(msg) {

			if (newGroup.length > 0) {
				var returnData = jQuery.evalJSON(msg);

				if (returnData['group_id'] > '') {

				//	group_cat = category.val();
					name.attr('disabled', 'disabled');
					name.addClass('disabled');
			//		category.attr('disabled', 'disabled');
			//		category.addClass('disabled')
					privacy.attr('disabled', 'disabled');
					privacy.addClass('disabled');

					group_id = returnData['group_id'];
					url_group_name = returnData['url_group_name'];
					jQuery('#group_id', aboutForm).val(msg);

					var header = jQuery('h1', newGroup);
					header.html('<a href="/' + groupType + 's/' + group_id + '/' + url_group_name + '/">' + header.text() + '</a>');

					var newAction = '/' + groupType + 's/' + group_id + '/' + url_group_name + '/';
					jQuery('form', editSkin).attr('action', newAction + 'edit/skin/');
					if (inviteMembers.length > 0) jQuery('form', inviteMembers).attr('action', newAction + 'edit/invite/');
					if (isEvent && editLocation.length > 0) jQuery('form', editLocation).attr('action', newAction + 'edit/location/');

					firstPage = false;
					privacy.pause(500).show(1, function() {
						nav.next();
							jQuery('#edit-profile-description').fadeOut(function() {
							
								jQuery('#epm-about').removeClass('active');
								jQuery('#epm-image').addClass('active')
								scroll(0,0);
								jQuery('#edit-profile-image').fadeIn();
								
							
							});
					});
				}
			}
		});
	});


	if (inviteMembers.length > 0) {
		// Invite Members page
		var selectAll 			= jQuery('#selectall', inviteMembers);
		var friendCheckboxes 	= jQuery("input[type = 'checkbox'][id != 'selectall']");

		selectAll.bind('change', function() {
			friendCheckboxes 	= jQuery("input[type = 'checkbox'][id != 'selectall']");
			var checked_status = this.checked;
			friendCheckboxes.each(function() {
				this.checked = checked_status;
			});
		});

		friendCheckboxes.bind('change', function() {
			selectAll.removeAttr('checked');
		});

		jQuery('form', inviteMembers).submit(function() {

			var form = jQuery(this);
			var count = jQuery("input:checkbox[name != '']:checked", form).length;

			var notChecked = jQuery("input:checkbox[name != '']:not(:checked)", form).length;

			if (count > 0) groupUpdate(jQuery(this), function(msg){

				var returnData = jQuery.evalJSON(msg);

				var friend;
				var numInvited = getObjLength(returnData);

				for (var i in returnData) {

					friend = jQuery("input[value = '" + returnData[i]['userid'] + "']", form);

					if (editGroupMembers.length > 0) {

						var newMembers = jQuery('<form class="member" enctype="multipart/form-data" method="post" action="' + MPORA.globalVars.base_url + groupType + 's/' + group_id + '/' + url_group_name + '/edit/members/"><a href="' + MPORA.globalVars.base_url + '/' + returnData[i]['username'] + '/"><img src="' + MPORA.globalVars.base_url + '/images/avatar/' + returnData[i]['userid'] + '/s/" alt="' + returnData[i]['username'] + '" /><p>' + returnData[i]['username'] + '</p></a><input type="hidden" value="' + returnData[i]['userid'] + '" name="member" /><fieldset><input type="submit" value="' + MPORA.lang.group_cancel_invitation + ' &raquo;" name="cancel-invitation" /></fieldset><div style="clear: both;" /></form>');

						jQuery('input', newMembers).bind('click', processMemberTypeChange);

						newMembers.insertAfter( jQuery('#invited', editGroupMembers).find('h2') );
						jQuery('#invited', editGroupMembers).fadeIn('fast');
					}

					friend.parent().fadeOut('fast', function() {

						jQuery(this).remove();

						if (notChecked == 0) {

							jQuery('#selectall', form).parent().fadeOut('fast', function() {
								jQuery('#selectall', this).removeAttr('checked');
							});
							jQuery('#no-friends', form).fadeIn('fast');
							if (newGroup.length > 0) jQuery('#skip-invitations', form).val('Finish');

						}
					});
				};


			});
			return false;
		});
	}


	if (isNew) {
		/*
		jQuery('#skip-avatar, #skip-location, #skip-skin', editContent).bind('click', function(e) {
			e.preventDefault();
			nav.next();
			
		}); */
		
		jQuery('#upload-avatar').bind('click', function(e) {
			e.preventDefault();
			jQuery('#epm-image').removeClass('active');
			jQuery('#epm-skin').addClass('active');
			
			jQuery('#edit-profile-image').fadeOut(function() {
		
				jQuery('#edit-profile-skin').fadeIn();
		
			});
		});
		
		
		jQuery('#upload-skin').bind('click', function(e) {
			e.preventDefault();
			jQuery('#epm-skin').removeClass('active');
			jQuery('#epm-location').addClass('active');
			
			jQuery('#edit-profile-skin').fadeOut(function() {
		
				jQuery('#edit-profile-location').fadeIn();
		
			});
		});
		
		jQuery('#save-location').bind('click', function(e) {
			e.preventDefault();
			jQuery('#epm-location').removeClass('active');
			jQuery('#epm-invite').addClass('active');
			
			jQuery('#edit-profile-location').fadeOut(function() {
		
				jQuery('#invite-members').fadeIn();
		
			});
		});
		
		jQuery('#skip-avatar').bind('click', function(e) {
			e.preventDefault();
			jQuery('#epm-image').removeClass('active');
			jQuery('#epm-skin').addClass('active');
			
			jQuery('#edit-profile-image').fadeOut(function() {
		
				jQuery('#edit-profile-skin').fadeIn();
		
			});
		});

		jQuery('#skip-skin').bind('click', function(e) {
			e.preventDefault();
			jQuery('#epm-skin').removeClass('active');
			jQuery('#epm-location').addClass('active');
			
			jQuery('#edit-profile-skin').fadeOut(function() {
		
				jQuery('#edit-profile-location').fadeIn();
		
			});
		});
		
		jQuery('#skip-location').bind('click', function(e) {
			e.preventDefault();
			jQuery('#epm-location').removeClass('active');
			jQuery('#epm-invite').addClass('active');
			
			jQuery('#edit-profile-location').fadeOut(function() {
		
				jQuery('#invite-members').fadeIn();
		
			});
		});


		jQuery('#skip-invitations', inviteMembers).bind('click', function(e) {
			e.preventDefault();
			window.location.href = '/' + groupType + 's/' + group_id + '/' + url_group_name + '/';
		});

	}

	function ajaxFileUpload(groupid, imagetype, f, onerror) {

		jQuery.ajaxFileUpload ({
			url: '/' + groupType + 's/imageupload/' + groupid + '/' + imagetype + '/',
			secureuri: false,
			fileElementId: 'select-' + imagetype,
			dataType: 'json',
			success: function (data, status) {
				jQuery('#skip-avatar').fadeOut(function() {
					jQuery('#upload-avatar').fadeIn();	
				});
				
				jQuery('#skip-skin').fadeOut(function() {
					jQuery('#upload-skin').fadeIn();	
				});

				if (typeof(f)  == 'function') {
					f(data);
				}

				jQuery("#select-" + imagetype).change(selectImage);
			},
			error: function (data, status, e) {
				alert (status);
				if (typeof(onerror)  == 'function') {
					onerror(data);
				}
			},
			timeout: 60000
			
		});

		return false;
	}

	var theBody = jQuery('body:first');
	jQuery("#edit-profile-skin input[type = 'radio']").change(function() {

		if (jQuery(this).val() == 1) theBody.css({ backgroundPosition: 'left 214px', backgroundRepeat: 'repeat' });
		else theBody.css({ backgroundPosition : 'center 214px', backgroundRepeat: 'no-repeat' });

	});

	var imagetype;
	var fileselection;
	function selectImage() {

		if (jQuery(this).val() == '') return false;

		imagetype = jQuery(this).hasClass('skin') ? 'skin' : 'avatar';
		var theForm = jQuery(this).closest('form');

		fileselection = jQuery(this).attr('id');

		jQuery(this).attr('disabled', 'disabled');

		/* 
		var loader = jQuery('.ajax-loader:first', theForm);
		loader.fadeIn('fast');
		*/

		ajaxFileUpload(group_id, imagetype, function(data) {

			if (data['error'] == 'FILE TOO SMALL') {

					dialog('/dialogs/image_upload_too_small/');
					//loader.fadeOut('fast');
					
					jQuery('#' + fileselection).removeAttr('disabled');
					return false;
			}


			modal.css('width', 'auto');

			modal.load('/dialogs/image_crop/' + data['filename'] + '/' + data['width'] + '/' + data['height'] + '/' + group_id + '/' + groupType + '/' + imagetype + '/', function() {

				// loader.fadeOut('fast');

				var buttons = jQuery('input.closebtn', modal).click(function(e) {

					e.preventDefault();

					var postData;
					var form = modal.find('form');
					var yes = jQuery(this).hasClass('save');
					var postData = form.serialize();

					if (yes) {
						// confirm and update image
						postData += '&crop=true';
					} else {
						// delete temp image
						postData += '&cancel=true';
					}
					postData += '&ajax=true';

					jQuery.ajax({
						url: form.attr('action'),
						type: "POST",
						data: postData,
						success: function(msg) {

							var jsonObj = jQuery.evalJSON(msg);

							if (jsonObj['result'] == 'SUCCESS') {
								

								var timestamp = new Date().getTime();

								switch (imagetype) {

									case 'skin': 

										jQuery('.image-filename', theForm).val(jsonObj['filename']);
										
										if (jQuery('#tile', theForm).is(':checked')) {
											pos = 'left';
											rep = 'repeat';
										} else {
											pos = 'center';
											rep = 'no-repeat';
										}
										theBody.attr( 'style', 'background: #000000 url(' + MPORA.globalVars.global_base_url + 'tmp/' + jsonObj['filename'] + ') ' + rep + ' ' + pos + ' 214px;');
									break;
									case 'avatar':
										jQuery('#avatar').fadeOut('fast', function() {

											jQuery(this).attr('src', MPORA.globalVars.base_url + 'images/group/' + group_id + '/m/?'+timestamp);
											jQuery(this).fadeIn('fast');
										});
										
										if (newGroup.length > 0) {
											jQuery(this).pause(500).fadeIn(1, function() {
												nav.next();
											});
										}
									break;
									
								}

							}

							modal.overlay().close();
						},
						error: function(msg, b, c) {
						}
					});
				});

				modal.find('img').load(function() {

					// wait until the image has loaded

					imgWidth = data['width'];
					imgHeight = data['height'];

					modal.overlay({
						expose: {
							color: '#333',
							loadSpeed: 200,
							opacity: 0.9
						},
						closeOnClick: false,
						api: true,
						onLoad: function() {

							setUpCropper();
						},
						onClose: function() {

							jQuery('#' + fileselection).removeAttr('disabled').bind('change', selectImage);

						},
						close: '.close'
					}).load();
				});
			});
		}, function() {

			// loader.fadeOut('fast');			
			jQuery('#' + fileselection).removeAttr('disabled').bind('change', selectImage);
			return false;	
		});
		return false;
	}

	jQuery(".select-file").bind('change', selectImage).live('click', function() {
		jQuery(this).val('');
	});

	function setUpCropper() {

		var crop = jQuery('#crop-image');
		if ( crop.length > 0 ) {
			// Crop image page
			
			var box = jQuery('#crop', crop);

			var x 		= jQuery("input[name='x']", crop);
			var y 		= jQuery("input[name='y']", crop);
			var height 	= jQuery("input[name='h']", crop);
			var width 	= jQuery("input[name='w']", crop);

			function processCoords(c) {
				x.val(c.x);
				y.val(c.y);
				width.val(c.w);
				height.val(c.h);
			};

			var opts = {
	 		    trueSize: [ box.attr('truewidth'), box.attr('trueheight') ],
				allowMove: true,
				allowResize: true,
//				aspectRatio: 1,
//				minSize: [165, 165],
				onSelect: processCoords
			}

			if (imagetype == 'skin') {

				var dimensions = [ 0, 0, imgWidth, imgHeight ];
				processCoords({x: 0, y: 0, w: imgWidth, h: imgHeight});

			} else {

				var xQ = imgWidth / 2;
				var yQ = imgHeight / 2;
				var dimensions = [ xQ - 83, yQ - 83, xQ + 82, yQ + 82 ];
				processCoords({x: xQ - 83, y: yQ - 83, w: 165, h: 165});
				
				opts['aspectRatio'] = 1;
				opts['minSize'] = [165, 165];

			}
			var api = jQuery.Jcrop('#crop', opts);
			api.setSelect(dimensions);
		};
	}


	if (editGroupMembers.length > 0) {
		// Members page

		var members = jQuery('#members', editGroupMembers);
		var blocked = jQuery('#blocked', editGroupMembers);


		function processMemberTypeChange(e) {

			e.preventDefault();
			var form = jQuery(this).parents('form');
			var input = jQuery(this);

			var previousGroup = form.parent().attr('id');

			var postData = form.serialize() + '&ajax=true&' + input.attr('name') + '=' + input.val();

			jQuery.ajax({
				url: form.attr('action'),
				type: "POST",
				data: postData,
				async: false,
				success: function(msg) {

					if (msg.indexOf('NOT LOGGED IN') == 0) {
						window.location.href = "/usercp/login/";
						return false;
					}
					if (msg.indexOf('NON-MEMBER') == 0) {

						form.fadeOut('fast', function() {
							var parent = form.parent();

							var id = form.find("input[name = 'member']").val();
							var name = form.find('p').text();
							jQuery(this).remove();

							if (parent.find('form').length == 0) {
								parent.fadeOut('fast');
							}
							if ( (inviteMembers.length > 0)  && (msg.indexOf(':1') == 10) ) {
								jQuery('<div><input type="checkbox" value="' + id + '" name="friends[' + id + ']" /><img height="26" width="26" src="' + MPORA.globalVars.base_url + 'images/avatar/' + id + '/s/" alt="' + name + '" /><p>' + name + '</p></div>').insertAfter( jQuery('#selectall', inviteMembers).parent() );

								jQuery('#selectall', inviteMembers).parent().fadeIn('fast');
								jQuery('#no-friends', inviteMembers).fadeOut('fast');
							}
						});
					}
					if (msg.indexOf('MEMBER') == 0) {

						if (previousGroup == 'members') {

							var fieldset = form.find('fieldset');
							var removeadmin = fieldset.find('input:first');

							removeadmin.fadeOut('fast', function() {

								var newInput = jQuery('<input type="submit" value="' + MPORA.lang.group_make_admin + ' &#187;" name="make-admin" />');
								newInput.bind('click', processMemberTypeChange);

								newInput.insertAfter(removeadmin);
								removeadmin.remove();
								fieldset.find('input').fadeIn('fast');
								form.removeClass('admin');
							});

							return false;
						}

						form.fadeOut('fast', function() {
							var parent = form.parent();

							var newForm = form.clone();
							var fieldset = newForm.find('fieldset');

							fieldset.find('input').remove();

							//if (admin) fieldset.html('<p>Group Administrator</p>');
							//else
							fieldset.html('<input type="submit" value="' + MPORA.lang.group_make_admin + ' &#187;" name="make-admin" /><input type="submit" value="' + MPORA.lang.group_block + ' &#187;" name="block" />');

							fieldset.find('input').bind('click', processMemberTypeChange);


							jQuery(this).remove();

							newForm.insertAfter(members.find('h2'));
							members.fadeIn('fast', function() {
								newForm.fadeIn('fast', function() {

									if (parent.find('form').length == 0) {
										parent.fadeOut('fast');
									}
								});
							});
						});
					}
					if (msg.indexOf('BLOCKED') == 0) {

						form.fadeOut('fast', function() {
							var parent = form.parent();

							var newForm = form.clone();
							newForm.removeClass('admin');

							var fieldset = newForm.find('fieldset');

							fieldset.find('input').remove();
							fieldset.html('<input type="submit" value="' + MPORA.lang.group_unblock + ' &#187;" name="unblock" />');

							fieldset.find('input').bind('click', processMemberTypeChange);

							form.remove();

							newForm.insertAfter(jQuery('h2', blocked));

							blocked.fadeIn('fast', function() {

								newForm.fadeIn('fast', function() {

									if (parent.find('form').length == 0) {
										parent.fadeOut('fast');
									}
								});
							});
						});
					}
					if (msg.indexOf('ADMIN') == 0) {

						var fieldset = form.find('fieldset');
						var makeadmin = fieldset.find('input:first');

						makeadmin.fadeOut('fast', function() {

							var newInput = jQuery('<input type="submit" value="' + MPORA.lang.remove_admin + ' &#187;" name="remove-admin" />');
							newInput.bind('click', processMemberTypeChange);

							newInput.insertAfter(makeadmin);

							makeadmin.remove();
							fieldset.find('input').fadeIn('fast');
							form.addClass('admin');
						});
					}
				}
			});

		}
		jQuery("form input", editGroupMembers).bind('click', processMemberTypeChange);
	}

	//if (newEvent.length > 0) {

		function amTopm(hour, ampm) {

			hour = parseInt(hour, 10);

			if ((ampm == 'am') && (hour == 12)) hour = 0;
			else if ((ampm == 'pm') && (hour < 12)) hour = hour + 12;

			return hour;
		}

	//	validDates = false;

		var invalidStart = jQuery('#invalid-start', editAbout);
		var invalidEnd = jQuery('#invalid-end', editAbout);
		var invalidDates = jQuery('#invalid-dates', editAbout);

		var dateSelectors = jQuery('.date select, .time select', editAbout);

		function validateDates() {

			var result = true;

			// dates must not be in the past, and end must be > start
			var start = new Date();
			var end = new Date();
			var now = new Date();

			var hour = amTopm(dateSelectors.filter("[name = 'start_hour']").val(), dateSelectors.filter("[name = 'start_meridiem']").val());

			start.setHours(hour);

			start.setMinutes(dateSelectors.filter("[name = 'start_min']").val());
			start.setDate(dateSelectors.filter("[name = 'start_day']").val());
			start.setMonth(parseInt(dateSelectors.filter("[name = 'start_month']").val(), 10) - 1);
			start.setYear(dateSelectors.filter("[name = 'start_year']").val());

			if (start < now) {
				invalidStart.show('fast');
				result = false;
			}
			else invalidStart.hide('fast');

			var hour = amTopm(dateSelectors.filter("[name = 'end_hour']").val(), dateSelectors.filter("[name = 'end_meridiem']").val());

			end.setHours(hour);
			end.setMinutes(dateSelectors.filter("[name = 'end_min']").val());
			end.setDate(dateSelectors.filter("[name = 'end_day']").val());
			end.setMonth(parseInt(dateSelectors.filter("[name = 'end_month']").val(), 10) - 1);
			end.setYear(dateSelectors.filter("[name = 'end_year']").val());

			if (end < now) {
				invalidEnd.show('fast');
				result = false;
			}
			else invalidEnd.hide('fast');

			if (result) {
				if (end <= start) {
					invalidDates.show('fast');
					result = false;
				}
				else {
					invalidDates.hide('fast');
				}
			}
			return result;
		}

		function checkDate(dateDiv) {
			var dayCont = jQuery('.day', dateDiv);
			var day = jQuery('option:selected', dayCont);
			var month = parseInt(jQuery('.month option:selected', dateDiv).val(), 10) - 1;
			var year = jQuery('.year option:selected', dateDiv).val();

			var testDate = new Date();
			testDate.setYear(year);
			testDate.setMonth(month);
			testDate.setDate(day.val());

			if (testDate.getMonth() != month) jQuery("option[value = '1']", dayCont).attr('selected', 'selected');
		}
		jQuery('.date select, .time select', editAbout).bind('change', function() {
			checkDate(jQuery(this).parent());
		});

		function selectDate(dateText, inst) {

			var day = dateText.substr(3, 2);
			var month = dateText.substr(0, 2);
			var year = dateText.substr(6, 4);

			var holder = jQuery(this).parent();

			jQuery(".day option[value = '" + parseInt(day, 10) + "']", holder).attr('selected', 'selected');
			jQuery(".month option[value = '" + month + "']", holder).attr('selected', 'selected');
			jQuery(".year option[value = '" + year + "']", holder).attr('selected', 'selected');
		}

		var today = new Date();
		var year = today.getFullYear();


		if (isEvent) {
			jQuery("#start_picker").datepicker({showOn: 'button', buttonImage: '/loadres/images/interface/calendar.gif', buttonImageOnly: true, onClose: selectDate, minDate: 0, maxDate: new Date(parseInt(year, 10) + 4, 11, 31) });
			jQuery("#end_picker").datepicker({showOn: 'button', buttonImage: '/loadres/images/interface/calendar.gif', buttonImageOnly: true, onClose: selectDate, minDate: 0, maxDate: new Date(parseInt(year, 10) + 4, 11, 31) });


			if (editLocation.length > 0) {

				jQuery('form', editLocation).submit(function() {

					var formFilled = (jQuery('#lat').val() != 0);
					jQuery('form .address input').each(function() {
						if (jQuery.trim(jQuery(this).val()).length > 0) {
							formFilled = true;
							return false;
						}
					});

					if (!formFilled) {

						dialog('/dialogs/no_location/');

						return false;
					}

					groupUpdate(jQuery(this), function() {
						if (isNew)
						editLocation.pause(500).show(1, function() {
							nav.next();
						});
					});
					return false;
				});

			}
		}
});
