/* ------------------------------ INITIALISIERUNGEN ------------------------------ */

//suche leeren
//aber nur auf der pf seite, nicht auf der detailseite
if(($(document).getUrlParam("restore") != '1') && (getT3PageAlias() != 'partnerdetail') && (getT3PageAlias() != 'contactpartnerfe')){
	callAjaxAction('REMOVE');
}

//fehlende Funktion indexOf fuer IE hinzufuegen
if(!Array.indexOf){
    Array.prototype.indexOf = function(obj){
        for(var i=0; i<this.length; i++){
            if(this[i]==obj){
                return i;
            }
        }
        return -1;
    }
}

//slider initialisieren
$(document).ready(function(){
		$(function() {
			//var valMap = ['k.A.','k.A.','k.A.','k.A.','k.A.',1, 10, 20, 50, 100, 200, 300, 400, 500, 600, 700,800,900,1000,1500,2000,2500,3000,3500,4000,4500,5000,6000,7000,8000,9000,'10.000','> 10.000'];
			var valMap = ['k.A.','1', '10', '25', '50', '100', '250', '500', '>500'];
			$("#slider_employee").slider({
					min: 0,
					max: valMap.length - 1,
					value: 0,
					slide: function(event, ui) {
									$(".employee_count").text(valMap[ui.value]);
					},
					stop: function(event, ui) {
									$("#employee_hidden").val(valMap[ui.value]);
									callAjaxActionWithNameAndValue('employee_0', valMap[ui.value]);
									//added for testing showing result on each change in form
									//showResult();
					}
			});
			$(".employee_count").text(valMap[$("#slider_employee").slider("value")]);
		});

		$(function() {
			var valMap = ['k.A.','1', '10', '25', '50', '100', '250', '500', '>500'];
			$("#slider_workplaces").slider({
					min: 0,
					max: valMap.length - 1,
					value: 0,
					slide: function(event, ui) {
									$(".workplaces_count").text(valMap[ui.value]);
					},
					stop: function(event, ui) {
									$("#workplaces_hidden").val(valMap[ui.value]);
									callAjaxActionWithNameAndValue('workplaces_0', valMap[ui.value])
									//added for testing showing result on each change in form
									//showResult();
					}
			});
			$(".workplaces_count").text(valMap[$("#slider_workplaces").slider("value")]);
		});
		
		//Umkreis - Slider
		$(function() {
			var valMap = ['20','50', '100', '200'];
			$("#slider_circle").slider({
					min: 0,
					max: valMap.length - 1,
					value: 1,
					slide: function(event, ui) {
							$(".circle_slider_value").text(valMap[ui.value]);
					},
					stop: function(event, ui) {
							jQuery('#circle').val(valMap[ui.value]);
							startAjaxActionForCircle(valMap[ui.value]);
							//added for testing showing result on each change in form
							//showResult();
					}
			});
			$(".circle_slider_value").text(valMap[$("#slider_circle").slider("value")]);
		});
		
		$("#combobox").combobox();
		$("#toggle").click(function() {
			$("#combobox").toggle();
		});
});

/* ------------------------------ VARIABLEN DEKLARATIONEN ------------------------------ */

var name;
var value;
var arrayToChange = new Array();
var industry_selected = new Array();
var request_selected = new Array();
var module_selected = new Array();
var itenvironment_selected = new Array();
var industrysolution_selected = new Array();
var globMapName1 = '';
var globMapName2 = '';
var searchType = 'HARD';

var countryZip = new Array();
countryZip["AU"] = "4";
countryZip["Austria"] = "4";
countryZip["AT"] = "4";
countryZip["EG"] = "5";
countryZip["BE"] = "4";
countryZip["BN"] = "6";
countryZip["DK"] = "4";
countryZip["DE"] = "5";
countryZip["FR"] = "5";
countryZip["ID"] = "5";
countryZip["IT"] = "5";
countryZip["LU"] = "4";
countryZip["MY"] = "5";
countryZip["MU"] = "8";
countryZip["NL"] = "6";
countryZip["PH"] = "4";
countryZip["PL"] = "5";
countryZip["RO"] = "6";
countryZip["SE"] = "5";
countryZip["CH"] = "4";
countryZip["RS"] = "5";
countryZip["SK"] = "5";
countryZip["CZ"] = "5";
countryZip["HU"] = "4";

/* ------------------------------ MAIN AJAX functions and callbacks ------------------------------ */

function resetSearch(){
	showSearchSpinnerHideMap();
	jQuery.get('./index.php?id=partnerfinder&type=300&mkelopartner[remove]=1');
	resetFormElementsAndDisplay();
	showStartResult();
}

//Wert und Name der Suchbedingung werden ueber die geklickte Checkbox ermittelt
function callAjaxAction(source){
	if(source == 'REMOVE'){
		jQuery.get('./index.php?id=partnerfinder&type=300&mkelopartner[remove]=1');
	}else{
		//parameter fuer search
		name = source.id;
		value = $('#' + name + ':checked').val();
		if (value==undefined){value='';}
		
		//spinner (ladebalken) anzeigen
		//zunaechst alle spinner ausblenden, damit keine ueberschneidungen stattfinden
		$('.fespinner').hide();
		$('#' + name).next().children('#fespinner').show();

		//anzeige der ausgewaehlten Bedingungen (z.B: Agrarwirtschaft, Bergbau (31)) 
		updateBoxHeadersText(name, value);
		
		//request fuer speziellen Partnertyp einstellen
		partnerType = getPartnerTypeToSearch();
		if(partnerType == 2){
			partnerType = '1,2';
		}
		
		//die suchabfrage fuer die counts starten
		//$.getJSON('./index.php?id=partnerfinder&type=300&mkelopartner[name]=' + name + '&mkelopartner[value]=' + value + '&mkelopartner[partnerType]='+partnerType, function(data){alert(data); });
		//besser mit ajax() weil wir das errors auslesen koennen
		jQuery.ajax({
			 url: './index.php?id=partnerfinder&type=300&mkelopartner[name]=' + name + '&mkelopartner[value]=' + value + '&mkelopartner[partnerType]='+partnerType,
			 dataType: 'json',
			 success: function(data) {
    			callAjaxActionResponse(data, name);
  			 }, 
  			 error: function(xMLHttpRequest, textStatus, errorThrown) {
				// x.responseText should have what's wrong
			 }
		});
		//added for testing showing result on each change in form
		//showResult();
	}
}

//wert und name fuer die Suchbedingung werden direkt uebergeben
function callAjaxActionWithNameAndValue(name, value){
	//damit die suche auch im IE umlaute findet
	//if(/MSIE (\d+\.\d+);/.test(navigator.userAgent)){
	//	value = unescape( encodeURIComponent( value ) );
	//}
	
	//zunaechst alle spinner ausblenden, damit keine ueberschneidungen stattfinden
	$('.fespinner').hide();
	
	//richtigen spinner (ladebalken) einblenden
	switch(name){
		case 'employee_0': $('#fespinner_workenvironment_employee').show(); break;
		case 'workplaces_0': $('#fespinner_workenvironment_workplaces').show(); break;
		case 'circle': $('#fespinner_circle').show(); break;
		case 'miscindustrysolution':
			refreshBoxHeadersText('industrysolution');
			break;
	}
	
	if (name === "miscindustrysolution"){
		name = "industrysolution";
	}

	//request auf partnertyp einstellen
	partnerType = getPartnerTypeToSearch();
	switch(partnerType){
		case 1 : {pfsite = 'partnerfinder'; break;}
		case 2 : {pfsite = 'partnerfinderchannel'; break;}
		case 3 : {pfsite = 'partnerfinderdist'; break;}
	}
	if(partnerType == 2){
		partnerType = '1,2';
	}
	
	//request starten
	$.getJSON('./index.php?id='+pfsite+'&type=300&mkelopartner[name]=' + name + '&mkelopartner[value]=' + value + '&mkelopartner[partnerType]='+partnerType, function(data){callAjaxActionResponse(data, name)});
}

//bei klick auf spaltentitel wird diese Funktion aufgerufen, um die jeweilige ergebnisliste zu sortieren
function sort(column, type){
	//zunaechst alle spinner ausblenden, damit keine ueberschneidungen stattfinden
	$('.fespinner').hide();
	// sort ladebalken (spinner) anzeigen
	$('#fespinner_' + type + '_' + column).show();
	
	//request einstellen
	addParam = ''; 					//zusaetzliche parameter die an die action uebergeben werden sollen
	destination = 'partnerfinder'; 	//zielseite je nach partnertyp
	partialAdd = ''; 				//unterscheidung zwischen 1. und 2. Liste
	if(type == 'partial'){
		partialAdd='partial';
	}else if(type == 'showonlineshops'){
		addParam = '&mkelopartner[showonlineshops]=1&mkelopartner[showall]=1';
		destination = 'partnerfinderchannel';
	}else if (type == 'showcirclesearch'){
		destination = 'partnerfinderchannel';
	}
	partnerType = getPartnerTypeToSearch();
	if(partnerType == 2){
		partnerType = '1,2';
	}
	
	//request starten
	$.get('./index.php?id=' + destination + '&type=400&mkelopartner[' + partialAdd + 'sorting]='+column+'&mkelopartner[partnerType]='+partnerType+addParam, function(html){callResponseShowSortResult(html, type)});
}

function callResponseShowSortResult(html, type){
	//todo: tester must be disabled
	debugPart = getHTMLPart(html, '0', '<!--THESTART-->');
	document.getElementById('tester').innerHTML = debugPart;
	
	//html mit neuen Daten fuellen und vorbereitung fuer sortierungspfeile
	if(type == 'full' || type == 'showonlineshops' || type == 'showcirclesearch'){
		//neues ergebnislisten-html in bisheriges html einbetten
		criteriaAllTitle = getHTMLPart(html, '<!--CRITERIA_ALL_TITLE_START-->', '<!--CRITERIA_ALL_TITLE_END-->');	
		criteriaAllList = getHTMLPart(html, '<!--CRITERIA_ALL_LIST_START-->', '<!--CRITERIA_ALL_LIST_END-->');
		document.getElementById('criteria-all-title').innerHTML = criteriaAllTitle;
		document.getElementById('criteria-all-list').innerHTML = criteriaAllList;
		
		//sortierungsheader pfeil einstellung
		sorting = getHTMLPart(html, '<!--STARTSORTING', 'ENDSORTING-->');
		direction = getHTMLPart(html, '<!--STARTDIRECTION', 'ENDDIRECTION-->');
	}else{
		//neues ergebnislisten-html in bisheriges html einbetten
		criteriaPartlyTitle = getHTMLPart(html, '<!--CRITERIA_PARTLY_TITLE_START-->', '<!--CRITERIA_PARTLY_TITLE_END-->');
		criteriaPartlyList = getHTMLPart(html, '<!--CRITERIA_PARTLY_LIST_START-->', '<!--CRITERIA_PARTLY_LIST_END-->');
		document.getElementById('criteria-partly-title').innerHTML = criteriaPartlyTitle;
		document.getElementById('criteria-partly-list').innerHTML = criteriaPartlyList;
	
		//sortierungsheader pfeil einstellung
		sorting = getHTMLPart(html, '<!--STARTPARTIALSORTING', 'ENDPARTIALSORTING-->');
		direction = getHTMLPart(html, '<!--STARTPARTIALDIRECTION', 'ENDPARTIALDIRECTION-->');
	}
	
	//spaltentitel sortierungspfeile ausrichten
	fullOrPartial = type;
	if(type=='showcirclesearch' ||type=='showonlineshops'){
		fullOrPartial = 'full';
	}
	toggleSortHeader(fullOrPartial + '_'+sorting, direction);
	
	//google maps neu befuellen
	//pruefen ob googlemaps angezeigt werden sollen
	showGoogleMap1 = shouldShowMap(html, 'full');
	showGoogleMap2 = shouldShowMap(html, 'partial');
	
	//map liste 1
	if(showGoogleMap1 == 1){
		//get MapName1
		mapName1 = getHTMLPart(html, '<!--STARTMAPNAME0', 'ENDMAPNAME0-->');
		globMapName1 = mapName1;
		
		//vor Hinzufuegen neuer Marker die Karte leeren
		if(WecMap && mapName1 && WecMap.markerManagers[mapName1] && WecMap.markers[mapName1][0]){
			WecMap.markerManagers[mapName1].clearMarkers();
			WecMap.markers[mapName1][0] = [];
		}
	}
	
	//map liste 2
	if(showGoogleMap2 == 1){
		//get MapName2
		mapName2 = getHTMLPart(html, '<!--STARTMAPNAME1', 'ENDMAPNAME1-->');
		globMapName2 = mapName2;
		
		//vor Hinzufuegen neuer Marker die Karte leeren
		if(WecMap && mapName2 && WecMap.markerManagers[mapName2] && WecMap.markers[mapName2][0]){
			WecMap.markerManagers[mapName2].clearMarkers();
			WecMap.markers[mapName2][0] = [];
		}
	}
	
	//js zum hinzufuegen der marker ermitteln und ausfuehren
	//fuer map 1
	if(showGoogleMap1 == 1){
		//get Map JS
		mapJS = getHTMLPart(html, '<!--STARTMAPJS', 'ENDMAPJS-->');
		//alert(mapJS);
		if(WecMap && mapName1){
			eval(mapJS);
		}
	}
	
	//fuer map 2
	if(showGoogleMap2 == 1 && document.getElementById('map2-content')){
		//get Map JS
		mapJS2 = getHTMLPart(html, '<!--STARTMAPJS2', 'ENDMAPJS2-->');
		//alert(mapJS2);
		if(WecMap && mapName2){
			eval(mapJS2);
		}
	}
}

//wird bei Klick auf Suchen Button ausgefuehrt
//ermittelt die fehlenden Suchparameter und fuehrt zusammen mit den aktuell in der Session vorhandenen Suchparametern 
//die Suche aus, Ergebnisdarstellung erfolgt in der callbackfunktion 
function showResultConfig(configArray){
	showSearchSpinnerHideMap();
	
	//request auf partnertyp einstellen
	partnerType = getPartnerTypeToSearch();
	switch(partnerType){
		case 1 : {pfsite = 'partnerfinder'; break;}
		case 2 : {pfsite = 'partnerfinderchannel'; break;}
		case 3 : {pfsite = 'partnerfinderdist'; break;}
	}
	if(partnerType == 2){
		partnerType = '1,2';
	}
	
	fetchMissingSearchParamsConfig(configArray);
	//such spinner einblenden erneut noetig, da fetchmiss... callajaxactionwithnameandvalue('fulltext') aufruft und die spinner ausblendet
	document.getElementById('criteria-all-title').innerHTML = '<span class="fespinner" id="fespinner_search"></span>';
	
	//additional params
	additionalParams = '';
	//debug url param
	var debug = getDebugURLParams();
	if(debug != ''){
		additionalParams = '&mkelopartner[debug]='+debug;
	}
	//showResult soll sich ab sofort immer die umkreisparameter selbst holen und diese an die Suchaction direkt geben
	circleSearchParams = getCircleSearchParamsAsURLParams();
	
	//searchType fuer showResultDivided anpassen anhand configArray
	//spezieller Fall: showResultConfig wird sowohl fuer bp als auch fuer channel verwendet und soll aber zweite liste bei channel nicht zeigen (gibts dort nicht)
	//deswegen muessen wir fuer die ergebnisdarstllg. per JS sagen, dass es keine zweite liste gibt, sonst gibts JS Fehler
	if(configArray['searchType'] == 'HARDONLY'){
		searchTypeForShowResultDivided = 'HARDONLY';
	}else{
		searchTypeForShowResultDivided = searchType;
	}
	
	//ist das haekchen Zeige auch BP gesetzt?
	if(configArray['listAlsoBP'] == true){
		additionalParams = additionalParams + '&mkelopartner[listAlsoBP]=1';
	}
	
	//request starten
	$.get('./index.php?id='+pfsite+'&type=400&mkelopartner[startnewsearch]=1&mkelopartner[partnerType]='+partnerType+'&mkelopartner[searchType]='+searchType+additionalParams+circleSearchParams, 
	function(html){showResultDivided(html, searchTypeForShowResultDivided, additionalParams, circleSearchParams)});
}

//wird bei Klick auf Suchen Button ausgefuehrt
//ermittelt die fehlenden Suchparameter und fuehrt zusammen mit den aktuell in der Session vorhandenen Suchparametern 
//die Suche aus, Ergebnisdarstellung erfolgt in der callbackfunktion 
function showResult(){
	//console.log("showResult");
	showSearchSpinnerHideMap();
	
	//request auf partnertyp einstellen
	partnerType = getPartnerTypeToSearch();
	switch(partnerType){
		case 1 : {pfsite = 'partnerfinder'; break;}
		case 2 : {pfsite = 'partnerfinderchannel'; break;}
		case 3 : {pfsite = 'partnerfinderdist'; break;}
	}
	if(partnerType == 2){
		partnerType = '1,2';
	}
	
	fetchMissingSearchParams();
	//such spinner einblenden erneut noetig, da fetchmiss... callajaxactionwithnameandvalue('fulltext') aufruft und die spinner ausblendet
	document.getElementById('criteria-all-title').innerHTML = '<span class="fespinner" id="fespinner_search"></span>';
	
	//additional params
	additionalParams = '';
	//debug url param
	var debug = getDebugURLParams();
	if(debug != ''){
		additionalParams = '&mkelopartner[debug]='+debug;
	}
	
	//showResult soll sich ab sofort immer die umkreisparameter selbst holen und diese an die Suchaction direkt geben
	circleSearchParams = getCircleSearchParamsAsURLParams();
	//request starten //es gibt HARD, SOFT und BOTH
	$.get(
		'./index.php?id=' + pfsite + '&type=400&mkelopartner[startnewsearch]=1&mkelopartner[partnerType]='+partnerType + '&mkelopartner[searchType]=' + searchType + additionalParams + circleSearchParams, 
		function(html){showResultDivided(html, searchType, additionalParams, circleSearchParams);}
	);
}

//callbackfunktion fuer suchanfragen, z.b. per suchenbutton
function showResultDivided(html, searchType, additionalParams, circleSearchParams){
	//console.log("showResultDivided");
	//console.log(searchType);
	callResponseShowResult(html, searchType);
	//wenn beim ersten Durchlauf nur die erste Liste dargestellt wurde, nun noch die zweite darstellen
	
	if(searchType == 'HARD'){
		//such spinner fuer zweite liste einblenden
		document.getElementById('criteria-partly-title').innerHTML = '<span class="fespinner" id="fespinner_search"></span>';
		$.get(
			'./index.php?id=' + pfsite + '&type=400&mkelopartner[startnewsearch]=1&mkelopartner[partnerType]='+partnerType + '&mkelopartner[searchType]=SOFT' + additionalParams + circleSearchParams, 
			function(html){callResponseShowResult(html, 'SOFT');}
		);
	}
}

//holt die suchparameter fuer die umkreis-suche und gibt sie als url string zurueck
function getCircleSearchParamsAsURLParams(){
	//suchparameter aus dem formular auslesen
	selectedCountry = jQuery('#country').val();
	insertedZip = jQuery('#zip').val();
	selectedCircle = jQuery('#circle').val();
	useCircleSearch = jQuery('#circleActive').val();
	
	return '&mkelopartner[pushCountry]='+selectedCountry+'&mkelopartner[pushZip]='+insertedZip+'&mkelopartner[pushCircle]='+selectedCircle+'&mkelopartner[pushUseCircleSearch]='+useCircleSearch;
	
}

//diese Funktion wird beim Laden der Seite aufgerufen und sorgt dafuer, dass alle Partner aufgelistet werden
//ohne fetchMissingSearchParams, da dies nicht notwendig ist
function showStartResult(){
	showSearchSpinner();
	
	//request auf partnertyp einstellen
	partnerType = getPartnerTypeToSearch();
	switch(partnerType){
		case 1 : {pfsite = 'partnerfinder'; break;}
		case 2 : {pfsite = 'partnerfinderchannel'; break;}
		case 3 : {pfsite = 'partnerfinderdist'; break;}
	}
	if(partnerType == 2){
		partnerType = '1,2';
	}
	
	//request starten
	$.get('./index.php?id=' + pfsite + '&type=400&mkelopartner[startnewsearch]=1&mkelopartner[partnerType]='+partnerType + '&mkelopartner[searchType]=HARD',
	 function(html){showResultDivided(html, 'HARDONLY', '', '')}
	);
}

//wird ausgefuehrt wenn auf den Suche Button bei der Fachhaendler Suche geklickt wird
function showResultChannel(event){
	showSearchSpinnerHideMap();
	
	//request auf partnertyp einstellen
	partnerType = getPartnerTypeToSearch();
	if(partnerType == 2){
		partnerType = '1,2';
	}
	fetchMissingSearchParams();
	//such spinner anzeigen erneut noetig, da fetchmiss... callajaxactionwithnameandvalue(fulltext aufruft und die spinner ausblendet
	document.getElementById('criteria-all-title').innerHTML = '<span class="fespinner" id="fespinner_search"></span>';
	
	//showResult soll sich ab sofort immer die umkreisparameter selbst holen und diese an die Suchaction direkt geben
	circleSearchParams = getCircleSearchParamsAsURLParams();
	
	//request starten
	$.get('./index.php?id=partnerfinderchannel&type=400&mkelopartner[startnewsearch]=1&mkelopartner[partnerType]='+partnerType + '&mkelopartner[searchType]=HARD' + circleSearchParams, 
		function(html){showResultDivided(html, 'HARDONLY', '', '')}
	);
}

//wird beim Laden der Fachhaendler Suche Seite ausgefuehrt und zeigt alle Fachhaendler-Partner an
function showStartResultChannel(){
	showSearchSpinner();
	
	partnerType = getPartnerTypeToSearch();
	if(partnerType == 2){
		partnerType = '1,2';
	}
	
	//such spinner anzeigen erneut noetig, da fetchmiss... callajaxactionwithnameandvalue(fulltext aufruft und die spinner ausblendet
	document.getElementById('criteria-all-title').innerHTML = '<span class="fespinner" id="fespinner_search"></span>';
	
	//request starten
	$.get('./index.php?id=partnerfinderchannel&type=400&mkelopartner[startnewsearch]=1&mkelopartner[partnerType]='+partnerType+ '&mkelopartner[searchType]=HARD', 
		function(html){showResultDivided(html, 'HARDONLY', '', '')}
	);
}

//wird aufgerufen wenn auf den Button "mehr Ergebnisse anzeigen" geklickt wird
function showMore(type){
	//zunaechst alle spinner ausblenden, damit keine ueberschneidungen stattfinden
	$('.fespinner').hide();
	
	//spinner anzeigen
	if(document.getElementById('fespinner_more_' + type)){
		document.getElementById('fespinner_more_' + type).style.display = 'inline';
	}
	
	//request einstellen
	addParam = '';					//zusaetzliche parameter die an die action uebergeben werden sollen
	destination = 'partnerfinder';	//zielseite je nach partnertyp
	partialAdd = '';				//unterscheidung zwischen 1. und 2. Liste
	if(type == 'partial'){
		partialAdd='partial';
	}else if(type == 'showonlineshops'){
		addParam = '&mkelopartner[showonlineshops]=1&mkelopartner[showall]=1';
		destination = 'partnerfinderchannel';
	}else if (type == 'showcirclesearch'){
		destination = 'partnerfinderchannel';
		//addParam='&mkelopartner[showall]=1';
	}
	
	//request auf partnertyp einstellen
	partnerType = getPartnerTypeToSearch();
	if(partnerType == 2){
		partnerType = '1,2';
	}
	
	//request starten
	$.get('./index.php?id=' + destination + '&type=400&mkelopartner[' + partialAdd + 'limit]=10&mkelopartner[partnerType]='+partnerType+addParam, function(html){callResponseShowSortResult(html, type)});
}

//wird als Callback-Funktion aufgerufen, wenn die Onlineshops angezeigt werden
function callResponseShowAllResult(html){
	//todo: tester must be removed
	debugPart = getHTMLPart(html, '0', '<!--THESTART-->');
	document.getElementById('tester').innerHTML = debugPart;
	
	criteriaAllTitle = getHTMLPart(html, '<!--CRITERIA_ALL_TITLE_START-->', '<!--CRITERIA_ALL_TITLE_END-->');	
	criteriaAllList = getHTMLPart(html, '<!--CRITERIA_ALL_LIST_START-->', '<!--CRITERIA_ALL_LIST_END-->');
	document.getElementById('criteria-all-title').innerHTML = criteriaAllTitle;
	document.getElementById('criteria-all-list').innerHTML = criteriaAllList;
}

//nach der Haupt-Such-Funktion wird diese CallbackFunktion an verschiedenen Stellen aufgerufen, um das Suchergebnis darzustellen
function callResponseShowResult(html, type){
	//pruefen ob googlemaps angezeigt werden sollen
	showGoogleMap1 = shouldShowMap(html, 'full');
	showGoogleMap2 = shouldShowMap(html, 'partial');
	
	//die vier teile ins html einbetten
	if(type == 'HARD' || type == 'HARDONLY' || type == 'BOTH'){
		criteriaAllTitle = getHTMLPart(html, '<!--CRITERIA_ALL_TITLE_START-->', '<!--CRITERIA_ALL_TITLE_END-->');	
		if(showGoogleMap1 == 0){
			criteriaAllTitle = getHTMLPart(html, '<!--CRITERIA_ALL_EMPTY_START-->', '<!--CRITERIA_ALL_EMPTY_END-->');
		}
		criteriaAllList = getHTMLPart(html, '<!--CRITERIA_ALL_LIST_START-->', '<!--CRITERIA_ALL_LIST_END-->');
	}
	if(type == 'SOFT' || type == 'BOTH'){
		criteriaPartlyTitle = getHTMLPart(html, '<!--CRITERIA_PARTLY_TITLE_START-->', '<!--CRITERIA_PARTLY_TITLE_END-->');
		criteriaPartlyList = getHTMLPart(html, '<!--CRITERIA_PARTLY_LIST_START-->', '<!--CRITERIA_PARTLY_LIST_END-->');
	}
	
	if(type == 'HARD' || type == 'HARDONLY' || type == 'BOTH'){
		document.getElementById('criteria-all-title').innerHTML = criteriaAllTitle;
		document.getElementById('criteria-all-list').innerHTML = criteriaAllList;
	}
	
	if(type == 'SOFT' || type == 'BOTH'){
		if(document.getElementById('criteria-partly-title')){
			document.getElementById('criteria-partly-title').innerHTML = criteriaPartlyTitle;
			document.getElementById('criteria-partly-list').innerHTML = criteriaPartlyList;
		}
	}
	
	//debug-ausgaben anzeigen
	debugPart = getHTMLPart(html, '0', '<!--THESTART-->');
	document.getElementById('tester').innerHTML = debugPart;
	
	if(getPartnerTypeToSearch() != 3){
		//google maps zuerst leeren
		if(showGoogleMap1 == 1 && (type=='HARD' || type=='HARDONLY')){
			//get MapName1
			mapName1 = getHTMLPart(html, '<!--STARTMAPNAME0', 'ENDMAPNAME0-->');
			globMapName1 = mapName1;
			
			//vor Hinzufuegen neuer Marker die Karte leeren
			if(WecMap && mapName1 && WecMap.markerManagers[mapName1] && WecMap.markers[mapName1][0]){
				WecMap.markerManagers[mapName1].clearMarkers();
				WecMap.markers[mapName1][0] = [];
			}
		}
		if(showGoogleMap2 == 1 && type=='SOFT'){
			//get MapName2
			mapName2 = getHTMLPart(html, '<!--STARTMAPNAME1', 'ENDMAPNAME1-->');
			globMapName2 = mapName2;
			
			//vor Hinzufuegen neuer Marker die Karte leeren
			if(WecMap && mapName2 && WecMap.markerManagers[mapName2] && WecMap.markers[mapName2][0]){
				WecMap.markerManagers[mapName2].clearMarkers();
				WecMap.markers[mapName2][0] = [];
			}
		}
		
		//google maps neu befuellen
		if(showGoogleMap1 == 1 && (type=='HARD' || type=='HARDONLY')){
			//get Map JS
			mapJS = getHTMLPart(html, '<!--STARTMAPJS', 'ENDMAPJS-->');
			if(WecMap && mapName1 && WecMap.maps[mapName1]){
				//alert(mapJS);
				eval(mapJS);
			}
		}
		
		if(showGoogleMap2 == 1 && document.getElementById('map2-content') && type=='SOFT'){
			//get Map JS
			mapJS = getHTMLPart(html, '<!--STARTMAPJS', 'ENDMAPJS-->');
			//alert(mapJS);
			if(WecMap && mapName2){
				eval(mapJS);
			}
		}
	
		hideBothMapsIfExists();	
	}
	
	//bei debugmodus auf relevance muss der div verbreitert werden damit alles schoen platz hat
	var debug = getDebugURLParams();
	if(debug && debug == 'relevance'){
		document.getElementById('content_w550px').style.width='750px';
		jQuery('.pf-box-header').attr('style', 'width:550px;');
	}
}

//wird als callback funktion aufgerufen, wenn im Suchformular Daten veraendert worden sind 
//aktualisiert die zahlen fuer die vier boxen
function callAjaxActionResponse(data, name){
	var updateType = name.split("_")[0];
	document.getElementById('maincount').innerHTML = data.mainCount;
	document.getElementById('main_count_hidden').value = data.mainCount;
	
	//den richtigen spinner ausblenden
	switch(updateType){
		case 'employee': 
			if(document.getElementById('fespinner_workenvironment_employee')){
				$('#fespinner_workenvironment_employee').hide();
			}
			break;
		case 'workplaces': 
			if(document.getElementById('fespinner_workenvironment_workplaces')){
				$('#fespinner_workenvironment_workplaces').hide();
			}
			break;
		case 'circle':
			if(document.getElementById('fespinner_circle')){
				$('#fespinner_circle').hide(); 
			}
			break;
		case 'industrysolution':
			document.getElementById('industrysolution_count').innerHTML = data.industrySolutionCount;
			document.getElementById('industrysolution_count_hidden').value = data.industrySolutionCount;
			break;
		default:	
			if(document.getElementById(name)){
				$('#' + name).next().children('#fespinner').hide();
			}
			break;
	}

	switch(updateType){
		case 'industry':
			document.getElementById('industry_count').innerHTML = data.industryCount;
			document.getElementById('industry_count_hidden').value = data.industryCount;
			break;
		case 'request':
			document.getElementById('request_count').innerHTML = data.requestCount;
			document.getElementById('request_count_hidden').value = data.requestCount;
			break;
		case 'module':
			document.getElementById('module_count').innerHTML = data.moduleCount;
			document.getElementById('module_count_hidden').value = data.moduleCount;
			break;
		case 'itenvironment':
			document.getElementById('itenvironment_count').innerHTML = data.itenvironmentCount;
			document.getElementById('itenvironment_count_hidden').value = data.itenvironmentCount;
			break;
		default:break;
	}
}

//wird gestartet, wenn im Umkreis Select der PLZ-Suche ein anderer Wert ausgewaehlt wird
function startAjaxActionForCircle(circle){
	//nur wenn die PLZ die richtige Laenge (abhaengig von gewaehltem Land) hat, den request starten
	if($('#zip').val().length == $('#ziplength').val()){
		countryCode = $('#country :selected').val();
		if(!countryCode){
			countryCode = 'DE';
		}
		value = countryCode + '|' + $('#zip').val() + '|' + circle;
		callAjaxActionWithNameAndValue('circle', value);
	}
}

/* ------------------------------ SPECIAL HELPER functions ------------------------------ */

function getDebugURLParams(){
	return $(document).getUrlParam('debug');
}

function shouldShowMap(html, type){
	if(type == 'full'){
		noContactsFound = html.indexOf('NOCONTACTS');
	}else if(type == 'partial'){
		noContactsFound = html.indexOf('NOPARTIALCONTACTS');		
	}
	showGoogleMap = 0;
	if(noContactsFound == -1){
		showGoogleMap = 1;
	}
	return showGoogleMap;
}

function showCircleSearch(){
	//tab active machen
	$('#onlineshop_link').attr('class', '');
	$('#environment_link').attr('class', 'active');
	$('.button_results').show();
	$('div.button_reset').show();
	
	//liste und titel leeren
	$('#criteria-all-list').html('');
	$('#criteria-all-title').html('');
	
	//buttons einblenden
	$('#submitBT').show();
	$('#circle-content').show();
}

function showOnlineShops(){
	//google map und weiteres nicht benoetigtes ausblenden
	hideMap('map1-content');
	$('#submitBT').hide();
	$('#circle-content').hide();
	$('.button_results').hide();
	$('div.button_reset').hide();
	
	//tab active machen
	$('#onlineshop_link').attr('class', 'active');
	$('#environment_link').attr('class', '');
	
	//liste und title leeren
	$('#criteria-all-list').html('');
	$('#criteria-all-title').html('');
	
	//spinner
	document.getElementById('criteria-all-title').innerHTML = '<span class="fespinner" id="fespinner_search"></span>';
	
	setTimeout('realShowOnlineShops()', 200);
}

function realShowOnlineShops(){
	//request auf partnertyp einstellen
	partnerType = getPartnerTypeToSearch();
	if(partnerType == 2){
		partnerType = '1,2';
	}
	
	//request starten
	$.get('./index.php?id=partnerfinderchannel&type=400&mkelopartner[showonlineshops]=1&mkelopartner[showall]=1&mkelopartner[startnewsearch]=1&mkelopartner[partnerType]='+partnerType, function(html){callResponseShowAllResult(html)});
}

function getPartnerTypeToSearch(){
	partnerType = 1;
	pageId = getT3PageAlias();
	switch(pageId){
		case 'partnerfinder': {partnerType= 1; break;}
		case 'partnerfinderchannel': {partnerType= 2; break;}
		case 'partnerfinderdist': {partnerType= 3; break;}
	}
	return partnerType;
}

function fetchMissingSearchParams(){
	//parameter, die ev nicht in session sein koennten, in session einbeziehen, damit sie mit bei der suche beachtet werden
	
	if(document.getElementById('fulltext') && document.getElementById('fulltext').value != document.getElementById('fulltext').defaultValue){
		callAjaxActionWithNameAndValue('fulltext', document.getElementById('fulltext').value);
	}
	/*
	if(document.getElementById('zip')){
		checkZip(document.getElementById('zip'), 'fullButLetCircleBoxLikeItIs');
	}
	
	callAjaxActionForZipMatch();
	*/
	/*
	if(document.getElementById('miscit')){
		callAjaxActionWithNameAndValue('miscit', document.getElementById('miscit').value);
	}*/
	
}

function fetchMissingSearchParamsConfig(configArray){
	//parameter, die ev nicht in session sein koennten, in session einbeziehen, damit sie mit bei der suche beachtet werden
	
	if(document.getElementById('fulltext')){
		callAjaxActionWithNameAndValue('fulltext', document.getElementById('fulltext').value);
	}
	
	if(document.getElementById('zip')){
		checkZip(document.getElementById('zip'), 'fullButLetCircleBoxLikeItIs');
	}
	
	if(configArray['doZipMatch'] == true){
		callAjaxActionForZipMatch();
	}
	
	if(configArray['switchOnCircle'] == true){
		setFlagCircleOnOff('1'); //CIRCLE ONOFF FLAG SETZEN
		circleOnHTML(); //html anzeigen
	}
	
	/*
	if(document.getElementById('miscit')){
		callAjaxActionWithNameAndValue('miscit', document.getElementById('miscit').value);
	}*/
	
}

function updateBoxHeadersText(name, value){
	var selectedType = name.split("_")[0];
	var inputType = "";

	switch(selectedType){
			case "industry":arrayToChange = industry_selected;inputType = "checkbox";break;
			case "industrysolution":arrayToChange = industrysolution_selected;inputType = "checkbox";break;
			case "request":arrayToChange = request_selected;inputType = "checkbox";break;
			case "module":arrayToChange = module_selected;inputType = "checkbox";break;
			case "itenvironment":arrayToChange = itenvironment_selected;inputType = "checkbox";break;
			case "department":arrayToChange = department_selected;inputType = "checkbox";break;
			case "partner":arrayToChange = partner_selected;inputType = "select";break;
			case "reference":arrayToChange = reference_selected;inputType = "select";break;
	}
	
	var selectedName = "";
	if (inputType === "checkbox"){
		selectedName = $('#'+'label_'+name).text();
	}else if(inputType === "select"){
		if ($("#" + name + ' option:selected').val() > 0){
			selectedName = $("#" + name + ' option:selected').html();
		}else{
			selectedName = "";
		}
		
	}
	
	//entferne (Zahl) und entferne leerzeichen am anfang und am ende
	selectedName = html_entity_decode(selectedName.replace(/\(\d+\)/, '').replace (/^\s+/, '').replace(/\s+$/, ''));
	
	if (inputType === "checkbox" && value == '1'
		|| inputType === "select" && selectedName.length > 0
	){
		// sonderfall checkbox (nicht multiple) wenn etwas ausgewaehlt wird, erstmal alles andere loeschen
		if (inputType === "select") arrayToChange.splice(0,1);
		
		//der anzeige hinzufuegen
		arrayToChange.push(selectedName);
	}else{
		//aus anzeige raus
		arrayToChange.splice(arrayToChange.indexOf(selectedName), 1);
	}

	refreshBoxHeadersText(selectedType);
}


function refreshBoxHeadersText(name){
	selectedType = name;
	
	switch(selectedType){
			case "industry":arrayToChange = industry_selected;break;
			case "industrysolution":arrayToChange = industrysolution_selected;break;
			case "request":arrayToChange = request_selected;break;
			case "module":arrayToChange = module_selected;break;
			case "itenvironment":arrayToChange = itenvironment_selected;break;
			case "department":arrayToChange = department_selected;break;
			case "partner":arrayToChange = partner_selected;break;
			case "reference":arrayToChange = reference_selected;break;
	}
	
	// die ausgabe in ein extra array speichern, weil hier der wert aus #miscit immer live mit einbezogen werden soll
	searchOptions = arrayToChange.concat();
	if (selectedType === "itenvironment" && jQuery("#miscit").val().length > 0){
		searchOptions.push(jQuery("#miscit").val());
	}
	if (selectedType === "industrysolution" && jQuery("#combobox").next().next().val().length > 0){
		searchOptions.push(jQuery("#combobox").next().next().val());
	}
	
	searchOptions.sort();
	$('#'+selectedType+'_selectedNames').text(searchOptions.join(', '));
}

function manipulateZipInput(countryCode){
	if(countryCode != '__GRENZUGR__'){
		//nur wenn land ausgewaehlt
		zipLength = countryZip[countryCode];
		$('#zip').attr('maxlength',zipLength);
		$('#zip').val($('#zip').val().substr(0,zipLength));
		$('#ziplength').val(zipLength);
	}
	//fuer das autocomplete muss das richtige Land-Array als sourceArray einstellt werden
	switch(countryCode){
		case 'DE':
			theSource = germanZips;
			break;
		case 'AT':
			theSource = austrianZips;
			break;
		case 'IT':
			theSource = italianZips;
			break;
		case 'CH':
			theSource = swissZips;
			break;
		case '__GRENZUGR__':
			//keine PLZ Eingabe moeglich
			theSource = new Array();
	}
	theZipAutocompleteSource = theSource;
	
	//neuerdings soll bei Landwechsel die plz eingabe und die plz suche ueberhaupt zurueckgesetzt werden #555
	$('#zip').val('');
	//resetZipMatch();
	//scheinbar noetig, den plz wert noch mal extra rauszuschmeissen
	//callAjaxActionWithNameAndValue('circle', countryCode+'||');
	//nein das bringt ueberhaupt nix#
	//scheinbar aendert sich die circle search fuer erste und zweite liste mehrfach, das muss eindeutiger werden
	
	if(countryCode != '__GRENZUGR__'){
		callAjaxActionForZipMatchWithCountryCode(countryCode);
	}else{
		resetZipMatch();
	}
	
	//umkreissuche unsichtbar machen
	circleOffHTML();
	
	//neuerdings soll suche ausgeloest werden #555
	showResult();
	//buttonsDiv = document.getElementById('buttons'); 
	//scrollToElement(buttonsDiv);
}
function setFlagCircleOnOff(onOrOff){
	jQuery('#circleActive').val(onOrOff);
}
function checkZip(zipInput, checkType){
	//checkType can be: onlyRudimentary, fullButLetCircleBoxLikeItIs x, full
	if(zipInput.value != ''){
		countryZipLength = $('#ziplength').val();
		insertedZipLength = zipInput.value.length;
		if(insertedZipLength == countryZipLength){
			//umkreissuche einschalten, nur wenn erlaubt, z.B. nicht wenn sie explizit ausgeschalten wurde, d.h. nicht bei klick auf suchen button
			if(checkType != 'fullButLetCircleBoxLikeItIs'){
				setFlagCircleOnOff('1'); //CIRCLE ONOFF FLAG SETZEN
				countryCode = $('#country :selected').val();
				if(!countryCode){
					countryCode = 'DE';
				}
				value = countryCode + '|' + zipInput.value + '|' + $('#circle').val();
				resetZipMatch(); //wichtig, sonst geht umkreissuche nicht
				callAjaxActionWithNameAndValue('circle', value);
				circleOnHTML(); //blendet div ein
				jQuery('.circle_slider_center').html(zipInput.value);
			}
		}else{
			setFlagCircleOnOff('0'); //CIRCLE ONOFF FLAG SETZEN
			circleOffHTML();
			callAjaxActionWithNameAndValue('circle', '');
			callAjaxActionForZipMatch();
		}
	}else{
		//zuruecksetzen der umkreissuche, durch leeren value
		setFlagCircleOnOff('0'); //CIRCLE ONOFF FLAG SETZEN
		circleOffHTML();
		callAjaxActionWithNameAndValue('circle', zipInput.value);
	}
	//added for testing showing result on each change in form
	//showResult();
}

/* wird benoetigt um die Umkreissuche zu ermoeglichen, also zipMatch wieder rausnehmen */
function resetZipMatch(){
	callAjaxActionWithNameAndValue('zipMatch', ''); //um zipMatch zurueckzusetzen, zipmatch bedeutet: keine Umkreissuche, muss also raus
}

function callAjaxActionForZipMatch(){
	countryShortName = jQuery('#country').val();
	callAjaxActionWithNameAndValue('zipMatch', jQuery('#zip').val()+'|'+countryShortName);
}

function callAjaxActionForZipMatchWithCountryCode(countryCode){
	callAjaxActionWithNameAndValue('zipMatch', '|'+countryCode);
}

function isZipFull(){
	zipValue = jQuery('#zip').val();
	if(zipValue != ''){
		countryZipLength = $('#ziplength').val();
		insertedZipLength = zipValue.length;
		if(insertedZipLength == countryZipLength){
			return true;
		}else{
			return false;
		}
	}else{
		return false;
	}
}

function showCircleNotPossibleBox(){
	if(!isZipFull()){
		jQuery('.zipLengthMessage').html(jQuery('input#ziplength').val());
		jQuery('.circle_search_disabled').show(300);
	}
}

function hideCircleNotPossibleBox(){
	jQuery('.circle_search_disabled').hide(300);
}

/* setzt session wert leer, sodass die umkreissuche nicht mehr eingeschalten ist und leert das PLZ-Feld */
function resetCircle(){
	document.getElementById('zip').value = '';
	callAjaxActionWithNameAndValue('circle', '');
}

function resetFormElementsAndDisplay(){	
	//Suchmodule ausblenden
	jQuery('#industry-content').hide();
	jQuery('#industry-header .showhide .hide').hide();
	jQuery('#industry-header .showhide .show').show();
	
	jQuery('#request-content').hide();
	jQuery('#request-header .showhide .hide').hide();
	jQuery('#request-header .showhide .show').show();
	
	jQuery('#module-content').hide();
	jQuery('#module-header .showhide .hide').hide();
	jQuery('#module-header .showhide .show').show();
	
	jQuery('#industrysolution-content').hide();
	jQuery('#industrysolution-header .showhide .hide').hide();
	jQuery('#industrysolution-header .showhide .show').show();
	
	jQuery('#itenvironment-content').hide();
	jQuery('#itenvironment-header .showhide .hide').hide();
	jQuery('#itenvironment-header .showhide .show').show();
	
	//weitere Kriterien Box ausblenden
	jQuery('#addcriteria-content').hide();
	jQuery('#addcriteria-header .showhide .hide').hide();
	jQuery('#addcriteria-header .showhide .show').show();
	
	if(document.getElementById('industry_selectedNames')){
		document.getElementById('industry_selectedNames').innerHTML = '';
		document.getElementById('request_selectedNames').innerHTML = '';
		document.getElementById('module_selectedNames').innerHTML = '';
		document.getElementById('itenvironment_selectedNames').innerHTML = '';
		
		document.getElementById('industry_count').innerHTML = '0';
		document.getElementById('request_count').innerHTML = '0';
		document.getElementById('module_count').innerHTML = '0';
		document.getElementById('itenvironment_count').innerHTML = '0';
		
		document.getElementById('industry_count_hidden').value = '0';
		document.getElementById('request_count_hidden').value = '0';
		document.getElementById('module_count_hidden').value = '0';
		document.getElementById('itenvironment_count_hidden').value = '0';
		
		$('#miscit').val('');
		$('#miscit').removeAttr('defaultValue');

		$("#slider_workplaces").slider("value", 0);
		$("#workplaces_hidden").val('k.A.');
		$(".workplaces_count").text('k.A.');
		
		$("#slider_employee").slider("value", 0);
		$("#employee_hidden").val('k.A.');
		$(".employee_count").text('k.A.');
	}

		document.getElementById('maincount').innerHTML = '0';

		document.getElementById('main_count_hidden').value = '0';

		industry_selected = new Array();
		request_selected = new Array();
		module_selected = new Array();
		itenvironment_selected = new Array();
		industrysolution_selected = new Array();

		$(':checkbox').removeAttr('checked');

		$('#zip').val('');
		$('#zip').removeAttr('defaultValue');

		$('#fulltext').val('z.B. Name des Partners oder Lösung');
		$('#fulltext').attr('defaultValue', 'z.B. Name des Partners oder Lösung');

		if(document.getElementById('country')){
			$('#country :selected').removeAttr('selected');
			$('#country').val('__GRENZUGR__');
			selectedOptionIndex = $('#country').attr('selectedIndex')
			document.getElementById('country').options[selectedOptionIndex].setAttribute('selected','selected');
		}
		//$('#circle :selected').removeAttr('selected');
		$('#circle').val('50');
		$("#slider_circle").slider("value", 1);
		$('.circle_slider_value').html('50');
		//selectedOptionIndex = $('#circle').attr('selectedIndex')
		//document.getElementById('circle').options[selectedOptionIndex].setAttribute('selected','selected');
}

function hideMap(mapDivId){
	theMapDiv = document.getElementById(mapDivId);
	theMapDiv.style.position = 'absolute';
	theMapDiv.style.top = '-5000px';
	theMapDiv.style.left = '-5000px';
}

function showMap(mapDivId){
	theMapDiv = document.getElementById(mapDivId);
	theMapDiv.style.position = 'static';
	theMapDiv.style.top = '0';
	theMapDiv.style.left = '0';
}

//jumpTo wird nur in fachhaendler verwendet wo es nur 1 ergebnisliste gibt
function jumpTo(destination){
	if(WecMap && mapName1){
		WecMap.jumpTo(mapName1, 0, destination, 15);
	}
	showMap('map1-content');
	$('#map1-header a.show').hide();
	$('#map1-header a.hide').show();
	scrollToElement(document.getElementById('googlemap_result1'));
}

function getHTMLPart(source, start, end){
	part = '';
	if(start == '0'){
		pos1 = 0;
	}else{
		pos1 = (source.indexOf(start))+start.length;
	}
	pos2 = source.indexOf(end);
	part = source.substr(pos1, (pos2-pos1));
	return part;
}

function toggleSortHeader(column, direction){
	if(direction == 'asc'){
		theOtherDirection = 'desc';
	}else{
		theOtherDirection = 'asc';
	}
	//pfeil wechseln
	$('.header_criteria_' + column + ' a.'+direction).show();
	$('.header_criteria_' + column + ' a.'+theOtherDirection).hide();
	
	//unterstreichen aktuelle Sortierung
	$('.header_criteria_' + column + ' a.'+direction + ' .headertext').attr('style', 'text-decoration:underline;')
}

function showSearchSpinner(){
	//beide listen komplett ausblenden
	//in title der ersten liste spinner einfuegen
	document.getElementById('criteria-all-title').innerHTML = '<span class="fespinner" id="fespinner_search"></span>';
	document.getElementById('criteria-all-list').innerHTML = '';
	
	if(document.getElementById('criteria-partly-title')){
		document.getElementById('criteria-partly-title').innerHTML = '';
	}
	if(document.getElementById('criteria-partly-list')){
		document.getElementById('criteria-partly-list').innerHTML = '';	
	}
}

function showSearchSpinnerHideMap(){
	//zusaetzlich auch map ausblenden
	showSearchSpinner();
	hideBothMapsIfExists();
}

function hideBothMapsIfExists(){
	if(document.getElementById('map1-content')){
		hideMap('map1-content');
	}
	if(document.getElementById('map2-content')){
		hideMap('map2-content');
	}
}

function circleOn(){
	if(isZipFull()){
		setFlagCircleOnOff('1'); //CIRCLE ONOFF FLAG SETZEN
		circleOnHTML();
		resetZipMatch(); //wichtig, sonst geht umkreissuche nicht
		startAjaxActionForCircle('50');
	}
}

function circleOnHTML(){
	jQuery('#circle_off').attr('class', 'circle_switch');
	jQuery('#circle_on').attr('class', 'circle_switch active');
	jQuery('#circle_on').attr('style', 'padding-right:11px;');
	showCircleSlider();
}

function circleOffHTML(){
	jQuery('#circle_off').attr('class', 'circle_switch active');
	jQuery('#circle_on').attr('class', 'circle_switch');
	jQuery('#circle_on').attr('style', 'padding-right:0;');
	hideCircleSlider();
}

function buttonCircleOff(){
	setFlagCircleOnOff('0'); //CIRCLE ONOFF FLAG SETZEN
	circleOffHTML();
	callAjaxActionWithNameAndValue('circle', '');
	callAjaxActionForZipMatch();
}

function showCircleSlider(){
	jQuery('#circle_slider_box').show();
}

function hideCircleSlider(){
	jQuery('#circle_slider_box').hide();
}

// industrySolution combobox: achtung! speziell für industrysolution angepasst!

//	<style>
//	.ui-button { margin-left: -1px; }
//	.ui-button-icon-only .ui-button-text { padding: 0.35em; } 
//	.ui-autocomplete-input { margin: 0; padding: 0.48em 0 0.47em 0.45em; }
//	</style>

	(function( $ ) {
		$.widget( "ui.combobox", {
			_create: function() {
				var self = this,
					select = this.element.hide(),
					selected = select.children( ":selected" ),
					value = selected.val() ? selected.text() : "";
					
				// ein neues hiddenfeld anmelden, welches die daten dann uebergibt
				var rfHiddenValue = this.rfHiddenValue = $("<input type='hidden' value='1'>");
				
				var input = this.input = $( "<input>" )
					.insertAfter( select )
					.val( value )
					.autocomplete({
						delay: 0,
						minLength: 0,
						source: function( request, response ) {
							var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), "i" );
							response( select.children( "option" ).map(function() {
								var text = $( this ).text();
								if ( this.value && ( !request.term || matcher.test(text) ) )
									return {
										label: text.replace(
											new RegExp(
												"(?![^&;]+;)(?!<[^<>]*)(" +
												$.ui.autocomplete.escapeRegex(request.term) +
												")(?![^<>]*>)(?![^&;]+;)", "gi"
											), "<strong>$1</strong>" ),
										value: text,
										option: this
									};
							}) );
						},
						select: function( event, ui ) {
							ui.item.option.selected = true;
							
							// wenn aus der vorschlagsliste ausgesucht wird (klick auf LI)
							industrySolutionUid = $ ( ui.item.option ).attr("value");
							rfHiddenValue.attr("name", "mkelopartner[formData][industrysolution][" + industrySolutionUid + "]");
							
							event.preventDefault();
							selectedValue = ($( ui.item.option ).text() );
							$(this).autocomplete("close");
							$(this).val(selectedValue);
							
							// RF-Suche starten
							refreshBoxHeadersText("industrysolution");
							callAjaxActionWithNameAndValue('miscindustrysolution', $( ui.item.option ).val());
							showResult();
						},
						change: function( event, ui ) {
							if ( !ui.item ) {
								var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( $(this).val() ) + "$", "i" ),
									valid = false;
								select.children( "option" ).each(function() {
									if ( $( this ).text().match( matcher ) ) {
										this.selected = valid = true;
										
										// wenn per hand etwas reingeschrieben wird, was exakt so auch in der vorschlagsliste steht
										industrySolutionUid = $( this ).attr("value");
										rfHiddenValue.attr("name", "mkelopartner[formData][industrysolution][" + industrySolutionUid + "]");
										
										// RF-Suche starten
										refreshBoxHeadersText("industrysolution");
										callAjaxActionWithNameAndValue('miscindustrysolution', $( this ).val());
										showResult();
										
										return false;
									}
								});
								
								if ( !valid ) {
									// remove invalid value, as it didn't match anything
									$( this ).val( "" );
									select.val( "" );
									input.data( "autocomplete" ).term = "";
									
									// wenn per hand etwas reingeschrieben wurde, es aber nicht exakt so auch in der vorschlagsliste stand
									rfHiddenValue.attr("name", "");
									// RF-Suche starten
									refreshBoxHeadersText("industrysolution");
									callAjaxActionWithNameAndValue('miscindustrysolution', 0);
									showResult();
									
									return false;
								}
							}
						}
					})
					.addClass( "ui-widget ui-widget-content ui-corner-left" );

				input.data( "autocomplete" )._renderItem = function( ul, item ) {
					return $( "<li></li>" )
						.data( "item.autocomplete", item )
						.append( "<a>" + item.label + "</a>" )
						.appendTo( ul );
				};
				
				// das hidden-feld direkt hinter dem ausgeblendeten select einbinden
				rfHiddenValue.insertAfter( select );

				this.button = $( "<button type='button'>&nbsp;</button>" )
					.attr( "tabIndex", -1 )
					.attr( "title", "Alle anzeigen" )
					.insertAfter( input )
					.button({
						icons: {
							primary: "ui-icon-triangle-1-s"
						},
						text: false
					})
					.removeClass( "ui-corner-all" )
					.addClass( "ui-corner-right ui-button-icon" )
					.click(function() {
						// close if already visible
						if ( input.autocomplete( "widget" ).is( ":visible" ) ) {
							input.autocomplete( "close" );
							return;
						}

						// work around a bug (likely same cause as #5265)
						$( this ).blur();

						// pass empty string as value to search for, displaying all results
						input.autocomplete( "search", "" );
						input.focus();
					});
			},

			destroy: function() {
				this.input.remove();
				this.button.remove();
				this.element.show();
				$.Widget.prototype.destroy.call( this );
			}
		});
	})( jQuery );

//was noch gemacht werden muss:
//wenn bei gültiger und vollstaendiger PLZ aber die Umkreissuche ausgeschalten wurde muss wahrscheinlich matchZip gemacht werden, also nur die Partner, die genau die PLZ haben
