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(setProductSearchEvents);
    
    function setProductSearchEvents() {
            
    	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();
                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()
        });
		
        $('#suchelinks, #sucherechts').find('form').each(function() {
                
                $.event.add(this, 'submit', function() {
                                
                        var data = $(this).serializeArray();
                        var postData = {};
                        var i = null;
                        
                        for(i in data)
                                postData[data[i].name] = data[i].value;
                        
                        var prevCursor = document.documentElement.style.cursor; 
                        
                        document.documentElement.style.cursor = 'wait';
                        
                        $.post($(this).attr('action'), postData, function(html) {
                                
                                $('#content #suchelinks').prevAll().remove();
                                
                                var newHTML = $(html);
                                
                                newHTML.find('script').remove();
                                newHTML.find('#content #suchelinks').prevAll().each(function() {
                                        $('#content').prepend(this);
                                });
                                
                                document.documentElement.style.cursor = prevCursor;
                                
                        });
                        
                        return false;
                
                });
             
        });
    
    }
