//------------------------------------------------------------------------------
// declareation of global variables
//------------------------------------------------------------------------------
var clArr = new Array();
var prjFoundArrayTemp;
var partserver;
var root;
var ROWSSHOWN = 6;
var prjStart = 0;
var prjShown = ROWSSHOWN;

    
function getVarValue(string, variable) {
  var temp = string;
  regExp = new RegExp(variable, "i");
  var pos = temp.search(regExp);
  if(pos != -1) {
    temp = temp.substring(pos, temp.length);
    pos = temp.search(/@@/);
    if(pos != -1)
      temp = temp.substring(0, pos);
    else
      temp = temp.substring(0, temp.length);
    pos = temp.search(/=/);
    temp = temp.substring(pos+1, temp.length);
    return temp;
  } 
  else
    return "NO_VARIABLE";
}

//------------------------------------------------------------------------------
// search for items which match the parameters
//------------------------------------------------------------------------------
function clampAllSearch() {
  deselectAll();
  // declaration of local variables
  prjStart = 0;
  prjShown = ROWSSHOWN;
  
  var sortValue = 0;
  
  var param1, param2, param2b, param3, param4, param5, param6, param7, param7b;
  param1 = param2 = param2b = param3 = param4 = param5 = param6 = param7 = param7b = "";
  
  var pBool1, pBool2, pBool3, pBool4, pBool5, pBool6, pBool7, pBool8, pBool9, pBool10, pBool11;
  pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool7 = pBool8 = pBool9 = pBool10 = pBool11 = 0;
  
  var clampsFoundArray = new Array();
  var prjCounter = 0;
  
  param1 = document.getElementById("sHers").value;
  param2 = document.getElementById("wTyp").value;
  param2b = "\\b" + param2 + "\\b"; // phst 11.12.
  param2b = new RegExp(param2b); // phst 11.12.
  param3 = document.getElementById("sGroesse").value;
  param4 = document.getElementById("wGroesse").value;
  param5 = document.getElementById("haltekraft").value;
  param7 = document.getElementById("sTyp").value;
  if(param7.search(/\(/) != -1) { //phst 10.12.
    param7b = param7.replace(/\(/, "\\(");
    param7b = param7b.replace(/\)/, "\\)");
  } else //phst 10.12.
    param7b = "\\b" + param7 + "\\b";
  
  param7b = new RegExp(param7b);
  param6 = document.getElementById("kTyp").value;
  param6 = param6.replace(/ /g, "");
  var reg = new RegExp(param6, "i");
  
  // search all tables, rows and cells for items which match the parameters
  for(var i = 0; i < clArr.length; i++) {
    var table = clArr[i].tabArray;
    for(var j = 0; j < table.length; j++) {
      var colArr = getKeyValuePairs(table[j].rowValues);
    
      var pneumatischChecked, hydraulischChecked, elektrischChecked, manuellChecked, federChecked;
      pneumatischChecked = hydraulischChecked = elektrischChecked = manuellChecked = federChecked = 0;
      
      if(document.getElementById('version0').checked == true) {
        pneumatischChecked = 1;
        if(clArr[i].normNumber.search(/pneumatisch/i) != -1)
          pBool7 = 1;
      }
      if(document.getElementById('version1').checked == true) {
        hydraulischChecked = 1;
        if (clArr[i].normNumber.search(/hydraulisch/i) != -1)
          pBool8 = 1;
      }
      if(document.getElementById('version2').checked == true) {
        elektrischChecked = 1;
        if (clArr[i].normNumber.search(/elektrisch/i) != -1)
          pBool9 = 1;
      }
      if(document.getElementById('version3').checked == true) {
        manuellChecked = 1;
        if (clArr[i].normNumber.search(/manuell/i) != -1)
          pBool11 = 1;
      }
      if(document.getElementById('springBrake').checked == true) {
        federChecked = 1;
        if (clArr[i].normNumber.search(/feder/i) != -1)
          pBool10 = 1;
      }
      
      var cBool1, cBool2, cBool3, cBool4;
      cBool1 = cBool2 = cBool3 = cBool4 = 0;  
      
      // search cells if they match the parameters
      for(var k = 0; k < colArr.length; k++) {
        if(colArr[k].varName == "SCHIENHERS")
          cBool1 = 1;
        if(colArr[k].varName == "WAGENTYP")
          cBool2 = 1;
        if(colArr[k].varName == "HALTEKRAFT" || colArr[k].varName == "HALTKRMKR" || colArr[k].varName == "HALTKRMKRS" || colArr[k].varName == "HALTKRMKS")
          cBool3 = 1;
        if(colArr[k].varName == "SCHIENTYP")
          cBool4 = 1;
        if(colArr[k].varName == "SCHIENHERS" && (param1 == railProducer || param1 == "" || colArr[k].varValue.search(param1) != -1))
          pBool1 = 1;
        if(colArr[k].varName == "SCHIENTYP" && (param7 == railTypeText || param7 == "" || colArr[k].varValue.search(param7b) != -1)) //phst 10.12.
          pBool4 = 1;
        if(colArr[k].varName == "WAGENTYP" && (param2 == carriageTypeText || param2 == "" || colArr[k].varValue.search(param2b) != -1)) //phst 11.12.
          pBool2 = 1;
        
        // check if it's a cubic or round clamp  
        if(param3 != railSize) {
          if(colArr[k].varName == "GROESSE" && clArr[i].normNumber.search(/rund/i) == -1 && (param3 == railSize || param3 == "" || colArr[k].varValue == parseInt(param3)))
            pBool3 = 1;
        } else if(param4 != shaftSize) {
          if(colArr[k].varName == "GROESSE" && clArr[i].normNumber.search(/rund/i) != -1 && (param4 == shaftSize || param4 == "" || colArr[k].varValue.search(param4) != -1))
            pBool3 = 1;
        } else
          pBool3 = 1;
          
        if((colArr[k].varName == "HALTEKRAFT" || colArr[k].varName == "HALTKRMKR" || colArr[k].varName == "HALTKRMKRS" || colArr[k].varName == "HALTKRMKS") && (param5 == retentionForceInN || param5 == "" || (colArr[k].varValue >= (parseInt(param5)-parseInt(param5)*20/100)))) { // 07.01. anpl
          pBool5 = 1;
          sortValue = parseInt(colArr[k].varValue);
        }
        if(colArr[k].varName == "BESTELLNUM" && (param6 == articleNumber.replace(/ /g, "") || param6 == "" || colArr[k].varValue.search(reg) != -1))
          pBool6 = 1;
        
        // if parameters doesn't exist, set their booleans to 1  
        if(k == colArr.length - 1) {
          if (cBool1 == 0 && (param1 == railProducer || param1 == "")) // rail manufacturer
            pBool1 = 1;
          if (cBool2 == 0 && (param2 == carriageTypeText || param2 == "")) // type of carriage
            pBool2 = 1;
          if (cBool3 == 0 && (param5 == retentionForceInN || param5 == "")) // retention force
            pBool5 = 1;
          if (cBool4 == 0 && (param7 == railTypeText || param7 == "")) // type of rail
            pBool4 = 1;
        } 
        
        // if booleans 1 to 6 are true, check if they match with selected checkbox
        if(pBool1 == 1 && pBool2 == 1 && pBool3 == 1 && pBool4 == 1 && pBool5 == 1 && pBool6 == 1) {
          // [X] pneumatisch
          if(pneumatischChecked == 1 && hydraulischChecked == 0 && elektrischChecked == 0 && manuellChecked == 0 && federChecked == 0) {
            if(pBool7 == 1 && pBool8 == 0 && pBool9 == 0 && pBool11 == 0 && pBool10 == 0) {
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool7 = 0;
              break;
            }
          } // [X] hydraulisch
          else if(pneumatischChecked == 0 && hydraulischChecked == 1 && elektrischChecked == 0 && manuellChecked == 0 && federChecked == 0) {
            if(pBool7 == 0 && pBool8 == 1 && pBool9 == 0 && pBool11 == 0 && pBool10 == 0) {
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool8 = 0;
              break;
            }
          } // [X] elektrisch
          else if(pneumatischChecked == 0 && hydraulischChecked == 0 && elektrischChecked == 1 && manuellChecked == 0 && federChecked == 0) {
            if(pBool7 == 0 && pBool8 == 0 && pBool9 == 1 && pBool11 == 0 && pBool10 == 0) {
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool9 = 0;
              break;
            }
          } // [X] manuell
          else if(pneumatischChecked == 0 && hydraulischChecked == 0 && elektrischChecked == 0 && manuellChecked == 1 && federChecked == 0) {
            if(pBool7 == 0 && pBool8 == 0 && pBool9 == 0 && pBool11 == 1 && pBool10 == 0) {
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool11 = 0;
              break;
            }
          } // [X] Federspeicher
          else if(pneumatischChecked == 0 && hydraulischChecked == 0 && elektrischChecked == 0 && manuellChecked == 0 && federChecked == 1) {
            if(pBool7 == 0 && pBool8 == 0 && pBool9 == 0 && pBool11 == 0 && pBool10 == 1) {
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool10 = 0;
              break;
            }
          } // [X] pneumatisch [X] hydraulisch 
          else if((pneumatischChecked == 1 || hydraulischChecked == 1) && elektrischChecked == 0 && manuellChecked == 0 && federChecked == 0) {
            if((pBool7 == 1 || pBool8 == 1) && pBool9 == 0 && pBool11 == 0 && pBool10 == 0) {
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool7 = pBool8 = 0;
              break;
            }
          } // [X] pneumatisch [X] elektrisch
          else if((pneumatischChecked == 1 || elektrischChecked == 1) && hydraulischChecked == 0 && manuellChecked == 0 && federChecked == 0) {
            if((pBool7 == 1 || pBool9 == 1) && pBool8 == 0 && pBool11 == 0 && pBool10 == 0) {
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool7 = pBool9 = 0;
              break;
            }
          } // [X] pneumatisch [X] manuell
          else if((pneumatischChecked == 1 || manuellChecked == 1) && hydraulischChecked == 0 && elektrischChecked == 0 && federChecked == 0) {
            if((pBool7 == 1 || pBool11 == 1) && pBool8 == 0 && pBool9 == 0 && pBool10 == 0) {
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool7 = pBool11 = 0;
              break;
            }
          } // [X] pneumatisch [X] Federspeicher 
          else if(pneumatischChecked == 1 && hydraulischChecked == 0 && elektrischChecked == 0 && manuellChecked == 0 && federChecked == 1) {
            if(pBool7 == 1 && pBool8 == 0 && pBool9 == 0 && pBool11 == 0 && pBool10 == 1) {
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool7 = pBool10 = 0;
              break;
            }
          } // [X] hydraulisch [X] elektrisch
          else if(pneumatischChecked == 0 && (hydraulischChecked == 1 || elektrischChecked == 1) && manuellChecked == 0 && federChecked == 0) {
            if(pBool7 == 0 && (pBool8 == 1 || pBool9 == 1) && pBool11 == 0 && pBool10 == 0) {
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool8 = pBool9 = 0;
              break;
            }
          } // [X] hydraulisch [X] manuell
          else if(pneumatischChecked == 0 && (hydraulischChecked == 1 || manuellChecked == 1) && elektrischChecked == 0 && federChecked == 0) {
            if(pBool7 == 0 && (pBool8 == 1 || pBool11 == 1) && pBool9 == 0 && pBool10 == 0) {
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool8 = pBool11 = 0;
              break;
            }
          } // [X] hydraulisch [X] Federspeicher
          else if(pneumatischChecked == 0 && hydraulischChecked == 1 && elektrischChecked == 0 && manuellChecked == 0 && federChecked == 1) {
            if(pBool7 == 0 && pBool8 == 1 && pBool9 == 0 && pBool11 == 0 && pBool10 == 1) { 
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool8 = pBool10 = 0;
              break;
            }
          } // [X] elektrisch [X] manuell
          else if(pneumatischChecked == 0 && hydraulischChecked == 0 && (elektrischChecked == 1 || manuellChecked == 1) && federChecked == 0) {
            if(pBool7 == 0 && pBool8 == 0 && (pBool9 == 1 || pBool11 == 1) && pBool10 == 0) { 
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool9 = pBool11 = 0;
              break;
            }
          } // [X] elektrisch [X] Federspeicher
          else if(pneumatischChecked == 0 && hydraulischChecked == 0 && elektrischChecked == 1 && manuellChecked == 0 && federChecked == 1) {
            if(pBool7 == 0 && pBool8 == 0 && pBool9 == 1 && pBool11 == 0 && pBool10 == 1) { 
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool9 = pBool10 = 0;
              break;
            }
          } // [X] manuell [X] Federspeicher
          else if(pneumatischChecked == 0 && hydraulischChecked == 0 && elektrischChecked == 0 && manuellChecked == 1 && federChecked == 1) {
            if(pBool7 == 0 && pBool8 == 0 && pBool9 == 0 && pBool11 == 1 && pBool10 == 1) { 
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool9 = pBool10 = 0;
              break;
            }
          } // [X]pneumatisch [X] hydraulisch [X] elektrisch
          else if((pneumatischChecked == 1 || hydraulischChecked == 1 || elektrischChecked == 1) && manuellChecked == 0 && federChecked == 0) {
            if((pBool7 == 1 || pBool8 == 1 || pBool9 == 1) && pBool11 == 0 && pBool10 == 0) { 
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool7 = pBool8 = pBool9 = 0;
              break;
            }
          } // [X]pneumatisch [X] hydraulisch [X] manuell
          else if((pneumatischChecked == 1 || hydraulischChecked == 1 || manuellChecked == 1) && elektrischChecked == 0 && federChecked == 0) {
            if((pBool7 == 1 || pBool8 == 1 || pBool11 == 1) && pBool09 == 0 && pBool10 == 0) { 
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool7 = pBool8 = pBool11 = 0;
              break;
            }
          } // [X]pneumatisch [X] hydraulisch [X] Federspeicher
          else if((pneumatischChecked == 1 || hydraulischChecked == 1) && elektrischChecked == 0 && manuellChecked == 0 && federChecked == 1) {
            if((pBool7 == 1 || pBool8 == 1) && pBool9 == 0 && pBool11 == 0 && pBool10 == 1) { 
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool7 = pBool8 = pBool10 = 0;
              break;
            }
          } // [X] pneumatisch [X] elektrisch [X] manuell
          else if((pneumatischChecked == 1 || elektrischChecked == 1 || manuellChecked == 1) && hydraulischChecked == 0 && federChecked == 0) {
            if((pBool7 == 1 || pBool9 == 1 || pBool11 == 1 ) && pBool8 == 0&& pBool10 == 0) { 
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool7 = pBool9 = pBool10 = 0;
              break;
            }
          } // [X] pneumatisch [X] elektrisch [X] Federspeicher
          else if((pneumatischChecked == 1 || elektrischChecked == 1) && hydraulischChecked == 0 && manuellChecked == 0 && federChecked == 1) {
            if((pBool7 == 1 || pBool9 == 1) && pBool8 == 0 && pBool11 == 0 && pBool10 == 1) { 
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool7 = pBool9 = pBool10 = 0;
              break;
            }
          } // [X] pneumatisch [X] manuell [X] Federspeicher
          else if((pneumatischChecked == 1 || manuellChecked == 1) && hydraulischChecked == 0 && elektrischChecked == 0 && federChecked == 1) {
            if((pBool7 == 1 || pBool11 == 1) && pBool8 == 0 && pBool9 == 0 && pBool10 == 1) { 
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool7 = pBool11 = pBool10 = 0;
              break;
            }
          } // [X] hydraulisch [X] elektrisch [X] manuell
          else if(pneumatischChecked == 0 && (hydraulischChecked == 1 || elektrischChecked == 1 || manuellChecked == 1) && federChecked == 0) {
            if(pBool7 == 0 && (pBool8 == 1 || pBool9 == 1 || pBool11 == 1) && pBool10 == 0) { 
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool8 = pBool9 = pBool11 = 0;
              break;
            }
          } // [X] hydraulisch [X] elektrisch [X] Federspeicher
          else if(pneumatischChecked == 0 && (hydraulischChecked == 1 || elektrischChecked == 1) && manuellChecked == 0 && federChecked == 1) {
            if(pBool7 == 0 && (pBool8 == 1 || pBool9 == 1) && pBool11 == 0 && pBool10 == 1) { 
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool8 = pBool9 = pBool10 = 0;
              break;
            }
          } // [X] hydraulisch [X] manuell [X] Federspeicher
          else if(pneumatischChecked == 0 && (hydraulischChecked == 1 || manuellChecked == 1) && elektrischChecked == 0 && federChecked == 1) {
            if(pBool7 == 0 && (pBool8 == 1 || pBool11 == 1) && pBool9 == 0 && pBool10 == 1) { 
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool8 = pBool11 = pBool10 = 0;
              break;
            }
          } // [X] elektrisch [X] manuell [X] Federspeicher
          else if(pneumatischChecked == 0 && hydraulischChecked == 0 && (manuellChecked == 1 || elektrischChecked == 1) && federChecked == 1) {
            if(pBool7 == 0 && pBool8 == 0 && (pBool11 == 1 || pBool9 == 1) && pBool10 == 1) { 
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool8 = pBool11 = pBool10 = 0;
              break;
            }
          } // [X]pneumatisch [X] hydraulisch [X] elektrisch [X] manuell
          else if((pneumatischChecked == 1 || hydraulischChecked == 1 || elektrischChecked == 1 || manuellChecked == 1) && federChecked == 0) {
            if((pBool7 == 1 || pBool8 == 1 || pBool9 == 1 || pBool11 == 1) && pBool10 == 0) { 
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool7 = pBool8 = pBool9 = pBool11 = 0;
              break;
            }
          } // [X]pneumatisch [X] elektrisch [X] manuell [X] Federspeicher
          else if((pneumatischChecked == 1 || manuellChecked == 1 || elektrischChecked == 1) && hydraulischChecked == 0 && federChecked == 1) {
            if((pBool7 == 1 || pBool11 == 1 || pBool9 == 1) && pBool8 == 0 && pBool10 == 1) { 
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool7 = pBool11 = pBool9 = pBool10 = 0;
              break;
            }
          } // [X]pneumatisch [X] hydraulisch [X] manuell [X] Federspeicher
          else if((pneumatischChecked == 1 || hydraulischChecked == 1 || manuellChecked == 1) && elektrischChecked == 0 && federChecked == 1) {
            if((pBool7 == 1 || pBool8 == 1 || pBool11 == 1) && pBool9 == 0 && pBool10 == 1) { 
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool7 = pBool8 = pBool11 = pBool10 = 0;
              break;
            }
          } // [X]manuell [X] hydraulisch [X] elektrisch [X] Federspeicher
          else if(pneumatischChecked == 0 && (hydraulischChecked == 1 || elektrischChecked == 1 || manuellChecked == 1) && federChecked == 1) {
            if((pBool11 == 1 || pBool8 == 1 || pBool9 == 1) && pBool7 == 0 && pBool10 == 1) { 
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool7 = pBool8 = pBool9 = pBool10 = 0;
              break;
            }
          } // [X]pneumatisch [X] hydraulisch [X] elektrisch [X] Federspeicher
          else if((pneumatischChecked == 1 || hydraulischChecked == 1 || elektrischChecked == 1) && manuellChecked == 0 && federChecked == 1) {
            if((pBool7 == 1 || pBool8 == 1 || pBool9 == 1) && pBool11 == 0 && pBool10 == 1) { 
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool7 = pBool8 = pBool9 = pBool10 = 0;
              break;
            }
          } // [X]pneumatisch [X] hydraulisch [X] elektrisch [X] manuell [X] Federspeicher
          else if((pneumatischChecked == 1 || hydraulischChecked == 1 || elektrischChecked == 1 || manuellChecked == 1) && federChecked == 1) {
            if((pBool7 == 1 || pBool8 == 1 || pBool9 == 1 || pBool11 == 1) && pBool10 == 1) { 
              var rowid = table[j].rowId;
              var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
              prjCounter++;
              pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool7 = pBool8 = pBool9 = pBool10 = pBool11 = 0;
              break;
            }
          } // no checkbox selected
          else {
            var rowid = table[j].rowId;
            var idNr = table[j].idNr;
              clampsFoundArray[prjCounter] = new foundObject(clArr[i].prjPath, clArr[i].prjName, clArr[i].prjPreview, clArr[i].normNumber, colArr, rowid, idNr, sortValue)
            prjCounter++;
            pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = 0;
            break;
          }
        } 
      }
      pBool1 = pBool2 = pBool3 = pBool4 = pBool5 = pBool6 = pBool7 = pBool8 = pBool9 = pBool10 = pBool11 = 0;
      pneumatischChecked = hydraulischChecked = elektrischChecked = manuellChecked = federChecked = 0;
    }
  }
  // if results where found. show them!
  if(prjCounter > 0) {
    sortFoundClamps(clampsFoundArray);
    showFoundClamps(clampsFoundArray, prjStart, prjShown);
    }
  else
    alert("Es wurden keine Klemmelemente gefunden, die den eingegebenen Werten entsprechen.");
}

//------------------------------------------------------------------------------
// sort found items by sort value
//------------------------------------------------------------------------------
function sortFoundClamps(array) {
  array.sort(sortBySortValue);
}

function sortBySortValue(a, b) {
  x = a.sortValue;
  y = b.sortValue;
  return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}

function doOpenProject(i)
{
  /* This function is necessary, because 'openProject' is a global function
     declared in 'commonfunctions.js'. These cannot be used as event handlers.
     The purpose of this function is to 'redirect' calls from the event handler
     to the function in 'commonfunctions.js'. */
  openProject(i);
}

//------------------------------------------------------------------------------
// show found items
//------------------------------------------------------------------------------
function showFoundClamps(clampsFoundArray, prjStart, prjShown) {
  removeTable();
  prjFoundArrayTemp = clampsFoundArray;
  partserver = document.partserverCheck.partserver.value;
  root = document.partserverCheck.root.value;
  
//------------------------------------------------------------------------------
// Create Table Header
//------------------------------------------------------------------------------
  var table = document.createElement("table");
  
  var tableId = document.createAttribute("id");
  tableId.nodeValue = "result";
  table.setAttributeNode(tableId);
  
  var cellspacing = document.createAttribute("cellspacing");
  cellspacing.nodeValue="0";
  table.setAttributeNode(cellspacing);
  
  var width = document.createAttribute("width");
  width.nodeValue="100%";
  table.setAttributeNode(width);
  
  var tbody = document.createElement("tbody");

  var startCol = 1;
    
  var colgroup = document.createElement("colgroup");

  // initialize column sizes  
  for(i = startCol; i < 8; i++) {
    var col = document.createElement("col");
    var width = document.createAttribute("width");
    
    if(i == 2 || i == 5)
      width.nodeValue = "80";
    else if(i == 3 || i == 4)
      width.nodeValue = "120";
    else if(i == 6)
      width.nodeValue = "150";
    else if(i == 7)
      width.nodeValue = "110";
      
    col.setAttributeNode(width);
    colgroup.appendChild(col);
  }
  
  table.appendChild(colgroup);
  
  // initialize first row with column names
  var headerRow = document.createElement("tr");
  
  var bgcolor = document.createAttribute("bgcolor");
  bgcolor.nodeValue = "#006699";
  headerRow.setAttributeNode(bgcolor);
  
  var textNode1 = document.createTextNode(article);
  var textNode2 = document.createTextNode(adapterplate);
  var textNode3 = document.createTextNode(version);
  var textNode4 = document.createTextNode(retentionForceN);
  var textNode5 = document.createTextNode(railProducer);
  var textNode6 = document.createTextNode(railTypeText);
  var textNode7 = document.createTextNode(size);
  var textNode8 = document.createTextNode(carriageTypeText);
  
  for(i = startCol; i < 10; i++) {
    var td = document.createElement("td");
    
    var align = document.createAttribute("align");
    align.nodeValue = "center";
    td.setAttributeNode(align);
    
    var font = document.createElement("font");
    
    var color = document.createAttribute("color");
    color.nodeValue = "white";
    font.setAttributeNode(color);
    
    td.appendChild(font);
    
    if(i > 1)
      eval("font.appendChild(textNode" + (i-1) + ")");
      
    headerRow.appendChild(td);
  }  
  tbody.appendChild(headerRow);
  
//------------------------------------------------------------------------------
// Create Table content
//------------------------------------------------------------------------------
  var bg = 1;
  
  // check for last page
  if(prjShown > clampsFoundArray.length)
    prjShown = clampsFoundArray.length;
  
  // create data rows  
  for(i = prjStart; i < prjShown; i++) {
    var tableRow = document.createElement("tr");
    
    var onclickProject = document.createAttribute("onclick");
    if(partserver == 0)
      onclickProject.nodeValue = "javascript:doOpenProject("+i+");";
    else
      onclickProject.nodeValue = "javascript:parent.setOrderFrame("+i+");";    
    tableRow.setAttributeNode(onclickProject);
    
    var bgColor = document.createAttribute("bgcolor");
    if (bg == 1) {
      bgColor.nodeValue = "#CCCCCC";
      bg *= -1;
    }
    else {
      bgColor.nodeValue = "#FFFFFF";
      bg *= -1;
    }

    if(i==iStaticOldIndex)
    {
      sStaticOldBgColor=bgColor.nodeValue;
      bgColor.nodeValue="#ffffcc"; // Highlight the row to be selected
    }
    tableRow.setAttributeNode(bgColor);
    // Create unique rowid
    var oRowid = document.createAttribute("id");
    oRowid.nodeValue=("tableRow"+i);
    tableRow.setAttributeNode(oRowid);

    var row = clampsFoundArray[i].colArr;
    
    openProjectLink(tableRow, i);
    
    // fill in the row values
    for(j = 0; j < 8; j++) {   
      // 1. column: article
      if(j == 0) {
        for(k = 0; k < row.length; k++) {
          if(row[k].varName == "BESTELLNUM"){
            if(row[k].varValue == "")
              fillCell(tableRow, "-");
            else
              fillCell(tableRow, row[k].varValue);
            break;
          }
        }
      } // 2. column: adapter plate
      else if(j == 1) {
        for(k = 0; k < row.length; k++) {
          if(row[k].varName == "ADAPTERPLA") {
            if(row[k].varValue == "")
              fillCell(tableRow, "-");
            else
              fillCell(tableRow, row[k].varValue);
            break;
          }
          if(k == row.length - 1 && row[k].varName != "ADAPTERPLA") {
            fillCell(tableRow, "-");
            break;
          }
        }
      } // 3. column: version
      else if(j == 2) {
        var cellValue = "";
        if(clampsFoundArray[i].normNumber.search(/pneumatisch/i) != -1)
          cellValue += pneumatic; // pneumatic
        if(clampsFoundArray[i].normNumber.search(/hydraulisch/i) != -1)
          cellValue += hydraulic; // hydraulic
        if(clampsFoundArray[i].normNumber.search(/elektrisch/i) != -1)
          cellValue += electric; // electric
        if(clampsFoundArray[i].normNumber.search(/feder/i) != -1)
          cellValue += withSpring; // with spring operating storage
        if(clampsFoundArray[i].normNumber.search(/manuell/i) != -1)
          cellValue += manually; // manually
          
        fillCell(tableRow, cellValue);
      } // 4. column: fixing power
      else if(j == 3) {
        for(k = 0; k < row.length; k++) {
          if(row[k].varName == "HALTEKRAFT" || row[k].varName == "HALTKRMKR" || row[k].varName == "HALTKRMKRS" || row[k].varName == "HALTKRMKS"){
            if(row[k].varValue == "")
              fillCell(tableRow, "-");
            else
              fillCell(tableRow, row[k].varValue);
            break;
          }
          if(k == row.length - 1 && (row[k].varName != "HALTEKRAFT" || row[k].varName != "HALTKRMKR" || row[k].varName != "HALTKRMKRS" || row[k].varName != "HALTKRMKS")) {
            fillCell(tableRow, "-");
            break;
          }
        }
      } // 5. column: producer of rail
      else if(j == 4) {
        for(k = 0; k < row.length; k++) {
          if(row[k].varName == "SCHIENHERS"){
            fillCell(tableRow, row[k].varValue);
            break;
          }
          if(k == row.length - 1 && row[k].varName != "SCHIENHERS") {
            fillCell(tableRow, "-");
            break;
          }
        }
      } // 6. column: type of rail
      else if(j == 5) {
        for(k = 0; k < row.length; k++) {
          if(row[k].varName == "SCHIENTYP"){
            fillCell(tableRow, row[k].varValue);
            break;
          }
          if(k == row.length - 1 && row[k].varName != "SCHIENTYP") {
            fillCell(tableRow, "-");
            break;
          }
        }
      } // 7. column: size
      else if(j == 6) {
        for(k = 0; k < row.length; k++) {
          if(row[k].varName == "GROESSE"){
            if(clampsFoundArray[i].normNumber.search(/rund/i) != -1)
              fillCell(tableRow, "Ø " + row[k].varValue + " mm");
            else
              fillCell(tableRow, row[k].varValue);
            break;
          }
          if(k == row.length - 1 && row[k].varName != "GROESSE") {
            fillCell(tableRow, "-");
            break;
          }
        }
      } // 8. column: type of carriage
      else if(j == 7) {
        for(k = 0; k < row.length; k++) {
          if(row[k].varName == "WAGENTYP"){
            fillCell(tableRow, row[k].varValue);
            break;
          }
          if(k == row.length - 1 && row[k].varName != "WAGENTYP") {
            fillCell(tableRow, "-");
            break;
          }
        }
      }
    }
    
    tbody.appendChild(tableRow);
  }  
  table.appendChild(tbody);
  document.getElementById("showResult").appendChild(table);
  
  // hide the search area and show the results area
  document.getElementById("search").style.visibility = "hidden";
  document.getElementById("showResult").style.visibility = "visible";
  
  backToSearch();
  previousPageClamps(clampsFoundArray);
  pageCounter(clampsFoundArray);
  nextPageClamps(clampsFoundArray);
}

//------------------------------------------------------------------------------
// Fill the table cells with the corresponding values
//------------------------------------------------------------------------------
function fillCell(tableRow, value) {
  var tableCol = document.createElement("td");
  var cellValue = document.createTextNode(value);
  
  var align = document.createAttribute("align");
  align.nodeValue = "center";
  tableCol.setAttributeNode(align);
  
  tableCol.appendChild(cellValue);
  tableRow.appendChild(tableCol);
}

//------------------------------------------------------------------------------
// add an item to the basket
//------------------------------------------------------------------------------
function toBasketLink(tableRow, index) {
  // create the "to Basket" link
  var tdBasket = document.createElement("td");
  var aBasket = document.createElement("a");
  
  var hrefBasket = document.createAttribute("href");
  hrefBasket.nodeValue = "javascript:toBasket("+index+")";
  aBasket.setAttributeNode(hrefBasket);
  
  // create the "to Basket" image
  var imgBasket = document.createElement("img");
  
  var srcBasket = document.createAttribute("src");
  srcBasket.nodeValue = root + "/guide/images/tobasket.jpg";
  imgBasket.setAttributeNode(srcBasket);
  
  deleteBorder(imgBasket);
  
  // add the link to the project row
  aBasket.appendChild(imgBasket);
  tdBasket.appendChild(aBasket);
  tableRow.appendChild(tdBasket);
}

//------------------------------------------------------------------------------
// get a preview of the selected item
//------------------------------------------------------------------------------
function previewLink(tableRow, index) {
  // create the "preview" link
  var tdPreview = document.createElement("td");
  var aPreview = document.createElement("a");
  
  var hrefPreview = document.createAttribute("href");
  hrefPreview.nodeValue = "javascript:preview("+index+")";
  aPreview.setAttributeNode(hrefPreview);
  
  // create the "preview" image
  var imgPreview = document.createElement("img");
  
  var srcPreview = document.createAttribute("src");
  srcPreview.nodeValue = root + "/guide/images/preview.gif";
  imgPreview.setAttributeNode(srcPreview);
  
  deleteBorder(imgPreview);
  
  // add the link to the project row
  aPreview.appendChild(imgPreview);
  tdPreview.appendChild(aPreview);
  tableRow.appendChild(tdPreview);
}

//------------------------------------------------------------------------------
// Create the link to get to the next page
//------------------------------------------------------------------------------
function nextPageClamps(clampsFoundArray) {
  if (prjShown < clampsFoundArray.length) {
    // create the next link
    var next = document.createElement("a");
    
    var hrefNext = document.createAttribute("href");
    hrefNext.nodeValue = "javascript:showNextClamps()";
    next.setAttributeNode(hrefNext);
    
    var id = document.createAttribute("id");
    id.nodeValue = "next";
    next.setAttributeNode(id);
    
    next.style.position = "absolute";
    next.style.left = "450px";
    next.style.top = iNaviTop + 'px';
        
    document.getElementById("showResult").appendChild(next);
    
    // create the next image
    var nextImg = document.createElement("img");
    
    var nextImgSrc = document.createAttribute("src");
    nextImgSrc.nodeValue = root + "/guide/images/next.gif";
    nextImg.setAttributeNode(nextImgSrc);
    
    deleteBorder(nextImg);
    
    document.getElementById("next").appendChild(nextImg);
  }
}

function showNextClamps() {
  // show the next page
  prjStart += ROWSSHOWN;
  prjShown += ROWSSHOWN;
  showFoundClamps(prjFoundArrayTemp, prjStart, prjShown);
}

//------------------------------------------------------------------------------
// Create the link to get to the previous page
//------------------------------------------------------------------------------
function previousPageClamps(clampsFoundArray) {
  if (prjShown > ROWSSHOWN) {
    // create the back link
    var back = document.createElement("a");
    
    var hrefBack = document.createAttribute("href");
    hrefBack.nodeValue = "javascript:showPreviousClamps()";
    back.setAttributeNode(hrefBack);
    
    var id = document.createAttribute("id");
    id.nodeValue = "back";
    back.setAttributeNode(id);
    
    back.style.position = "absolute";
    back.style.left = "300px";
    back.style.top = iNaviTop + 'px';
    
    document.getElementById("showResult").appendChild(back);
    
    // create the back image
    var backImg = document.createElement("img");
    
    var backImgSrc = document.createAttribute("src");
    backImgSrc.nodeValue = root + "/guide/images/back.gif";
    backImg.setAttributeNode(backImgSrc);
    
    deleteBorder(backImg);
    
    document.getElementById("back").appendChild(backImg);
  }
}

function showPreviousClamps() {
// show the previous page
  prjStart -= ROWSSHOWN;
  prjShown -= ROWSSHOWN;
  showFoundClamps(prjFoundArrayTemp, prjStart, prjShown);
}

//------------------------------------------------------------------------------
// show the search area and hide the results area
//------------------------------------------------------------------------------
function showSearch() {
  document.getElementById("showResult").style.visibility = "hidden";
  document.getElementById("orderFrame").style.visibility = "hidden";
  document.getElementById("2dPreviewSmall").style.visibility = "hidden";
  document.getElementById("3dPreview").style.visibility = "hidden";
  document.getElementById("theView").style.visibility = "hidden";
  document.getElementById("search").style.visibility = "visible";
}


//------------------------------------------------------------------------------
// data preparation for drop down menues
//------------------------------------------------------------------------------
    
var aProducers = new Array();

function producerO(prod, array) {
  this.producer = prod;
  this.rails = array;
}

function railTypeO(rail, array) {
  this.rail = rail;
  this.carriages = array;
}

function getProducers() {
  for(var i = 0; i < clArr.length; i++) {
    var rows = clArr[i].tabArray;
    for(var j = 0; j < rows.length; j++) {
      
      var values = rows[j].rowValues
      var producer = getVarValue(values, "Schienhers");
      
      
      var aRailTypes = new Array();
      var railtype = getVarValue(values, "Schientyp");
      if(railtype.search(/,/) != -1) {
        var temp = railtype.split(",");
        for(var k = 0; k < temp.length; k++) {
          aRailTypes[k] = new railTypeO(temp[k], getVarValue(values, "Wagentyp").split(","));
        }
      } else
        aRailTypes[0] = new railTypeO(railtype, getVarValue(values, "Wagentyp").split(","));
      
      var regExp = new RegExp("\\b"+producer+"\\b", "i");
      
      if(producer == "NO_VARIABLE")
        break;
      else if(aProducers.length == 0) {
        aProducers[0] = new producerO(producer, aRailTypes);
      }
      else {
        for(var k = 0; k < aProducers.length; k++) {
          if(aProducers[k].producer.search(regExp) != -1) {
            aProducers[k].rails = aProducers[k].rails.concat(aRailTypes);
            break;
          }
          else if(k == aProducers.length-1 && aProducers[k].producer.search(regExp) == -1) {
            aProducers[k+1] = new producerO(producer, aRailTypes);
            break;
          }
        }
      }
    }
  }
}

function prepareRails(aRailtypes) {
  for(var i = 0; i < aRailtypes.length-1; i++) {
    for(var j = i+1; j < aRailtypes.length; j++) {
      if(aRailtypes[j].rail == aRailtypes[i].rail) {
        aRailtypes[i].carriages = aRailtypes[i].carriages.concat(aRailtypes[j].carriages);
        aRailtypes.splice(j, 1);
        j--;
      }
    }
    prepareCarriages(aRailtypes[i].carriages);
  }
}

function prepareCarriages(aCarriages) {
  for(var i = 0; i < aCarriages.length-1; i++) {
    for(var j = i+1; j < aCarriages.length; j++) {
      if(aCarriages[j] == aCarriages[i]) {
        aCarriages.splice(j, 1);
        j--;
      }
    }
  }
}

function loadProducers() {
  for(var i = 0; i < aProducers.length; i++) {
    prepareRails(aProducers[i].rails);
    
    var option = document.createElement("option");
    option.value = aProducers[i].producer;
    option.appendChild(document.createTextNode(aProducers[i].producer));
    document.getElementById("sHers").appendChild(option);
  }
}

function loadRails() {
  deleteOptions('sTyp', railTypeText);
  var producer = document.getElementById("sHers").value;
  
  for(var i = 0; i < aProducers.length; i++) {
    if(aProducers[i].producer == producer) {
      var rails = aProducers[i].rails;
      for(var j = 0; j < rails.length; j++) {
        var option = document.createElement("option");
        option.value = rails[j].rail;
        option.appendChild(document.createTextNode(rails[j].rail));
        document.getElementById("sTyp").appendChild(option);
      }
      break;
    }
  }
  deleteOptions('wTyp', carriageTypeText);
}

function loadCarriages() {
  deleteOptions('wTyp', carriageTypeText);
  var producer = document.getElementById("sHers").value;
  var rail = document.getElementById("sTyp").value;
  
  for(var i = 0; i < aProducers.length; i++) {
    if(aProducers[i].producer == producer) {
      var rails = aProducers[i].rails;
      for(var j = 0; j < rails.length; j++) {
        if(rails[j].rail == rail) {
          var carriages = rails[j].carriages;
          for(var k = 0; k < carriages.length; k++) {
            var option = document.createElement("option");
            option.value = carriages[k];
            option.appendChild(document.createTextNode(carriages[k]));
            document.getElementById("wTyp").appendChild(option);
          }
          break;
        }
      }
      break;
    }
  }
}

function deleteOptions(id, text) {
  // delete the old menu
  var select = document.getElementById(id);
  if (select.hasChildNodes()) {
    while (select.childNodes.length >= 1)
      select.removeChild(select.firstChild);
  }
  // create the default option
  var option = document.createElement("option");
  option.id = text;
  option.appendChild(document.createTextNode(text));
  var selected = document.createAttribute("selected");
  option.setAttributeNode(selected);
  document.getElementById(id).appendChild(option);
}

function trim(sString)
{
  return sString.replace(/^\s+/,'').replace(/\s+$/,'');
}

function doClampAutosearch(sShers,sStyp,sWtyp,iSgross,iWgross,iHkraft,sArtnr,
bPneumatisch,bHydraulisch,bElektrisch,bManuell,bFederspeicher)
{
  /* Fill in the search form */
  var i;
  if(sShers!='')
  {
    for(i=0;i<document.getElementById("sHers").length;i++)
    {
      if(trim(document.getElementById("sHers").options[i].value.toLowerCase())==trim(sShers.toLowerCase()))
      {
        document.getElementById("sHers").value=document.getElementById("sHers").options[i].value;
      }
    }
    noWellengroesse();
    loadRails();
    //phst deleteCarriages(); gibts nimma
  }
  if(sStyp!='')
  {
    for(i=0;i<document.getElementById("sTyp").length;i++)
    {
      if(trim(document.getElementById("sTyp").options[i].value.toLowerCase())==trim(sStyp.toLowerCase()))
      {
        document.getElementById("sTyp").value=document.getElementById("sTyp").options[i].value;
      }
    }
    loadCarriages();
    // phst selectAClamps() gibts nimma!
  }
  if(sWtyp!='')
  {
    for(i=0;i<document.getElementById("wTyp").length;i++)
    {
      if(trim(document.getElementById("wTyp").options[i].value.toLowerCase())==trim(sWtyp.toLowerCase()))
      {
        document.getElementById("wTyp").value=document.getElementById("wTyp").options[i].value;
      }
    }
    // phst selectAClamps() gibts nimma();
  }
  if(iSgross!='')
  {
    for(i=0;i<document.getElementById("sGroesse").length;i++)
    {
      if(trim(document.getElementById("sGroesse").options[i].value.toLowerCase())==trim(iSgross.toLowerCase()))
      {
        document.getElementById("sGroesse").value=document.getElementById("sGroesse").options[i].value;
      }
    }
    noWellengroesse();
    // phst selectAClamps() gibts nimma();
  }
  if(iWgross!='')
  {
    for(i=0;i<document.getElementById("wGroesse").length;i++)
    {
      if(trim(document.getElementById("wGroesse").options[i].value.toLowerCase())==trim(iWgross.toLowerCase()))
      {
        document.getElementById("wGroesse").value=document.getElementById("wGroesse").options[i].value;
      }
    }
    wellengroesse();
    // phst selectAClamps() gibts nimma();
  }
  if(iHkraft!='')
  {
    document.getElementById("haltekraft").value=iHkraft;
  }
  if(sArtnr!='')
  {
    document.getElementById("kTyp").value=sArtnr;
  }
  document.getElementById('version0').checked=bPneumatisch;
    // phst selectAClamps() gibts nimma();
  document.getElementById('version1').checked=bHydraulisch;
    // phst selectAClamps() gibts nimma();
  document.getElementById('version2').checked=bElektrisch;
    // phst selectAClamps() gibts nimma();
  document.getElementById('version3').checked=bManuell;
    // phst selectAClamps() gibts nimma();
  document.getElementById('springBrake').checked=bFederspeicher;
    // phst selectAClamps() gibts nimma();
  clampAllSearch(); /* perform a quick search */
}

