function delete_coworker(object) {
	id = object.id.gsub("invitation_delete_", "");
	new Ajax.Request("/invitations/" + id + ".json", {
		method: "delete",
		asynchronous:false,
		onComplete: function(transfer) {
			$("facebox").down(".invitation_"+id).hide();
			$("new_invitation_form").down(".invitation_"+id).hide();
			$("facebox").down(".flash_message").update("Invitation deleted.");
			$("facebox").down(".flash_message").appear();
			$("facebox").down(".flash_message").fade({ duration: 3.0});	
		}
	});	
}

function reinvite_coworker(object) {
	url = getPolymorphicUrl($("facebox").down(".polymorphic_object_id").id, $("facebox").down(".polymorphic_object_type").id);	
	id = object.id.gsub("invitation_reinvite_", "");
	new Ajax.Request(url+"/"+id+".json", {
		method: "put",
		asynchronous:false,
		onComplete: function(transfer) {
			$("facebox").down(".flash_message").update("Your coworker was reinvited.");
			$("facebox").down(".flash_message").appear();	
			$("facebox").down(".flash_message").fade({ duration: 3.0});	
		}
	});	
}

function getPolymorphicUrl(object_id, object_type) {
	if (object_type == "company") {
		url = "/invitations";
	} else {
		url = "/channels/"+object_id+"/invitations";
	}
	return url;
}

function invite_coworkers(object) {
	url = getPolymorphicUrl($("facebox").down(".polymorphic_object_id").id, $("facebox").down(".polymorphic_object_type").id);
	email_addresses = object.down("#emails").value;
		new Ajax.Request(url+".json", {
		method: "post",
		parameters:{emails:email_addresses},
		asynchronous:false,
		onComplete: function(transfer) {
			response = transfer.responseText.evalJSON();
			response.each(function(invitationObject){
				invitationId = invitationObject.invitation.id
				invitationEmail = invitationObject.invitation.to_email
				invitationRow = $("facebox").down(".invitation_"+invitationId);
				if (Object.isUndefined(invitationRow)) {
					if (Object.isUndefined($("facebox").down(".invited_users"))) {
						$("facebox").down(".no_invited_users").replace("<table class='invited_users'><tr class='invitation_"+invitationId+"'><td>"+invitationEmail+"</td><td><a onclick='reinvite_coworker(this);return false;' id='invitation_reinvite_"+invitationId+"' class='reinvite' href='#'>re-invite</a></td><td><a onclick='delete_coworker(this);return false;' id='invitation_delete_"+invitationId+"' class='delete' href='#'>delete invitation</a></td></tr></table>");
						$("new_invitation_form").down(".no_invited_users").replace("<table class='invited_users'><tr class='invitation_"+invitationId+"'><td>"+invitationEmail+"</td><td><a onclick='reinvite_coworker(this);return false;' id='invitation_reinvite_"+invitationId+"' class='reinvite' href='#'>re-invite</a></td><td><a onclick='delete_coworker(this);return false;' id='invitation_delete_"+invitationId+"' class='delete' href='#'>delete invitation</a></td></tr></table>");
					} else {
						$("facebox").down(".invited_users").insert("<tr class='invitation_"+invitationId+"'><td>"+invitationEmail+"</td><td><a onclick='reinvite_coworker(this);return false;' id='invitation_reinvite_"+invitationId+"' class='reinvite' href='#'>re-invite</a></td><td><a onclick='delete_coworker(this);return false;' id='invitation_delete_"+invitationId+"' class='delete' href='#'>delete invitation</a></td></tr>");
						$("new_invitation_form").down(".invited_users").insert("<tr class='invitation_"+invitationId+"'><td>"+invitationEmail+"</td><td><a onclick='reinvite_coworker(this);return false;' id='invitation_reinvite_"+invitationId+"' class='reinvite' href='#'>re-invite</a></td><td><a onclick='delete_coworker(this);return false;' id='invitation_delete_"+invitationId+"' class='delete' href='#'>delete invitation</a></td></tr>");
					}
					$("facebox").down(".invitation_"+invitationId).highlight({duration: 10.0});
					email_addresses = object.down("#emails").value = "";
				} else {
					invitationRow.highlight({duration: 10.0});
					msg = "and reinvited some coworkers"
					email_addresses = object.down("#emails").value = "";
				}
			});
			$("facebox").down(".flash_message").update("Invitation sent. " + msg);
			$("facebox").down(".flash_message").appear();	
			$("facebox").down(".flash_message").fade({ duration: 10.0});
		}
	});	
}

function insert_email_fields() {
	$("emails").insert('<div id="email"><span class="email_delete_link" onclick="$(this).up(\'div\').remove()">&times; remove</span><input id="email_address_email" type="text" size="30" name="email_addresses[][email]"/></div>');
}

$(document).observe("dom:loaded", function() {
	// Set the timezone offset, unsure if we even need this, can't hurt
	(function() {
		// Get users Timezone offset and set it in a cookie.
		var date = new Date();
		var offset = date.getTimezoneOffset();
		Cookie.set("tzoffset", offset);
	})();
	// Parse the formatted spans
	DateFormat.autoParse();
	DateFormat.setInterval(120*1000);
});


$(document).observe("dom:loaded", function(){
	
	// fade flash messages if the exists
	Effect.BlindUp('flash', { delay: 3.0 });
	
	//YAHOO.widget.Logger.enableBrowserConsole();
	
	$$(".js_new_channel_hide").each(function(element){
		element.observe("click", function(e){
			e.stop();
    	$("li_new_channel").hide();
    	$("li_new_channel_submit").hide();
    	$("js_new_channel_trigger").show();
		});
	});
		
	$$(".js_new_channel_show").each(function(element){
		element.observe("click", function(e){
			e.stop();
    	$("li_new_channel").show();
    	$("li_new_channel_submit").show();
    	$("channel_name").focus();
    	e.element().hide();
		});
	});
	
	$$(".hide_n_show").each(function(element){
		element.observe("click", function(e){
			e.stop();
			var element = e.element().readAttribute("rel");
			Element.toggle(element);
			title = e.element().innerHTML
			e.element().update(e.element().readAttribute("title"));
			e.element().writeAttribute('title', title);
		});
	});
	
	$$(".quick_answer").each(function(element){
		element.observe("click", function(e){
			e.stop();
			e.element().up().up().next(".quick_answer_form").toggle();
			element.toggleClassName('selected');
			e.element().up().up().next(".quick_answer_form").down("#post_title").focus()
		});
	});
	
	$$(".new_quick_answer").each(function(element){
		element.observe("submit", function(e){
			e.stop();
			$('spinner').show();
			element.request({
				parameters:{format:"json"},
				asynchronous:false,
				onComplete: function(transfer) {
					post = transfer.responseText.evalJSON().post.post;
					replies = element.up().up().up().down(".replies");
					if (Object.isUndefined(replies)) {
						element.up().up().up().down(".no_replies").replace('<div class="replies"><h5 class="hidden">1 Reply</h5><div class="reply_read_true reply reply_added_'+post.parent_id+'"><div class="asset"><img title="'+post.user_name+'" alt="'+post.user_name+'" src="'+$("user_avatar_url_"+post.parent_id).value+'"/></div><p class="title_and_body"><a href="'+$("parent_post_url_"+post.parent_id).value+'#post_'+post.id+'">'+post.title+'</a></p><p class="user_and_time"> by <a href="/users/jan">'+post.user_name+'</a></p></div></div>');
					} else {
					replies.insert('<div class="reply_read_true reply reply_added_'+post.parent_id+'"><div class="asset"><img title="'+post.user_name+'" alt="'+post.user_name+'" src="'+$("user_avatar_url_"+post.parent_id).value+'"/></div><p class="title_and_body"><a href="'+$("parent_post_url_"+post.parent_id).value+'#post_'+post.id+'">'+post.title+'</a></p><p class="user_and_time"> by <a href="/users/jan">'+post.user_name+'</a></p></div>');
					}
					$$(".reply_added_"+post.parent_id).last().highlight();
					element.up().up().toggle();
					element.up().up().up().down(".quick_answer").toggleClassName('selected');
					element.down("#post_title").value = "";
					$('spinner').hide();
				},
				onSuccess: function(transfer) {},
				onFailure: function() {},
			});
		});
	});
	
	$$(".highlight_rel").each(function(element){
		element.observe("click", function(e){
			e.stop();
			var element = e.element().readAttribute("rel");
			Element.highlight(element);
		});
	});	
	
	$$(".remote").each(function(element){
		element.observe("submit", function(e){
			e.stop();
			e.element().request({
				parameters:{format:"js"}
			})
		});
	});
		
	initializeEditPostLinks();
	initializeDeleteAttachmentLinks();
	initializeDeletePostLinks();
	
});

function initializeFaceboxFor(id) {
	$$('facebox_'+id).each(function(elem,i){
		Event.observe(elem, 'click', function(e){
			Event.stop(e);
			facebox.click_handler(elem, e);
		});
	});
};

function initializeEditPostLinks() {
	$$(".post_edit_link").each(function(element){
		element.observe("click", function(e){
			e.stop();
			var element = e.element().up().up().up().up().up();
			post_id = element.id.gsub("post_", "");
			new Ajax.Request("/posts/" + post_id + "/edit", {
				method: "get",
				asynchronous:false,
				onComplete: function(transfer) {
					element.replace(transfer.responseText);
					new Post({uploader:"edit_attach_file", uploader_table_element:"edit_upload_files", uploader_file_table_element: "edit_upload_files_table", form:"edit_post", operation_method:"edit", insertTo: element});
					initializeDeleteAttachmentLinks();
				}
			});
		});
	});
};

function initializeDeleteAttachmentLinks() {
	$$(".edit_delete_attachment").each(function(element){
		element.observe("click", function(e){
			e.stop();
			asset_id = element.id.gsub("delete_asset_", "");
			new Ajax.Request("/assets/" + asset_id, {
				method: "delete",
				asynchronous:false,
				onComplete: function(transfer) {
					$("asset_"+asset_id).remove();
				}
			});
		});
	});
};
	
function initializeDeletePostLinks() {
	$$(".post_delete_link").each(function(element){
		element.observe("click", function(e){
			e.stop();
		  if(!confirm('ARE YOU SURE YOU WANT TO DELETE THIS POST WITH ALL ITS REPLIES? THIS CANNOT BE UNDONE!'))
		    return;
			var element = e.element().up().up().up().up().up();
			post_id = element.id.gsub("post_", "");
			new Ajax.Request("/posts/" + post_id, {
				method: "delete",
				asynchronous:false,
				onComplete: function(transfer) {
					Effect.Fade(element, {duration: 1.0, afterFinish: function(){ element.remove() }});
				}
			});
		});
	});
};

//ugly KC implementation
var kc = Array(65,66,39,37,39,37,40,40,38,38);
$(document).observe("keydown", function(event){
	var t = kc.pop();
	if(event.keyCode == t) {
		if(kc.length == 0)
			alert("Hey you've found the easteregg before it's even there! yeah!");
			return;
	}
	else {
		kc = Array(65,66,39,37,39,37,40,40,38,38);
	}
})