var in_my_bag_page = 1;
var in_my_bag_page_total = 1;
var in_my_bag_cat = null;
var in_my_bag_author_type = null;
var in_my_bag_detail_deep = null;
var in_my_bag_view_type = 'grid';
var in_my_bag_search_value = null;

function element_add_class(el, className)
{
	element_remove_class(el, className);
	el.className += " " + className;
}

function element_remove_class(el, className)
{
	if (el.className.indexOf(className) == -1)
		return;

	if (el.className == className)
		el.className = "";
	else if (el.className.substr(0, className.length + 1) == className + " ")
		el.className = el.className.substr(className.length + 1);
	else if (el.className.substr(el.className.length - className.length - 1) == " " + className)
		el.className = el.className.substr(0, el.className.length - className.length - 1);
	else
		el.className = el.className.replace(" " + className + " ", "");
}

function in_my_bag_select_view(type)
{
	in_my_bag_page = 1;
	in_my_bag_view_type = type;
	in_my_bag_refresh();
}

function in_my_bag_refresh()
{
	function finish(request)
	{
		$("in-my-bag-contents").innerHTML = request.responseText;

		var s = $("in-my-bag-contents").getElementsByTagName ? $("in-my-bag-contents").getElementsByTagName("script") : $("in-my-bag-contents").all.tags.script;
		for (var i = 0; i < s.length; i++)
			eval(s[i].innerHTML);

		$("in-my-bag-page-next").style.display = in_my_bag_page >= in_my_bag_page_total ? "none" : "";
		$("in-my-bag-page-prev").style.display = in_my_bag_page <= 1 ? "none" : "";
		$("in-my-bag-paging").style.display = in_my_bag_page_total <= 1 ? "none" : "";

		var is_grid = in_my_bag_view_type == 'grid';
		$("in-my-bag-button-grid").src = $("in-my-bag-button-grid").src.replace(/_(off|on)/, is_grid ? "_on" : "_off");
		$("in-my-bag-button-list").src = $("in-my-bag-button-list").src.replace(/_(off|on)/, is_grid ? "_off" : "_on");

		in_my_bag_set_loading(false);

		if (in_my_bag_detail_deep != null)
		{
			in_my_bag_detail(in_my_bag_detail_deep);
			in_my_bag_detail_deep = null;
		}
	}

	function fail()
	{
		alert("Sorry, the profiles couldn't be loaded.  Please try again.");
		in_my_bag_set_loading(false);
	}

	if (in_my_bag_set_loading(true))
		return;

	var params = "page=" + in_my_bag_page + "&view=" + in_my_bag_view_type;
	if (in_my_bag_cat != null)
		params += "&category=" + in_my_bag_cat;
	if (in_my_bag_author_type != null)
		params += "&author_type=" + in_my_bag_author_type;
	if (in_my_bag_search_value != null)
		params += "&query=" + in_my_bag_search_value;

	in_my_bag_set_hash();

	http_get("/whats-in-my-bag/listing.html?" + params, finish, fail);
}

function in_my_bag_set_hash()
{
	if (in_my_bag_cat != null)
		window.location.hash = "#/category/" + in_my_bag_cat + "/page" + in_my_bag_page;
	else if (in_my_bag_author_type != null)
		window.location.hash = "#/type/" + in_my_bag_author_type + "/page" + in_my_bag_page;
	else if (in_my_bag_search_value != null)
		window.location.hash = "#/search/" + in_my_bag_search_value + "/page" + in_my_bag_page;
	else
		window.location.hash = "#/page" + in_my_bag_page;

	if (typeof(urchinTracker) != "undefined")
		urchinTracker("/whats-in-my-bag" + window.location.hash.substr(1));
}

function in_my_bag_set_loading(flag)
{
	if (flag && document.getElementById("page-in-my-bag-loading").style.display != "none")
		return true;

	document.getElementById("page-in-my-bag-loading").style.display = flag ? "block" : "none";

	return false;
}

function in_my_bag_page_prev()
{
	in_my_bag_page--;
	if (in_my_bag_page < 1)
		in_my_bag_page = 1;

	in_my_bag_refresh();
}

function in_my_bag_page_next()
{
	in_my_bag_page++;
	if (in_my_bag_page > in_my_bag_page_total)
		in_my_bag_page = in_my_bag_page_total;

	in_my_bag_refresh();
}

function in_my_bag_select_type(type, skip_refresh)
{
	in_my_bag_nav_deselect();
	if (type)
		element_add_class(document.getElementById("in-my-bag-nav-type-" + type), "selected");
	else
		element_add_class(document.getElementById("in-my-bag-nav-all"), "selected");

	in_my_bag_cat = null;
	in_my_bag_search_value = null;
	in_my_bag_author_type = type;
	in_my_bag_page = 1;

	if (typeof(skip_refresh) == "undefined")
		in_my_bag_refresh();
}

function in_my_bag_select_cat(cat, skip_refresh)
{
	in_my_bag_nav_deselect();
	if (cat)
		element_add_class(document.getElementById("in-my-bag-nav-cat-" + cat), "selected");
	else
		element_add_class(document.getElementById("in-my-bag-nav-all"), "selected");

	in_my_bag_cat = cat;
	in_my_bag_search_value = null;
	in_my_bag_author_type = null;
	in_my_bag_page = 1;

	if (typeof(skip_refresh) == "undefined")
		in_my_bag_refresh();
}

function in_my_bag_nav_deselect()
{
	element_remove_class(document.getElementById("in-my-bag-nav-all"), "selected");
	if (in_my_bag_cat)
		element_remove_class(document.getElementById("in-my-bag-nav-cat-" + in_my_bag_cat), "selected");
	if (in_my_bag_author_type)
		element_remove_class(document.getElementById("in-my-bag-nav-type-" + in_my_bag_author_type), "selected");
}

function in_my_bag_deep_link(href)
{
	var m;

	m = href.match(/\/category\/([^\/]+)\//);
	if (m && m[1])
		in_my_bag_select_cat(m[1], true);

	m = href.match(/\/type\/([^\/]+)\//);
	if (m && m[1])
		in_my_bag_select_type(m[1], true);

	m = href.match(/\/search\/([^\/]+)\//);
	if (m && m[1])
		in_my_bag_search_select(m[1], true);

	m = href.match(/\/page(\d+)/);
	if (m && m[1])
		in_my_bag_page = m[1];

	m = href.match(/\/detail\/([^/]+)/);
	if (m && m[1])
		in_my_bag_detail_deep = m[1];
}

function in_my_bag_detail_hide()
{
	if (document.getElementById("in-my-bag-detail-overlay"))
		document.getElementById("in-my-bag-detail-overlay").style.display = "none";
	if (document.getElementById("in-my-bag-detail"))
	{
		document.getElementById("in-my-bag-detail").style.display = "none";
		document.getElementById("in-my-bag-detail").innerHTML = "";
	}

	in_my_bag_set_hash();
}

function in_my_bag_detail(code)
{
	in_my_bag_detail_hide();

	function finish(request)
	{
		if (!document.getElementById("in-my-bag-detail-overlay"))
		{
			var div_overlay = document.createElement("div");
			div_overlay.id = "in-my-bag-detail-overlay";
			div_overlay.onclick = in_my_bag_detail_hide;
			document.body.appendChild(div_overlay);
		}
		if (!document.getElementById("in-my-bag-detail-holder"))
		{
			var div_holder = document.createElement("div");
			div_holder.id = "in-my-bag-detail-holder";
			div_holder.style.left = document.getElementById("container").offsetLeft + "px";
			document.body.appendChild(div_holder);
		}
		if (!document.getElementById("in-my-bag-detail"))
		{
			var div_content = document.createElement("div");
			div_content.id = "in-my-bag-detail";
			document.getElementById("in-my-bag-detail-holder").appendChild(div_content);
		}

		document.getElementById("in-my-bag-detail-overlay").style.display = "";
		document.getElementById("in-my-bag-detail").style.display = "";
		document.getElementById("in-my-bag-detail").innerHTML = request.responseText;
		in_my_bag_overlay_repos();

		var m = request.responseText.match(/<script[^>]+>(([\s\r\n]|.)+?)<\/script>/im);
		if (m && m[1])
			eval(m[1]);

//		var s = document.getElementById("in-my-bag-detail").getElementsByTagName ? document.getElementById("in-my-bag-detail").getElementsByTagName("script") : document.getElementById("in-my-bag-detail").all.tags.script;
//		for (var i = 0; i < s.length; i++)
//			eval(s[i].innerHTML);

		window.setTimeout(in_my_bag_overlay_resize, 0);

		in_my_bag_set_loading(false);
	}

	function fail()
	{
		alert("Sorry, the profile couldn't be loaded.  Please try again.");
		in_my_bag_set_loading(false);
	}

	if (in_my_bag_set_loading(true))
		return;
	in_my_bag_set_loading(false);

	window.location.hash = "#/detail/" + code;

	if (typeof(urchinTracker) != "undefined")
		urchinTracker("/whats-in-my-bag" + window.location.hash.substr(1));

	http_get("/whats-in-my-bag/profile.html?code=" + code + "&category=" + in_my_bag_cat, finish, fail);
}

function in_my_bag_overlay_resize()
{
	var max_h = document.getElementById("in-my-bag-detail").offsetHeight;
	if (!max_h)
		max_h = 0;
	max_h += Number(document.getElementById("in-my-bag-detail").offsetTop);

	if (max_h < document.getElementById("container").clientHeight)
		max_h = document.getElementById("container").clientHeight;

	if (document.getElementById("in-my-bag-detail-overlay").clientHeight < max_h)
		document.getElementById("in-my-bag-detail-overlay").style.height = max_h + "px";
	if (document.getElementById("in-my-bag-detail-overlay").clientWidth < document.getElementById("container").clientWidth)
		document.getElementById("in-my-bag-detail-overlay").style.width = document.getElementById("container").clientWidth + "px";
}

function in_my_bag_desc_toggle(l)
{
	if (document.getElementById("profile-desc-actual").style.display != "none")
	{
		document.getElementById("profile-desc-actual-short").style.display = "block";
		document.getElementById("profile-desc-actual").style.display = "none";
	}
	else
	{
		document.getElementById("profile-desc-actual-short").style.display = "none";
		document.getElementById("profile-desc-actual").style.display = "block";
	}
	window.setTimeout(in_my_bag_overlay_resize, 0);
}

function in_my_bag_overlay_repos()
{
	function overlay_resize()
	{
		if (document.getElementById("in-my-bag-detail-overlay").clientHeight < document.getElementById("container").clientHeight)
			document.getElementById("in-my-bag-detail-overlay").style.height = document.getElementById("container").clientHeight + "px";
		if (document.getElementById("in-my-bag-detail-overlay").clientWidth < document.getElementById("container").clientWidth)
			document.getElementById("in-my-bag-detail-overlay").style.width = document.getElementById("container").clientWidth + "px";
	}

	window.setTimeout(overlay_resize, 0);
}

function in_my_bag_video_start(stream)
{
/*	if (window.navigator.userAgent.indexOf("Mac OS") != -1 && window.navigator.userAgent.indexOf("rv:1.8") != -1)
	{
		document.getElementById("in-my-bag-detail-overlay").style.background = "none";
		document.getElementById("in-my-bag-detail-overlay").style.opacity = 1;
		document.getElementById("in-my-bag-detail-overlay").style.MozOpacity = 1;
	}*/

	var so = new SWFObject("/images/video.swf?version7", "video_player", "480", "340", "9.0.115", "#000000");
	so.addParam("allowScriptAccess", "sameDomain");
	so.addParam("allowFullScreen", "true");
	so.addParam("wmode", "transparent");
	so.addVariable("autoStart", "1");
	so.addVariable("disableLogo", "1");
	so.addVariable("sWidth", screen.width);
	so.addVariable("sHeight", screen.height);
	so.addVariable("initXML", plus_escape("/data/whats-in-my-bag-video.php?stream=" + escape(stream) + "&deep=" + escape(window.location.hash)));

	so.write("in-my-bag-video-player");
}

function in_my_bag_thumb_hover(el, toggle)
{
	var overlay = element_first_by_class(el, "overlay");
	var overlay_text = element_first_by_class(el, "overlay-text");

	if (typeof(overlay.destOpacity) == "undefined")
		set_opacity(overlay, 0);
	if (typeof(overlay_text.destOpacity) == "undefined")
		set_opacity(overlay_text, 0);
	if (typeof(overlay.inProgress) == "undefined")
		overlay.inProgress = 0;

	overlay.destOpacity = toggle ? 60 : 0;
	overlay_text.destOpacity = toggle ? 100 : 0;

	var overlaySpeed = 10;
	var overlay_textSpeed = 15;

	if (toggle)
		element_add_class(el, 'thumbnail-hover');

	function step(obj, spd)
	{
		var curr = Math.round(get_opacity(obj) * 100);
		var diff = Math.round(curr - obj.destOpacity);

		if (diff > spd)
			set_opacity(obj, (curr - spd) / 100);
		else if (diff < -spd)
			set_opacity(obj, (curr + spd) / 100);
		else if (diff != 0)
			set_opacity(obj, (curr - diff) / 100);

		return diff != 0;
	}

	function step_overlay()
	{
		if (step(overlay, overlaySpeed))
			window.setTimeout(step_overlay, 40);
		else
		{
			if (overlay.destOpacity == 0)
				element_remove_class(el, 'thumbnail-hover'); 
			overlay.inProgress--;
		}
	}

	function step_overlay_text()
	{
		if (step(overlay_text, overlay_textSpeed))
			window.setTimeout(step_overlay_text, 40);
		else
			overlay.inProgress--;
	}

	if (overlay.inProgress == 0)
	{
		window.setTimeout(step_overlay, 0);
		window.setTimeout(step_overlay_text, 0);
		overlay.inProgress = 2;
	}
}

function in_my_bag_search_show(toggle)
{
	if ($("in-my-bag-search-overlay").style.display == (toggle ? "block" : ""))
		return;

	var main_box = element_first_by_class($("page-in-my-bag"), "main-box");
	$("in-my-bag-search-overlay").style.display = toggle ? "block" : "none";

	$("in-my-bag-search-overlay").style.height = (main_box.scrollHeight - 30) + "px";
	$("in-my-bag-search-list").style.display = toggle ? "block" : "none";

	$("search-box-highlight").style.borderColor = toggle ? "#e4e403" : "";
}

function in_my_bag_search_clear(q_el)
{
	if (!q_el.clearedValue && q_el.value == "Enter Text")
		q_el.value = "";
	q_el.clearedValue = true;
}

var in_my_bag_search_timeout = null;
function in_my_bag_search_text(q, immed)
{
	var searched = null;

	function fail()
	{
		$("in-my-bag-search-results").innerHTML = '<li class="message">No results found.</li>';
	}

	function finish(response)
	{
		var matches = eval(response.responseText);
		var html = "";

		searched = escape_html(searched);
		var searched_escaped = searched.replace(/([\\\.\+\*\?\[\^\]\$\(\)\{\}\=\!\<\>\|\:])/g, "\\$1");
		for (var i = 0; i < matches.length; i++)
		{
			var match = escape_html(matches[i]);
			match = match.replace(new RegExp(searched_escaped, "gi"), '<em>$&</em>');

			html += '<li><a href="javascript://" onclick="in_my_bag_search_select(\'' + escape_html(matches[i]).replace(/'/g, '\\\'') + '\');">' + match + '</a></li>';
		}

		if (matches.length > 0)
			$("in-my-bag-search-results").innerHTML = html;
		else
			$("in-my-bag-search-results").innerHTML = '<li class="message">No results found.</li>';
	}

	function start()
	{
		if (q.value.length == 0)
			in_my_bag_search_show(false);
		else
		{
			searched = q.value;
			http_get("/whats-in-my-bag/ajax.html?query=" + escape(q.value), finish, fail);
		}
	}

	in_my_bag_search_show(q.value.length > 0);
	if (q.value.length == 0)
		return;

	if (immed)
		start();
	else
	{
		if (in_my_bag_search_timeout)
			window.clearTimeout(in_my_bag_search_timeout);
		in_my_bag_search_timeout = window.setTimeout(start, 200);
	}
}

function in_my_bag_search_select(text, skip_refresh)
{
	in_my_bag_nav_deselect();

	in_my_bag_cat = null;
	in_my_bag_search_value = text;
	in_my_bag_author_type = null;
	in_my_bag_page = 1;

	in_my_bag_search_show(false);

	if (typeof(skip_refresh) == "undefined")
		in_my_bag_refresh();
}

function element_first_by_class(parent, className)
{
	for (var i = 0; i < parent.childNodes.length; i++)
	{
		if (parent.childNodes[i].nodeType != 1)
			continue;

		if (typeof(parent.childNodes[i].className) != "undefined" && parent.childNodes[i].className == className)
			return parent.childNodes[i];
		element_first_by_class(parent.childNodes[i], className);
	}
}

var in_my_bag_onload_old = window.onload;
window.onload = function ()
{
	document.getElementById("in-my-bag-contents").innerHTML = "Loading...";

	if (window.location.hash.length > 1)
		in_my_bag_deep_link(window.location.hash.substr(1));

	in_my_bag_refresh();

	if (in_my_bag_onload_old)
		in_my_bag_onload_old();
	in_my_bag_onload_old = null;
}

function plus_escape(str)
{
	return escape(str).replace(/\+/g, '%2B');
}

window.set_opacity = function (el, f)
{
	f = Math.round(f * 100) / 100;
	f = Math.min(100, Math.max(0, f));

	if (typeof(el.style.MozOpacity) != "undefined")
		return el.style.MozOpacity = f;
	else if (typeof(el.style.KhtmlOpacity) != "undefined")
		return el.style.KhtmlOpacity = f;
	else if (typeof(el.style.filter) != "undefined")
		return el.style.filter = "alpha(opacity=" + Math.round(f * 100) + ");"
	else
		return el.style.opacity = f;
}

window.get_opacity = function (el)
{
	var o = null;

	if (typeof(el.style.MozOpacity) != "undefined")
		o = el.style.MozOpacity;
	else if (typeof(el.style.KhtmlOpacity) != "undefined")
		o = el.style.KhtmlOpacity;
	else if (typeof(el.filters) != "undefined" && typeof(el.filters.alpha) != "undefined")
		o = el.filters.alpha.opacity / 100;
	else if (typeof(el.style.opacity) != "undefined")
		o = el.style.opacity;

	if (o == null)
		return null;
	else
		return Math.round(o * 100) / 100;
}