;//---------------------------------------------------------------------------------------------------------------
var active_product_id = 0;
var active_view_mode = 0;
var active_sort_mode = 0;
var active_tab_id = 2;
var history_tab_id = 2;

//---------------------------------------------------------------------------------------------------------------
var page_offset = 12;
var page_limit = 12;
var current_page_offset = 0;

//---------------------------------------------------------------------------------------------------------------
function showProductsTab(id)
{
	if(isNaN(id))
		return;
	
	var active_tab = $("tab_" + active_tab_id);
	active_tab.className = "";
	var active_products = $("products_" + active_tab_id);
	active_products.style.display = "none";
	
	var tab = $("tab_" + id);
	tab.className = "tab-selected";
	var products = $("products_" + id);
	products.style.display = "block";
	active_tab_id = id;
			
	SWFAddress.setValue(tab.title + "?c=" + id);
	
	return false;
}

//---------------------------------------------------------------------------------------------------------------
function handleProductsHistory(event) 
{	
	for(var i = 0; i < event.parameterNames.length; i++)
	{
		if(event.parameterNames[i] == "c")
		{
			if(event.parameters["c"] != null && event.parameters["c"] != active_tab_id)
			{
				showProductsTab(event.parameters["c"]);
				return;
			}
		}
	}
	
	if(event.path == "/" && active_tab_id != history_tab_id)
	{
		showProductsTab(history_tab_id);
	}
}

//---------------------------------------------------------------------------------------------------------------
function showDetailTab(id, site_anchor, play_video)
{
	if(isNaN(id))
		return;
		
	var active_tab = $("tab_" + active_tab_id);
	active_tab.className = "";
	var active_products = $("product_" + active_tab_id);
	active_products.style.display = "none";
	
	var tab = $("tab_" + id);
	tab.className = "tab-selected";
	var products = $("product_" + id);
	products.style.display = "block";
	active_tab_id = id;
	
	SWFAddress.setValue(tab.title + "?t=" + id);
	
	if(typeof(play_video) != 'undefined' && play_video == true){
		embedVideo(true);
	} else {
		if(typeof(embedVideo) != 'undefined'){
			embedVideo();
		}
	}
	
	if(id == 2)
		loadProductTOC(active_product_id);
		
	if(String(site_anchor).length > 0)
		if($(site_anchor) != null)
			$(site_anchor).scrollIntoView(true);
	
	return false;
}


var videoAutoPlay = false;
	
//---------------------------------------------------------------------------------------------------------------
function handleProductDetailHistory(event) 
{	
	var tab_id = 0;
	var site_anchor = "";
	var play_video = false;

	for(var i = 0; i < event.parameterNames.length; i++)
	{		
		if(event.parameterNames[i] == "t")
		{
			if(event.parameters["t"] != null && event.parameters["t"] != active_tab_id)
			{
				tab_id = event.parameters["t"];
			}
		}	
		if(event.parameterNames[i] == "a")
			if(event.parameters["a"] != null)
				site_anchor = event.parameters["a"];
	}
	if(tab_id > 0)
	{
		showDetailTab(tab_id, site_anchor);
		return;
	}
	
	if(event.path == "/" && active_tab_id != history_tab_id)
	{
		showDetailTab(history_tab_id);
	}
}

//---------------------------------------------------------------------------------------------------------------
function initProductDetails(product_id, toc_visible) 
{	
	if(isNaN(product_id))
		return;
		
	loadProductDownloads(product_id, toc_visible);
	if(active_tab_id == 2)
		loadProductTOC(product_id);
	active_product_id = product_id;
}

//---------------------------------------------------------------------------------------------------------------
function loadProductTOC(product_id)
{
	if(isNaN(product_id))
		return;
	
	var product_toc = $("product_toc_" + product_id);
	if(product_toc.className.length == 0)
		return;
		
	var params = new Object();
	params.product_id = product_id;
	new Ajax.Request("custom/modules/product/product_ajax.cfc?method=renderProductDetailTOC", {
		method: 'post',
		parameters : params,
		onSuccess: function(transport) {
			var obj = transport.responseText.evalJSON();
			
			var product_toc = $("product_toc_" + obj.ID);
			product_toc.className = "";
		
			if(obj.UPDATE == true)
				product_toc.innerHTML = obj.HTML;
		}
	});
}

//---------------------------------------------------------------------------------------------------------------
function loadProductDownloads(product_id, toc_visible)
{
	if(isNaN(product_id))
		return;
		
	var product_downloads = $("product_downloads_" + product_id);
	if(product_downloads.className.length == 0)
		return;
				
	var params = new Object();
	params.product_id = product_id;
	params.toc_visible = toc_visible == 1 ? "1" : "0";
	new Ajax.Request("custom/modules/product/product_ajax.cfc?method=renderProductDetailDownloads", {
		method: 'post',
		parameters : params,
		onSuccess: function(transport) {
			var obj = transport.responseText.evalJSON();
			
			var product_downloads = $("product_downloads_" + obj.ID);
			product_downloads.className = "";
			if(obj.UPDATE == true)
				product_downloads.innerHTML = obj.HTML;
		}
	});
}

//---------------------------------------------------------------------------------------------------------------
function filterChanged()
{	
	getProductsByFilter(active_filter);
}

//---------------------------------------------------------------------------------------------------------------
function changeSortMode(mode)
{	
	if(isNaN(mode))
		return;
		
	if(active_sort_mode == mode)
		return;
				
	active_sort_mode = mode;
	getProductsByFilter(active_filter);
}

//---------------------------------------------------------------------------------------------------------------
function changeViewMode(mode)
{	
	if(isNaN(mode))
		return;
		
	if(active_view_mode == mode)
		return;
		
	if(mode)
	{
		$("btn_list").className = "btn-list-active";
		$("btn_raster").className = "btn-raster-inactive";
	}
	else
	{
		$("btn_list").className = "btn-list-inactive";
		$("btn_raster").className = "btn-raster-active";
	}
		
	active_view_mode = mode;
	getProductsByFilter(active_filter);
	
	return false;
}

//---------------------------------------------------------------------------------------------------------------
function getProductsByFilter(filter)
{
	$("products_content").className = "ajax-category-loading";
	
	var params = new Object();
	params.view_mode = active_view_mode == 0 ? "0" : active_view_mode;
	params.sort_mode = active_sort_mode == 0 ? "0" : active_sort_mode;
	params.segment_filter = filter.segments.join(",");
	params.topic_filter = filter.topics.join(",");
	params.external_product_filter = filter.external_products.join(",");
	params.manufacturer_filter = filter.manufacturers.join(",");
	
	new Ajax.Request("custom/modules/product/product_ajax.cfc?method=getProductsByFilter", {
		method: 'post',
		parameters : params,
		onSuccess: function(transport) {
			var obj = transport.responseText.evalJSON();
			
			$("products_content").className = "";
		
			if(obj.records_left == "NO")
				$("show_more").style.display = "none";
			else
				$("show_more").style.display = "block";
		
			if(obj.update == true)
			{
				$("products_content").innerHTML = obj.html;
				$("info_count").innerHTML = obj.info_count_text;
			}
			
			current_page_offset = 0;
			
			hideProductInfoWindow();
			initializePFrame();
			prepareOverlay();
		}
	});
}

//---------------------------------------------------------------------------------------------------------------
function showMoreProducts()
{	
	current_page_offset += page_limit;
	getMoreProductsByFilter(active_filter, current_page_offset, page_limit);
}

//---------------------------------------------------------------------------------------------------------------
function getMoreProductsByFilter(filter)
{
	$("load_more_ajax").style.display = "block";
	
	var params = new Object();
	params.view_mode = active_view_mode == 0 ? "0" : active_view_mode;
	params.sort_mode = active_sort_mode == 0 ? "0" : active_sort_mode;
	if(current_page_offset >= 0)
		params.offset = current_page_offset == 0 ? "0" : current_page_offset;
	else
		params.offset = "0";
	params.limit = page_limit;
	params.segment_filter = filter.segments.join(",");
	params.topic_filter = filter.topics.join(",");
	params.external_product_filter = filter.external_products.join(",");
	params.manufacturer_filter = filter.manufacturers.join(",");
	
	new Ajax.Request("custom/modules/product/product_ajax.cfc?method=getProductsByFilter", {
		method: 'post',
		parameters : params,
		onSuccess: function(transport) {
			var obj = transport.responseText.evalJSON();

			$("load_more_ajax").style.display = "none";
		
			if(obj.records_left == "NO")
				$("show_more").style.display = "none";
			else
				$("show_more").style.display = "block";
				
		
			if(obj.update == true)
			{
				$("products_content").innerHTML += obj.html;
				$("info_count").innerHTML = obj.info_count_text;
			}
			
			hideProductInfoWindow();
			initializePFrame();
			prepareOverlay();
		}
	});
}

//---------------------------------------------------------------------------------------------------------------
var product_info_window_id = "";
var product_info_timer = "";
var product_info_height = 0;
var product_info_width = 0;
var adjustment = "left";
var caller = null;

//---------------------------------------------------------------------------------------------------------------
function startStopProductInfoWindow(evt, id, adjustment, caller)
{
	this.adjustment = adjustment;
	this.caller = caller;
	product_info_window_id = id;
	product_info_timer = setTimeout(prepareInfoWindow = function() { getInfoWindowContent(id); }, 700);
}

//---------------------------------------------------------------------------------------------------------------
function getInfoWindowContent(id)
{
	if($(id) != null)
	{
		calculateProductInfoWindowDimensions();
		showProductInfoWindow(caller, adjustment);
		return;
	}
	var params = new Object();
	var idsplit = id.split("_");
	params.product_id = idsplit[idsplit.length - 1];
	
	new Ajax.Request("custom/modules/product/product_ajax.cfc?method=renderProductInfoWindow", {
		method: 'post',
		parameters : params,
		onSuccess: function(transport) {
			var obj = transport.responseText.evalJSON();
			
			$("info_window").innerHTML = obj.window_content;
			
			calculateProductInfoWindowDimensions();
			showProductInfoWindow(caller, adjustment);
		}
	});
}

//---------------------------------------------------------------------------------------------------------------
function calculateProductInfoWindowDimensions()
{
	var info_window = $(product_info_window_id);	
	info_window.style.display = "block";
	product_info_height =  info_window.offsetHeight;
	product_info_width =  info_window.offsetWidth;
	info_window.style.display = "none";
}

//---------------------------------------------------------------------------------------------------------------
function showProductInfoWindow(caller, adjustment)
{
	var arrow_left = "product-window-arrow-left";
	var arrow_right = "product-window-arrow-right";
	var info_window = $(product_info_window_id);		

	var offset_x = $(caller).viewportOffset().left + $(caller).offsetWidth + 2;
	var offset_y = $(caller).viewportOffset().top;

	if(window.opera != "undefined" & navigator.userAgent.indexOf("Opera") > -1)
	{
		offset_y -= document.documentElement.scrollTop;
	}
	
	if(isIE6)
	{
		offset_y += document.documentElement.scrollTop;
	}	

	
	if(adjustment == "top")
	{
		offset_y = offset_y + (caller.offsetHeight / 2) - 62;
	}
	else
	{
		offset_y = offset_y - product_info_height + ($(caller).offsetHeight / 2) + 62;
	}

	var info_window_arrow = $(product_info_window_id + "_arrow");
	if(info_window_arrow != null)
	{
		if(offset_x + product_info_width > getWindowWidth())
		{
			offset_x = $(caller).viewportOffset().left - product_info_width;
			info_window_arrow.className = arrow_right + " " + arrow_right + "-" + adjustment;
		}
		else
		{
			info_window_arrow.className = arrow_left + " " + arrow_left + "-" + adjustment;
		}
	}
	
	if(info_window != null)
	{
		info_window.style.left = offset_x + "px";
		info_window.style.top = offset_y + "px";
		
		info_window.style.display = "block";
		
		info_window.style.visibility = "visible";
	}
}

//---------------------------------------------------------------------------------------------------------------
function adjustProductInfoWindow(evt, id, adjustment)
{	
	var value = 0;
	var top = 0;
	var arrow_left = "product-window-arrow-left";
	
	if(document.documentElement.scrollTop != "undefined" && document.documentElement.scrollTop != 0)
	{
		value = document.documentElement.scrollTop;
	}
	else
	{
		if(document.body.scrollTop != "undefined" && document.body.scrollTop != 0)
			value = document.body.scrollTop;
	}	

	var info_window = $(id);	
	var info_window_arrow = $(id + "_arrow");
	
	var offset_x = Event.pointerX(evt) + 15;
	var offset_y = Event.pointerY(evt) - value + 39;
	
	offset_y -= product_info_height;
	
	if(adjustment == "top")
	{
		top	= product_info_height - 25;
		offset_y -= 39 * 2 + 22;
	}

	info_window_arrow.className = arrow_left + " " + arrow_left + "-" + adjustment;
	
	info_window.style.left = offset_x + "px";
	info_window.style.top = offset_y + 25 + top + "px";
}

//---------------------------------------------------------------------------------------------------------------
function hideProductInfoWindow()
{
	clearTimeout(product_info_timer);
	var info_window = $(product_info_window_id);
	if(info_window != null)
	{
		info_window.style.visibility = "hidden";
		product_info_window_id = "";
	}	
}

//---------------------------------------------------------------------------------------------------------------
function addFavourite(id, element_id)
{
	if(isNaN(id))
		return;
		
	var params = new Object();
	params.product_id = id == 0 ? "0" : id;
	
	new Ajax.Request("custom/modules/favourites/favourites.cfc?method=addFavourite", {
		method: 'post',
		parameters : params,
		onSuccess: function(transport) {
			var obj = transport.responseText.evalJSON();
			
			var cart_data_span = $("favouritelist_data");
			var cart_label_span = $("favouritelist_label");
			if(obj.NUM_FAVOURITES > 0)
			{
				cart_data_span.innerHTML = "(" + obj.NUM_FAVOURITES + ")";
				cart_label_span.style.fontWeight = "bold";
			}
			else
			{
				cart_data_span.innerHTML = "";	
				cart_label_span.style.fontWeight = "normal";
			}
		
			if($("addfavourite_" + obj.PRODUCT_ID) != null)
			{
				$("addfavourite_" + obj.PRODUCT_ID).className = "favourite-noticed";	
				if(isIE6)
					$("addfavourite_" + obj.PRODUCT_ID).style.paddingRight = "3px";	
				$("addfavourite_" + obj.PRODUCT_ID).innerHTML = $("addfavourite_" + obj.PRODUCT_ID).getElementsByTagName("a").item(0).innerHTML;
			}
		}
	});
}

//---------------------------------------------------------------------------------------------------------------
function searchProductByISBN(isbn)
{
	if(!String(isbn).length)
		return;
		
	$("search-product-result").style.display = "block";	
	$("search-product-result-list").innerHTML = "<div class='ajax-loading-no-padding'></div";	
		
	var params = new Object();
	params.isbn = isbn;
	
	new Ajax.Request("custom/modules/product/product_ajax.cfc?method=getProductsByISBN", {
		method: 'post',
		parameters : params,
		onSuccess: function(transport) {
			var obj = transport.responseText.evalJSON();
			
			if(obj.LOGGED_IN)
				$("search-product-result-list").innerHTML = obj.HTML;
			else
				window.location = "user-login.htm";
		}
	});
}

//---------------------------------------------------------------------------------------------------------------
function registerISBNProduct(product_id)
{
	if(isNaN(product_id))
		return;
		
	$("product-register-isbn-" + product_id).innerHTML = "<div class='ajax-loading-button'></div";	
		
	var params = new Object();
	params.product_id = product_id;
	
	new Ajax.Request("custom/modules/product/product_ajax.cfc?method=registerISBNProduct", {
		method: 'post',
		parameters : params,
		onSuccess: function(transport) {
			var obj = transport.responseText.evalJSON();
			
			if(obj.LOGGED_IN)
			{
				$("product-register-isbn-" + obj.product_id).innerHTML = obj.HTML;
				$("register-product-progress-area").show();
				$("register-product-progress-list").innerHTML = obj.PROGRESSHTML;
			}
			else
				window.location = "user-login.htm";
		}
	});
}


