var strHost = location.href.replace(/frontend\/(index\.php)?.*$/, '');	//URL zum Server
var intLengthProfileInList = 200;	//Anzahl der Zeichen, die im Profile in der Liste der Suchergebnisse angezeigt werden

var objHTTPServiceSearch = new httpServiceObject(strHost + 'ajax_interface/search.php', 'handleSearchResult');
var strIdActiveResult = '';
var strCachedContentDetails = '';
	
function sendSearchRequest(in_objForm)
{
	var strSearch = '';
	strSearch += in_objForm.elements['postcode'].value != '' ? 'postcode=' + in_objForm.elements['postcode'].value : '';
	strSearch += in_objForm.elements['advice_types'].value != 'all' ? (strSearch != '' ? '&' : '') + 'advice_types=' + getStringFromArray(getMultipleSelectValues(in_objForm.elements['advice_types']), ',') : '';
	strSearch += in_objForm.elements['operating_sectors'].value != 'all' ? (strSearch != '' ? '&' : '') + 'operating_sectors=' + getStringFromArray(getMultipleSelectValues(in_objForm.elements['operating_sectors']), ',') : '';
	strSearch += in_objForm.elements['catchwords'] != null && in_objForm.elements['catchwords'].value != '' ? (strSearch != '' ? '&' : '') + 'catchwords=' + in_objForm.elements['catchwords'].value.replace(/\+/g, '%2B') : '';
	objHTTPServiceSearch.send(strSearch);
	document.getElementsByTagName('body')[0].style.cursor = 'wait';
	document.getElementById('btn_start_search').style.cursor = 'wait';
	strIdActiveResult = '';
	return false;
}
	
function handleSearchResult()
{
	document.getElementById('headline').innerHTML = 'Suchergebnisse';
	//bei Fehler
	if (objHTTPServiceSearch.lastResult.getElementsByTagName('errors').length > null)
	{
		updateResultListWithError();
		updateDetailAreaWithError();
	}
	else if (objHTTPServiceSearch.lastResult.getElementsByTagName('advisors')[0].childNodes.length == 0)
	{
		updateResultListWithEmptyResult();
		updateDetailAreaWithEmptyResult();
	}
	else
	{
		updateResultListWithList();
		updateDetailAreaWithSummary();
	}
	document.getElementsByTagName('body')[0].style.cursor = 'default';
	document.getElementById('btn_start_search').style.cursor = 'default';
}

function updateResultListWithError()
{
	document.getElementById('search_top').innerHTML = '';
	document.getElementById('search_top').style.overflow = 'auto';
	var strHtml = '';
	for (var i = 0; i < objHTTPServiceSearch.lastResult.getElementsByTagName('errors').length; i++)
	{
		var objError = objHTTPServiceSearch.lastResult.getElementsByTagName('errors')[i];
		strHtml += '<div class="text-error">' + objError.getElementsByTagName('message')[0].firstChild.nodeValue + '</span>';
	}
	document.getElementById('search_top').innerHTML = strHtml;
}

function updateResultListWithEmptyResult()
{
	document.getElementById('search_top').innerHTML = '';
	document.getElementById('search_top').style.overflow = 'auto';
	var strHtml = '';
	strHtml += '<div class="text-copy">';
	strHtml += 'Ihre Suche ergab keine Treffer.';
	strHtml += '</div>';
	document.getElementById('search_top').innerHTML = strHtml;
}

function updateResultListWithList()
{
	document.getElementById('search_top').innerHTML = '';
	document.getElementById('search_top').style.overflow = 'auto';
	var strHtml = '';
	for (var i = 0; i < objHTTPServiceSearch.lastResult.getElementsByTagName('advisor').length; i++)
	{
		var objAdvisor = objHTTPServiceSearch.lastResult.getElementsByTagName('advisor')[i];
		strHtml += '<div id="' + objAdvisor.getAttribute('id') + '" class="box-list-passive" style="width:798px; padding:2px; margin-bottom:10px; cursor:pointer;" onclick="handleMouseClickResultList(this.id)" onmouseover="handleMouseOverResultList(this.id)" onmouseout="handleMouseOutResultList(this.id)">';
		strHtml += '<div class="text-head-list-passive">';
		strHtml += (i + 1) + '. ' + addSearchMarks(objAdvisor.getElementsByTagName('company')[0].firstChild.nodeValue);

		if (objAdvisor.getElementsByTagName('logo')[0] != null && objAdvisor.getElementsByTagName('logo')[0].firstChild != null)
		{
			strHtml += '<img src="'+ strHost + 'icons_advisors/' + objAdvisor.getElementsByTagName('logo')[0].firstChild.nodeValue + '" style="margin-left:5px">';
		}

		strHtml += '</div>';
		strHtml += '<div class="text-copy">';
		var strProfile = objAdvisor.getElementsByTagName('profile')[0].firstChild != null ? addSearchMarks(objAdvisor.getElementsByTagName('profile')[0].firstChild.nodeValue) : '';
		strHtml += strProfile.length <= intLengthProfileInList ? strProfile : strProfile.substr(0, intLengthProfileInList) + ' &#8230;';
		strHtml += '</div>';
		strHtml += '</div>';
	}
	document.getElementById('search_top').innerHTML = strHtml;
}
	
function handleMouseClickResultList(in_strId)
{
	if (strIdActiveResult != '')
	{
		document.getElementById(strIdActiveResult).className = 'box-list-passive';
		document.getElementById(strIdActiveResult).firstChild.className = 'text-head-list-passive';
	}
	if (strIdActiveResult != in_strId)
	{
		strIdActiveResult = in_strId;
		document.getElementById(strIdActiveResult).className = 'box-list-active';
		document.getElementById(strIdActiveResult).firstChild.className = 'text-head-list-active';
	}
	else
	{
		strIdActiveResult = '';
	}
}

function handleMouseOverResultList(in_strId)
{
	if (strIdActiveResult != in_strId)
	{
		document.getElementById(in_strId).className = 'box-list-over';
	}
	updateDetailAreaWithResult(in_strId);
}
	
function handleMouseOutResultList(in_strId)
{
	document.getElementById(in_strId).className = 'box-list-passive';
	document.getElementById(in_strId).firstChild.className = 'text-head-list-passive';
	if (strIdActiveResult != '')
	{
		document.getElementById(strIdActiveResult).className = 'box-list-active';
		document.getElementById(strIdActiveResult).firstChild.className = 'text-head-list-active';
		updateDetailAreaWithResult(strIdActiveResult);
	}
	else
	{
		//document.getElementById('search_details').className = 'box-details-passive';
		//document.getElementById('search_details').innerHTML = '';
	}
}

function updateDetailAreaWithError()
{
	document.getElementById('search_details').className = 'box-details-passive';
	document.getElementById('search_details').innerHTML = '';
}

function updateDetailAreaWithEmptyResult()
{
	document.getElementById('search_details').className = 'box-details-active';
	document.getElementById('search_details').innerHTML = '';

	var strHtml = '';
	strHtml += '<div style="margin-bottom:10px" class="text-copy">';
	strHtml += '<h2>Ihre Suche ergab <span class="text-color">' + objHTTPServiceSearch.lastResult.getElementsByTagName('advisor').length + '</span> Treffer.</h2>';
	strHtml += '<div style="margin-top:15px">';
	strHtml += 'Bitte erweitern Sie Ihren Suchbereich und klicken Sie auf "neue Suche"';
	strHtml += '</div>';
	strHtml += '</div>';

	document.getElementById('search_details').innerHTML = strHtml;
}

function updateDetailAreaWithSummary()
{
	document.getElementById('search_details').className = 'box-details-active';
	document.getElementById('search_details').innerHTML = '';

	var strHtml = '';
	strHtml += '<div style="margin-bottom:10px" class="text-copy">';
	strHtml += '<h2>Ihre Suche ergab <span class="text-color">' + objHTTPServiceSearch.lastResult.getElementsByTagName('advisor').length + '</span> Treffer.</h2>';
	strHtml += '<div style="margin-top:15px">';
	strHtml += 'Fahren Sie mit der Maus in der Liste oben &uuml;ber einen Eintrag um die Details des Energieberaters hier anzuzeigen.<br /><br />Durch Klicken auf einen Eintrag wird dieser selektiert und die Details werden dauerhaft hier angezeigt.';
	strHtml += '<br /><br />&Uuml;ber den Men&uuml;punkt &#8222;Druckansicht&#8220; &ouml;ffnen Sie eine f&uuml;r den Druck optimierte Version der Daten des ausgew&auml;hlten Energieberaters<br />&Uuml;ber den Punkt &#8222;PDF&#8220; k&ouml;nnen Sie sich die Daten als PDF-Datei herunterladen.';
	strHtml += '</div>';
	strHtml += '</div>';

	document.getElementById('search_details').innerHTML = strHtml;
}

function updateDetailAreaWithResult(in_strId)
{
	document.getElementById('search_details').className = 'box-details-active';
	var objAdvisor = getElementById(objHTTPServiceSearch.lastResult, in_strId);
	document.getElementById('search_details').innerHTML = '';
	var strHtml = '';

	strHtml += '<div style="margin-bottom:10px">';
	strHtml += '<h2 style="float:left">Details</h2>';
	strHtml += '<div style="text-align:right";><a href="../frontend/print_advisor.php?id=' + objAdvisor.getAttribute('id') + '" target="_blank">Druckansicht</a><a style="margin-left:20px" href="../frontend/pdf.php?id=' + objAdvisor.getAttribute('id') + '" target="_blank">PDF</a><a style="margin-left:20px" href="mailto:' + objAdvisor.getElementsByTagName('email')[0].firstChild.nodeValue + '">Anfrage</a></div>';
	strHtml += '</div>';

	strHtml += '<table cellpadding="0" cellspacing="0" border="0" class="text-copy" style="clear:left">';

	strHtml += '<tr>';
	strHtml += '<td colspan="2" class="text-head-list-active">' + addSearchMarks(objAdvisor.getElementsByTagName('company')[0].firstChild.nodeValue) + '</td>';
	strHtml += '</tr>';

	if (objAdvisor.getElementsByTagName('name_bundesland').length > 0)
	{
		strHtml += '<tr><td colspan="2" style="height:7px"></td></tr>';
	
		strHtml += '<tr>';
		strHtml += '<td colspan="2" class="text-copy">';
		if (objAdvisor.getElementsByTagName('operating_area')[0].firstChild.nodeValue == 'bu')
		{
			strHtml += 'Diese Firma ist in ganz Deutschland t&auml;tig.';
		}
		else if (objAdvisor.getElementsByTagName('operating_area')[0].firstChild.nodeValue == 'la')
		{
			strHtml += 'Diese Firma hat ihren T&auml;tigkeitsbereich im Bundesland ' + objAdvisor.getElementsByTagName('name_bundesland')[0].firstChild.nodeValue + '.';
		}
		else
		{
			strHtml += 'Diese Firma ist regional im Landkreis &#8222;' + objAdvisor.getElementsByTagName('name_landkreis')[0].firstChild.nodeValue + '&#8220; t&auml;tig.';
		}
		strHtml += '</td>';
		strHtml += '</tr>';
	}

	strHtml += '<tr><td colspan="2" style="height:7px"></td></tr>';

	strHtml += '<tr>';
	strHtml += '<td><strong>Stra&szlig;e:</strong></td>';
	strHtml += '<td style="padding-left:10px">' + addSearchMarks(objAdvisor.getElementsByTagName('street')[0].firstChild.nodeValue) + '</td>';
	strHtml += '</tr>';

	strHtml += '<tr>';
	strHtml += '<td><strong>PLZ, Ort:</strong></td>';
	strHtml += '<td style="padding-left:10px">' + addSearchMarks(objAdvisor.getElementsByTagName('postcode')[0].firstChild.nodeValue) + ' ' + addSearchMarks(objAdvisor.getElementsByTagName('city')[0].firstChild.nodeValue) + '</td>';
	strHtml += '</tr>';

	if (objAdvisor.getElementsByTagName('postbox')[0] != null && objAdvisor.getElementsByTagName('postbox')[0].firstChild != null)
	{
		strHtml += '<tr>';
		strHtml += '<td><strong>Postfach:</strong></td>';
		strHtml += '<td style="padding-left:10px">' + (objAdvisor.getElementsByTagName('postbox')[0].firstChild != null ? addSearchMarks(objAdvisor.getElementsByTagName('postbox')[0].firstChild.nodeValue) : '') + '</td>';
		strHtml += '</tr>';
	}

	strHtml += '<tr>';
	strHtml += '<td><strong>Telefon:</strong></td>';
	strHtml += '<td style="padding-left:10px">' + addSearchMarks(objAdvisor.getElementsByTagName('phone')[0].firstChild.nodeValue) + '</td>';
	strHtml += '</tr>';

	strHtml += '<tr>';
	strHtml += '<td><strong>E-Mail:</strong></td>';
	strHtml += '<td style="padding-left:10px"><a href="mailto:' + objAdvisor.getElementsByTagName('email')[0].firstChild.nodeValue + '">' + addSearchMarks(objAdvisor.getElementsByTagName('email')[0].firstChild.nodeValue) + '</a></td>';
	strHtml += '</tr>';

	if (objAdvisor.getElementsByTagName('web')[0] != null && objAdvisor.getElementsByTagName('web')[0].firstChild != null)
	{
		strHtml += '<tr>';
		strHtml += '<td><strong>Web:</strong></td>';
		strHtml += '<td style="padding-left:10px">' + (objAdvisor.getElementsByTagName('web')[0].firstChild != null ? '<a href="http://' + objAdvisor.getElementsByTagName('web')[0].firstChild.nodeValue + '" target="_blank">' + addSearchMarks(objAdvisor.getElementsByTagName('web')[0].firstChild.nodeValue) + '</a>' : '') + '</td>';
		strHtml += '</tr>';
	}

	strHtml += '</table>';

	strHtml += '<hr />';

	strHtml += '<table cellpadding="0" cellspacing="0" border="0" style="width:100%" class="text-copy">';
	strHtml += '<tr>';

	strHtml += '<td>';
	strHtml += '<div><strong>Art der Beratung:</strong></div>';
	strHtml += '<ul>';
	for (var i = 0; i < objAdvisor.getElementsByTagName('advice_type').length; i++)
	{
		strHtml += '<li>' + objAdvisor.getElementsByTagName('advice_type')[i].firstChild.nodeValue + '</li>';
	}
	strHtml += '</ul>';
	strHtml += '</td>';

	if (objAdvisor.getElementsByTagName('operating_sector')[0] != null)
	{
		strHtml += '<td>';
		strHtml += '<div><strong>Betriebsbereiche/Technik:</strong></div>';
		strHtml += '<ul>';
		for (var i = 0; i < objAdvisor.getElementsByTagName('operating_sector').length; i++)
		{
			strHtml += '<li>' + objAdvisor.getElementsByTagName('operating_sector')[i].firstChild.nodeValue + '</li>';
		}
		strHtml += '</ul>';
		strHtml += '</td>';
	}

	strHtml += '</tr>';
	strHtml += '</table>';

	strHtml += '<hr />';

	strHtml += '<div class="text-copy">';
	strHtml += '<strong>Firmenprofil:</strong><br />';
	strHtml += objAdvisor.getElementsByTagName('profile')[0].firstChild != null ? addSearchMarks(objAdvisor.getElementsByTagName('profile')[0].firstChild.nodeValue.replace(/\n\n|\n/g, '<br />')) : '';

	//Dateien
	if (objAdvisor.getElementsByTagName('file').length > 0)
	{
		strHtml += '<div class="label">Downloads</div>';
		for (var i = 0; i < objAdvisor.getElementsByTagName('file').length; i++)
		{
			strHtml += '<a href="../common/get_file.php?id=' + objAdvisor.getElementsByTagName('file')[i].getAttribute('id') + '">' + objAdvisor.getElementsByTagName('file')[i].firstChild.nodeValue + '</a><br />';
		}
	}

	strHtml += '<hr />';

	strHtml += '<div style="margin-top:10px" class="text-copy">';
	strHtml += '<strong>Unsere Konditionen und Leistungen f&uuml;r Teilnehmer der Energiekampagne:</strong><br />';
	strHtml += (objAdvisor.getElementsByTagName('terms')[0].firstChild != null ? addSearchMarks(objAdvisor.getElementsByTagName('terms')[0].firstChild.nodeValue.replace(/\n\n|\n/g, '<br />')) : '');

	strHtml += '<div style="margin-top:10px" class="text-copy">';
	strHtml += '<strong>Preise:</strong><br />';
	strHtml += (objAdvisor.getElementsByTagName('prices')[0].firstChild != null ? addSearchMarks(objAdvisor.getElementsByTagName('prices')[0].firstChild.nodeValue.replace(/\n\n|\n/g, '<br />')) : '');

	document.getElementById('search_details').innerHTML = strHtml;
}

function addSearchMarks(in_strText)
{
	var strText = in_strText;
	if (document.forms['frm_search'].elements['catchwords'] != null && document.forms['frm_search'].elements['catchwords'].value != '')
	{
		var arrCatchwords = document.forms['frm_search'].elements['catchwords'].value.split(' ');
		for (var i = 0; i < arrCatchwords.length; i++)
		{
			strText = strText.replace(eval('/(' + arrCatchwords[i].replace(/\+|-|"/g, '') + ')/i'), '<span class="text-search-hits">$1</span>')
		}
	}
	return strText;
}
