var Overview = {
        
    /** Stellt die bereits gewählten Selektionsparameter
     *  in die Übersicht
     */
    preAssemble:
    function(countryCode) {                        
        if (!countryCode) countryCode = 'DE';
        
        $("#selectionform :checked").each
        (function() {
            if ($(this).val() != -1) {
            	var keyAndPreDescript = $(this).next().attr("class").split("_");
                addToSelParams(keyAndPreDescript[0],
                               $(this).attr("name"),
                               $(this).val(),
                               keyAndPreDescript[1]
                               + (($(this).attr("name") != "KPFILL[0]")
                                  ? " " + $(this).next().text()
                                  : ""));
                
                //Specialhack for Default-AB[]
                if($(this).attr("name") == "KPT[]"
                   && $(this).attr("value") == "DEKPG8") {
                    addToSelParams(keyAndPreDescript[0],
                                   'AB[]',
                                   '$go.getLabel(\'lgSelectionABDefault\')',
                                   '$go.getLabel(\'lgSelectionABDefault\')'); } } });
        
        $("#selectionform :text").each
        (function() {
            if ($(this).val() != "" 
                && !$(this).val().match(/^\[.*\]$/)
                && !$(this).val().match(/^zlgSelectionMask/) ) {
                var keyAndPreDescript = $(this).next().attr("class").split("_");
                // Ausnahmebehandlung für Umkreis-PLZ und dessen Radius
                if ($(this).attr("name") == "UMPLZ[0]") {
                    proofLength(keyAndPreDescript[0],
                                $(this).attr("name"),
                                $(this).val(),
                                keyAndPreDescript[1] + " " + $(this).val(),
                                countryCode);
                } else {                   
                    /* 
                    if ($(this).attr("name") == 'GJ[]')
                        alert($(this).value);
                    */  
                    addToSelParams(keyAndPreDescript[0],
                                   $(this).attr("name"),
                                   $(this).val(),
                                   keyAndPreDescript[1]+" "+$(this).val()); } } });
        
        buildOverview(); },
    
    changeUmrad:
    function (thisObj, desc) {
        // Wert soll nur geändert werden, wenn schon in Übersicht vorhanden
        var key = "REG";
        var plzName = "UMPLZ[0]";
		if(!land_code){land_code = "DE"}
        
        // Ermittlung des des ParamArray-Eintrags
        var idx = checkValues(selParams[key]["values"].length, key, plzName+"|"+thisObj.name, thisObj.value);
        var plzValue = $("input[@name='"+plzName+"']").val();
        if (idx >= 0 || (plzValue != "" && !plzValue.match(/^\[.*\]$/))) {
            // Wert aus PLZ-Feld ermitteln	    
            proofLength(key, plzName, plzValue, desc + plzValue, land_code);
        }
    },
    
    parsePLZ: function(value) {
        var valid = true;
        // zuerst alle Leerzeichen entfernen
        value = value.replace(/\s/g,"");
        // Einzelausdrücke erstellen, Trennzeichen "Komma"
        valContainer = value.split(",");
        // dann alle Array-Elemente mit regulärem Ausdruck parsen
        var regExp = new RegExp("[von]*(.*)[bis](.*)", "gi");
        for (var item in valContainer) {			
            var result = regExp.exec(valContainer[item]);
            //alert(result[1]);
            valContainer[item] = (result != null) ? result[1].substr(0,result[1].length-2)+"-"+result[2] : (isNaN(valContainer[item]) ? valContainer[item] : valContainer[item]);
            if (isNaN(parseInt(valContainer[item])) || (isNaN(valContainer[item]) && valContainer[item].match(/NaN/))) {
                $go.buildHintBox($go.getLabel("lgSelectionErrorInvalidZipCode"), "PLZ");
                valid = false;
                break;
            }
        }
        // Nach Parsen wieder zusammenbauen, kein Fehler vorliegt
        return (valid) ? valContainer.join(",") : "-1";
    }    
}
    
var $ov = Overview;
    
var BranchSelection = {
	
    searchString: "",
    searchWithCode: false,
    checkBoxName: "",
    somethingFound: false,
    
    branchStateDefault: true,
    
    toggleBranchSel: function() {
	BranchSelection.branchStateDefault = !BranchSelection.branchStateDefault;
	$("#searchStringBR").attr("name", (BranchSelection.branchStateDefault)? "searchStringBR" : "searchStringBRNEG");
	$("#brAddText").css("display", (BranchSelection.branchStateDefault)? "none" : "inline");
	document.getElementById("rightBox_expander").setAttribute('alt', (BranchSelection.branchStateDefault)? $go.getLabel("zlgUsabilityhilfeSelektionText") : $go.getLabel("zlgUsabilityhilfeBranchenaussschlussText"));
	handleRightBox();
	return (BranchSelection.branchStateDefault) ? $go.getLabel("zlgBranchExclude") : $go.getLabel("zlgBranchExcludeBack");
    },
	
    /**
    * Methode zum Aufklappen der weitern Treffer bei Branchesuche über Synonyme
    */
    moreSynHits: function() {
	$("#moreSynonymLink").css("display", "none");
	$(".synLine").css("display", "inline");
    },
	
    setBRAttributes: function(input) {
	BranchSelection.searchString = input.val();
	BranchSelection.checkBoxName = (input.attr("name") == "searchStringBR") ? "lOB_liste[]" : "lOBNEG_liste[]";
	BranchSelection.searchWithCode = !isNaN(BranchSelection.searchString);
    },
	
    getSearchString: function() {
	return BranchSelection.searchString;
    },
    
    getCheckBoxName: function() {
	return BranchSelection.checkBoxName;
    },
    
    cleanSearchStringValue: function(this_element) {
	if(this_element.value.match(/^\[.*\]$/) || BranchSelection.somethingFound) {
	    this_element.value = "";
	}
    },
    
    setSomethingFound: function(value) {
	BranchSelection.somethingFound = value;
    }
}

var $brs = BranchSelection;

var globalObj = {
	label: {
	},
    
    addLabel: function(marker, text) {
        globalObj.label[marker] = text;
    },
    
    getLabel: function(marker) {
        return globalObj.label[marker];
    },
	
    checkActiveX: function() {		
        if (!window.XMLHttpRequest) {
            if (!globalObj.getActivXObject()) {
                $("#HinweisActiveX").css('visibility', 'visible');
            }
        }
    },
    
    msXmlHttpPrefixes: ["MSXML2", "Microsoft", "MSXML", "MSXML3"],
    
    getActivXObject: function() {
        var xmlhttp = null;
        var noWay = true;
        var prefs = globalObj.msXmlHttpPrefixes;
        for (i = 0; i < prefs.length && noWay; i++) {
            try {
                xmlhttp = new ActiveXObject(prefs[i] + ".XMLHTTP");
                noWay = false;
            } catch(failed) {
                noWay = true;
            }
        }
        return xmlhttp;
    },
	
    showMessage: function(message) {
        $("#sandglass").css({visibility:"hidden",height:"10px"});
        $("#"+message).each(function () {
                $(this).css("visibility", "visible");
                $(this).show();
            });
        setTimeout(function() {$("#"+message).hide("slow");}, 4000);	
    },
    buildHintBox: function(hint, anchor) {
        var anchorElem = document.getElementById(anchor);
        var tNode = anchorElem;
        var xPos = 0;
        var yPos = 0;
		
        while(tNode && tNode.getAttribute('id') != "middlecontainer"){
            xPos += tNode.offsetLeft;
            yPos += tNode.offsetTop;
            tNode = tNode.offsetParent;
        }
        
        $("#HinweisContainerText").html($go.getLabel("regularHintPrefix") + hint + $go.getLabel("regularHintAppendix"));
        $("#HinweisContainer").css("visibility","visible");
        $("#HinweisContainer").css("left",xPos);
        $("#HinweisContainer").css("top",yPos);
    }
}


var $go = globalObj;

function buildOverview() {
    var table;
    var tr;
    var td;

    $(document).ready(function() {
        var anyOtherParam = false;
        $("#overviewmask").css({display:"block"});
        $("#selParamContainer").empty();
        
        // es muss immer TEL auf Y gesetzt sein, bevor Zählungen
        // losgehen können
        $("#selParamContainer").append("<input type='hidden' name='TEL[]' value='Y' />");
                
        var blockParams = new Array("BR",
                                    "BRNEG",
                                    "MER",
                                    "GASTRO",
                                    "REG",
                                    "SD",
                                    "WS",
                                    "INT",
                                    "PMM",
                                    "LS",
                                    "HT",
                                    "KV");

       //Ausnahmeregelung für Branchentyp && Hauptaktivität
        var BRTValue = "";
        var BRTDefaultValues = new Array();
        BRTDefaultValues['DE'] = "EBC";
        BRTDefaultValues['AT'] = "EBC";
        BRTDefaultValues['CH'] = "EBC";
        BRTDefaultValues['ES'] = "EBC";
        BRTDefaultValues['NL'] = "BIS";
        BRTDefaultValues['PT'] = "CAE";
        
        var BRTDesc = "";
        var BRTExists = false;
        var HPTBRValue = "";
        var HPTBRDesc = "";
        var HPTBRExists = false;
        $("#BRTTable").css("display", "block");
        if(selParams["BR"]){

        	for (i = 0; i < selParams["BRMETA"]["values"].length; i++) {

				if (selParams["BRMETA"]["values"][i]["name"] == "BRT[]") {
                    BRTValue = selParams["BRMETA"]["values"][i]["value"];
                    BRTDesc = selParams["BRMETA"]["values"][i]["desc"];
                    BRTExists = true;
        		}
        		if (selParams["BRMETA"]["values"][i]["name"] == "HPTBR[]") {
                    HPTBRValue = selParams["BRMETA"]["values"][i]["value"];
                    HPTBRDesc = selParams["BRMETA"]["values"][i]["desc"];
                    HPTBRExists = true;
        		}
        	}
        }                            

        // Block für Branchen
        for (b = 0; b < blockParams.length; b++) {
            var blockParam = blockParams[b];
            if (selParams[blockParam] && selParams[blockParam]["values"].length > 0) {
               anyOtherParam = true;
                
                $("#selParamContainer").append("<b>"+selParams[blockParam]["head"]+"</b><br>");
                
                
                for (i = 0; i < selParams[blockParam]["values"].length; i++) {
                    var selObj = selParams[blockParam]["values"][i];
                    var names = selObj["name"].split("|");
                    var values = selObj["value"].split("|");
                    tr = $("<tr></tr>");
                    td = $("<td>&raquo;</td>");
                    for (v = 0; v < names.length; v++) {
                        values[v] = (names[v] == "KOMMFILTE[]" || names[v] == "KOMMFILEM[]") ? "on" : values[v];
                        $(td).append("<input type='hidden' name='"+names[v]+"' value='"+values[v]+"' />");
                    	if(names[v] == "KOMMFILEM[]"){
                    		$(td).append("<input type='hidden' name='EM[]' value='Y' />");
                       	}
                    }
                    $(td).append("&nbsp;"+selObj["desc"]);
                    $(tr).append(td);
                    $(tr).append("<td class='dotUnderline'><div></div></td>");
                    $(tr).append("<td style='text-align: right;'><a href='javascript: deleteFromSelParams(\""
                                 +blockParam+"\", \""+selObj["name"]+"\", \""+selObj["value"]+"\");' class='overviewDeleteLink'>"+$go.getLabel('lgDelete')+"</a></td>");
                    
                    table = document.createElement("table");
                    tbody = document.createElement("tbody");
                    $(tbody).append(tr);
                    $(table).append(tr);
                    $("#selParamContainer").append(table);
                }

                if (blockParam.search(/BR/) != -1){
                	if(BRTExists){
                		$("#selParamContainer").append("<input type='hidden' name='BRT[]' value='"+BRTValue+"' />");
                		$("#BRTTable").css("display", "none");
                		
                	}
                	else{
                		$("#selParamContainer").append("<input type='hidden' name='BRT[]' value='"+BRTDefaultValues[land_code]+"' />");
                	}
                	
                	if(HPTBRExists){
                		tr = $("<tr></tr>");
                		td = $("<td>&raquo;</td>");
                		$(td).append("<input type='hidden' name='HPTBR[]' value='"+HPTBRValue+"' />");
                		$(td).append("&nbsp;"+HPTBRDesc);
                		$(tr).append(td);
                		table = document.createElement("table");
                		body = document.createElement("tbody");
                		$(tbody).append(tr);
                		$(table).append(tr);
                		$("#selParamContainer").append(table);
                		
                	}
                }
                $("#selParamContainer").append("\n");
            }
        }
        
               
        // Ausnahmeregelung für Entscheider
        var KPTsExists = false;
        var KPAobj;
        var KPFILLobj;
        var ABobj = new Array(); //'Geschäftsleitung'; //AB defaultwert
        var ABdefault = false;
        if (selParams["KPT"]) {
            for (i = 0; i < selParams["KPT"]["values"].length; i++) {
                if (selParams["KPT"]["values"][i]["name"] == "KPT[]") {
                    KPTsExists = true;
                    if (!selParams["KPT"]["values"][i]["desc"].match(/Unternehmensleitung/)
                        && !selParams["KPT"]["values"][i]["desc"].match(/Management/)
                        && !selParams["KPT"]["values"][i]["desc"].match(/Directie/)
                        && !selParams["KPT"]["values"][i]["desc"].match(/Direzione/)
                        && !selParams["KPT"]["values"][i]["desc"].match(/Dirección General/)
                        && !selParams["KPT"]["values"][i]["desc"].match(/Direction de l´entreprise/)
                        && !selParams["KPT"]["values"][i]["desc"].match(/DIRETOR GERAL/)
                        && !selParams["KPT"]["values"][i]["desc"].match(/Direção Geral/)) {
                        anyOtherParam = true;
                    }
                    else
                    {
                        ABdefault = true;
                    }
                    
                } else if (selParams["KPT"]["values"][i]["name"] == "KPA[0]") {
                    KPAobj = selParams["KPT"]["values"][i];
                } else if (selParams["KPT"]["values"][i]["name"] == "KPFILL[0]") {
                    KPFILLobj = selParams["KPT"]["values"][i];
                } else if (selParams["KPT"]["values"][i]["name"] == "AB[]") {
                    ABobj = selParams["KPT"]["values"][i];
                }            
            }
			
            // Default-Wert für KPFILL einstellen
            if (typeof KPFILLobj != "object") {
                var idx = addFromDB('KPT',
                                    'KPFILL[0]',
                                    '2',
                                    $go.getLabel('zlgSelectionPriceInformationKPFILLName')
                                    + " "
                                    + $go.getLabel('lgSelectionDecisionMakerOutputDecisionMaker'));
                KPFILLobj = selParams["KPT"]["values"][idx];
            }        	    
        }
        
        if (KPTsExists && anyOtherParam) {
            for (i = 0; i < selParams["KPT"]["values"].length; i++) {
                if (i == 0) $("#selParamContainer").append("<b>"+selParams["KPT"]["head"]+"</b><br>");
                if (selParams["KPT"]["values"][i]["name"] == "KPT[]") {
                    var selObj = selParams["KPT"]["values"][i];
                    var names = selObj["name"].split("|");
                    var values = selObj["value"].split("|");
                    tr = $("<tr></tr>");
                    td = $("<td>&raquo;</td>");
                    for (v = 0; v < names.length; v++) {
                        $(td).append("<input type='hidden' name='"+names[v]+"' value='"+values[v]+"' />");
                    }
                    $(td).append("&nbsp;"+selObj["desc"]);
                    $(tr).append(td);
                    $(tr).append("<td class='dotUnderline'><div></div></td>");
                    $(tr).append("<td style='text-align: right;'><a href='javascript: deleteFromSelParams(\"KPT\", \""
                                 + selObj["name"]
                                 + "\", \""
                                 + selObj["value"]
                                 +"\");' class='overviewDeleteLink'>"
                                 + $go.getLabel('lgDelete')+"</a></td>");
                    
                    table = document.createElement("table");
                    $(table).append(tr);
                    $("#selParamContainer").append(table);
                    $("#selParamContainer").append("\n"); } }
                
            // Zeile für KPFILL ausgeben
            tr = $("<tr></tr>");
            td = $("<td>&raquo;</td>");
            $(td).append("<input type='hidden' name='"
                         + KPFILLobj["name"]
                         + "' value='"
                         + KPFILLobj["value"]
                         + "' />");
            $(td).append("&nbsp;"+KPFILLobj["desc"]);
            $(tr).append(td);
            table = document.createElement("table");
            $(table).append(tr);
            $("#selParamContainer").append(table);
            $("#selParamContainer").append("\n");
            
            // Zeile für KPAobj ausgeben
            tr = $("<tr></tr>");
            td = $("<td>&raquo;</td>");
            $(td).append("<input type='hidden' name='"+KPAobj["name"]+"' value='"+KPAobj["value"]+"' />");
            $(td).append("&nbsp;"+KPAobj["desc"]);
            $(tr).append(td);
            table = document.createElement("table");
            $(table).append(tr);
            $("#selParamContainer").append(table);
            $("#selParamContainer").append("\n");
            
            // Zeile für AB ausgeben
            tr = $("<tr></tr>");
            td = $("<td></td>");
            if(ABdefault)
            {
                $(td).append("<input type='hidden' name='AB[0]' value='"+$go.getLabel('lgSelectionABDefault')+"' />");
            }
            else
            {
                $(td).append("<input type='hidden' name='AB[0]' value='"+ABobj["value"]+"' />");
            }
            //$(td).append("&nbsp;"+ABobj);
            $(tr).append(td);
            table = document.createElement("table");
            $(table).append(tr);
            $("#selParamContainer").append(table);
            $("#selParamContainer").append("\n");
            
        } else if (!anyOtherParam) {
            $("#selParamContainer").append($("#defaultTextContainer").text());
        }
        
        //Zählung starten Button aktivieren/deaktivieren
        if(!anyOtherParam){ // Ausser Defaultwert Geschäftsleitung kein Parameter gewählt
            $("#startbuttonimage,#startbuttonimageright").attr("src",shopImagePath+"/"+frontendLanguage+"/start_inactive.gif");
            $("#startbuttonlink,#startbuttonlinkright").each(function() {
                    $(this).attr("href","#");
                    $(this).click(function() {
                            $go.buildHintBox($go.getLabel("zlgSelectionStartQueryERRwoParams"),
                                             "startbuttonimageright"); }); });
            firstParamSet = false; }
        else{ // auch andere Parameter gewählt
            $("#startbuttonimage,#startbuttonimageright").attr("src",shopImagePath+"/"+frontendLanguage+"/start.gif");
            $("#startbuttonlink,#startbuttonlinkright").each(function() {
                    $(this).attr("href","javascript:startQuery();");
                    $(this).click(function() {
                            $("#HinweisContainer")
                                .css('visibility',
                                     'hidden');
                             }); });
            if (!firstParamSet) {
                if (document.getElementById("rightBox_expander"))
                    document.getElementById("rightBox_expander")
                        .setAttribute('alt',
                                      $go.getLabel("zlgUsabilityhilfeAuswahlText"));
                handleRightBox(); } } });
}
    
function istSelPar1PLZiO(wert, landcode) {
    // [Eingabe z.B. 72000-72149, 80, 81, 7-9]
    var rc = false;
    wert = wert.replace(/\s/g,"");
    // if (falscheZeichen.test(wert)) {
    if (wert.match(/[^0-9-]/)) {
	// melde(wert + " beinhaltet unzulï¿½ssige Zeichen." );
	rc = false;
    } else {
	if (wert.match(/^[0-9]{1,4}$/) ||
	    wert.match(/^[0-9]{5}$/) && (landcode == 'DE' || landcode == 'ES')) {
	    // melde(wert + " ist PLZ(Gebiet|Zone)." );
	    rc = true;
	} else if (wert.match(/^[0-9]{1,5}-[0-9]{1,5}$/)) {
	    //	melde(wert + " ist PLZ(Gebiets|Zonen)-Rahmen." );
	    if (wert.match(/^[0-9]{1}-[0-9]{1}$/) ||
		wert.match(/^[0-9]{2}-[0-9]{2}$/) ||
		wert.match(/^[0-9]{3}-[0-9]{3}$/) ||
		wert.match(/^[0-9]{4}-[0-9]{4}$/) ||
		wert.match(/^[0-9]{5}-[0-9]{5}$/) && (landcode == 'DE' || landcode == 'ES')) {
		//	melde(wert + " ist symetr. PLZ(Gebiets|Zonen)-Rahmen." );
		rc = true;
	    }
	}
    }
    return rc;
}

function istSelParPLZiO(wert, landcode) {
    // [Eingabe z.B. 72000-72149, 80, 81, 7-9]
    var rc = false;
    wert = wert.replace(/\s/g,"");
    // if (falscheZeichen.test(wert)) {
    if (wert.match(/[0-9-,]+/)) {
	if (wert.match(/[,]/)) {
	    // melde(wert + " ist Liste." );
	    valContainer = wert.split(",");
	    for (var item in valContainer) {			
		if (item == 0) {
		    rc = true;
		}
		if (rc) {
		    rc = istSelPar1PLZiO(valContainer[item], landcode);
		}
	    }
	} else {
	    rc = istSelPar1PLZiO(wert, landcode);
	}
    }
    return rc;
}

function proofKPAValue(key, name, value, desc){
	if(value != null && value >= 1 && value <= 99){
		addToSelParams(key, name, value, desc);
	}
	else{
		$go.buildHintBox($go.getLabel("lgSelectionErrorInvalidKPAValue"), "KPA");
	}
}


function proofZip(shopFrontendURL, shopInstallPath, key, name, value, desc, landcode) {
    if(!landcode){landcode = "DE"}
    value = value.replace(/\s/g,"");
    if (value.match(/[^0-9-,]/)) {
		if (landcode == 'DE' ) {
	    	$go.buildHintBox($go.getLabel("lgSelectionErrorInvalidDEZipCode"), "PLZ");
		} else {
	    	$go.buildHintBox($go.getLabel("lgSelectionErrorInvalidZipCode"), "PLZ");
		}
    } 
    else if ((landcode == 'DE' || landcode == 'ES') && value.match(/^\d{5}$/)
	       || (landcode != 'DE' && landcode != 'ES') && value.match(/^\d{4}$/))
	{
		getZipDataFromXML(shopFrontendURL, shopInstallPath, key, name, value, null, desc, landcode);
    } 
    else {
		if (istSelParPLZiO(value, landcode)) 
		{
	    	addToSelParams(key, name, value, desc);
		} 
		else {
	    	if (landcode == 'DE' ) {
				$go.buildHintBox($go.getLabel("lgSelectionErrorInvalidDEZipCode"), "PLZ");
	    	} else {
				$go.buildHintBox($go.getLabel("lgSelectionErrorInvalidZipCode"), "PLZ");
	    	}
		}
    }
}

function proofUmZip(shopFrontendURL, shopInstallPath, key, name, value, desc, landcode) {

    if(!landcode){landcode = "DE"}
    
    if ((landcode == 'DE' || landcode == 'ES') && !value.match(/^\d{5}$/)) {
        //$("#HinweisPLZ").css("visibility", "visible");
        $go.buildHintBox($go.getLabel("zlgSelectionUMPLZErrNot5Pos"), "UMPLZ");
        //$("input[@name='UMPLZ[0]']").focus();
    }
    else if((landcode == 'AT' || landcode == 'CH' || landcode == 'PT') && !value.match(/^\d{4}$/)){
        //$("#HinweisPLZ").css("visibility", "visible");
        $go.buildHintBox($go.getLabel("zlgSelectionUMPLZErrNot4Pos"), "UMPLZ");
    }
    else {
		var umrad = $("select[@name='UMRAD'] :selected").text();
		if (umrad == "--") {
	   	 	// $("#HinweisUmRad").css("visibility", "visible");
	    	$go.buildHintBox($go.getLabel("zlgSelectionUMRadErrNotGiven"), "UMRAD");
		} else {
 	    	// addToSelParams(key, name+"|UMRAD", value+"|"+umrad, desc.replace(/<UMRAD>/, umrad));
 	    	getZipDataFromXML(shopFrontendURL, shopInstallPath, key, name, value, umrad, desc, landcode);
		}
    }
}

function proofLength(key, name, value, desc, landcode) {
    if(!landcode) {
        landcode = "DE" }
    
    if ((landcode == 'DE' || landcode == 'ES') && !value.match(/^\d{5}$/)) {
        $go.buildHintBox($go.getLabel("zlgSelectionUMPLZErrNot5Pos"),
                         "UMPLZ"); }
    else if((landcode == 'AT' || landcode == 'CH' || landcode == 'PT' || landcode == 'NL') && !value.match(/^\d{4}$/)){
        $go.buildHintBox($go.getLabel("zlgSelectionUMPLZErrNot4Pos"),
                         "UMPLZ"); }
    else {
        var umrad = $("select[@name='UMRAD'] :selected").text();
        if (umrad == "--") {
            $go.buildHintBox($go.getLabel("zlgSelectionUMRadErrNotGiven"),
                             "UMRAD"); }
        else {
            addToSelParams(key,
                           name +"|UMRAD",
                           value + "|" + umrad,
                           desc.replace(/<UMRAD>/,
                                        umrad)); } } }

function proofEntryMA(name) {
    if (name.search(/^MA/) != -1) {
	var mal = parseInt($("input[@name='MAL[0]']").val());
	var mah = parseInt($("input[@name='MAH[0]']").val());
	if (!isNaN(mal) && !isNaN(mah) && mal >= mah)
	    return false;
    }
    return true;
}

function addFromDB(key, name, value, desc) {
    if (selParams[key]) {
	var newIdx = selParams[key]["values"].length;
	insertToParamsArray(newIdx, key, name, value, desc);
	return newIdx;
    }
}

function addToSelParams(key, name, value, desc) {
	value = value.replace(/\'/g, "&#039;");
	desc = desc.replace(/\'/g, "&#039;");
    var newIdx = selParams[key]["values"].length;
    
    //Sobald irgendein regionales Merkmal ausgewählt wird
    if(key == "REG"){
    	//'Land gesamt' deaktivieren
    	if(name != "REG_ALL"){
    	    $("input[@name='REG_ALL'][@value='-1']").attr("checked", false);
    	}
    	//oder falls es sich um 'Land gesamt' selbst handelt alle Regionmerkmale löschen
    	else{
            for(i=0; i<selParams["REG"]["values"].length; i++){		
        		var name = selParams["REG"]["values"][i]['name'];
        		var value = selParams["REG"]["values"][i]['value']
        		
        		if (name.search(/UMRAD/) != -1) {
        		    name = "UMPLZ[0]"; 
        		    $("select[@name='UMRAD']").val("--");
        		}
        		
        		// Falls Texteingabe-Feld => Value lï¿½schen
        		$("input[@name='"+name+"'][@type='text']").each(function() {
        		    $(this).val("");
        		  });
        		
        		$("input[@name='"+name+"'][@value='"+value+"']").attr("checked", false);
    	    }
    	    
    	    selParams["REG"]["values"] = new Array();
    	    buildOverview();
    	    
    	    return "";
    	    
    	   }
    }
    	
    // prüfen, ob Wert schon in Übersichts-Array vorhanden
    var idx = checkValues(newIdx, key, name, value);

    if (name.search(/GJ|PLZ|MAH|MAL|KPA|ALT|KALT/) == -1
        && $("input[@name='"+name+"'][@value='"+value+"']").get(0)
        && !$("input[@name='"+name+"'][@value='"+value+"']").get(0).checked) {
		selParams[key]["values"].splice(idx,1);
		// Ausnahmeregelung fï¿½r Radio-Buttons
    }
    //Ausnahme bei Merkmal Kinderalter (Kombi aus Textfeld und Checkbox)
    else if (name.search(/KALT/) != -1 
    	&& value == 0
        && $("input[@name='"+name+"'][@value='"+value+"']").get(0)
        && !$("input[@name='"+name+"'][@value='"+value+"']").get(0).checked) {
        selParams[key]["values"].splice(idx,1);
		// Ausnahmeregelung fï¿½r Radio-Buttons
    }
    else if (name.search(/FS|GJ|SEX|GT|PKN/) != -1) {
    	switchWithRadioButton(newIdx, key, name, value);
        if (idx < 0) {
            newIdx = selParams[key]["values"].length;
            insertToParamsArray(newIdx, key, name, value, desc);
        }
    }
    else if (name.search(/^PLZ|MAH|MAL|KPA|ALT|KALT/) != -1) {
    	if (proofEntryMA(name)) {
            replaceTextValueByName(newIdx, key, name, value, desc);
        }
        else {
            $go.buildHintBox($go.getLabel('zlgSelectionMALMAHSizeErr'), 'MAH');
            replaceTextValueByName(newIdx, key, name, value, desc);
        }
    }
    else if (name.search(/UMRAD/) != -1 && idx >= 0) {
        replaceTextValueByName(newIdx, key, name, value, desc);
    }
    else if (idx <= -1) {
    	insertToParamsArray(newIdx, key, name, value, desc);
    }
    else if (name.search(/^AB/) != -1 && idx > -1) {
        selParams[key]["values"].splice(idx,1);	
    }
        
    // Übersicht "zusammenbauen"
    buildOverview();
}

/* Radiobutton-Effekt (Lï¿½schen aller anderen) in ï¿½bersicht "nachbilden" */
function switchWithRadioButton(newIdx, key, name, value) {
    $("input[@type='radio'][@name='"+name+"']").each(function() {
	var newIdx = selParams[key]["values"].length;
	if ($(this).val() != value && $(this).val() != "-1") {
	    var idx = checkValues(newIdx, key, name, $(this).val());
	    if (idx >= 0) {
		selParams[key]["values"].splice(idx,1);
	    }
	}
    });
}

function uncheckAllRadio(key, name) {
    $("#selParamContainer input[@name='"+name+"']").each(function() {
            deleteFromSelParams(key, name, $(this).val());
    });
}

function replaceTextValueByName(newIdx, key, name, value, desc) {
	if (name.match(/^PLZ/)) {
    value = $ov.parsePLZ(value);
	desc = desc.replace(/(.*):\s.*/, "$1: "+value);
	}
    var found = false;
    for(i = 0; i < newIdx; i++) {
	if (selParams[key]["values"][i]["name"] == name) {
	    if (value.length > 0 && value != "-1") {
		selParams[key]["values"][i]["value"] = value;
		selParams[key]["values"][i]["desc"] = desc;
	    } else if (value == "-1") {
	    } else {
		selParams[key]["values"].splice(i,1);
	    }
	    found = true;
	    break;
	}
    }	
    if (!found && value != "-1") insertToParamsArray(newIdx, key, name, value, desc);
}
    
function insertToParamsArray(newIdx, key, name, value, desc) {
    selParams[key]["values"][newIdx] = new Object();
    selParams[key]["values"][newIdx]["name"] = name;
    selParams[key]["values"][newIdx]["value"] = value;
    selParams[key]["values"][newIdx]["desc"] = desc;
}

function deleteFromSelParams(key, name, value) {
    // Ermittlung des des ParamArray-Eintrags
    value = value.replace(/\'/g, "&#039;");
    var idx = checkValues(selParams[key]["values"].length, key, name, value);

    /* Bei Umkreissuche zuerst Name des Umkreis-PLZ-Feldes extrahieren
       und Drop-Down-Menï¿½ auf Default-Wert setzen
    */
    if (name.search(/UMRAD/) != -1) {
        name = "UMPLZ[0]"; 
        $("select[@name='UMRAD']").val("--"); }
    
    // Falls Texteingabe-Feld => Value lï¿½schen
    $("input[@name='"+name+"'][@type='text']")
        .each(function() {
                $(this).val(""); });
    
    // aus Selektions-Formular löschen
    $("input[@name='"+name+"'][@value='"+value+"']")
        .attr("checked", false);
    // bei div. Rubriken den "Alle"-Wert setzen
    if (idx != -1 && selParams[key]["values"][idx]["name"] == name) {
        var noneChecked = true;
        $("input[@name='"+name+"']")
            .each(function() {
                    if ($(this).attr("checked") == true) {
                        noneChecked = false; } });
        if (noneChecked)
			$("input[@name='"+name+"'][@value='-1']")
                .attr("checked", true); }
    
    // Löschen des Eintrags
    selParams[key]["values"].splice(idx, 1);
    
    //Wenn regionales Merkmal mehr gesetzt ist, dann 'Land gesamt' aktivieren
    if(selParams['REG']["values"].length == 0){
        $("input[@name='REG_ALL'][@value='-1']")
            .attr("checked", true); }
    
    
    // iframe
    var iframe = top.frames['branchenbaumiframe'];
    if (iframe) {	    
        var inputs = iframe.document.getElementsByTagName('input');
        for (var i = 0; i < inputs.length; ++i)
            if (inputs[i].name == name 
                && inputs[i].value == value
                && inputs[i].checked)
                inputs[i].checked = false; }
    
    // Übersicht "zusammenbauen"
    
    buildOverview();
}

function checkValues(newIdx, key, name, value) {
    // wenn's sowieso das erste Element sein wird => gleich rein damit
    if (newIdx == 0)
        return -1;
    
    // Wenn Wert da ist, gleich abbrechen
    for(i = 0; i < newIdx; i++) {
        if (name.search(/UMRAD/) != -1
            && selParams[key]["values"][i]["name"] == name)
            return i;
        if (selParams[key]["values"][i]["value"] == value
            && selParams[key]["values"][i]["name"] == name)
            return i; }
    
    // Wert noch nicht vorhanden
    return -2; }

function checkSearchString() {
    var searchOrtValue = selectionForm.searchString.value;
    if (searchOrtValue.length == 0) {
	return false;
    }
}
    
function submitBRSearch(Ereignis) {
    var searchValue = selectionForm.searchStringBR.value;
    if (!Ereignis)
    	Ereignis = window.event;
    if (Ereignis.which) {
    	keyCode = Ereignis.which;
    } else if (Ereignis.keyCode) {
    	keyCode = Ereignis.keyCode;
    }
    
    if (keyCode == 13 && !searchValue.match(/^\[.*\]$/)) {
	if(selectionForm.searchString.value != ""){
	    selectionForm.search.click();
	}
	else if(searchValue != ""){
	    selectionForm.searchBRButton.click();
	}
    }
}

function saveUserInput() {
    var queryString = "";
    //var checked = false;
    var elem;
    $(document).ready(function() {
	document.getElementsByName("EVENT")[0].value = "overview";
	document.getElementsByName("scriptMode")[0].value = "overView";
	queryString = $("#selectionform").formSerialize();
	var alertString = "";
	$("#selectionform :input").each(function() {
	    if ($(this).attr("name").indexOf("BRTREE") == -1 && $(this).attr("value") != undefined)
		alertString += $(this).attr("name") + ": " + $(this).attr("value") + "\n";
	});
    });	
    return queryString;
}
    
function setShopEvent(shopEvent) {
    $(document).ready(function() {
	document.getElementsByName("EVENT")[0].value = shopEvent;
	if (document.getElementsByName("scriptMode")[0])
	    document.getElementsByName("scriptMode")[0].value = "";
    });
    document.selectionform.submit();
}

function getCommunitiesFromXML(shopFrontendURL, shopInstallPath, form, landCode, communitySelector, language) {
    var searchString = form.searchString.value;	
    var regExp = new RegExp(".*/([a-z0-9]*)", "gi");
    var result = regExp.exec(shopFrontendURL);
    shopFrontendURL = (result != null) ? result[1] + "/" : "";
    
    if(!language){
	   language = "de";
    }
    
    var uri = "/" + shopFrontendURL + "service/ajax/getCommunities.php";
    var xmlHttp = null;
    try {
	xmlHttp = new XMLHttpRequest(); }
    catch (failed) {
	xmlHttp = $go.getActivXObject(); }
    
    if (xmlHttp) {
        xmlHttp.onreadystatechange =
            function() {
                if (xmlHttp.readyState == 4) {
                    buildCommunityBox(xmlHttp.responseXML, communitySelector, landCode);
                }
            };
        xmlHttp.open("POST", uri, true);
        xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        xmlHttp.send("searchString=" + escape(searchString) + "&shopInstallPath=" + shopInstallPath + "&landCode=" + landCode+ "&language=" + language);
        $("#HinweisContainer").css("visibility","hidden");
    } else {
	   $go.buildHintBox($go.getLabel("zlgNoActiveXsmall"), "searchString");
    }
}

function buildCommunityBox(xmldoc, communitySelector, landCode) {
    var communities = xmldoc.getElementsByTagName('community');
    $("#communitybox").empty();
	
    // Korrektur wg. anderer Zählweise im XML-DOM bei MS IE
    var factor = 1;
    var	korr = 0
    if(!navigator.appName.match(/Explorer/)) {
        korr = 1
        factor = 2;
    }

    for (i = 0; i < communities.length; i++) {
        //alert(communities[i].getElementsByTagName('lckn_communitytype')[0].firstChild.nodeValue);
        /*
        var commNode = communities[i].childNodes;
        var communityName = commNode[2*factor+korr].firstChild.data;
        var communityKey = (landCode == "DE")
            ? commNode[1*factor+korr].firstChild.data+"_"+commNode[0*factor+korr].firstChild.data
            : communityName;
        */
        var communityName = communities[i]
            .getElementsByTagName('lckn_communityname')[0]
            .firstChild
            .nodeValue;
        var communityKey = (landCode == "DE")
            ? (communities[i]
                .getElementsByTagName('lckn_communitynumber')[0]
                .firstChild
                .nodeValue
              + "_"
              + communities[i]
                .getElementsByTagName('lckn_communitytype')[0]
                .firstChild
                .nodeValue)
            : communityName;

        var cb = createCheckBox("ORTE_liste[]", communityKey, "REG", "ORTE[]", communitySelector, communityName);

        $("#communitybox").append(cb);
        $("#communitybox").append("&nbsp;"+communityName+"<br>\n");
    }
    
    if (communities.length <= 0) {
	$go.buildHintBox($go.getLabel("zlgSelectionRegionErrNoCitiesFound"), "searchString");
    }
}

function getZipDataFromXML(shopFrontendURL, shopInstallPath, key, name, value, umrad, desc, landCode) {
    
	$("#startbuttonimage,#startbuttonimageright").attr("src",shopImagePath+"/"+frontendLanguage+"/start_inactive.gif");
            $("#startbuttonlink,#startbuttonlinkright").each(function() {
                    $(this).attr("href","#");
                    $(this).click(function() {
                            $go.buildHintBox($go.getLabel("zlgSelectionStartQueryERRwoParams"),
                                             "startbuttonimageright"); }); 
            
            });
    	
	var regExp = new RegExp(".*/([a-z0-9]*)", "gi");
    var result = regExp.exec(shopFrontendURL);
    shopFrontendURL = (result != null) ? result[1] + "/" : "";
    
    var uri = "/" + shopFrontendURL + "service/ajax/getZipData.php";
    
    var xmlHttp = null;
    try {
        xmlHttp = new XMLHttpRequest();
    } catch (failed) {
        xmlHttp = $go.getActivXObject();
    }
    
    if (xmlHttp) {
	xmlHttp.onreadystatechange =
	    function() {
		if (xmlHttp.readyState == 4) {
				checkZipData(xmlHttp.responseXML, key, name, value, umrad, desc, landCode);
		}
	    }
	xmlHttp.open("POST", uri, true);
	xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xmlHttp.send("searchString=" + escape(value) + "&shopInstallPath=" + shopInstallPath + "&landCode=" + landCode);
    } else {
	$go.showMessage("HinweisActiveXklein");	
    }

}

function checkZipData(xmldoc, key, name, value, umrad, desc, landCode) {
	var zip = xmldoc.getElementsByTagName('zip');
	if (zip.length <= 0) {
		// $("#HinweisPLZ").css("visibility", "visible");
		if (umrad == null) {
			$go.buildHintBox($go.getLabel("zlgSelectionPLZErrNotFound"), "PLZ");
		} else {
			$go.buildHintBox($go.getLabel("zlgSelectionUMPLZErrNotFound"), "UMPLZ");
		}
	} else {
		if (umrad == null) {
			addToSelParams(key, name, value, desc);
		} else {
			var iOgeoLaenge = false;
			var iOgeoBreite = false;
			var zipe = zip[0].childNodes;
			for (i = 0; i < zipe.length; i++) {
				// elemenieren der Textknoten de ff
				if(zipe[i].nodeType != 3) {
					if (zipe[i].tagName == "latitude"
					 && zipe[i].childNodes[0].nodeValue > 0) {
						iOgeoBreite = true;
					} else if (zipe[i].tagName == "longitude"
					 && zipe[i].childNodes[0].nodeValue > 0) {
						iOgeoLaenge = true;
					}
				}
			}
			if (iOgeoBreite && iOgeoLaenge){
				addToSelParams(key, name+"|UMRAD", value+"|"+umrad, desc.replace(/<UMRAD>/, umrad));
			} else {
				$go.buildHintBox($go.getLabel("zlgSelectionUMPLZErrNotFound"), "UMPLZ");
			}
		}
	}
}

function getSynonymFromXML(shopFrontendURL, shopInstallPath, form, landcode, language) {
	// zuerst Baum verstecken - fï¿½r alle Fï¿½lle
	hideTree($("#switchLink:first-child"), $("#BrancheTree"));
	
	var branchtype = "";
	$("input[@name='BRT[]']").each(function(){
		if($(this).attr("checked"))
		{
			branchtype= $(this).attr("value");
		}
	});
	
	if(branchtype=="")
	{
		if(landcode == "NL")
		{
			branchtype = "BIS";
		}
		else if(landcode == "PT"){
			branchtype = "CAE";
		}
		else{
			branchtype = "EBC";
		}
	}
		
	if(!language){
		language="de";
	}
	
	$brs.setSomethingFound(false);
	
	// Sanduhr einblenden
	$("#sandglass").css({visibility:"visible", height:"60px"});
	
	// vorherige Auswahl lï¿½schen
	$("#BrancheDetail").css("display", "none");
	$("#SynonymBody").empty();

	$brs.setBRAttributes($("#searchStringBR"));	
	var regExp = new RegExp(".*/([a-z0-9]*)", "gi");
	var result = regExp.exec(shopFrontendURL);
	shopFrontendURL = (result != null) ? result[1] + "/" : "";
	

	var uri = "/" + shopFrontendURL + "branchenbaum/get_external_XML.php";
	//var uri = "/~jhelf/sfao-staging/htdocs/branchenbaum/get_external_XML.php";

	var param = new Array("searchvalue", "landcode", "language", "branchtype");
	requestServer(uri, shopInstallPath, param, landcode, language, branchtype);
}




function requestServer(uri, shopInstallPath, param, landcode, language, branchtype) {
	var xmlHttp = null;
	try {
		xmlHttp = new XMLHttpRequest();
	} catch (failed) {
		xmlHttp = $go.getActivXObject();
	}
	if (xmlHttp) {
		xmlHttp.onreadystatechange =
		function() {
			if (xmlHttp.readyState == 4) {
				buildSynonymBox(xmlHttp.responseXML);
			}
		}
	    xmlHttp.open("POST", uri, true);
		xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlHttp.send(param[0] + "=" + escape($brs.searchString) + "&" + param[1] + "=" + escape(landcode)+ "&" + param[2] + "=" + escape(language) + "&path=" + shopInstallPath + "&" + param[3] + "=" + escape(branchtype));
	} else {
		$go.buildHintBox($go.getLabel("zlgNoActiveXsmall"), "searchString");
	}

}

function buildSynonymBox(xmldoc) {
	var branche = xmldoc.getElementsByTagName('branche');
	var outBox = document.getElementById("SynonymTable");
	var outBoxBody = document.getElementById("SynonymBody");
	
	$(outBoxBody).append("\n");
	//removeChildNodes(outBoxBody);
	
	var score = 0;
	var highestScore = 0;
	var type = "";
	var moreSynonymLinkSet = false;
	
	// Korrektur wg. anderer Zï¿½hlweise im XML-DOM bei MS IE
	var factor = 1;
	var	korr = 0
	if(!navigator.appName.match(/Explorer/)) {
		korr = 1
		factor = 2;
	}
	
	for (i = 0; i < branche.length; i++) {

		// Branchencode, Branchenbezeichnung und evt. Synonym aus XML-Request "holen"
		var branchRecord = branche[i].childNodes;
		var ebc = branchRecord[0*factor+korr].firstChild.data;
		var desc = branchRecord[1*factor+korr].firstChild.data;
		var synonym = branchRecord[2*factor+korr].firstChild.data;
		synonym = synonym.replace(/'/g, "`");
		desc = desc.replace(/'/g, "`");
		
		score = branchRecord[3*factor+korr].firstChild.data;
		
		if (i == 0) {
		 	highestScore = score;
		} 
			
		type = (score == highestScore) ? "first" : "additional";
				
		var tr = createLineAsTableRow(ebc, desc, synonym, type);
		$(outBoxBody).append(tr);
		$(outBoxBody).append("\n");
		
		if (score != highestScore && !moreSynonymLinkSet) {
			tr = $("<tr id='moreSynonymLink'><td colspan='3'><a href='#' onClick='$brs.moreSynHits();' class='MoreDetailLink'>"+$go.getLabel("lgSelectionBRSynonymAdditionalHits")+"</a></td></tr>")
                $(outBoxBody).append(tr);
			$(outBoxBody).append("\n");
			moreSynonymLinkSet = true;
		}
	}
	
	if (branche.length > 0) {
		setFocusOnThisBox("BranchenMaske");
		$("#BrancheDetail").css("display","block");
		outBox.style.display = "block";
		$brs.setSomethingFound(true);
		$("#HinweisContainer").css("visibility","hidden");
	} else {
		$go.buildHintBox($go.getLabel("zlgSelectionBRErrNoLinesOfBusinessFound"), "searchStringBR");
	}
	
	// zum Schluss Sanduhr wieder ausblenden
	$("#sandglass").css({visibility:"hidden",height:"10px"});
}

function removeChildNodes(parentalNode) {
    var idx = (!navigator.appName.match(/Explorer/)) ? 1 : 0;
    currentChild = parentalNode.childNodes[idx];
    while(currentChild != undefined) {
	parentalNode.removeChild(currentChild);
	currentChild = parentalNode.childNodes[idx];
    }
}


function createLineAsTableRow(ebc, desc, synonym, type) {
    // Tabellenzeile anlegen
    var tr = $("<tr class=\"synLine\"></tr>");
	
    if (type != "first") {
	$(tr).css("display", "none");
    }	
	
    // Checkbox erstellen
    var blockName = "BR"+ (($brs.getCheckBoxName().search(/NEG/) == -1)? "" : "NEG");
    var cb = createCheckBox($brs.getCheckBoxName(), ebc, blockName,$brs.getCheckBoxName(), "", desc);
    var td = $("<td class=\"checkBoxCell\">&raquo;&nbsp;</td>");
    $(td).append(cb);
    $(tr).append(td);
	
    if (type == "first")
	desc = "<b>"+desc+"</b>";
    td = $("<td class=\"synCell\"></td>");
    $(td).append(desc);
	
	
    /**	Gefundene Synonyme in Klammern mit Stichwort in Bold wird zur Zeit 
      * nicht gewï¿½nscht.
      */
    if (!$brs.searchWithCode && desc.toLowerCase().indexOf($brs.getSearchString().toLowerCase()) == -1) {
	
	// Gesuchten Text in Bold{
	var regExp = new RegExp("(.*)("+$brs.getSearchString()+")(.*)", "gi");
	var result = regExp.exec(synonym);
	synonym = (result != null) ? result[1] + result[2].bold() + result[3] : synonym;
	// Zeileninhalt zusammenbauen
	$(td).append("   <i>(" + $go.getLabel("lgSelectionBRSynonymHitPrefix") + synonym + ")</i>");

    }
	
    $(tr).append(td);
    td = $("<td style=\"width: 40px;\">&nbsp;</td>");
    $(tr).append(td);
    return tr;
}

function createCheckBox(name, value, paraKey, paraName, prefix, desc) {
	var hint = getBRHintForDefinedCodes(value);
	// Hochkommata (') ersetzen durch &quot; -> 's-Gravenhage
	value = value.replace(/'/g,"&#039;");
	desc = desc.replace(/'/g,"&#039;");	
	return $("<input type=\"checkbox\" name=\""+name+"\" value=\""+value+"\" onClick='addToSelParams(\""+paraKey+"\",\""+paraName+"\",\""+value+"\", \""+prefix+" "+desc+"\");"+hint+"'>");	
}

function getBRHintForDefinedCodes(value){
	var definedcodes = new Array("852",
								"85201",
                                "852011",
                                "852012",
                                "852013",
                                "852014",
                                "852015",
                                "85202",
                                "852021",
                                "85203");
	
    if(land_code == "NL"){

    	for(var i=0; i<definedcodes.length; i++)
		{
			if(value.substr(0,definedcodes[i].length) == definedcodes[i])
			{
				return('$go.buildHintBox($go.getLabel("zlgCertainBISCode"), "SynonymBody");');				
			}
		}
	}
	
	return '';
}

function closeBranchDetail(){
	$("#BrancheDetail").css("display", "none");
}

function closeBranchDetail(){
	$("#BrancheDetail").css("display", "none");
}

function switchBranchView(type, pendingimg,sessid) {
	// zu ändernde Elemente definieren
	var switchLinkText = $("#switchLink:first-child"); 
	
	if (type == "tree") {	    
        if (!document.getElementById("branchenbaumiframe")) {
            var div = document.getElementById("branchenbaumhook");
            var waitImg = document.createElement('img');
            waitImg.style.clear = "both";
            waitImg.src = pendingimg;            
            div.appendChild(waitImg);            
            var el = document.createElement('iframe');            
            el.src = "./?EVENT=branchenbaumframe&PHPSESSID=" + sessid;
            el.id = "branchenbaumiframe";
            el.name = "branchenbaumiframe";
            el.height = "210px";
            el.width = "90%";
            el.allowTransparency = true;            
            el.style.backgroundColor = "transparent";
            el.style.border = "0";
            el.frameBorder = "no";
            el.scrolling = "no";

            $(el).load(function () {                
                div.removeChild(waitImg); });                
            
            div.appendChild(el);
            //window.setTimeout(function() { waitImg.style.display = "none" }, 2000);
            //window.setTimeout(function() { div.removeChild(waitImg) }, 2000);
            }
        else {
        	$("#branchenbaumhook").css("display", "block");
        }
        	
	    
		if (switchLinkText.text() == $go.getLabel("lgSelectionBRSearchTreeText")) {
			switchLinkText.text($go.getLabel("lgSelectionBRSearchSynText"));
			$("#BrancheDetail,#searchField").css("display", "none");
			$("#BrancheTree").css("display", "inline");
			$("#brHelpText").css("display", "none");
			$("#DetailLinkBranche").css("display", "inline");
			setFocusOnThisBox('BranchenMaske');
			document.getElementById("rightBox_expander").setAttribute('alt',$go.getLabel("zlgUsabilityhilfeBranchenbaumText"));
			handleRightBox();
			// Link zu Branchen-Ausschluss ausblenden
			$("#brNegLink").css("display", "none");
		} else {
			hideTree(switchLinkText, $("#branchenbaumhook"));
			$("#searchField").css("display", "inline");
			$("#DetailLinkBranche").css("display", "none");
			document.getElementById("rightBox_expander").setAttribute('alt',$go.getLabel("zlgUsabilityhilfeSelektionText"));
			handleRightBox();
		}
		$("#brAddText").css("display", "none");
		toggleHPTBRRowVisibility();
		toggleBRTTableVisibility();
		
	} else {
		$("#BrancheDetail").css("display", "none");
		$("#SynonymBody").empty();
		$("#brNegLink").children().text($brs.toggleBranchSel());
		
		toggleTreeLinkVisibility();
		toggleHPTBRRowVisibility();
		toggleBRTTableVisibility();

	}
}


function toggleHPTBRRowVisibility(){
	if($("#HPTBRRow").css("display") == 'none') {
		$("#HPTBRRow").css("display", "block"); }
	else {
		$("#HPTBRRow").css("display", "none"); } }
		
function toggleBRTTableVisibility(){
	if($("#BRTTable").css("display") == 'none') {
		$("#BRTTable").css("display", "block"); }
	else {
		$("#BRTTable").css("display", "none"); } }

function toggleTreeLinkVisibility(){
	if($("#switchLink").css("display") == 'none') {
		$("#switchLink").css("display", "inline"); }
	else {
		$("#switchLink").css("display", "none"); } }

function hideTree(switchLinkText, tree) {
	switchLinkText.text($go.getLabel("lgSelectionBRSearchTreeText"));
	tree.css("display","none");
	// Link zu Branchen-Ausschluss einblenden
	$("#brNegLink").css("display", "inline");
}

function setDefaultLoginType(obj) {
	obj.form.loginType[1].checked = true;
}

function closeDownloadData() {
	$("#downloaddata").css("display","none");
}


function switchComplexSelectionText(){
 	// zu ï¿½ndernde Elemente definieren
	var switchLinkHeader 	= document.getElementById("selectionRunningHeader");
 	var switchLinkText 		= document.getElementById("selectionRunningText");
 	
 	switchLinkHeader.innerHTML 	= $go.getLabel("zlgSelectionIsComplex1");
 	switchLinkText.innerHTML 	= $go.getLabel("zlgSelectionIsComplex2") + $go.getLabel("zlgSelectionIsComplex3");
}

function handleRightBox(){
	var elem, text; 
	
	try {
		elem = document.getElementById('rightBox_expander');
		text = elem.getAttribute("alt");
		if(text.length == 0)
            document
                . getElementById('rightBox_second')
                . style
                . display = 'none';
		if(text.length > 405)
            text = text.substr(0, 405)
                + "... <br/><a class='MoreDetailLink' onclick='javascript:expandRightBox();' style='float:right;' >"
                + $go.getLabel('zlgUsabilityHelpReadMore')
                + "</a>";
		elem.innerHTML = text;
	}
	catch(e){		
	}
}

function expandRightBox(){
	elem = document.getElementById('rightBox_second');
	elem.style.width = "300px";
	textelem = document.getElementById('rightBox_expander');
	textelem.innerHTML = textelem.getAttribute("alt") + "<br/><a class='MoreDetailLink' onclick='javascript:minimizeRightBox();' style='float:right;' >"+$go.getLabel('zlgUsabilityHelpClose')+"</a>";

}

function minimizeRightBox(){
	handleRightBox();
	elem.style.position = 'relative';
	elem.style.left = '0em';
	elem.style.width = '174px';
}


function displaySubmenu(name){
	var topic = document.getElementById(name+'Topic');
	var span = document.getElementById(name);
	var div = span.parentNode;
	topic.className = "current";
	span.className = "submenu";
	span.style.display='block';
	div.style.left = topic.offsetLeft+'px';
	
	for(var i=0; i<span.childNodes.length; i++){
		if(span.childNodes[i].style != null)			{
			span.childNodes[i].style.width = div.offsetWidth - 10+'px';
		}
	}
	
}
	
function hideSubmenu(name){
	var topic = document.getElementById(name+'Topic').className = "";
	var span = document.getElementById(name);
	var li = span.parentNode;
	li.className = "";
	span.style.display='none';
}

function sendInfoCenterMail(receiver, shopFrontendURL, shopInstallPath, form, lang, shop){
	var regExp = new RegExp(".*/([a-z0-9]*)", "gi");
	var result = regExp.exec(shopFrontendURL);
	shopFrontendURL = (result != null) ? result[1] + "/" : "";
	
	var xmlHttp = null;
	var uri = "/" + shopFrontendURL + "service/ajax/infoCenterRequest.php";

	if(lang == null){
		lang = "de";
	}
	
	try {
		xmlHttp = new XMLHttpRequest();
	} catch (failed) {
		xmlHttp = $go.getActivXObject();
	}
	if (xmlHttp) {
		xmlHttp.onreadystatechange =
		function() {
			if (xmlHttp.readyState == 4) {
				var code = xmlHttp.responseXML.getElementsByTagName("code");
				var beschreibung = xmlHttp.responseXML.getElementsByTagName("description");
				
				alert(beschreibung[0].firstChild.data);
				if(code[0].firstChild.data == 0)
				{
					tb_remove();
				}
				
			}
		}
	    xmlHttp.open("POST", uri, true);
		xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlHttp.send("subject=" + escape(form.InfoCenterMailSubject.value) + "&message=" + escape(form.InfoCenterMailMessage.value)+ "&address=" + escape(form.InfoCenterMailAddress.value) + "&phone=" + escape(form.InfoCenterMailPhone.value)+ "&receiver=" + receiver + "&shopInstallPath=" + shopInstallPath+ "&lang=" + lang + "&shopid=" + shop);
	} else {
		$go.buildHintBox($go.getLabel("zlgNoActiveXsmall"), "searchString");
	}	
}

function proofAgeRange(input, name, maxAge, minAge) {
    if (!input.match(/^((([0-9]{1,2})|([0-9]{1,2}[-][0-9]{1,2}))|(((([0-9]{1,2})|([0-9]{1,2}[-][0-9]{1,2}))[,])+(([0-9]{1,2})|([0-9]{1,2}[-][0-9]{1,2}))))$/)) {
        $go.buildHintBox($go.getLabel("zlgSelectionErrorInvalid" + name + "CH"),
                                      name);
        return false; }

    var parts = input.split(",");
    for (var i = 0; i < parts.length; ++i)
        if (parts[i].search(/[-]/) != -1) {
            var range = parts[i].split("-");
            if (Number(range[0]) > maxAge
                || Number(range[1]) > maxAge
                || Number(range[0]) < minAge
                || Number(range[1]) < minAge
                || Number(range[0]) >= Number(range[1])) {
                $go.buildHintBox($go.getLabel("zlgSelectionErrorInvalid" + name + "CH"),
                                 name);
                return false; } }
        else
            if (Number(parts[i]) > maxAge
                || Number(parts[i]) < minAge) {
                $go.buildHintBox($go.getLabel("zlgSelectionErrorInvalid" + name + "CH"),
                                 name);
                return false; }

    return true; }

function proofKALT(input) {
    return proofAgeRange(input, 'KALT', 17, 1); }

function switchKALT(noChildren) {
	if(noChildren){
		$("#KALT").attr("value", "");}
	else{
		//document.getElementById('NOKALT').checked="";
		if($("#KALT").attr("value") != undefined){
			$("#NOKALT").attr("checked", false);}
	}
}
    
    
function proofALT(input) {
    return proofAgeRange(input, 'ALT', 111, 18); }

function valueExists(key, name, value) {
    var chk = checkValues(selParams[key].values.length, key, name, value);
    return (chk != -2); }
