  ajaxRequest = function(url,func,method,body,headers,sync) {
    this.url       = url; 
    this.wState    = func    || function() { };
    this.method    = method  || "GET";
    this.body      = body    || null;
    this.headers   = headers || false;
    this.sync      = sync    || true;
    this.abortReq  = false;
    this.req       = (window.XMLHttpRequest)? new XMLHttpRequest() : ((window.ActiveXObject)? new ActiveXObject("Microsoft.XMLHttp") : false);
    this.doRequest = function() {
      this.req.open(this.method,this.url,this.sync);
      if (this.headers) {
        for (var i = 0; i < this.headers.length; i += 2) {
          this.req.setRequestHeader(this.headers[i],this.headers[i+1]);
        } 
      } 
      this.req.onreadystatechange = this.wState;
      this.req.send(this.body);
    }
  }
  
  function showBox(id0,id1) {
    document.getElementById(id1).style.display = 'block';
    document.getElementById(id0).style.backgroundColor = '#AAAAAA';
    document.getElementById(id0).style.fontWeight = 'bold';  
  }
  
  function hideBox(id0,id1) {
    document.getElementById(id1).style.display = 'none';
    document.getElementById(id0).style.backgroundColor = 'transparent';
    document.getElementById(id0).style.fontWeight = 'normal';  
    if (document.getElementById('all_options').style.display == 'inline') {
    	redrawOptions();
    }
  }

  function changeCaption(target,item,type) {
    var id3 = target + "-3";
    var idall = target + "-all";
    var new_items = new Array();
    var exists = 0;
    var text   = document.getElementById(id3).innerHTML;
    if (text) {
      var items = text.split(', ');
      for (var k = 0; k < items.length; k++) {
        if (items[k] == item && type == "checkbox") {
          exists = 1;
        } else if (type == "checkbox") {
          new_items.push(items[k]);
        }
      }
    } 
    if (exists == 0) {
      new_items.push(item);
    }
    var new_text = '';
    //if (new_items.length > 0 && new_items[0] != "") {
    //  new_text = new_text + ": ";
    //}
    for (var k = 0; k < new_items.length; k++) {
      if (k > 0) {
        new_text = new_text + ", ";
      } 
      new_text = new_text + new_items[k];
    }
    document.getElementById(id3).innerHTML = new_text;
    if (new_text == '') {
      document.getElementById(id3).style.dispay = 'none';
      document.getElementById(idall).style.display = '';
    } else {
      document.getElementById(idall).style.display = 'none';    
      document.getElementById(id3).style.display = 'inline';
    }
  }
  
  function hideAll(id) {
    var i = 1;
    while (obj = document.getElementById("div" + i + "-0")) {
      var id0 = "div" + i + "-0";
      var id1 = "div" + i + "-1";
      if (document.getElementById(id0) && id0 != id) {
        hideBox(id0,id1);
      }
      i++;
    } 
  }
  
function query(target,statement) {
    var id0 = target + "-0";
    var id1 = target + "-1";
    hideAll(id0);
    if (document.getElementById(id1).style.display == 'none') {
      showBox(id0,id1);
    } else {
      hideBox(id0,id1);
    }    
    if (!document.getElementById(id1).innerHTML) {
        /* check for etf */
        if( document.getElementById('etf') ) {
            statement += "&type=etf";
        }
      var ajax = new ajaxRequest("/ajax/fondsfilter/loader.php?id="+statement,
        function() {
          if (ajax.req.readyState == 4) {
            document.getElementById(id1).innerHTML = ajax.req.responseText;
          }
        }
      );
      ajax.doRequest();
    }    
  }        

	function hideAllCategories() {
    var i = 0;
		while (tr = document.getElementById("cat"+i)) {
			tr.style.display = 'none';
			document.getElementById("space"+i).style.display = 'none';
			i++;
		}
		document.getElementById('all_options').style.display = 'inline';
	}

	function hideEntireOption(target) {
    var id0 = target + "-0";
    document.getElementById(id0).style.display = 'none';
	}

	function redrawOptions() {
    var i = 1;
    var hl = 0;
	  while (opt = document.getElementById("div"+i+"-0")) {	    
			if (opt.style.display != 'none') {
		  	if (hl == 0) {
		  	  opt.style.backgroundColor = '#FFFFFF';
		  	  hl = 1;
		  	} else {
		  		opt.style.backgroundColor = '#EEEEEE';
		  		hl = 0;
		  	}
		  }
	  	i++;
	  }		
	}
	
	function showAllOptions() {
		hideAll();
    var i = 0;
    var y = 1;
    var hl = 0;
		while (tr = document.getElementById("cat"+i)) {
			tr.style.display = '';
			var subs = document.getElementById("cat"+i+"-1").title;
      hl = 0;
			document.getElementById("space"+i).style.display = '';						
			for (a = 0; a < subs; a++) {
				opt = document.getElementById("div"+y+"-0");
		  	if (hl == 0) {
		  	  opt.style.backgroundColor = '#FFFFFF';
		  	  hl = 1;
		  	} else {
		  		opt.style.backgroundColor = '#EEEEEE';
		  		hl = 0;
		  	}
				opt.style.display = 'block';
				y++;
			}
			i++;
		}
		document.getElementById('all_options').style.display = 'none';
	}

	function submitForm() {
		document.getElementById('help_text').style.display='none';
		document.getElementById('help_switch').style.display='';
    hideAll();
		hideAllCategories();
    var i = 1;
    var query_string = "";
	  while (document.getElementById("div"+i+"-0")) {	    
      var y = 0;
      var values = "";
      var name = "";
      while (obj = document.getElementById(i+"-"+y)) {
        if (obj.checked) {
          name = obj.name;
          if (values) {
            values += ",";
          }
          values += obj.value;
        }
        y++;
      }
      if (name) {
	      if (query_string) {
	        query_string += "&";
	      }
        query_string += name + "=" + values; 
      } else {
        hideEntireOption("div"+i);
      }
	    i++;
	  }
	  redrawOptions();
          /* check for etf */
          if( document.getElementById('etf') ) {
              query_string += "&type=etf";
          }
	  loadResults(query_string);
	}
	
	function loadResults(query_string) {
    document.getElementById("div-error").style.display='none';
		document.getElementById('loading_gif').style.display='';
		var button = document.getElementById("start_search");
		button.value = "Bitte warten...";
		button.disabled = true;
	  if (obj = document.getElementById('caption')) {
	    obj.innerHTML = '<span style="color:yellow">Bitte warten...</span>';
	  }
	  var ajax = new ajaxRequest("/ajax/fondsfilter/result.php?" + query_string,
  	  function() {
	      if (ajax.req.readyState == 4) {
	   		  var button = document.getElementById("start_search");
	      	if (ajax.req.status == 200) {
		        document.getElementById("div-result").innerHTML = ajax.req.responseText;
				    button.value = "Aktualisieren";
					} else {
		        document.getElementById("div-error").style.display='';
		        document.getElementById("div-result").innerHTML='';
						button.value = "Aktualisierung wiederholen";						
					}
			 		button.disabled = false;	        
					document.getElementById('loading_gif').style.display='none';			 		
	      }
	    }
	  );
	  ajax.doRequest();    
	}
	

