var groups_loaded = false;
var groups_last_selected_id = false;
var groups_last_selected_name = false;

function undo_send_to_group()
{
	var gid = groups_last_selected_id;
	var name = groups_last_selected_name;

	var div = $('AddingToGroupProgress').cloneNode(true);
	div.innerHTML = div.innerHTML.replace(/%groupname%/, name);
	Modalbox.show(div, {title: 'Adding To Group..', width: 600, transitions: false});

	new Ajax.Request("/services/new/", {
		parameters: "method=dumpr.groups.remove&gid=" + gid + "&magic=" + magic_id,
		method: 'get',
		onComplete: function(xh) {
			var json = xh.responseText.evalJSON();
			if (json.status == "ok") {
				// all is well
				var div2 = $('RemoveFromGroupDone').cloneNode(true);
				div2.innerHTML = div2.innerHTML.replace(/%groupname%/, name);
				Modalbox.show(div2, {title: 'Adding To Group..', width: 600, transitions: false});
			} else {
				dumprjs.hideStatusWindow();			
			}
		}
	});
}

function send_to_group(gid, name)
{
	groups_last_selected_id = gid;
	groups_last_selected_name = name;

	$("pulldown_menu").hide();

	var div = $('AddingToGroupProgress').cloneNode(true);
	div.innerHTML = div.innerHTML.replace(/%groupname%/, name);
	Modalbox.show(div, {title: 'Adding To Group..', width: 600, transitions: false});

	new Ajax.Request("/services/new/", {
		parameters: "method=dumpr.groups.add&gid=" + gid + "&magic=" + magic_id,
		method: 'get',
		onComplete: function(xh) {
			var json = xh.responseText.evalJSON();
			if (json.status == "ok") {
				// all is well
				var div2 = $('AddingToGroupDone').cloneNode(true);
				div2.innerHTML = div2.innerHTML.replace(/%groupname%/, name);
				Modalbox.show(div2, {title: 'Adding To Group..', width: 600, transitions: false});
			} else {
				dumprjs.hideStatusWindow();			
			}
		}
	});
}

function add_group_to_list(gid, icon, name)
{
	var div = $("template_group_list").cloneNode(true);
	div.getElementsByTagName("img")[0].src = icon;
	div.getElementsByTagName("span")[0].innerHTML = name;
	div.onclick = send_to_group.bind(undefined, gid, name);
	div.id = "groupitem_" + $("pulldown_menu_contents").children.length;
	div.show(); 
	$("pulldown_menu_contents").appendChild(div);
}

function is_send_to_group_open()
{
	return $("pulldown_menu").visible();
}

function hide_send_to_group_pulldown()
{
	$("pulldown_menu").hide();
}

function open_send_to_group_pulldown()
{
	blur();

	if (is_send_to_group_open())
	{
		// second click hides
		hide_send_to_group_pulldown();
		return;
	}

	var offsets = Position.positionedOffset($("control_add_group"));
	var left = offsets[0];
	var top = offsets[1] + 21;
	var menu = $("pulldown_menu");
	menu.style.top = top + "px";
	menu.style.left = left + "px";
	menu.show();

	if (groups_loaded == false)
	{
		groups_loaded = true;

		new Ajax.Request("/services/new/", {
			parameters: "method=dumpr.groups.browse",
			method: 'get',
			onComplete: function(xh) {
				$("pulldown_menu_contents_spinner").style.display = "none";
				var json = xh.responseText.evalJSON();
				if (json.status == "ok") {
					var n = json.groups.length;
					for (var i=0; i<n; i++)
					{
						add_group_to_list(json.groups[i].gid, json.groups[i].icon, json.groups[i].name);
					}
				} else {
					dumprjs.hideStatusWindow();			
					// fixme
				}
			}
		});     	
	}
}

function onOrderPrint()
{
	$("addToCartForm").submit();
}

function updateLikeImg()
{
	if ($("likeimg"))
	{
		var src = "/images/icons/" + (user_likes ? "liked" : "unliked") + ".png";
		$("likeimg").src = src;
	}
}

function toggleLike()
{
	var likes = !user_likes;
	var method = "dumpr.likes." + (likes ? "add" : "remove");
	new Ajax.Request("/services/new/", {
		parameters: "method=" + method + "&magic=" + magic_id,
		method: 'get',
		onComplete: function(xh) {
			var json = xh.responseText.evalJSON();
			if (json.status == "ok") 
			{
				user_likes = likes;
				updateLikeImg();
			} 
			else 
			{
			}
		}
	});

}

function addTagHandler()
{
	$("tagAddLink").style.display = "none";
	$("tagAddDiv").style.display = "block";
	$("tagAddInput").focus();
}

function updateTags(tags)
{
	var ul = $("tagsUl");

	while (ul.hasChildNodes()) 
	{
		ul.removeChild(ul.lastChild);
	}

	for (var i=0; i<tags.length; i++)
	{
		var li = document.createElement("li");
		var a = document.createElement("a");
		a.href = "/photos/tags/" + encodeURIComponent(tags[i]);
		var t = document.createTextNode(tags[i]);
		a.appendChild(t);
		var a2 = document.createElement("a");
		a2.href = "#";
		a2.onclick = onDeleteTag.curry(tags[i]);
		a2.innerHTML = "(x)";
		a2.style.marginLeft = "8px";
		li.appendChild(a);
		li.appendChild(a2);
		ul.appendChild(li);
	}
}

function onAddTag()
{
	var tags = $("tagAddInput").value;
	if (tags == "")
	{
		return;
	}

	$("tagAddInput").value = "";

	var options = 
	{
		parameters: "method=dumpr.photos.addTags&magic=" + magic_id + "&tags=" + encodeURIComponent(tags),
		method: 'get',
		onComplete: function(xh)
		{
			var json = xh.responseText.evalJSON();
			if (json.status == "ok") {
				updateTags(json.tags);
			}
		}
	};

	new Ajax.Request("/services/new/", options);
	$("tagAddInput").focus();
}

function onDeleteTag(tag)
{
	if (confirm("Are you sure you want to delete tag " + tag))
	{
		var options = 
		{
			parameters: "method=dumpr.photos.deleteTag&magic=" + magic_id + "&tag=" + encodeURIComponent(tag),
			method: 'get',
			onComplete: function(xh)
			{
				var json = xh.responseText.evalJSON();
				if (json.status == "ok") {
					updateTags(json.tags);
				}
			}
		};

		new Ajax.Request("/services/new/", options);
	}

	return false;
}

function savePicture() 
{
	if (global_user_logged_in)
	{
		// logged in
		document.location = "/photo/" + magic_id + "/save/";
	}
	else
	{
		// user is not logged in
		Modalbox.show($('LoginRequiredForSaveWindowContent').cloneNode(true), {title: 'Login Required', width: 600});
	} 
};

