$(document).ready(function()
{
	$('.menu').initMenu({
		onSelectionChanged: function(items)
		{
			$("#btnTrade")[items.length > 0 ? 'removeClass' : 'addClass']('button-disabled')
		}
	});
	$('.type-pics').click(function(e)
	{
		$(this).parents("li").find("li:has(span.type[data='1'])").toggleClass('hidden').slideToggle();
		$(this).toggleClass("hide");
		if($(this).hasClass("hide"))
		{
			$(this).parents("li").find("a:has(span.type[data='1'])").removeClass("selected");
			updateTradeBtn();
		}
		e.preventDefault();
		e.stopPropagation();
	})
	$('.type-movies').click(function(e)
	{
		$(this).parents("li").find("li:has(span.type[data='2'])").toggleClass('hidden').slideToggle();
		$(this).toggleClass("hide");
		if($(this).hasClass("hide"))
		{
			$(this).parents("li").find("a:has(span.type[data='2'])").removeClass("selected");
			updateTradeBtn();
		}
		e.preventDefault();
		e.stopPropagation();
	})

	$('#accountForm input').bind('click keyup change', function()
	{
		var ready = true;
		$('#accountForm input').each(function()
		{
			if($.trim($(this).val())=="") ready = false;
		})

		if(ready && $("#btnNext").hasClass("button-disabled"))
			$("#btnNext").removeClass("button-disabled")

		else if(!ready && !$("#btnNext").hasClass("button-disabled"))
			$("#btnNext").addClass("button-disabled")
	})
	.change(function()
	{
		$(this).val($.trim($(this).val()))
	})
	.focus(function()
	{
		$(this).select()
	})

	$("textarea, input[type='text']").focus(function(){$(this).select()});

	$(".select-all").click(function(){
		if($(this).hasClass("all-selected"))
		{
			$(this).removeClass("all-selected")
			$(this).parents("li").find("li > a:visible").removeClass("selected")
		}
		else
		{
			$(this).addClass("all-selected")
			$(this).parents("li").find("li > a:visible").addClass("selected")
		}
		updateTradeBtn()
	})
});

function updateTradeBtn()
{
	$("#btnTrade")[$(".menu").find(".selected:visible").length > 0 ? 'removeClass' : 'addClass']('button-disabled')
}

function btnTradeClick()
{
	if($("#btnTrade").hasClass("button-disabled")) return;

	$("#dialog").modal({
		minWidth: 600,
		minHeight: 400,
		onOpen: function(dialog)
		{
			dialog.overlay.fadeIn('slow', function ()
			{
				dialog.container.slideDown('slow', function ()
				{
					dialog.data.fadeIn('fast');
				});
			});
		},
		onClose: function(dialog)
		{
			dialog.data.fadeOut('fast');
			dialog.container.fadeOut('fast', function () {
				dialog.overlay.fadeOut('fast', function () {
					$.modal.close();
				});
			});

		}
	})
}

function btnExportClick()
{
	showExportForm()
}

function btnNextClick()
{
	if($("#btnNext").hasClass("button-disabled")) return;

	if($("#rules").is(":visible"))
	{
		restoreCookieValues()
		showAccountForm();
	}
	else if($("#accountForm").is(":visible"))
	{
		saveCookieValues();
		showStartTradesForm();
	}
	else if($("#startTradesForm").is(":visible") || $("#exportForm").is(":visible"))
		showAccountForm();
}

function saveCookieValues()
{
	$.cookie("email", $("#email").val());
	$.cookie("icq", $("#icq").val());
	$.cookie("nickname", $("#nickname").val());
}

function restoreCookieValues()
{
	$("#email").val($.cookie("email"));
	$("#icq").val($.cookie("icq"));
	$("#nickname").val($.cookie("nickname"));
}

function showAccountForm()
{
	$("#btnNext").addClass("button-disabled");
	if($("#startTradesForm").is(":visible"))
	{
		$("#url").val("").focus()
		$("#title").val("")
	}

	var f = null
	if($("#startTradesForm").is(":visible"))
		f = $("#startTradesForm");
	else if($("#rules").is(":visible"))
		f = $("#rules");
	else if($("#exportForm").is(":visible"))
		f = $("#exportForm");

	f.fadeOut(function()
	{
		$("#accountForm").fadeIn(function() {
			$("#btnNext").text('Start trades!');
			$("#btnCancel").text("Cancel");
		});
		$("#url").focus();
	})
}

function showExportForm()
{
	$("#startTradesForm").fadeOut(function() {
		createExport();
		$("#exportForm").fadeIn();
		$("#btnExport").fadeOut();
	});
}

function showStartTradesForm()
{
	$("#btnNext").addClass("button-disabled");
	$("#btnCancel").addClass("button-disabled");

	$("#accountForm").fadeOut(function()
	{
		$("#tradesList").html("");
		$("#startTradesForm").fadeIn(function() {
			$("#btnNext").text('Add another trade');
			registerTrades();
		});
	})
}

function registerTrades()
{
	$("#tradesList").hide();
	trades = [];
	var tpl = '<tr class="tradeRow"><td class="tradeStatusIcon"><img src="public/spinner.gif"/></td><td class="tradeTitle">%site%</td><td class="tradeState">Registering...</td></tr>';
	$(".menu a.selected").each(function()
	{
		trades.push({
			url: $(this).attr("href"),
			title: $(this).find(".title").text(),
			state: 'wait'
		})
		$("#tradesList").append(tpl.replace("%site%",$(this).find(".title").text()));

	})
	$("#tradesList").fadeIn();

	var doneCount = 0;
	$(trades).each(function(k,v)
	{
		$.get("query.php",
		{
			action: 'signup',
			url: this.url,
			trade_url: $.trim($("#url").val()),
			title: $.trim($("#title").val()),
			email: $.trim($("#email").val()),
			icq: $.trim($("#icq").val()),
			nickname: $.trim($("#nickname").val())
		},
		function(resp)
		{
			function err(msg)
			{
				v.state = "error";
				v.error = msg;
				$("tr.tradeRow:eq("+k+") .tradeStatusIcon img").fadeOut("fast", function()
				{
					$(this).attr("src", "public/error.png").attr("title", msg).fadeIn("fast");
				})
				$("tr.tradeRow:eq("+k+") .tradeState").fadeOut("fast", function()
				{
					$(this).html("Error").attr("title", msg).fadeIn("fast");
				})
			}

			try
			{
				resp = $.parseJSON(resp);
				if(resp.error) err(resp.error)
				else
				{
					v.state = "success"
					$("tr.tradeRow:eq("+k+") .tradeStatusIcon img").fadeOut("fast", function()
					{
						$(this).attr("src", "public/success.png").attr("title", "Trade registered successfully").fadeIn("fast");
					})
					$("tr.tradeRow:eq("+k+") .tradeState").fadeOut("fast", function()
					{
						$(this).text("Success").attr("title", "Trade registered successfully").fadeIn("fast");
					})
				}
			}
			catch(e)
			{
				err(resp)
			}

			doneCount++;
			if(doneCount >= trades.length)
			{
				$("#btnNext").removeClass("button-disabled");
				$("#btnCancel").removeClass("button-disabled").text("Done");
				if(getSuccessTradeCount()>0) $("#btnExport").fadeIn();
			}
		})
	})
}

function getSuccessTradeCount()
{
	var count = 0;
	for(var i=0; i<trades.length; i++)
	{
		if(trades[i].state == "success")
			count++;
	}
	return count;
}

function createExport()
{
	var buf = [];
	for(var i=0; i<trades.length; i++)
	{
		var trade = trades[i];
		//alert(trade.url);
		if(trade.state=="success")
		{
			var line = [];

			$(".exp").each(function(){
				var val = $(this).val();
				switch(val)
				{
					case "nickname":
						line.push(owner.nickname);
						break;
					case "icq":
						line.push(owner.icq);
						break;
					case "email":
						line.push(owner.email);
						break;
					case "url":
						line.push(trade.url);
						break;
					case "title":
						line.push(trade.title)
						break;
					case "domain":
						line.push(getDomain(trade.url));
						break;
				}
			})
			buf.push(line.join($("#splitter").val().replace("\\t","\t")));
		}
	}

	$("#exportResult").val(buf.join("\n"))
}

function getDomain(url)
{
	return (url.match(/:\/\/(.[^/]+)/)[1]).replace('www.','');
}
