/**
 * TLA Browser - TLA Video product browser
 * @author Charles Gravolet
 * @created 9/4/2007
 * @requires jQuery 1.1.4
 */

var changeCheck = 0;

(function($){

	$.extend({
		tlaBrowserCache: null
	});

	$.fn.extend({

		tlaBrowser: function() {

			var browser = $("#browseWidget");
			var resultsRow = 0;
			var resultsRowCount = 6;
			var resultsRowHeight = 190;
			var resultsType = $(this).attr("browsetype");
			var resultsValue = $(this).val();
			var gv = (typeof globalView != "undefined")?globalView:null;
			var overlay = $('#overlay');

			if (!overlay.length) {
				$(document.body).append('<div id="overlay"></div>');
				overlay = $('#overlay');
				overlay.hide();
			}
			
			overlay.width($(document).width()).height($(document).height());

			// If the form value returns a link, relocate there instead of using browser
			if (/\w{1,}\.(cfm|cfml|htm|html)\??/.test(resultsValue) || /^https?:/.test(resultsValue)) {
				window.location = resultsValue;
				$("select[browsetype]",document.forms.browseForm).val("null");
				return false;
			} else if (!resultsValue.length) {
				$("select[browsetype]",document.forms.browseForm).val("null");
				return false;
			}

			// Check for the existence of browser and if it doesn't exist, create it.
			if (!browser.length) {
				$("<div id=\"browseWidgetContainer\" style=\"display:none;\"><div id=\"browseWidget\"><div id=\"bwTopbar\"></div><div id=\"bwContentRestraint\"><div class=\"bwContent\"><span></span></div></div><div id=\"bwBottombar\"></div></div></div>").appendTo(document.body);
				browser = $("#browseWidget");
				browser
					.find("#bwTopbar")
						.append("<span id=\"bwtopbar-close\"></span> <span id=\"bwtopbar-recordcount\"></span> <span id=\"bwtopbar-viewall\"><a href=\"#\">View All Titles as a List</a></span>")
						.find("#bwtopbar-close")
							.append("<a href=\"#\"><img src=\"../skins/graphics/browsewidget/btn_bwClose.gif\" alt=\"Close Window\" /></a>")
							.find("a").click(function() {
								tlaBrowserHide();
								changeCheck = 0;
								return false;
							}).end().end().end()
					.find("#bwBottombar")
						.append("<div id=\"bwbottombar-nav\"></div><div id=\"bwbottombar-edit\"></div>")
						.find("#bwbottombar-nav")
							.append("<a href=\"#\" id=\"bwScrollUp\"><img src=\"../skins/graphics/browsewidget/btn_bwScrollUp.gif\" alt=\"Previous\" /></a>")
							.append("<a href=\"#\" id=\"bwScrollDown\"><img src=\"../skins/graphics/browsewidget/btn_bwScrollDown.gif\" alt=\"Next\" /></a>");
				$("#browseWidgetContainer")
					.css('top', ($(window).height() / 2) - ($("#browseWidgetContainer").height() / 2))
					.css('left', ($(window).width() / 2) - ($("#browseWidgetContainer").width() / 2));
			}

			var tlaBrowserHide = function() {
				$("#bwbottombar-nav a").unbind("click").click(function() { return false; });
				$("#bwtopbar-viewall a").attr("href","#");
				$("#bwtopbar-recordcount").empty();
				$("#bwContentRestraint").empty();
				$("#browseWidgetContainer").fadeOut();
				$('#overlay').hide();
				$('select').css('visibility','visible');
			}

			tlaBrowserHide();
			$('select').css('visibility','hidden');
			$('#overlay').show();
			$("#browseWidgetContainer").fadeIn();
			$("select[browsetype]",document.forms.browseForm).val("null");

			var myTitle = "";
			switch(resultsType) {
				case "kid":
					myTitle += "Category: ";
					break;
				case "oid":
					myTitle += "Studio: ";
					break;
			}
			myTitle += $(this).find("option[value="+resultsValue+"]").text() + " - ";
			$("#bwtopbar-recordcount").text("...");
			$("#bwtopbar-viewall").html(myTitle+" <a href=\"#\">View All Titles as a List</a>");


			// Call results script to get content
			var pars = {ts:new Date().getTime()}
			pars[resultsType] = resultsValue;
			if ($(this).attr("roletype")) pars.rt = $(this).attr("roletype");
			$.ajax({
					type: "GET",
					url: "../ajax/ajax_getBrowseResults.cfm?v=" + gv,
					data: pars,
					dataType: "xml",
					complete: function(xml) {
						$.tlaBrowserCache = $(xml.responseXML);
						resultsRow = 0;
						$("#bwtopbar-recordcount").text((($.tlaBrowserCache.find("product").length>=200)?"Top ":"") + $.tlaBrowserCache.find("product").length + " Titles");
						$("#bwtopbar-viewall a").attr("href","../templates/results_list.cfm?"+resultsType+"="+resultsValue+"&v="+gv);
						setContent();
					}
				});

			var setContent = function() {
				var page = [getRow(resultsRow-1),getRow(resultsRow),getRow(resultsRow+1)];
				var container = $("#bwContentRestraint");
				container.append("<div class=\"bwContent\"></div>");
				var newContent = container.find("div.bwContent:last-child");
				newContent.css("top",resultsRowHeight*-1).hide();
				for (var p = 0; p < page.length; p++) {
					for (var i = 0; i < page[p].length; i++) {
						newContent.append("<span><a href=\""+page[p][i].link+"\"><img src=\""+page[p][i].imgpath+"\" alt=\"\" /></a><br /><a href=\""+page[p][i].link+"\">"+page[p][i].title+"</a></span>");
					}
				}
				newContent.show();
				container.find("div.bwContent").not(":last-child").remove();
				$("#bwbottombar-nav a").each(function(i){
					$(this).click(function() {
						tlaBrowserPage(i);
						return false;
					});
				});
			}

			var getRow = function(r) {
				var recordcount = $.tlaBrowserCache.find("product").length;
				var rowcount = Math.ceil(recordcount/resultsRowCount);
				if (r<0) {
					r = rowcount + r;
				} else if (r>=rowcount) {
					r = r - rowcount;
				}
				var rowstart = r * resultsRowCount;
				var leftovers = recordcount % resultsRowCount;
				var product = [];
				var curProduct = null;
				for (var i = 0; i < resultsRowCount; i++) {
					product[i] = {id:"",title:"",link:"#",imgpath:"http://www.tlavideo.com/images/clearpixel.gif"};
					if (rowstart + i < recordcount) {
						curProduct = $.tlaBrowserCache.find("product:eq("+(rowstart+i)+")");
						product[i].id = curProduct.attr("id");
						product[i].title = curProduct.find("title").text();
						product[i].link = curProduct.find("link").text();
						product[i].imgpath = curProduct.find("imgpath").text();
					}
				}
				return product;
			}

			var tlaBrowserPage = function(w) {
				//var newpos = parseFloat($("#bwContentRestraint div.bwContent").css("top")) + ((w)?resultsRowHeight*-1:resultsRowHeight);
				var newpos = (w)?"-="+resultsRowHeight+"px":"+="+resultsRowHeight+"px";
				resultsRow = (w)?resultsRow+1:resultsRow-1;
				if (resultsRow < 0) {
					resultsRow = Math.ceil($.tlaBrowserCache.find("product").length / resultsRowCount) - 1;
				} else if (resultsRow >= $.tlaBrowserCache.find("product").length / resultsRowCount) {
					resultsRow = 0;
				}
				/*if (newpos % resultsRowHeight) {
					newpos = newpos - (newpos % resultsRowHeight);
				}*/
				$("#bwbottombar-nav a").unbind("click").click(function() { return false; });
				$("#bwContentRestraint div.bwContent").animate({
					top: newpos	
				},500,function() {
					setContent();
				});
			}

		}

	});

})(jQuery);

$(document).ready( function() {
	$("select[browsetype]",document.forms.browseForm).change(function() {
		this.blur();
		if (changeCheck <= 0) {
			$(this).tlaBrowser();
			changeCheck++;
		}
	});
});