function getSourceFunction(type) {
	var escapedInput = "";
	if (type == "top") {
		return queryCompletionGetter("#querystring");
	} else if (type == "standard") {
		return queryCompletionGetter("#querytext");
	} else if (type == "externalTop") {
		return publicQueryCompletionGetter("#querystring");
	} else if (type == "external") {
		return publicQueryCompletionGetter("#querytext");
	}
}

//hämta träffar från IDOL
//används av interna siters querycompletion
function queryCompletionGetter(inputid) {
	return function (req,add) {
		var bestbetType = translateSiteToBestbetDomain();
		var escapedInput = escape(escape($(inputid).val()));
		var url = '/idc/groups/siteasset/documents/web_asset/wcm_st_autonomy_search_qc.hcsp?querystring=' + escapedInput + '*';
		var result = [];
		$.getJSON(url+"&typ=standard",function(data) {	
			result = result.concat(data.values);
			$.getJSON(url+"&typ=personer",function(data) {	
				result = result.concat(data.values);
				$.getJSON(url+"&typ=bestbets&bestbetd="+bestbetType+"&aLang="+getLanguageType(),function(data) {	
					result = result.concat(data.values);
					$.getJSON(url+"&typ=regelverket",function(data) {	
						result = result.concat(data.values);
						add(result);
					});
				});
			});
		});
	}
}

function translateSiteToBestbetDomain() {
	nSiteId = thisSite.toLowerCase();
	if (nSiteId == "swedbanksenet" || nSiteId == "kanal1") {
		return "kanal1";
	} else if (nSiteId == "swedbankse") {
		return "swedbankse";
	} else if (nSiteId == "swedbankcom") {
		return "swedbankcom";
	} else {
		if (nSiteId.indexOf("net") == -1 && nSiteId.indexOf("int") == -1) {
			return "swedbankfripub";
		} else {
			return "swedbankfriint";
		}
	}
}
function getLanguageType() {
	if (thisSite.toLowerCase() == "swedbankcom") {
		return "english";
	} else {
		return "swedish"
	}
}

//Används av externa siters querycompletion
function publicQueryCompletionGetter(inputid,siteid) {
	return function (req,add) {
		var bestbetType = translateSiteToBestbetDomain();
		var escapedInput = escape(escape($(inputid).val()));
		var url = '/idc/groups/siteasset/documents/web_asset/wcm_st_autonomy_search_qc.hcsp?querystring=' + escapedInput + '*';
		var result = [];
		$.getJSON(url+"&typ=bestbets&bestbetd="+bestbetType+"&aLang="+getLanguageType(),function(data) {	
			result = result.concat(data.values);
			add(result);		
		});
	}
}

//användaren har klickat på en träff i querycompletion, saker ska hända
function getSelectFunction(inputid,formid) {
	return function (event,ui) {
		var item = ui.item;
		if (item.category == "Personal") {
			var url = ssUrlPrefix + "sok/index.htm?querytext="+item.label;
			window.location.href =  url;
		} else if (item.category != "") {
			//om det är en direktlänk, exempel regelverket eller bestbet
			var url = "" + item.url;
			window.location.href = url.replace("amp;","");
		} else {
			//vanliga ord
			$("#"+inputid).val(item.label);
			$("#"+formid).submit();
		}
	}
}

//flytta listan så den är högerställd mot input rutan
function openFunctionTop (event, ui){
	var theWidth = 400;
	var inputWidth = $("#querystring").width();
	var originalPos = $(this).catcompleteTopSearch("widget").offset().left-$(this).catcompleteTopSearch("widget").scrollLeft();
	var newTop = $(this).catcompleteTopSearch("widget").offset().top-$(this).catcompleteTopSearch("widget").scrollTop();
	newTop = newTop+1;
	var newTopVal = "" + newTop +"px";
	var val = originalPos-(theWidth-inputWidth)-5;
	var theVal = "" + val + "px";
	
	$(this).catcompleteTopSearch("widget").css({
		"width":theWidth,
		"left":theVal
	});
}

function openFunctionTopEnglish (event, ui){
	var theWidth = 400;
	var inputWidth = $("#querystring").width();
	var originalPos = $(this).catcompleteTopSearchEnglish("widget").offset().left-$(this).catcompleteTopSearchEnglish("widget").scrollLeft();
	var newTop = $(this).catcompleteTopSearchEnglish("widget").offset().top-$(this).catcompleteTopSearchEnglish("widget").scrollTop();
	newTop = newTop+1;
	var newTopVal = "" + newTop +"px";
	var val = originalPos-(theWidth-inputWidth)-5;
	var theVal = "" + val + "px";
	
	$(this).catcompleteTopSearchEnglish("widget").css({
		"width":theWidth,
		"left":theVal
	});
}

function openFunction(event, ui){}


function myRenderItem(ul, item) {
	var t = item.label;
	
	//fetmarkera texten som användaren skrivit in
	if (item.label != "Visa alla tr&aumlffar") {
		var term = this.term.split(' ').join('|');
		var re = new RegExp("(" + term + ")", "gi") ;
		var t = item.label.replace(re,"<strong>$1</strong>");
	}
	//default
	if (item.category == "" ){
		//autonomy liknande ord
		return $( "<li></li>" )
			.data( "item.autocomplete", item )
			.append( '<a style="text-decoration: none;">' + t + '</a>' )
			.appendTo( ul );
	} else if (item.category == "showmore"){
		//currently not used
		return $( '<li></li>' )
			.data( "item.autocomplete", item )
			.append( '<a style="color: #EA5E0D; cursor:pointer; margin-bottom:10px; margin-top: 3px;">' + t + '</a>' )
			.appendTo( ul );
	} else {
		//länkarna
		return $( "<li></li>" )
			.data( "item.autocomplete", item )
			.append( '<a style="color: #EA5E0D; cursor:pointer;">' + t + '</a>' )
			.appendTo( ul );
	}
}
function getRenderMenu(inputid,inputlang) {
	//use inputid to access the current user typed value
	//var userInput = $("#"+inputid).val();
	return function (ul, items) {
		var self = this;
		var standards = [], instructions = [],
		bestbets = [], persons = [];	
		function printCat(u,i,c) {
			if (i.length > 0) {
				ul.append('<li class="ui-autocomplete-category" style="margin: 0px; font-family:arial; font-size: 14px;">' + c + '</li>' );
				$.each(i,function(index,item) {
					self._renderItem(u,item);
				});
			}
		};
		
		//fyll i de olika listorna med elementen
		$.each( items, function( index, item ) {
			if ( item.category == "") {
				standards.push(item);
			} else if (item.category == "Regelverket") {
				instructions.push(item);
			} else if (item.category == "Bestbets") {
				bestbets.push(item);
			} else if (item.category == "Personal") {
				persons.push(item);
			}
		});
		var linkStart = '&lt;span class="qslink" onclick=';
		
		printCat(ul, persons, "Personalkatalog");
		//visa fler personalträffare knappen:
		if (persons.length > 0) {
			var userInput = $("#"+inputid).val();
			self._renderItem(ul,{
									"label":"Visa fler personaltr&aumlffar",
									"url": "/sok/index.htm?querytext="+userInput+"&source=PERSONALKATALOG",
									"category":"showmore"
								});
		}
		
		if (inputlang == "sv") {
			printCat(ul, bestbets, "Vi tipsar om");
		} else {
			printCat(ul, bestbets, "Editors suggestion");
		}
		printCat(ul, instructions, "Regelverket");
		printCat(ul, standards, "S&oumlker du efter");
	};
}
//på söksidan
$.widget("custom.catcomplete", $.ui.autocomplete, {
	//renderitem specifierar hur ett element i dropdown listan ska se ut
	_renderItem: myRenderItem,
	_renderMenu: getRenderMenu("querytext","sv")
	
});
//swedbankcom
$.widget("custom.catcompleteEnglish", $.ui.autocomplete, {
	_renderItem: myRenderItem,
	_renderMenu: getRenderMenu("querytext","en")
	
});


//i headern
$.widget("custom.catcompleteTopSearch", $.ui.autocomplete, {
	_renderItem: myRenderItem,
	_renderMenu: getRenderMenu("querystring","sv")
});

$.widget("custom.catcompleteTopSearchEnglish", $.ui.autocomplete, {
	_renderItem: myRenderItem,
	_renderMenu: getRenderMenu("querystring","en")
});
