var arrCountryFound = new Array('', '', '');
var i = 0;
var anzahl = 0;
var ortHasFocus = false;
var aktFormName = "";
var submit = false;
var coordinates = new Object();
var eingabefeld
var IsInternational = false
var aktuellerSuchbegriff = ""
var webServiceSuchbegriff = ""
var aktuelleErgebnisse = ""
var laenderKennung = ""
var IsMouseOverVorschlag = false;

function VorbereitenAjaxAusgabe(obj) {
	eingabefeld = obj;
    coordinates = getAnchorPosition(obj);
    SetzenFormName(obj.form.name);
    ortHasFocus = true;
}

function SetzenIsInternational(blnWert){
	IsInternational = blnWert;
}

function SetzenLaenderKennung(strWert){
	laenderKennung = strWert;
}

function EntfernenFocus() {
	if (!IsMouseOverVorschlag){
    	ortHasFocus = false
		$("#" + aktFormName + "RssAusgabe").css({ 'display': 'none' })
	}
}

function SetzenFormName(strFromName) {
    aktFormName = strFromName
}

function AnpassenKoordinaten(x, y) {
    coordinates.x = (Number(coordinates.x) + Number(x));
    coordinates.y = (Number(coordinates.y) + Number(y));
}


function showOrt(text) {    
	
	if (text.length > 2 && IstGueltigerWert(text)) {	   
	   if(text.indexOf(webServiceSuchbegriff) == -1 || aktuellerSuchbegriff == "") {
			textOhneUmlaut = OhneUmlaut(encodeURI(text))
			var strUrlParameter = config_appwebserviceurl+'/json/Orte.aspx&text=' +escape(textOhneUmlaut)+ '&laenderkennung='+laenderKennung;
			var url = "/stellenangebote/jsonOrte.asp?url="+strUrlParameter
			//alert(url)
			$.get(url, function(rueckgabe) {CallBackOrte(rueckgabe);aktuelleErgebnisse=rueckgabe}, "html");
			aktuellerSuchbegriff = text
			webServiceSuchbegriff = aktuellerSuchbegriff
	   }else{
		   aktuellerSuchbegriff = text
		   CallBackOrte(FilterListe(aktuelleErgebnisse))
	   }	   
    }
    else {
        $("#" + aktFormName + "RssAusgabe").empty();
        $("#" + aktFormName + "RssAusgabe").css({ 'display': 'none' })
    }	
}

function showLand(text) {
   if (text.length > 2 && IstGueltigerWert(text)) {   
	 if(text.indexOf(webServiceSuchbegriff) == -1 || aktuellerSuchbegriff == "") {
			textOhneUmlaut = OhneUmlaut(encodeURI(text))
			var strUrlParameter = config_appwebserviceurl+'/json/Laender.aspx&text=' +escape(textOhneUmlaut);
			var url = "/stellenangebote/jsonLaender.asp?url="+strUrlParameter
			$.get(url, function(rueckgabe) {CallBackOrte(rueckgabe);aktuelleErgebnisse=rueckgabe}, "html");
			aktuellerSuchbegriff = text
			webServiceSuchbegriff = aktuellerSuchbegriff
	   }else{
		   aktuellerSuchbegriff = text
		   CallBackOrte(FilterListe(aktuelleErgebnisse))
	   }	   
    }
    else {
        $("#" + aktFormName + "RssAusgabe").empty();
        $("#" + aktFormName + "RssAusgabe").css({ 'display': 'none' })
    }
}

function CallBackOrte(liste) {
	//alert(liste)
	var erg = '';
    $("#" + aktFormName + "RssAusgabe").empty(); 
	var obj = JSON.parse(liste)
   if (obj == "") {
        $("#" + aktFormName + "RssAusgabe").append("Kein Ort gefunden");
        return;
    }
    if (obj.length > 0) {
        for (var i = 0; i < obj.length; i++) {
			if (erg.length > 0)
                erg += '|';
			if (IsInternational){				
				erg += UmlautKonvert(obj[i].Ort);
				
			}else{
           		erg += UmlautKonvert(MitUmlaut(obj[i].Ort_Ohne_Umlaut));
			}
        }
    }
    else {
        erg = MitUmlaut(obj.Ort_Ohne_Umlaut);
    }	
    var arrCountry = new Array();
    arrCountry = erg.split('|');    
    var tmpString = eingabefeld.value.toLowerCase();
    var tmpLen = tmpString.length;
    arrCountryFound = new Array("", "", ""); 
    var j = 0;

   for (i = 0; i < arrCountry.length; i++) {
		var tmpLand = arrCountry[i].toLowerCase();
		zaehler = j+1
		$("#" + aktFormName + "RssAusgabe").append("<p id=\"ort" + zaehler + "\" onClick=\"javascript:MouseSelektionOrt(" + zaehler + ");\" onmouseover=\"MouseOverOrt(" + zaehler + ");\" onmouseout=\"this.style.background='';IsMouseOverVorschlag = false\">" + arrCountry[i] + "</p>")
		arrCountryFound[j] = arrCountry[i];
		j++;			
    } 
    anzahl = j;
    document.getElementById(aktFormName+"RssAusgabe").style.left = coordinates.x + "px";
    document.getElementById(aktFormName+"RssAusgabe").style.top = coordinates.y + "px";
    document.getElementById(aktFormName+"RssAusgabe").style.display = "block";
	var arrCountry = null
	var obj = null
}

function showOrtPerPlz(text,obj2Fill) {
	if (text.length ==5) {		
		var strUrlParameter = config_appwebserviceurl+'/json/Orte.aspx?text=' + escape(text)+ '&laenderkennung='+laenderKennung;
		var url = "/stellenangebote/jsonOrte.asp?url="+strUrlParameter
		$.get(url, function(rueckgabe) {SetzenOrt(rueckgabe,obj2Fill);});	   
    }
    else {
        $("#" + aktFormName + "RssAusgabe").empty();
        $("#" + aktFormName + "RssAusgabe").css({ 'display': 'none' })
    }	
}

function SetzenOrt(liste,obj2Fill){
	var erg = '';
    $("#" + aktFormName + "RssAusgabe").empty();       
	var obj = JSON.parse(liste)
   if (obj == "") {
        $("#" + aktFormName + "RssAusgabe").append("Kein Ort gefunden");
        return;
    }
    if (obj.length > 0) {
        for (var i = 0; i < obj.length; i++) {
			if (erg.length > 0)
                erg += '|';
			if (IsInternational){				
				erg += UmlautKonvert(obj[i].Ort);
				
			}else{
				erg += UmlautKonvert(MitUmlaut(obj[i].Ort_Ohne_Umlaut));
			}
        }
    }
    else {
        erg = MitUmlaut(obj.Ort_Ohne_Umlaut);
    }
	var arrCountry = new Array();
    arrCountry = erg.split('|'); 
	if(arrCountry.length == 1) {
		obj2Fill.value = UmlautKonvert4Input(arrCountry[0])
	}
	var obj = null
	var arrCountry = null
}


function FilterListe(ergebnisse){	
	strJson = "["
	if(ergebnisse != ""){
		var obj = JSON.parse(ergebnisse)	 
		if (obj.length > 0) {
			for (var i = 0; i < obj.length; i++) {
				if (UmlautKonvert(obj[i].Ort).toLowerCase().indexOf(UmlautKonvert(aktuellerSuchbegriff.toLowerCase()).replace(/ /g,"+")) > -1){
					if (strJson != "[") strJson = strJson + ","
					strJson = strJson + "{\"Plz\":\""+obj[i].Plz+"\",\"Ort\":\""+obj[i].Ort+"\",\"Ort_Ohne_Umlaut\":\""+obj[i].Ort_Ohne_Umlaut+"\"}"				
				}
			}
		}
		var obj = null
	}
	strJson = strJson + "]"
	return strJson;
}

function replacer(key, value) {
    if (typeof value === 'number' && !isFinite(value)) {
        return String(value);
    }
    return value;
}


function IstGueltigerWert(text){
	blnIstGueltig = true;
	if(text.indexOf("<") > -1) blnIstGueltig = false;
	if(text.indexOf(">") > -1) blnIstGueltig = false;
	if(text.indexOf("%") > -1) blnIstGueltig = false;
	if(text.indexOf("'") > -1) blnIstGueltig = false;
	if(text.indexOf("?") > -1) blnIstGueltig = false;
	return blnIstGueltig;
}

function OhneUmlaut(text) {
	//encodedText = encodeURI(text)
	textOhneUmlaut = text.replace('%C3%A4', 'ae')
    textOhneUmlaut = textOhneUmlaut.replace('%C3%84', 'Ae')
    textOhneUmlaut = textOhneUmlaut.replace('%C3%BC', 'ue')
    textOhneUmlaut = textOhneUmlaut.replace('%C3%9C', 'Ue')
    textOhneUmlaut = textOhneUmlaut.replace('%C3%B6', 'oe')
    textOhneUmlaut = textOhneUmlaut.replace('%C3%96', 'Oe')
	textOhneUmlaut = textOhneUmlaut.replace('%C3%9F','ss')
	return textOhneUmlaut 
}

function MitUmlaut(text) {
	textMitUmlaut = text.replace(/ae/g, '&auml;')
    textMitUmlaut = textMitUmlaut.replace(/Ae/g, '&Auml;')
    textMitUmlaut = textMitUmlaut.replace(/ue/g, '&uuml;')
    textMitUmlaut = textMitUmlaut.replace(/Ue/g, '&Uuml;')
    textMitUmlaut = textMitUmlaut.replace(/oe/g, '&ouml;')
    textMitUmlaut = textMitUmlaut.replace(/Oe/g, '&Ouml;')
	textMitUmlaut = textMitUmlaut.replace(/%2c/g, ',')
	textMitUmlaut = textMitUmlaut.replace(/\+/g, ' ')
	textMitUmlaut = textMitUmlaut.replace(/%2f/g, '/')
	return textMitUmlaut 
}

function UmlautKonvert(text) {
	konvertiert = text.replace('%C3%A4', '&auml;')
    konvertiert = konvertiert.replace('%c3%84', '&Auml;')
    konvertiert = konvertiert.replace('%c3%bc', '&uuml;')
    konvertiert = konvertiert.replace('%c3%9c', '&Uuml;')
    konvertiert = konvertiert.replace('%c3%b6', '&ouml;')
    konvertiert = konvertiert.replace('%c3%96', '&Ouml;')
	konvertiert = konvertiert.replace('%c3%9f','&szlig;')
	
	konvertiert = konvertiert.replace('ä', '&auml;')
    konvertiert = konvertiert.replace('Ä', '&Auml;')
    konvertiert = konvertiert.replace('ü', '&uuml;')
    konvertiert = konvertiert.replace('Ü', '&Uuml;')
    konvertiert = konvertiert.replace('ö', '&ouml;')
    konvertiert = konvertiert.replace('Ö', '&Ouml;')
	konvertiert = konvertiert.replace('ß','&szlig;')
	return konvertiert 
}

function UmlautKonvert4Input(text) {
	konvertiert = text.replace('%C3%A4', 'ä')
    konvertiert = konvertiert.replace('%c3%84', 'Ä')
    konvertiert = konvertiert.replace('%c3%bc', 'ü')
    konvertiert = konvertiert.replace('%c3%9c', 'Ü')
    konvertiert = konvertiert.replace('%c3%b6', 'ö')
    konvertiert = konvertiert.replace('%c3%96', 'Ö')
	konvertiert = konvertiert.replace('%c3%9f','ß')
	
	konvertiert = konvertiert.replace('&auml;','ä')
    konvertiert = konvertiert.replace('&Auml;','Ä')
    konvertiert = konvertiert.replace('&uuml;','ü')
    konvertiert = konvertiert.replace('&Uuml;','Ü')
    konvertiert = konvertiert.replace('&ouml;','ö')
    konvertiert = konvertiert.replace('&Ouml;','Ö')
	konvertiert = konvertiert.replace('&szlig;','ß')
	return konvertiert 
}


function hideOrtSelection()
{
    $("#" + aktFormName + "RssAusgabe").css({ 'display': 'none' })
	anzahl = 0;
}
	
function tasteGedrueckt(event) {
    if (!event) {
        event = window.event;
    }
    if (event.keyCode) {
        Tastencode = event.keyCode;
    } else if (event.which) {
        Tastencode = event.which;
    }

    if (aktFormName != "" && Tastencode == 13 && aktFormName != "anzeigenschaltung" && $("#" + aktFormName + "RssAusgabe").css('display') == "none") {
		document.forms[aktFormName].submit()
    }
	
    if (ortHasFocus) {
        
		var klicks;
        var strKlick = document.forms[aktFormName].klick.value;
        if (strKlick == "")
            klicks = 0;
        else
            klicks = parseInt(strKlick);

        if (Tastencode == 40 && klicks >= 0 && klicks < anzahl)		//Pfeil runter
        {
            klicks++;
            document.forms[aktFormName].klick.value = klicks;
            nachUnten(klicks);
        }
        else if (Tastencode == 13 && klicks > 0 && klicks <= anzahl)		//Enter
        {
			enter(klicks);
            klicks = 0;
            document.forms[aktFormName].klick.value = klicks;
        }
        else if (Tastencode == 38 && klicks > 1 && klicks <= anzahl)		//Pfeil rauf
        {
            klicks--;
            document.forms[aktFormName].klick.value = klicks;
            nachOben(klicks);
        }
        else if (Tastencode == 27) 											//Taste ESC
        {
            hideOrtSelection();
            klicks = 0;
            document.forms[aktFormName].klick.value = klicks;
        } else if (Tastencode != 40 && Tastencode != 13 && Tastencode != 38 && Tastencode != 27) {
			if (IsInternational) {
				showLand(eingabefeld.value)
			}else{
				showOrt(eingabefeld.value)	
			}
        }
    }    
}

function farbeOn(nrZeile) {
    if (nrZeile != null) {
        document.getElementById("ort" + nrZeile).style.background = '#e4e9ef';
    }
}
function farbeOut(nrKlicks) {
    for (i = 1; i <= anzahl; i++) {
        if (i != nrKlicks) {
            document.getElementById("ort" + i).style.background = '';
        }
    }
    farbeOn(nrKlicks);
}

function MouseOverOrt(nrKlicks) {
    document.forms[aktFormName].klick.value = nrKlicks;
	IsMouseOverVorschlag = true
    farbeOn(nrKlicks);
}

function MouseSelektionOrt(nrKlicks) {
   if (nrKlicks != null) {
        eingabefeld.value = document.getElementById("ort" + nrKlicks).innerHTML
    }
}

function nachUnten(nrKlicks) {
    farbeOut(nrKlicks);
	eingabefeld.value = document.getElementById("ort" + nrKlicks).innerHTML
}

function nachOben(nrKlicks) {
    farbeOut(nrKlicks);
	eingabefeld.value = document.getElementById("ort" + nrKlicks).innerHTML
}

function enter(nrZeile) {
	eingabefeld.value = document.getElementById("ort" + nrZeile).innerHTML
	hideOrtSelection();
	
}











function getAnchorPosition(anker) {
	// This function will return an Object with x and y properties
	var useWindow=false;
	var coordinates=new Object();
	var x=0,y=0;
	// Browser capability sniffing
	var use_gebi=false, use_css=false, use_layers=false;
	if (document.getElementById) { use_gebi=true; }
	else if (document.all) { use_css=true; }
	else if (document.layers) { use_layers=true; }
	// Logic to find position
 	if (use_gebi && document.all) {
		x=AnchorPosition_getPageOffsetLeft(anker);
		y=AnchorPosition_getPageOffsetTop(anker);
		}
	else if (use_gebi) {
		var o=anker;
		x=AnchorPosition_getPageOffsetLeft(o)+3;
		y=AnchorPosition_getPageOffsetTop(o)+3;
		}
 	else if (use_css) {
		x=AnchorPosition_getPageOffsetLeft(anker);
		y=AnchorPosition_getPageOffsetTop(anker);
		}
	else if (use_layers) {
		var found=0;
		for (var i=0; i<document.anchors.length; i++) {
			if (document.anchors[i].name==anchorname) { found=1; break; }
			}
		if (found==0) {
			coordinates.x=0; coordinates.y=0; return coordinates;
			}
		x=document.anchors[i].x;
		y=document.anchors[i].y;
		}
	else {
		coordinates.x=0; coordinates.y=0; return coordinates;
		}
	coordinates.x = x;
	coordinates.y = y + 20;
	return coordinates;
	}

// Functions for IE to get position of an object
function AnchorPosition_getPageOffsetLeft (el) {
	var ol=el.offsetLeft;
	while ((el=el.offsetParent) != null) { ol += el.offsetLeft; }
	return ol;
	}

function AnchorPosition_getWindowOffsetLeft (el) {
	return AnchorPosition_getPageOffsetLeft(el)-document.body.scrollLeft;
	}	
function AnchorPosition_getPageOffsetTop (el) {
	var ot=el.offsetTop;
	while((el=el.offsetParent) != null) { ot += el.offsetTop; }
	return ot;
	}
function AnchorPosition_getWindowOffsetTop (el) {
	return AnchorPosition_getPageOffsetTop(el)-document.body.scrollTop;
	}

function OccRecord(key) {
	var url = "/asp/statistic/onclickcounter.asp?key="+key;
	$.get(url, function(rueckgabe) {});
}
