
var __results = document.getElementById('search-results');
var __query = document.getElementById('suche');
__results.onload = function() { gsc_emptyresults(this); }
var gsc_basicmatch = /[a-z0-9]/i;

function getkeycode(e)
{
    if (document.layers)
        return e.which;
    else if (document.all)
        return event.keyCode;
    else if (document.getElementById)
        return e.keyCode;
    return 0;
}

function getRealLeft(elem)
{
	xPos = elem.offsetLeft;
	tempEl = elem.offsetParent;
	while (tempEl != null) {
		xPos += tempEl.offsetLeft;
		tempEl = tempEl.offsetParent;
	}
	return xPos;
}

function getRealTop(el)
{
	yPos = el.offsetTop;
	tempEl = el.offsetParent;
	while (tempEl != null)
	{
		yPos += tempEl.offsetTop;
		tempEl = tempEl.offsetParent;
	}
	return yPos;
}

function gsc_hide(elt)
{
    if (elt) elt.style.display = 'none';
}

function gsc_ishidden(elt)
{
    return elt.style.display == 'none';
}

function gsc_show(elt)
{
		elt.style.left = getRealLeft(document.getElementById('suche')) + 'px';
		var fromTop = getRealTop(document.getElementById('suche')) + 15;
		elt.style.top = fromTop + 'px';
    if (elt) elt.style.display = 'block';
}

function gsc_emptyresults(elt)
{
    if (!elt) return;

    elt.innerHTML = '';
    elt.numResults = 0;
    elt.selectedIndex = 0;
    elt.results = [];
    gsc_hide(elt);
}

function gsc_addresult(elt, qElt, q, sel)
{
    if (!elt) return;

    if (sel) elt.selectedIndex = elt.numResults;

    idx = elt.numResults;
    elt.results[elt.numResults++] = q;

    var _res = '';
    _res += '<div class="' + (sel ? 'srs' : 'sr') + '"'
         +  ' onmouseover="gsc_mouseover(\'' + elt.id + '\', \'' + qElt.id + '\', ' + idx + ')"'
         +  ' onmouseout="gsc_mouseout(\'' + elt.id + '\', ' + idx + ')"'
         +  ' onclick="gsc_mouseclick(\'' + elt.id + '\', \'' + qElt.id + '\', ' + idx + ')">';
    _res += '<span class="srt">' + q + '</span>';
    _res += '</div>';

    elt.innerHTML += _res;
}

function gsc_mouseover(id, qId, idx)
{
    elt = document.getElementById(id);
    elt.selectedIndex = idx;
    qElt = document.getElementById(qId);
    qElt.focus();

    gsc_highlightsel(elt);
}

function gsc_mouseout(id, idx)
{
    elt = document.getElementById(id);
    elt.selectedIndex = -1;

    gsc_highlightsel(elt);
}

function gsc_mouseclick(id, qId, idx)
{
    elt = document.getElementById(id);
    qElt = document.getElementById(qId);

    qElt.value = elt.results[idx];
    gsc_hide(elt);
    //qElt.form.submit();
}

function gsc_handleup(elt, qElt)
{
    if (elt.numResults > 0 && gsc_ishidden(elt)) {
        gsc_show(elt);
        return;
    }

    if (elt.selectedIndex == 0) {
        return;
      }
    else if (elt.selectedIndex < 0) {
        elt.selectedIndex = elt.numResults - 1;
        if ( elt.numResults == 1 )
        {
        	return;
        }
    }
    else {
        elt.selectedIndex--;
     }
    gsc_highlightsel(elt, qElt);
}

function gsc_handledown(elt, qElt)
{
    if (elt.numResults > 0 && gsc_ishidden(elt)) {
        gsc_show(elt);
        return;
    }

    if (elt.selectedIndex == elt.numResults - 1) {
        //return;
    }
    else if (elt.selectedIndex < 0) {
        elt.selectedIndex = 0;
    }
    else {
        elt.selectedIndex++;
    }
    gsc_highlightsel(elt, qElt);
}

function gsc_highlightsel(elt, qElt)
{
    divs = elt.getElementsByTagName('div');

    for (i = 0; i < divs.length; i++) {
        if (i == elt.selectedIndex) {
            divs[i].className = 'srs';
            elt.tempQuery = elt.results[i];

            if (qElt) {
                qElt.value = elt.results[i];
                if (qElt.createTextRange) {
                    r = qElt.createTextRange();
                    r.moveStart('character', elt.currentQuery.length);
                    r.moveEnd('character', qElt.value.length);
                    r.select();
                }
            }
        }
        else
            divs[i].className = 'sr';
    }
}

function gsc_checksubmit(id)
{
  elt = document.getElementById(id);
 
	if ( elt.style.display == 'block' )
	{
		gsc_hide(elt);
		return false;
	}
	return true;
}

function gsc_getresults(let)
{
	var results = new Array();
	var z = 0;
	var vgl = '';
	for ( i = 0; i < reisecodes.length; i++ )
	{
		vgl = reisecodes[i];
		vgl = vgl.split(' ').join('');
		vgl = vgl.substr(0, let.length);
		
		if ( vgl == let )
		{
			results[z] = reisecodes[i];
			z++;
		}
	}
	return results;
}

function gsc_handlekeyup(let)
{
	gsc_emptyresults(__results);
	let = let.split(' ').join('');
	let = let.toUpperCase();
	var _data = gsc_getresults(let);

	if (_data.length > 0)
	{
		for (i = 0; i < _data.length; i++)
		{
  		if ( i == 20 )
  		{
  			break;
  		}
  		gsc_addresult(__results, __query, _data[i], i == 0);
  	}
	  gsc_show(__results);
	}
	else
	{
	  gsc_hide(__results);
	}
}

gsc_emptyresults(__results);
__query.onkeydown = function(e)
                            {
                                __query.onkeyup = function() { }
                                key = getkeycode(e);
                                switch (key) {
                                		case 13: // return
                                				var tmp_res = gsc_checksubmit('search-results');
                                				gsc_hide(__results);
                                				return tmp_res;
                                    case 27: // escape
                                        gsc_hide(__results);
                                        return false;
                                        break;
                                    case 38: // up arrow
                                        gsc_handleup(__results, __query);
                                        return false;
                                        break;
                                    case 40: // down arrow
                                        gsc_handledown(__results, __query);
                                        return false;
                                        break;
                                    default:
                                        __query.onkeyup = function() { gsc_handlekeyup(__query.value); }
                                }
                                return true;
                            }

__query.onblur = function(e) { if( this.value == '' ) { this.value = 'Reisecode-Suche'; } setTimeout("gsc_hide(__results)", 200); }