function sd(id)
{
	if($('#tripleg_'+id).html().length > 0)
		$('#tripleg_'+id).html('hello');
}
$(function() {
    $("#current_language").mouseover(function() {
        //alert("kostas");
        $("#languages").css("display","block");
    });
    $("#languages").mouseleave(function() {
        $("#languages").css("display","none");
    });

	if ($("#area_depart_but").length > 0)
	{
		function selectArea(ddId, resultsId, hiddenId)
		{
			var option = $("#" + ddId + " option:selected");
			if (option.val() != "0_0_empty")
			{
				$("#" + resultsId).html('<table class="appleLike"><tr><td class="sele">' + option.text() + "</td></tr></table>");
				$("#" + hiddenId).val(hiddenId + '_' + option.val());
			}
		}
		$("#area_depart_but").click(function() {
			selectArea("area_depart", "depart_results", "depart");
		});
		$("#area_arrival_but").click(function() {
			selectArea("area_arrival", "arrival_results", "arrival");
		});
		$("#area_depart").change(function() {
			selectArea("area_depart", "depart_results", "depart");
		});
		$("#area_arrival").change(function() {
			selectArea("area_arrival", "arrival_results", "arrival");
		});

		$("#button").click(function () {
			$('#extra').show("slow");
		});
		$("#close").click(function () {
			$('#extra').hide("slow");
		});
		$("#TripReturnReturn").click(function () {
			$("#dater2").css('display','inline');
		});
		$("#TripReturnOneway").click(function () {
			$("#dater2").css('display','none');
		});
	}
	
	if ($("#place1").length > 0)
	{
		// For autocomplete
		(function(){

			function wait(id, on)
			{
				var el = $("#" + id);
				if (on)
					el.show();
				else
					el.hide();
			}

			var gacache = {}, gax;
			var gac = function(wid) {

			return function(request, response) {
				var term = request.term;
				if (term in gacache) {
					wait("p" + wid + "wait", false);
					response(gacache[term]);
					return;
				}
				gax = $.ajax({
				type: "POST",
				url: "/geocodings/gac",
				data: request,
				dataType: "json",
				success: function(data, status, xhr) {
						gacache[term] = data;
						if (xhr === gax)
						response(data);
					},
				complete: function(jqXHR, textStatus) {
						wait("p" + wid + "wait", false);
					}
				});
			};

			};
			$("#place1")
			.autocomplete({
				minLength: 3,
				source: gac(1),
				select: function() {
					setTimeout(function() {
						$("#but").trigger("submit");
					}, 1);
				},
				search: function() {
				wait("p1wait", true);
				}
			});
			$("#place2")
			.autocomplete({
				minLength: 3,
				source: gac(2),
				select: function() {
					setTimeout(function() {
						$("#but2").trigger("submit");
					}, 1);
				},
				search: function() {
				wait("p2wait", true);
				}
			});
			$("#form1").submit(function() {
				$("#place1").autocomplete("close");
			});
			$("#form2").submit(function() {
				$("#place2").autocomplete("close");
			});
		})();
	}
	
	if ($("a.fancyframe").length > 0)
	{
		$("a.fancyframe")
			.fancybox({
				width: 600,
				height: 360,
				type: "iframe",
				autoScale: false,
				transitionIn: "none",
				transitionOut: "none",
				scrolling: "no",
				onComplete: function(ar, i) {
					window.gl_id = ar[i].getAttribute("id");
					window.gl_c = window.gl_c2 = $(ar[i]).find(".gastext .cost").text();
				},
				onCleanup: function(ar, i) {
					if (window.gl_id == ar[i].getAttribute("id")) {
						if (window.gl_c != window.gl_c2)
							$("#" + window.gl_id + " .gastext .cost").text(window.gl_c2);
					}
				}
			});
	}
	
	trips_list_init();
});

function make_hotel_gallery(hid)
{
	// make
	var len = $("#hg_" + hid + " a").length;
	$("#hg_" + hid + " a")
		.each(function(idx) {
			$(this).attr("title", $(".title h3", $("#hg_" + hid).parent()).text() + " - " + (idx+1) + "/" + len);
		});
	$("#hg_" + hid + " a")
		.attr("rel", "gallery_" + hid)
		.fancybox({
			type: "image",
			titlePosition: "over"
			});
	// and show
	$("#hg_" + hid + " a").eq(0).trigger("click");
}

function show_hotel_gallery(hid)
{
	if ($("#hg_" + hid + " a").length == 0)
	{
		return true;
	}
	else
	{
		$("#hg_" + hid + " a").eq(0).trigger("click");
		return false;
	}
}

function buttonlist()
{
	$(".buttonlist.radiogroup:not(.hooked)")
		.addClass("hooked")
		.find(".btn")
		.click(function(e) {
			e.preventDefault();
			if ($(this).hasClass("selected"))
				return;
			$(this).closest(".radiogroup").find(".btn").removeClass("selected");
			$(this).addClass("selected");
		});
		
	$(".buttonlist.toggle:not(.hooked)")
		.addClass("hooked")
		.find(".btn")
		.click(function(e) {
			e.preventDefault();
			$(this).toggleClass("selected");
		});

	$(".buttonlist.sortgroup:not(.hooked)")
		.addClass("hooked")
		.find(".btn")
		.click(function(e) {
			e.preventDefault();
			if ($(this).hasClass("selected"))
			{
				$(this).toggleClass("asc desc");
				return;
			}
			$(this).closest(".sortgroup").find(".btn").removeClass("selected asc desc");
			$(this).addClass("selected asc");
		});
}

function trips_list_init()
{
	function rows_clickable()
	{
		var r = $("#trips_list.d1 > table tr");
		if (r.length > 0)
		{
			r.each(function(index, tr) {
				var href = $("td:first-child a", tr).attr("href");
				if (href) {
					$("td:not(:first-child)", tr).addClass("a").wrapInner('<a href="' + href + '"/>"');
				}
				$(tr).addClass("click");
			});
		}
	}
	rows_clickable();
	
	if (!window.res)
		return;
	var res = window.res;
	window.res = null;

	function groupData(res)
	{
		var trips = res.data, all = [], abk = {};
		for (var i=0; i<trips.length; i++)
		{
			var t = trips[i];
			
			groupKey = -1;
			if (res.options.g)
				groupKey = t.grp;
			if (!abk.hasOwnProperty(groupKey))
			{
				var group = { items: [] };
				abk[groupKey] = group;
				all.push(group);
				if (res.options.g)
					group.mod = t.mod;
			}
			abk[groupKey].items.push(t);
		}
		
		// sort groups
		all.sort(function(a, b) {
			if (a.mod.length < b.mod.length)
				return -1;
			if (a.mod.length > b.mod.length)
				return 1;
			return (a.mod.join(",").localeCompare(b.mod.join(",")));
		});
		
		res.grouped = all;
	}
	
	function sortGroups(res)
	{
		var fieldName = res.options.sfl[res.options.sf],
			groups = res.grouped,
			mul = res.options.sd ? -1 : 1;
		
		for (var i=0; i<groups.length; i++)
		{
			groups[i].items.sort(function(a, b) {
				
				var av = a[fieldName], bv = b[fieldName];
				if (av < bv) return -1 * mul;
				if (av > bv) return 1 * mul;

				return 0;
			});
		}
	}
	
	function getModesHtml(modes, sep)
	{
		if (sep === undefined) sep = true;
		
		var t = "", l = modes.length;
		for (var i=0; i<l; i++)
		{
			var mod = '<img src="/img/' + modes[i] + '1.png" alt="' + modes[i] + '">';
			t += mod;
			if ((i < l -1) && sep)
				t += '<span>&nbsp;••&nbsp;</span>';
		}
		return t;
	}
	
	function renderList(res)
	{
		var s = "";
		s += '<table>';
		s += '<thead><tr>';
		s += '<th>' + '#' + '</th>';
		s += '<th>' + res.labels.dep + '</th>';
		s += '<th>' + res.labels.tot + '</th>';
		s += '<th>' + res.labels.wat + '</th>';
		s += '<th>' + res.labels.arr + '</th>';
		if (!res.options.g)
			s += '<th>' + res.labels.mod + '</th>';
		s += '</tr></thead>';

		s += '<tbody>';
		for (var k=0; k<res.grouped.length; k++)
		{
			var group = res.grouped[k];
			
			if (res.options.g)
			{
				s += '<tr class="group">';
				s += '<td colspan="5" class="mod">' + getModesHtml(group.mod) + '</td>';
				s += '</tr>';
			}
			for (var i=0; i<group.items.length; i++)
			{
				var trip = group.items[i];
				
				var href = "/trips/trip_summaries/trip:" + trip.idx + "/sid:" + res.options.sid;
				
				s += '<tr>';
				s += '<td class="a"><a href="' + href + '">' + (i+1) + '</a></td>';
				s += '<td>' + trip.dep_f + '</td>';
				s += '<td>' + trip.tot_f + '</td>';
				s += '<td>' + trip.wat_f + '</td>';
				s += '<td>' + trip.arr_f + '</td>';
				if (!res.options.g)
					s += '<td class="mod">' + getModesHtml(trip.mod) + '</td>';
				s += '</tr>';
			}
		}

		s += '</tbody>';
		/*s += '<tfoot><tr><td colspan="6">' + JSON.stringify(res.options) + '</td></tr></tfoot>';*/
		s += '</table>';
		
		$("#trips_list").empty().html(s).attr("class", "d" + res.options.dt + " g" + (res.options.g ? "1" : "0"));
		rows_clickable();
	}
	
	function renderTiles(res)
	{
		var s = "";

		for (var k=0; k<res.grouped.length; k++)
		{
			var group = res.grouped[k];
			
			if (res.options.g)
			{
				s += '<div class="group">';
				s += '<div class="mod">' + getModesHtml(group.mod) + '</div>';
				s += '<div class="items">';
			}
			for (var i=0; i<group.items.length; i++)
			{
				var trip = group.items[i], t;

				var href = "/trips/trip_summaries/trip:" + trip.idx + "/sid:" + res.options.sid;
				
				t = '<table class="item">';

				t += 	'<tr>'
					+		'<td>'
					+			'<div class="label">' + res.labels.dep + '&nbsp;-&nbsp;' + res.labels.arr + '</div>'
					+			'<div class="value">' + trip.dep_f + '</div>'
					+			'<div class="value">' + trip.arr_f + '</div>'
					+		'</td>'
					+		'<td class="idx">'
					+			'<div class="idx">' + (i + 1) + '</div>'
					+		'</td>'
					+	'</tr>';
				
				t += 	'<tr>'
					+		'<td colspan="2">'
					+			'<div class="label">' + res.labels.tot + '&nbsp;-&nbsp;' + res.labels.wat + '</div>'
					+			'<div class="value">' + trip.tot_f + '</div>'
					+			'<div class="value">' + trip.wat_f + '</div>'
					+		'</td>'
					+	'</tr>';
				
				if (!res.options.g)
				t += 	'<tr>'
					+		'<td colspan="2">'
					+			'<div class="label">' + res.labels.mod + '</div>'
					+			'<div class="value mod">' + getModesHtml(trip.mod, false) + '</div>'
					+		'</td>'
					+	'</tr>';
					
				t += '</table>';

				s += '<a href="' + href + '">' + t + '</a>';
			}
			if (res.options.g)
			{
				s += '</div></div>';
			}
		}

		$("#trips_list").empty().html(s).attr("class", "d" + res.options.dt + " g" + (res.options.g ? "1" : "0"));
	}

	function render(res)
	{
		if (res.options.dt == 1)
			renderList(res);
		else
			renderTiles(res);
	}

	function setCookies(res)
	{
		var d = new Date();
		d.setTime(d.getTime() + (30*24*3600*1000));
		var cs = "res[{name}]={value}; expires=" + d.toGMTString() + "; path=/trips/results/";

		document.cookie = cs.replace("{name}", "dt").replace("{value}", res.options.dt);
		document.cookie = cs.replace("{name}", "g").replace("{value}", res.options.g ? 1 : 0);
		document.cookie = cs.replace("{name}", "sf").replace("{value}", res.options.sf);
		document.cookie = cs.replace("{name}", "sd").replace("{value}", res.options.sd);
	}

	function onSortButton(idx)
	{
		if (idx == res.options.sf)
		{
			res.options.sd = res.options.sd ? 0 : 1;
		}
		else
		{
			res.options.sf = idx;
			res.options.sd = 0;
		}
		setCookies(res);
		sortGroups(res);
		render(res);
	}
	function onDisplayButton(idx)
	{
		if (idx+1 == res.options.dt)
			return;
		
		res.options.dt = idx + 1;
		setCookies(res);
		render(res);
	}
	function onGroupButton(idx)
	{
		res.options.g = !res.options.g;
		setCookies(res);
		groupData(res);
		sortGroups(res);
		render(res);
	}

	groupData(res);
	sortGroups(res);
	buttonlist();

	$("#triplist_controls .buttonlist.sortgroup .btn").each(function(idx) {
		$(this).click(function() { onSortButton(idx); });
	});
	$("#triplist_controls .buttonlist.radiogroup .btn").each(function(idx) {
		$(this).click(function() { onDisplayButton(idx); });
	});
	$("#triplist_controls .buttonlist.toggle .btn").each(function(idx) {
		$(this).click(function() { onGroupButton(idx); });
	});
}

function init_hotel_sort()
{
	$("#hotel_sorter").show();
	buttonlist();
	
	var sf = 0, sd = 1,
		attrs = ['price', 'stars'],
		types = ['i', 's'];

	function onSortButton(idx)
	{
		var attr = "v_" + attrs[idx],
			type = types[idx];
		if (sf == idx)
			sd = (sd == 1) ? -1 : 1;
		else
			sd = 1;
		sf = idx;
			
		var hotels = $("#hotels_all .hotels");
		hotels.sort(function(a, b) {
			var va = a.getAttribute(attr), vb = b.getAttribute(attr), r;
			if (type == 'i')
			{
				va = parseInt(va);
				vb = parseInt(vb);
			}

			if (va < vb) r = -1;
			else if (va > vb) r = 1;
			else r = 0;
			return r * sd;
		});

		var p = $("#hotels_all")[0];
		for(var i=0; i<hotels.length; i++)
		{
			p.appendChild(hotels[i]);
		}
	}
	
	$("#hotel_sorter .buttonlist.sortgroup .btn").each(function(idx) {
		$(this).click(function() { onSortButton(idx); });
	});
}

$(function() {

	var tc = window.themesCount;
	if (!tc) return;

	function ct(o) {
		var ct = 1, nct, c = $("body").attr("class").split(" ");
		for (var i=0; i<c.length; i++) {
			var m = /theme(\d)/.exec(c[i]);
			if (m && m.length > 1 && !isNaN(parseInt(m[1]))) {
				ct = parseInt(m[1]);
				break;
			}
		}
		nct = ct + o;
		if (nct < 1)
			nct = tc;
		else if (nct > tc)
			nct = 1;
		if (nct != ct)
		{
			function swap() {
				$("body").addClass("theme" + nct).removeClass("theme" + ct);
				var d = new Date();
				d.setTime(d.getTime() + (30*24*3600*1000));
				var cs = "{name}={value}; expires=" + d.toGMTString() + "; path=/";
				document.cookie = cs.replace("{name}", "theme").replace("{value}", nct);
			}
			$("#header_bg").fadeTo("fast", 0.1, swap).fadeTo("fast", 1);
		}
	}

	if (tc > 1)
	{
		$("#themepicker .prev").click(function(e) {
			e.preventDefault();
			ct(-1);
		});
		$("#themepicker .next").click(function(e) {
			e.preventDefault();
			ct(1);
		});
		$("#themepicker").show();
	}
});

