function AjaxManager() {
  function HTTPObject() {
    var xmlHttp;
    
    this.init = function() {
      try {
        // Mozilla, Opera, Safari sowie Internet Explorer (ab v7)
        xmlHttp = new XMLHttpRequest();
      } catch(e) {
        try {
          // MS Internet Explorer (ab v6)
          xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
        } catch(e) {
          try {
            // MS Internet Explorer (ab v5)
            xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
          } catch(e) {
            xmlHttp  = null;
          }
        }
      }
    };
    
    this.post = function(url, data, response) {
      xmlHttp.open("POST", url);
      xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      xmlHttp.onreadystatechange = function() {
        if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {
          response(xmlHttp.responseText);
        }
      };
      xmlHttp.send(data);
    };
    
    this.init();
  };
  
  this.post = function(url, data, response) {
    var ajax = new HTTPObject();
    var query = "";
    var i;
    
    for(i in data) {
      if(query) {
        query += "&";
      }
      query += i + "=" + data[i];
    }
    
    ajax.post(url, query, response);
  }
}

var ajax = new AjaxManager();

function loadSO(pid, caturl, purl, backend) {
  ajax.post("/ajax/angebote.php", {pid: pid, caturl: caturl, purl: purl, backend: backend}, function(data) {
    document.getElementById("so").innerHTML = data;
  });
}

function loadT(pid, caturl, purl, backend) {
  ajax.post("/ajax/tests.php", {pid: pid, caturl: caturl, purl: purl, backend: backend}, function(data) {
    document.getElementById("lt").innerHTML = data;
  });
}

function loadTBNL(pid, data) {
  ajax.post("/ajax/testsBoxNL.php", {pid: pid, data: data}, function(data) {
    document.getElementById("tbnl").innerHTML = data;
  });
}

function loadMNG(pid, mfanzeige) {
  ajax.post("/ajax/meinungenNeuBox.php", {pid: pid, mfanzeige: mfanzeige}, function(data) {
    document.getElementById("mng").innerHTML = data;
  });
}

function loadM(pid, caturl, purl, backend) {
  ajax.post("/ajax/meinungen.php", {pid: pid, caturl: caturl, purl: purl, backend: backend}, function(data) {
    document.getElementById("lm").innerHTML = data;
  });
}

function loadAM(pid, caturl, purl, backend) {
  ajax.post("/ajax/meinungenAmazon.php", {pid: pid, caturl: caturl, purl: purl, backend: backend}, function(data) {
    document.getElementById("am").innerHTML = data;
  });
}

function loadPC(pid, caturl, purl, backend) {
  ajax.post("/ajax/proContra.php", {pid: pid, caturl: caturl, purl: purl, backend: backend}, function(data) {
    document.getElementById("procons").innerHTML = data;
  });
}

function removeCSSClass(element, klasse) {
  if(!element) {
    return false;
  }
  
  var i;
  var cssKlassen = element.className.split(" ");
  var newClasses = "";
  
  for(i in cssKlassen) {
    if(cssKlassen[i] == klasse) {
      continue;
    }
    
    if(newClasses) {
      newClasses += " ";
    }
    
    newClasses += cssKlassen[i];
  }
  
  element.className = newClasses;
}

function addCSSClass(element, klasse) {
  if(!element) {
    return false;
  }
  
  var i;
  var cssKlassen = element.className.split(" ");
  var vorhanden = false;
  
  for(i in cssKlassen) {
    if(cssKlassen[i] == klasse) {
      vorhanden = true;
      break;
    }
  }
  
  if(!vorhanden) {
    if(element.className) {
      klasse = " " + klasse;
    }
    
    element.className += klasse;
  }
}

function testsProConsLesen(anzeigen, i) {
  if(anzeigen) {
    removeCSSClass(document.getElementById("box_procons_" + i), "beschreibung_dn");
    removeCSSClass(document.getElementById("box_details_" + i), "beschreibung_dn");
    
    addCSSClass(document.getElementById("pc_link_" + i), "beschreibung_dn");
    removeCSSClass(document.getElementById("pc_link2_" + i), "beschreibung_dn");
  } else {
    addCSSClass(document.getElementById("box_procons_" + i), "beschreibung_dn");
    addCSSClass(document.getElementById("box_details_" + i), "beschreibung_dn");
    
    removeCSSClass(document.getElementById("pc_link_" + i), "beschreibung_dn");
    addCSSClass(document.getElementById("pc_link2_" + i), "beschreibung_dn");
  }
}

function goToIrgendwo(url) {
  location.href = atob(url);
}

function submitForm(id) {
  document.getElementById(id).submit();
}

function deleteeMailValue() {
  var element = document.getElementById("emailNL");
  
  if(element.value == "ihre eMail-Adresse" && element.style.color == "rgb(204, 204, 204)") { // "#CCCCCC"
    element.value = "";
    element.style.color = "";
  }
}

function seteMailValue() {
  var element = document.getElementById("emailNL");
  
  if(element.value == "") {
    element.value = "ihre eMail-Adresse";
    element.style.color = "#CCCCCC";
  }
}

function pruefeMailForm() {
  var element = document.getElementById("emailNL");
  
  if(element.value == "ihre eMail-Adresse" && element.style.color == "rgb(204, 204, 204)") { // "#CCCCCC"
    element.value = "";
  }
}

function showBeschreibung() {
  removeCSSClass(document.getElementById("tabTests"), "tabselect");
  addCSSClass(document.getElementById("tabBeschreibung"), "tabselect");
  removeCSSClass(document.getElementById("beschreibungBox"), "beschreibung_dn");
}

window.onload = function() {
  if(location.hash == "#beschreibung") {
    showBeschreibung();
  }
  
  if(document.getElementById("tabBeschreibung")) {
    document.getElementById("l_weiter").onclick = function() {
      showBeschreibung();
    };
    
    var links = document.getElementById("tabBeschreibung").getElementsByTagName("a");
    var i;
    
    for(i = 0; i < links.length; i++) {
      links[i].onclick = function() {
        showBeschreibung();
      };
    }
  }
};
