
var categoriesURL = "/index.php?eID=tx_nfcshop_factfinder&action=categories";
var manufacturersURL = "/index.php?eID=tx_nfcshop_factfinder&action=manufacturers";
var searchResultURL = "/index.php?eID=tx_nfcshop_factfinder&action=updateSearchResult";
var clickProductURL = "/index.php?eID=tx_nfcshop_factfinder&action=clickProduct";
var recommendationURL = "/index.php?eID=tx_nfcshop_factfinder&action=recommendation";

var searchResultDiv = "ffsearchresult";
var categoriesDiv = "ffcategories";
var manufacturersDiv = "ffmanufacturers";
var productsDiv = "ffproducts";
var pricesDiv = "ffprices";
var sortingDiv = "ffsorting";
var filtersDiv = "fffilters";
var groupsDiv = "ffgroups";
var pagerDiv = "ffpager";
var switchDiv = "ffswitch";
var breadCrumbDiv = "ffbreadcrumb";
var modulesDiv = "ffmodules";
var loadingDiv = "ffloading";
var pricesSliderDiv = "ffprices-slider";
var pricesAmountDiv = "ffprices-amount";
var suggestDeepUrlInput = "ffsuggest-url";
var recommendationDiv = "ffrecommendation";

var tagCloudURL = "/index.php?eID=tx_nfcshop_factfinder&action=tagcloud&xml=true";
var tagCloudDiv = "fftagcloud";

var searchURL = "/index.php?eID=tx_nfcshop_factfinder&action=suggest";
var formname = "factfinder_search";
var queryParamName = "query";
var areaParamName = "area";
var divLayername = "ffsuggest-box";

var loadingImg = "fileadmin/templates/graphics/fahrrad/icons/loading.gif";

var pSearchURL = '';
var pLayerName = '';
var pQueryParamName = '';
var pAreaParamName = '';
var pFormName = '';
var pLastQuery = '';
var outputText = '';

var pSuggestSearchfieldClass = 'factfinder_searchfield';
var pSuggestQueryClass = 'ffsuggest-query';
var pSuggestFooterClass = 'ffsuggest-footer';
var pSuggestHeaderClass = 'ffsuggest-header';
var pSuggestRowClass = 'ffsuggest-table-tr';
var pSuggestHighlightClass = 'ffsuggest-highlight';


/* FactFinder Suggest */

// FactFinder Suggest init
function ffSuggestInit()
{
	pSearchURL = searchURL;
	pFormname = formname;
	pLayerName = divLayername;
	pQueryParamName = queryParamName;
	pAreaParamName = areaParamName;

	jQuery("#"+pSuggestSearchfieldClass).attr( "autocomplete","off" );
	jQuery("#"+pSuggestSearchfieldClass).focus();

	 jQuery('form[name='+formname+'] input[name='+queryParamName+']').keyup
	 (
		function (e)
		{
			if (e.keyCode == 38)
			{
				ffMoveUp();
			}
			else if(e.keyCode == 40)
			{
				ffMoveDown();
			}
			else if(e.keyCode == 13) // Enter
			{
				ffSetSearchWord();
			}
			else if (e.keyCode == 27)
			{
				jQuery('#'.divLayername).hide();
			}
			else
			{
				ffGetSuggestions();
			}
		}
	);

	jQuery('body').click(function () {
      //hide layer
			jQuery('#'+divLayername).hide();
   });


	//jQuery('form[name='+formname+']').html('asdf');
}


// get suggestion data with ajax
function ffGetSuggestions()
{
	var query = jQuery('input[name='+pQueryParamName+']').attr('value');
	var area = jQuery('input[name='+pAreaParamName+']').attr('value');

	//check if the same query was asked before
	if(pLastQuery == query)
	{
		return;
	}
	else
	{
		pLastQuery = query;
	}

	jQuery.ajax
	(
		{
			type: "GET",
			url: pSearchURL+'&'+pQueryParamName+'='+escape(query)+'&'+pAreaParamName+'='+area+'&xml=true',
			contentType: "application/x-www-form-urlencoded; charset=UTF-8",
			success:
				function (outputText, textStatus)
				{
					if (outputText.length > 0)
					{
						//show layer
						jQuery('#'+divLayername).html(outputText).show();
					}
					else
					{
						//hide layer
						jQuery('#'+divLayername).hide();
					}
				}
		}
	);
}


// suggest mouse over
function ffMouseOver(id)
{
	jQuery('tr#'+id).addClass(pSuggestHighlightClass);
}


// suggest mouse out
function ffMouseOut(id)
{
	jQuery('tr#'+id).removeClass(pSuggestHighlightClass);
}


// suggest submit
function ffSuggestSubmit()
{
	if(ffSetSearchWord())
	{
		jQuery('#factfinder_search').submit();
	}
}


// suggest get search word
function ffSetSearchWord(returnValue)
{
	if(jQuery('tr.'+pSuggestHighlightClass).length > 0)
	{
		var deepUrl = jQuery('tr.'+pSuggestHighlightClass+' .'+suggestDeepUrlInput).text();
		if(returnValue === false || deepUrl.length > 0)
		{
			window.location = deepUrl;
			return false;
		}
		else
		{
			var searchText = jQuery('tr.'+pSuggestHighlightClass+' .'+pSuggestQueryClass).text();
			jQuery('#'+pSuggestSearchfieldClass).attr('value', searchText);
			return true;
		}
	}
}


// suggest mouse down event
function ffMoveDown()
{
	if(jQuery('tr.'+pSuggestHighlightClass).length === 0)
	{
		jQuery('tr.'+pSuggestRowClass+':first').addClass(pSuggestHighlightClass);
	}
	else
	{
		if(jQuery('tr.'+pSuggestHighlightClass).next('tr.'+pSuggestRowClass).length === 0)
		{
			jQuery('tr.'+pSuggestHighlightClass).removeClass(pSuggestHighlightClass);
			jQuery('tr.'+pSuggestRowClass+':first').addClass(pSuggestHighlightClass);
		}
		else
		{
			jQuery('tr.'+pSuggestHighlightClass).removeClass(pSuggestHighlightClass)
			.next('tr.'+pSuggestRowClass)
			.addClass(pSuggestHighlightClass);
		}
	}
	ffSetSearchWord(true);
	jQuery('tr.'+pSuggestHighlightClass).attr('id');
}


// suggest mouse up event
function ffMoveUp()
{
	if(jQuery('tr.'+pSuggestHighlightClass).length === 0)
	{
		jQuery('tr.'+pSuggestRowClass+':last').addClass(pSuggestHighlightClass);
	}
	else
	{
		if(jQuery('tr.'+pSuggestHighlightClass).prev('tr.'+pSuggestRowClass).length === 0)
		{
			jQuery('tr.'+pSuggestHighlightClass).removeClass(pSuggestHighlightClass);
			jQuery('tr.'+pSuggestRowClass+':last').addClass(pSuggestHighlightClass);
		}
		else
		{
			jQuery('tr.'+pSuggestHighlightClass).removeClass(pSuggestHighlightClass)
			.prev('tr.'+pSuggestRowClass)
			.addClass(pSuggestHighlightClass);
		}
	}
	ffSetSearchWord(true);
}



/* FactFinder TagCloud */


// FactFinder TagCloud
function ffTagCloud(area)
{
	if(jQuery('#'+tagCloudDiv).html())
	{
		jQuery('#'+tagCloudDiv).html('<div style="text-align: center"><img src="'+loadingImg+'" /></div>');

		jQuery.ajax
		(
			{
				type: "GET",
				url: tagCloudURL+'&'+pAreaParamName+'='+area,
				contentType: "application/x-www-form-urlencoded; charset=UTF-8",
				success:
					function (outputText, textStatus)
					{
						if (outputText.length > 0)
						{
							//show layer
							jQuery('#'+tagCloudDiv).html(outputText).show();
						}
						else
						{
							//hide layer
							jQuery('#'+tagCloudDiv).hide();
						}
					}
			}
		);
	}
}




/* FactFinder Search Result */


// FactFinder Search Result Update
function ffUpdateSearchResult(searchQuery)
{
	if(jQuery('#'+searchResultDiv).html())
	{
		ffLoading();

		jQuery.ajax
		(
			{
				type: "GET",
				url: searchResultURL+searchQuery,
				contentType: "application/x-www-form-urlencoded; charset=UTF-8",
				success:
					function (outputText, textStatus)
					{
						var jsonobj = JSON.parse(outputText);
						ffLoadingStop();
						ffCategories(jsonobj.categories);
						ffManufacturers(jsonobj.manufacturers);
						ffProducts(jsonobj.products);
						ffSorting(jsonobj.sorting);
						ffFilters(jsonobj.filters);
						ffPager(jsonobj.pager);
						ffGroups(jsonobj.groups);
						//ffSwitch(jsonobj.switchs);
						ffBreadCrumb(jsonobj.breadcrumb);
						ffModules(jsonobj.modules);
						ffTagCloud(jsonobj.tagCloud);

						if(jsonobj.prices.length === 0)
						{
							jQuery('#'+pricesDiv).hide();
						}
						else
						{
							jQuery('#'+pricesDiv).show();
						}
					}
			}
		);
	}
}


function ffLoading()
{
	jQuery("#"+loadingDiv).html('<img src="fileadmin/_global/graphics/icons/loading_blue.gif" />');
}


function ffLoadingStop()
{
	jQuery("#"+loadingDiv).html('');
}



// FactFinder Search Result Categories Box
function ffCategories(outputText)
{
	if(jQuery('#'+categoriesDiv).html())
	{
		if (outputText.length > 0 && outputText.length !== null)
		{
			//show layer
			jQuery('#'+categoriesDiv).html(outputText).show();
		}
		else
		{
			jQuery('#'+categoriesDiv).hide();
		}
	}
}


// FactFinder Search Result Manufacturers Box
function ffManufacturers(outputText)
{
	if(jQuery('#'+manufacturersDiv).html())
	{
		if (outputText.length > 0)
		{
			//show layer
			jQuery('#'+manufacturersDiv).html(outputText).show();
		}
		else
		{
			//hide layer
			jQuery('#'+manufacturersDiv).hide();
		}
	}
}


// FactFinder Search Result Productlist
function ffProducts(outputText)
{
	if(jQuery('#'+productsDiv).html())
	{
		if (outputText.length > 0)
		{
			//show layer
			jQuery('#'+productsDiv).html(outputText).show();
		}
		else
		{
			//hide layer
			jQuery('#'+productsDiv).hide();
		}
	}
}


// FactFinder Search Result Prices Box
function ffPrices(arrPrices, searchQuery)
{
	var maxPriceFinal;
	if(jQuery('#'+pricesDiv).html())
	{
		var maxCountes = (arrPrices.length)-1;
		jQuery('#'+pricesSliderDiv).slider
		(
			{
				min: 0,
				max: maxCountes,
				slide: function(event, ui)
				{
					jQuery("#"+pricesAmountDiv).html('<div style="text-align: center">' + arrPrices[ui.value][0] + '</div>');
				},
				stop: function(event, ui)
				{
					ffUpdateSearchResult(arrPrices[ui.value][1]);
				}
			}
		);

		jQuery("#"+pricesAmountDiv).html('<div style="text-align: center">' + arrPrices[0][0] + ' </div>');
	}
}


// FactFinder Search Result Pager
function ffPager(outputText)
{
	if(jQuery('#'+pagerDiv).html())
	{
		if (outputText.length > 0)
		{
			//show layer
			jQuery('.'+pagerDiv).html(outputText).show();
		}
		else
		{
			//hide layer
			jQuery('.'+pagerDiv).hide();
		}
	}
}


// FactFinder Search Result Sorting
function ffSorting(outputText)
{
	if(jQuery('#'+sortingDiv).html())
	{
		if (outputText.length > 0)
		{
			//show layer
			jQuery('#'+sortingDiv).html(outputText).show();
		}
		else
		{
			//hide layer
			jQuery('#'+sortingDiv).hide();
		}
	}
}


// FactFinder Search Result Filters
function ffFilters(outputText)
{
	if(jQuery('#'+filtersDiv).html())
	{
		if (outputText.length > 0)
		{
			//show layer
			jQuery('#'+filtersDiv).html(outputText).show();
		}
		else
		{
			//hide layer
			jQuery('#'+filtersDiv).hide();
		}
	}
}


// FactFinder Search Result Groups
function ffGroups(outputText)
{
	if(jQuery('#'+groupsDiv).html())
	{
		if (outputText.length > 0)
		{
			//show layer
			jQuery('#'+groupsDiv).html(outputText).show();
		}
		else
		{
			//hide layer
			jQuery('#'+groupsDiv).hide();
		}
	}
}


// FactFinder Search Result Switch
function ffSwitch(outputText)
{
	if(jQuery('#'+switchDiv).html())
	{
		if (outputText.length > 0)
		{
			//show layer
			jQuery('#'+switchDiv).html(outputText).show();
		}
		else
		{
			//hide layer
			jQuery('#'+switchDiv).hide();
		}
	}
}


// FactFinder Search Result BreadCrumb
function ffBreadCrumb(outputText)
{
	if(jQuery('#'+breadCrumbDiv).html())
	{
		if (outputText.length > 0)
		{
			//show layer
			jQuery('#'+breadCrumbDiv).html(outputText).show();
		}
		else
		{
			//hide layer
			jQuery('#'+breadCrumbDiv).hide();
		}
	}
}


// FactFinder Search Result Community Modules
function ffModules(outputText)
{
	if(jQuery('#'+modulesDiv).html())
	{
		if (outputText.length > 0)
		{
			//show layer
			jQuery('#'+modulesDiv).html(outputText).show();
		}
		else
		{
			//hide layer
			jQuery('#'+modulesDiv).hide();
		}
	}
}



function ffClickProduct(area, query, artId, artPos, origArtPos, pageNum, artSimi,	sessionId, artTitle, pageSize, origPageSize, channel, eventName, userId, mainId, count, price)
{
	/*
	console.log(area);
	console.log(query);
	console.log(artId);
	console.log(artPos);
	console.log(origArtPos);
	console.log(pageNum);
	console.log(artSimi);
	console.log(artTitle);
	console.log(pageSize);
	console.log(origPageSize);
	console.log(channel);
	console.log(eventName);
	console.log(userId);
	console.log(mainId);
	console.log(count);
	console.log(price);
	*/

	if(eventName === null)
	{
		eventName = 'click';
	}
	jQuery.ajax
	(
		{
			type: 'GET',
			url: clickProductURL+'&'+pAreaParamName+'='+area,
			data:
			{
				query: query,
				id: artId,
				pos: artPos,
				origPos: origArtPos,
				page: pageNum,
				simi: artSimi,
				sid: sessionId,
				title: artTitle,
				event: eventName,
				pageSize: pageSize,
				origPageSize: origPageSize,
				channel: channel,
				userId: userId,
				mainId: mainId,
				count: count,
				price: price
			},
			contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
			cache: false,
			async: false
		}
	);
}





// FactFinder Recommendation init
function ffRecommendationInit(pageId, ceUid)
{
	if(jQuery('#'+recommendationDiv).html())
	{
		var className = jQuery('#'+recommendationDiv).attr('class');
		var productsId = jQuery('#'+recommendationDiv).html();

		if(productsId.length > 0)
		{
			jQuery.ajax
			(
				{
					type: 'GET',
					url: "index.php?id="+pageId+"&type=576&tx_nfcshop_pi1[action]=AJAX_FFRECOMMENDATION&tx_nfcshop_pi1[ce_uid]="+ceUid,
					data:
					{
						productsId: productsId,
						className: className
					},
					contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
					cache: false,
					async: false,
					success:
						function (outputText, textStatus)
						{
							if (outputText.length > 0)
							{
								//show layer
								jQuery('#'+recommendationDiv).html(outputText).show();
							}
							else
							{
								//hide layer
								jQuery('#'+recommendationDiv).hide();
							}
						}
				}
			);
		}
	}
}


// onload
jQuery(document).ready(function()
	{
	}
);



