function change(p1, p2, p3, reset) {
    	var ul_selector = document.getElementById(p1);
		var waerme_selector = document.getElementById(p2);
		var hiddenSelector = document.getElementById(p3);
		var u = hiddenSelector.length;
		var v = waerme_selector.length;
		var w = ul_selector.length;

		if (waerme_selector.options[0].selected == true) {
			changeSelector(p1, p3);
		} else {
			if (reset == true) {
				for (k = 1; k < w; k++) {
					ul_selector.options[k].disabled = true;
				}
		
				for (i = 1; i < v; i++) {
					for (j = 0; j < u; j++) {
						if (waerme_selector.options[i].selected == true && hiddenSelector.options[j].value == waerme_selector.options[i].value) {
							for (k = 0; k < w; k++) {
								if (hiddenSelector.options[j].text == ul_selector.options[k].value) {
									ul_selector.options[k].disabled = false;
								}
							}
						}
					}
				}
			} else {
				for (i = 1; i < v; i++) {
					var test = -1;
					for (j = 0; j < u; j++) {
						if (waerme_selector.options[i].selected == true && hiddenSelector.options[j].value == waerme_selector.options[i].value) {
							test = j;
						}
					}
					if (test != -1) {
						for (k = 0; k < w; k++) {
							if (hiddenSelector.options[test].text == ul_selector.options[k].value) {
								ul_selector.options[k].disabled = true;
							}
						}
					}
				}
			}
		}
    }

    function changeTest(p1, p2, p3, p4, reset) {
    	var ul_selector = document.getElementById(p1);
		var waerme_selector = document.getElementById(p2);
		var test_selector = document.getElementById(p3);
		var hiddenSelector = document.getElementById(p4);
		var u = hiddenSelector.length;
		var v = waerme_selector.length;
		var w = test_selector.length;
		var x = ul_selector.length;

		if (waerme_selector.options[0].selected == true) {
			changeSelector(p1, p3);
		} else {
			if (reset == true) {
				for (k = 1; k < x; k++) {
					ul_selector.options[k].disabled = true;
				}
				
				for (i = 1; i < v; i++) {
					if (waerme_selector.options[i].selected == true) {
						for (l = 1; l < w; l++) {
							if (test_selector.options[l].selected == true) {
								for (j = 0; j < u; j++) {
									if (hiddenSelector.options[j].value == waerme_selector.options[i].value) {
										for (m = 0; m < u; m++) {
											if (waerme_selector.options[i].selected == true && test_selector.options[l].selected == true && hiddenSelector.options[j].value == waerme_selector.options[i].value && hiddenSelector.options[m].value == test_selector.options[l].value && hiddenSelector.options[m].text == hiddenSelector.options[j].text) {
												for (k = 0; k < x; k++) {
													if (hiddenSelector.options[j].text == ul_selector.options[k].value) {
														ul_selector.options[k].disabled = false;
													}
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
    }

    function changeSelector(p1, p2) {
    	var waerme_selector = document.getElementById(p1);
		var hiddenSelector = document.getElementById(p2);
		var v = waerme_selector.length;
		var u = hiddenSelector.length;

		for (i = 1; i < v; i++) {
			waerme_selector.options[i].disabled = true;
		}

		for (i = 0; i < v; i++) {
			for (j = 0; j < u; j++) {
				if (hiddenSelector.options[j].value == waerme_selector.options[i].value) {
					waerme_selector.options[i].disabled = false;
				}
			}
		}
    }
	function changeAll(suche_produktgruppe) {
		if (suche_produktgruppe.options[1].selected == true) {
			changeSelector("waermeklasse", "klebebaender_selector");
			changeSelector("ul_cert", "klebebaender_selector");
			changeSelector("traeger", "klebebaender_selector");
		} else if (suche_produktgruppe.options[2].selected == true) {
			changeSelector("waermeklasse", "hidden_selector");
			changeSelector("material", "hidden_selector");
			changeSelector("ul_cert", "hidden_selector");
		} else if (suche_produktgruppe.options[3].selected == true) {
			changeSelector("waermeklasse", "impraegnierstoffe_selector");
			changeSelector("eigenschaft", "impraegnierstoffe_selector");
		} else if (suche_produktgruppe.options[4].selected == true) {
			changeSelector("waermeklasse", "schlaeuche_selector");
			changeSelector("ul_cert", "schlaeuche_selector");
		} else if (suche_produktgruppe.options[5].selected == true) {
			changeSelector("waermeklasse", "litzen_selector");
			changeSelector("ul_cert", "litzen_selector");
		} else if (suche_produktgruppe.options[7].selected == true) {
			changeSelector("strombelastung", "trafoklemmen_selector");
		} else if (suche_produktgruppe.options[8].selected == true) {
			changeSelector("waermeklasse", "wickeldraehte_selector");
			changeSelector("ul_cert", "wickeldraehte_selector");
			changeSelector("norm", "wickeldraehte_selector");
		}
	}

	function changeWaermeklasse(suche_produktgruppe, reset) {
		if (suche_produktgruppe.options[2].selected == true) {
			change("ul_cert", "waermeklasse", "hidden_selector", reset);
			change("material", "waermeklasse", "hidden_selector", reset);
		} else if (suche_produktgruppe.options[3].selected == true)  {
			change("eigenschaft", "waermeklasse", "impraegnierstoffe_selector", reset);
		} else if(suche_produktgruppe.options[1].selected == true) {
			change("ul_cert", "waermeklasse", "klebebaender_selector", reset);
			change("traeger", "waermeklasse", "klebebaender_selector", reset);
		} else if (suche_produktgruppe.options[4].selected == true) {
			change("ul_cert", "waermeklasse", "schlaeuche_selector", reset);
		} else if (suche_produktgruppe.options[5].selected == true) {
			change("ul_cert", "waermeklasse", "litzen_selector", reset);
		} else if (suche_produktgruppe.options[8].selected == true) {
			change("ul_cert", "waermeklasse", "wickeldraehte_selector", reset);
			change("norm", "waermeklasse", "wickeldraehte_selector", reset);
		}
	}

	function changeMaterial(suche_produktgruppe, reset) {
		if (suche_produktgruppe.options[2].selected == true) {
			change("ul_cert", "material", "hidden_selector", reset);
			change("waermeklasse", "material", "hidden_selector", reset);
		}
	}

	function changeUlCert(suche_produktgruppe, reset) {
		if (suche_produktgruppe.options[2].selected == true) {
			change("material", "ul_cert", "hidden_selector", reset);
			change("waermeklasse", "ul_cert", "hidden_selector", reset);
		} else if(suche_produktgruppe.options[1].selected == true) {
			change("traeger", "ul_cert", "klebebaender_selector", reset);
			change("waermeklasse", "ul_cert", "klebebaender_selector", reset);
		} else if(suche_produktgruppe.options[4].selected == true) {
			change("waermeklasse", "ul_cert", "schlaeuche_selector", reset);
		} else if(suche_produktgruppe.options[5].selected == true) {
			change("waermeklasse", "ul_cert", "litzen_selector", reset);
		} else if (suche_produktgruppe.options[8].selected == true) {
			change("waermeklasse", "ul_cert", "wickeldraehte_selector", reset);
			change("norm", "ul_cert", "wickeldraehte_selector", reset);
		}
	}

	function changeTraeger(suche_produktgruppe, reset) {
		if (suche_produktgruppe.options[1].selected == true) {
			change("ul_cert", "traeger", "klebebaender_selector", reset);
			change("waermeklasse", "traeger", "klebebaender_selector", reset);
		}
	}

	function changeEigenschaft(suche_produktgruppe, reset) {
		if (suche_produktgruppe.options[3].selected == true) {
			change("waermeklasse", "eigenschaft", "schlaeuche_selector", reset);
		}
	}

	function changeNorm(suche_produktgruppe, reset) {
		if (suche_produktgruppe.options[8].selected == true) {
			change("waermeklasse", "norm", "wickeldraehte_selector", reset);
			change("ul_cert", "norm", "wickeldraehte_selector", reset);
		}
	}

	function disableIE() {
		// Disabled options fix for Internet Explorer
		  $('select').each(function(){
		    this.rejectDisabled = function(){
		      if (this.options[this.selectedIndex].disabled){
		        if (this.lastSelectedIndex) {
		          this.selectedIndex = this.lastSelectedIndex;
		        } else {
		          var first_enabled = $(this).children('option:not(:disabled)').get(0);
		          this.selectedIndex = first_enabled ? first_enabled.index : 0;
		        }
		      } else {
		        this.lastSelectedIndex = this.selectedIndex;
		      }
		    };
		    this.rejectDisabled();
		    this.lastSelectedIndex = this.selectedIndex;
		    $(this).children('option[disabled]').each(function(){
		      $(this).css('color', '#CCC');
		    });
		    // Wiedereinblenden von reaktivierten Options
		    $(this).children('option:not(:disabled)').each(function(){
		    	$(this).css('color', '#000');
		    });
		    $(this).change(function() {
		      this.rejectDisabled();
		    });
		  });
	}
	
    $().ready(function() {
    	var suche_produktgruppe = document.getElementById("suche_produktgruppe");
    	var ul_selector = document.getElementById("ul_cert");
    	var waermeklasse = document.getElementById("waermeklasse");
    	var staerken = document.getElementById("staerken");
    	var normen = document.getElementById("normen");
    	var gruppen = document.getElementById("gruppen");
    	var traeger = document.getElementById("traeger");
    	var bemessung = document.getElementById("bemessung");
    	var strombelastung = document.getElementById("strombelastung");
    	var eigenschaft = document.getElementById("eigenschaft");

    	document.getElementById("material").options[0].selected = true;
		document.getElementById("ul_cert").options[0].selected = true;
		document.getElementById("waermeklasse").options[0].selected = true;
		document.getElementById("traeger").options[0].selected = true;
		document.getElementById("eigenschaft").options[0].selected = true;
		document.getElementById("strombelastung").options[0].selected = true;
		document.getElementById("norm").options[0].selected = true;

    	if (suche_produktgruppe.options[0].selected == false) {
    		changeAll(suche_produktgruppe);
    		disableIE()
    	}
    	
		if ($("#suche_produktgruppe option[@selected]").attr('value') == 'null'){
			$("div.suche").hide();
			disableIE()
		} else	{
			$("div.suche").hide();
			$("select#suche_produktgruppe").change();
			disableIE()
		}
		
		$("#suche_produktgruppe").change(function() {
			// Alles zurücksetzen
			document.getElementById("material").options[0].selected = true;
			document.getElementById("ul_cert").options[0].selected = true;
			document.getElementById("waermeklasse").options[0].selected = true;
			document.getElementById("traeger").options[0].selected = true;
			document.getElementById("eigenschaft").options[0].selected = true;
			document.getElementById("strombelastung").options[0].selected = true;
			document.getElementById("norm").options[0].selected = true;
			changeAll(suche_produktgruppe);
			disableIE()
		});
		
		$("#waermeklasse").change(function() {
			changeWaermeklasse(suche_produktgruppe, true);
			if (suche_produktgruppe.options[1].selected == true) {
				if (document.getElementById("traeger").options[0].selected == false) {
					changeTest("ul_cert", "traeger", "waermeklasse", "klebebaender_selector", true);
				}
				if (document.getElementById("ul_cert").options[0].selected == false) {
					changeTest("traeger", "ul_cert", "waermeklasse", "klebebaender_selector", true);
				}
				if (document.getElementById("ul_cert").options[0].selected == true && document.getElementById("traeger").options[0].selected == true) {
					changeWaermeklasse(suche_produktgruppe, true);
				}
			}
			if (suche_produktgruppe.options[2].selected == true) {
				if (document.getElementById("material").options[0].selected == false) {
					changeTest("ul_cert", "material", "waermeklasse", "hidden_selector", true);
				}
				if (document.getElementById("ul_cert").options[0].selected == false) {
					changeTest("material", "ul_cert", "waermeklasse", "hidden_selector", true);
				}
				if (document.getElementById("ul_cert").options[0].selected == true && document.getElementById("material").options[0].selected == true) {
					changeWaermeklasse(suche_produktgruppe, true);
				}
			}
			if (suche_produktgruppe.options[8].selected == true) {
				if (document.getElementById("norm").options[0].selected == false) {
					changeTest("ul_cert", "norm", "waermeklasse", "wickeldraehte_selector", true);
				}
				if (document.getElementById("ul_cert").options[0].selected == false) {
					changeTest("norm", "ul_cert", "waermeklasse", "wickeldraehte_selector", true);
				}
				if (document.getElementById("ul_cert").options[0].selected == true && document.getElementById("norm").options[0].selected == true) {
					changeWaermeklasse(suche_produktgruppe, true);
				}
			}
			if (suche_produktgruppe.options[3].selected == true || suche_produktgruppe.options[4].selected == true || suche_produktgruppe.options[5].selected == true) {
				changeWaermeklasse(suche_produktgruppe, true);
			}
			disableIE()
		});
		$("#material").change(function() {
			changeMaterial(suche_produktgruppe, true);
			if (suche_produktgruppe.options[2].selected == true) {
				if (document.getElementById("waermeklasse").options[0].selected == false) {
					changeTest("ul_cert", "waermeklasse", "material", "hidden_selector", true);
				}
				if (document.getElementById("ul_cert").options[0].selected == false) {
					changeTest("waermeklasse", "ul_cert", "material", "hidden_selector", true);
				}
				if (document.getElementById("ul_cert").options[0].selected == true && document.getElementById("waermeklasse").options[0].selected == true) {
					changeMaterial(suche_produktgruppe, true);
				}
			}
			disableIE()
		});
		$("#ul_cert").change(function() {
			changeUlCert(suche_produktgruppe, true);
			if (suche_produktgruppe.options[1].selected == true) {
				if (document.getElementById("traeger").options[0].selected == false) {
					changeTest("waermeklasse", "traeger", "ul_cert", "klebebaender_selector", true);
				}
				if (document.getElementById("waermeklasse").options[0].selected == false) {
					changeTest("traeger", "ul_cert", "waermeklasse", "klebebaender_selector", true);
				}
				if (document.getElementById("ul_cert").options[0].selected == true && document.getElementById("waermeklasse").options[0].selected == true) {
					changeUlCert(suche_produktgruppe, true);
				}
			}
			if (suche_produktgruppe.options[2].selected == true) {
				if (document.getElementById("waermeklasse").options[0].selected == false) {
					changeTest("material", "waermeklasse", "ul_cert", "hidden_selector", true);
				}
				if (document.getElementById("material").options[0].selected == false) {
					changeTest("waermeklasse", "ul_cert", "material", "hidden_selector", true);
				}
				if (document.getElementById("material").options[0].selected == true && document.getElementById("waermeklasse").options[0].selected == true) {
					changeUlCert(suche_produktgruppe, true);
				}
			}
			if (suche_produktgruppe.options[8].selected == true) {
				if (document.getElementById("waermeklasse").options[0].selected == false) {
					changeTest("norm", "waermeklasse", "ul_cert", "wickeldraehte_selector", true);
				}
				if (document.getElementById("norm").options[0].selected == false) {
					changeTest("waermeklasse", "ul_cert", "norm", "wickeldraehte_selector", true);
				}
				if (document.getElementById("norm").options[0].selected == true && document.getElementById("waermeklasse").options[0].selected == true) {
					changeUlCert(suche_produktgruppe, true);
				}
			}
			if (suche_produktgruppe.options[4].selected == true || suche_produktgruppe.options[5].selected == true) {
				changeUlCert(suche_produktgruppe, true);
			}
			disableIE()
		});
		$("#traeger").change(function() {
			changeTraeger(suche_produktgruppe, true);
			if (suche_produktgruppe.options[1].selected == true) {
				if (document.getElementById("ul_cert").options[0].selected == false) {
					changeTest("waermeklasse", "traeger", "ul_cert", "klebebaender_selector", true);
				}
				if (document.getElementById("waermeklasse").options[0].selected == false) {
					changeTest("ul_cert", "traeger", "waermeklasse", "klebebaender_selector", true);
				}
				if (document.getElementById("ul_cert").options[0].selected == true && document.getElementById("waermeklasse").options[0].selected == true) {
					changeTraeger(suche_produktgruppe, true);
				}
			}
			disableIE()
		});
		$("#eigenschaft").change(function() {
			changeEigenschaft(suche_produktgruppe, true);
			disableIE()
		});
		$("#norm").change(function() {
			changeNorm(suche_produktgruppe, true);
			if (suche_produktgruppe.options[8].selected == true) {
				if (document.getElementById("waermeklasse").options[0].selected == false) {
					changeTest("ul_cert", "waermeklasse", "norm", "wickeldraehte_selector", true);
				}
				if (document.getElementById("ul_cert").options[0].selected == false) {
					changeTest("waermeklasse", "ul_cert", "norm", "wickeldraehte_selector", true);
				}
				if (document.getElementById("ul_cert").options[0].selected == true && document.getElementById("waermeklasse").options[0].selected == true) {
					changeNorm(suche_produktgruppe, true);
				}
			}
			disableIE()
		});
    });