$().ready(function(){
	
	/** MODUS INITIALISIERUNG
	initiert beim Laden den Autocompleter oder deaktiviert ihn. Je nach gewähltem Modus
	**/
	$(".noscript").css("display","none");
	var mode = getCookie('tx_cagdocfinder_pi1-mode');
	if (mode=="classic"){
		$("#tx_cagdocfinder_pi1-modeswitch").html("Eingabehilfe einschalten");
		$("#tx_cagdocfinder_pi1-modeswitch").removeClass("tx_cagdocfinder_pi1-modeswitch_on");
		$("#tx_cagdocfinder_pi1-modeswitch").addClass("tx_cagdocfinder_pi1-modeswitch_off");
		$(".noscript").css("display","block");
		$(".modus-identifier").css("display","none");
		$("tx_cagdocfinder_pi1-searchterm").attr("autocomplete","ON");
		$("#tx_cagdocfinder_pi1-searchterm").unautocomplete();
		$("#tx_cagdocfinder_pi1-ort").unautocomplete();
	}else{
		mode = "auto";
		$(".noscript").css("display","none");
		$(".modus-identifier").css("display","block");
		$("#tx_cagdocfinder_pi1-modeswitch").removeClass("tx_cagdocfinder_pi1-modeswitch_off");
		$("#tx_cagdocfinder_pi1-modeswitch").addClass("tx_cagdocfinder_pi1-modeswitch_on");
		$("tx_cagdocfinder_pi1-searchterm").attr("autocomplete","OFF");
		$("#tx_cagdocfinder_pi1-modeswitch").html("Eingabehilfe ausschalten");
		$("#tx_cagdocfinder_pi1-searchterm").autocomplete('/typo3conf/ext/cag_docfinder/suggestion/extended.php', {
			width: 475,
			multiple: false,
			matchContains: false, /*abgeschaltet A.W. */
			formatItem: formatItem,
			formatResult: formatResult,
			matchCase: true,
			minChars: 3,
			extraParams: {
				field: "searchterm"
			},
			mustMatch: false,
			matchContains: false,
			autoFill: false,	/*abgeschaltet A.W. */
			max: 999,
			highlight: false,
			parse: parseXML		
		});	
		$("#tx_cagdocfinder_pi1-ort").autocomplete('/typo3conf/ext/cag_docfinder/suggestion/extended.php', {
			width: 298,
			multiple: false,
			matchContains: false, /*abgeschaltet A.W. */
			formatItem: formatItem,
			formatResult: formatResult,
			minChars: 1,
			extraParams: {
				field: "ort"
			},
			mustMatch: false,
			matchContains: false,
			autoFill: false,	/*abgeschaltet A.W. */
			max: 999,
			parse: parseXML		
		});

	}
	
	/** MODUSUMSCHALTER
	schaltet zwichem normalen und autocompleter modus um.
	**/
    $("#tx_cagdocfinder_pi1-modeswitch").click(function (e) {

	e.preventDefault();	
	var mode = getCookie('tx_cagdocfinder_pi1-mode')
		if (mode){
			switch(mode){
			case 'auto':
			document.cookie="tx_cagdocfinder_pi1-mode=classic";
			 $("#tx_cagdocfinder_pi1-modeswitch").html("Eingabehilfe einschalten");
			 $("#tx_cagdocfinder_pi1-modeswitch").removeClass("tx_cagdocfinder_pi1-modeswitch_on");
			 $("#tx_cagdocfinder_pi1-modeswitch").addClass("tx_cagdocfinder_pi1-modeswitch_off");
			 $(".noscript").css("display","block");
			 $(".modus-identifier").css("display","none");
			 $("#tx_cagdocfinder_pi1-searchterm").unautocomplete();
			 $("#tx_cagdocfinder_pi1-ort").unautocomplete();
			 /* Lösche die Eingaben aus den Autocompleterfeldern*/
			 $("#tx_cagdocfinder_pi1-behandlungsarten").val("");
			 $("#tx_cagdocfinder_pi1-fachgebiete").val("");
			 $("#tx_cagdocfinder_pi1-language").val("");

			break;
			case 'classic':
			document.cookie="tx_cagdocfinder_pi1-mode=auto";
			$("#tx_cagdocfinder_pi1-modeswitch").html("Eingabehilfe ausschalten");
			$("#tx_cagdocfinder_pi1-modeswitch").removeClass("tx_cagdocfinder_pi1-modeswitch_off");
			$("#tx_cagdocfinder_pi1-modeswitch").addClass("tx_cagdocfinder_pi1-modeswitch_on");
			$(".noscript").css("display","none");
 			$(".modus-identifier").css("display","block");
			/* Lösche die Eingaben aus den Eingabefeldern der normalen Ansicht*/
			$("#tx_cagdocfinder_pi1-behandlungsarten2").val("");
			$("#tx_cagdocfinder_pi1-fachgebiete2").val("");
			$("#tx_cagdocfinder_pi1-language2").val("");
			
			$("#tx_cagdocfinder_pi1-searchterm").autocomplete('/typo3conf/ext/cag_docfinder/suggestion/extended.php', {
				width: 475,
				multiple: false,
				matchContains: false, /*abgeschaltet A.W. */
				formatItem: formatItem,
				formatResult: formatResult,
				matchCase: true,
				minChars: 3,
				extraParams: {
					field: "searchterm"
				},
				mustMatch: false,
				matchContains: false,
				autoFill: false,	/*abgeschaltet A.W. */
				max: 999,
				highlight: false,
				parse: parseXML		
			});	
			    $("#tx_cagdocfinder_pi1-ort").autocomplete('/typo3conf/ext/cag_docfinder/suggestion/extended.php', {
				width: 329,
				multiple: false,
				matchContains: false, /*abgeschaltet A.W. */
				formatItem: formatItem,
				formatResult: formatResult,
				minChars: 1,
				extraParams: {
					field: "ort"
				},
				mustMatch: false,
				matchContains: false,
				autoFill: false,	/*abgeschaltet A.W. */
				max: 999,
				parse: parseXML		
			});
			break;
			}
		}else{
			document.cookie="tx_cagdocfinder_pi1-mode=auto";
		}			
    });
	
	/**Erzeuge Autocompleter Felder**/
    /** Auto Completer **/
    function findValueCallback(event, data, formatted){
        $("<li>").html(!data ? "No match!" : "Selected: " + formatted).appendTo("#result");
    }
    
    function formatItem(row){
       return row[0];
    }
    function formatResult(row){
        return row[0].replace(/(<.+?>)/gi, '');
    }
	
    $("#tx_cagdocfinder_pi1-plz").result(function(event, daten, formatted){
        if (daten) {
            $.get("/typo3conf/ext/cag_docfinder/suggestion/extended.php", {
                field: "plzort",
                q: "" + daten + ""
            }, function(data){
                $("#tx_cagdocfinder_pi1-ort").val(data);
            });
        }
    }).blur();
	
    	
    $("#tx_cagdocfinder_pi1-fachgebiete").autocomplete('/typo3conf/ext/cag_docfinder/suggestion/extended.php', {
        width: 475,
        multiple: false,
        matchContains: true,
        formatItem:   function(row){
						if (row[0]==0){		
							return "<strong>"+row[1]+"</strong>";	
						}else if(row[0]==1){
							return "\t\t - "+row[1];
						}	
						return row[1];},
		formatResult: formatResult,
        minChars: 0,
		extraParams: {
			field: "fachgebiete"
		},
        mustMatch: false,
		selectFirst: false,
        matchContains: false,
        autoFill: false,
        max: 9999,
		parse: parseXML
    }).blur();

    $("#tx_cagdocfinder_pi1-behandlungsarten").autocomplete('/typo3conf/ext/cag_docfinder/suggestion/extended.php', {
        width: 475,
        multiple: false,
        matchContains: true,
        formatItem:   function(row){
						if (row[0]==0){		
							return "<strong>"+row[1]+"</strong>";	
						}else if(row[0]==1){
							return "\t\t - "+row[1];
						}	
						
						return row[1];},
        formatResult: formatResult,
        minChars: 0,
		extraParams: {
			field: "behandlungsart"
		},
        mustMatch: false,
		selectFirst: false,
        matchContains: false,
        autoFill: false,
        max: 9999,
		parse: parseXML
    }).blur();

	//Setzte genauen Code der Behandlungsart damit die exakte Behandlungsart getroffen wird
	$("#tx_cagdocfinder_pi1-behandlungsarten").result(function(event, data, formatted) {
		$("#tx_cagdocfinder_pi1-behandlungsunterarten").val(data[2]);
	});
	//Entferne den Behandlungscode wenn Term von Hand geändert wird
	$("#tx_cagdocfinder_pi1-behandlungsarten").change(function () {
		$("#tx_cagdocfinder_pi1-behandlungsunterarten").val("");
	});

    $("#tx_cagdocfinder_pi1-language").autocomplete('/typo3conf/ext/cag_docfinder/suggestion/extended.php', {
        width: 455,
        multiple: false,
        matchContains: true,
        formatItem: formatItem,
        formatResult: formatResult,
		extraParams: {
			field: "sprache"
		},
        minChars: 0,
        mustMatch: false,
        matchContains: false,
        autoFill: false,
        max: 9999,
		parse: parseXML
    }).blur();



    /** Rahmen **/
    $(".rahmen").mouseover(function() {
        //$(this).css("border", "1px solid #f08b04");
        $(this).addClass("over");
    });
    $(".rahmen").mouseout(function() {
        if ($(this).hasClass("focused") == false) {
            //$(this).css("border", "1px solid #487689");
            $(this).removeClass("over");
        }
    });
    $(".rahmen").focus(function() {
        $(this).addClass("focused");
    });
    $(".rahmen").blur(function() {
        $(this).removeClass("focused");
        $(this).removeClass("over");
    });

    $(".rahmen1").mouseover(function() {
        $(this).css("border", "1px solid #f08b04");
    });
    $(".rahmen1").mouseout(function() {
        $(this).css("border", "1px solid #ffffff");
    });


    /** Tooltips **/
    $(".tooltip").mouseover(function() {
        $(".hint-tip").hide();
        $(this).next(".hint-tip").show();
    });
    $(".tooltip").mouseout(function() {
        if ($(this).hasClass("focused") == false) {
            $(".hint-tip").hide();
        }
    });
    $(".tooltip").focus(function() {
        $(this).next(".hint-tip").show();
    });
    $(".tooltip").blur(function() {
        $(".hint-tip").hide();
    });

});


//Ermittelt den richtigen Ortsnamen anhand der PLZ
function setOrtByPLZ(plz){
            $.get("/typo3conf/ext/cag_docfinder/helper/validate.php", { ort: document.getElementById("tx_cagdocfinder_pi1-ort").value,plz:  document.getElementById("tx_cagdocfinder_pi1-plz").value,filter:"getOrt"
            }, function(data){
				if (data.length > 0)
					$("#tx_cagdocfinder_pi1-ort").val(data);
			});
}

//Ermittelt den richtigen Ortsnamen anhand phonetischer Suche
function findOrt(plz){
            $.get("/typo3conf/ext/cag_docfinder/helper/validate.php", { ort: document.getElementById("tx_cagdocfinder_pi1-ort").value,filter:"findOrt"
            }, function(data){
				if (data.length > 0){
					$("#tx_cagdocfinder_pi1-ort").val(data);
					return true;
				}else{
					return false;
				}
			});
}

/**
*
*  URL encode / decode
*  http://www.webtoolkit.info/
*
**/
 /*
var Url = {
 
	// public method for url encoding
	encode : function (string) {
		return escape(this._utf8_encode(string));
	},
 
	// public method for url decoding
	decode : function (string) {
		return this._utf8_decode(unescape(string));
	},
 
	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
 
		for (var n = 0; n < string.length; n++) {
 
			var c = string.charCodeAt(n);
 
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
 
		}
 
		return utftext;
	},
 
	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
 
		while ( i < utftext.length ) {
 
			c = utftext.charCodeAt(i);
 
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
 
		}
 
		return string;
	}
}*/

function parseXML(data) {
	var results = [];
	var schema = $(data).find('schema').text();
	var branches = $(data).find('listenelement');
	$(branches).each(function() {
		switch(schema){
			case 'fachgebiete':
				var level = $.trim($(this).find('level').text());
				var anzeigetext = $.trim($(this).find('value').text());
				var element=[];
				element[0]=level;
				element[1]=anzeigetext;
				results[results.length] = {'data': element, 'result': anzeigetext, 'value': anzeigetext};
			break;
				case 'behandlungsart':
				var level = $.trim($(this).find('level').text());
				var anzeigetext = $.trim($(this).find('behandlungsart').text());
				var wert = $.trim($(this).find('code').text());
				var element=[];
				element[0]=level;
				element[1]=anzeigetext;
				element[2]=wert;
				results[results.length] = {'data': element, 'result': anzeigetext,  'value': anzeigetext}
			break;
			default:
				var anzeigetext = $.trim($(this).find(schema).text());
				var element=[];
				element[0]=anzeigetext;
				element[1]=anzeigetext;
				results[results.length] = {'data': element, 'result': anzeigetext, 'value': anzeigetext};
			break;
		}
		
	});
	return results;
};

function getCookie(name) { 
  var mein_cookie = document.cookie; 
  if (mein_cookie.indexOf(name) == -1) { 
    return null; 
  }
  var anfang = mein_cookie.indexOf(name) 
               + name.length + 1;  
  var ende = mein_cookie.indexOf(";", anfang); 
  if (ende == -1) { 
    ende = mein_cookie.length; 
  }
  var laenge = ende - anfang;
  var cookie_wert = unescape(mein_cookie.substr(anfang,laenge));
  return cookie_wert; 
} 



