function AdvSearch() {
}

  var extractedData = new Array();
  var counter = 1;
  var manArr = new Array();
  var translate = false;



AdvSearch.prototype.advSearchKey = function(evt, element) {
    var code = evt.which ? evt.which : evt.keyCode;
    if (code == 13) {
      as.doSearch(element);
    }
}

// ============================================================================


AdvSearch.prototype.getRequestObject = function () {
  // Create XMLHttpRequest object if not defined (IE...).
  var request = null;

  if ( typeof(XMLHttpRequest) == 'undefined' ) {
    try {
      request = new ActiveXObject('Msxml2.XMLHTTP');
    } catch(e) {
      try {
        request = new ActiveXObject('Microsoft.XMLHTTP');
      } catch(ee) {
      }
    }
    return request;
  } else {
    var request = new XMLHttpRequest();

    if (request.overrideMimeType) {
      request.overrideMimeType('text/xml');
    }
    return request;
  }
}

// ============================================================================


  AdvSearch.prototype.setXmlData = function(first, second) {
    var url = 'xmlMenuData.jsp?first=' + first + "&second=" + second;
    var request = this.getRequestObject();

    request.open('GET', url, false);
    request.send(null);
    if (request.status == 200) {
      var xmldoc = request.responseXML;

      if (xmldoc.getElementsByTagName('data').item(0) != null ){
        var root = xmldoc.getElementsByTagName('data').item(0);
        var name = "";
        var id = "";
        var counter = 0;
        for (iNode = 0; iNode < root.childNodes.length; iNode++) {
          var node = root.childNodes.item(iNode);
          for (i = 0; i < node.childNodes.length; i++){
            if (node.childNodes.item(i).nodeName == "id" || node.childNodes.item(i).nodeName == "name") {
              extractedData[counter] = node.childNodes.item(i).childNodes.item(0).data;
              counter++;
            }
          }
        }
      }
    } else {
      alert("xmlMenuData.jsp error!");
    }
  }

// ============================================================================

<!--AdvSearch.prototype.getSupCat = function (element, value, id) {-->
AdvSearch.prototype.getSupCat = function (value, id) {

//  alert("supCat : " + value + " " + id);

  as.setXmlData('supcat', value);
  var dispData = "<select class=\"edit_adv_long_select\"  id=\"selSup" + id + "_" + id + "\">\n";
  dispData += "<option value=\"no\" id=\"0\">" + gw('alla', 1) + "</option>";
  for (i=0; i < extractedData.length;i++){
    if (language == "1") {
      dispData += "\t<option value=\"" + value + "\"id=\"" + extractedData[i+1] + "\">" + gw(extractedData[i], 1) + "</option>\n";
      i++;
    } else {
      dispData += "\t<option value=\"" + value + "\"id=\"" + extractedData[i+1] + "\">" + extractedData[i] + "</option>\n";
      i++;
     }
  }
  extractedData = new Array();
  dispData += "</select>\n";

  sup2 = "sup2_" + id;
  document.getElementById(sup2).innerHTML = dispData;
  document.getElementById(sup2).style.display = "";

}
// ============================================================================
//AdvSearch.prototype.getMainCat = function (element, value, id){
AdvSearch.prototype.getMainCat = function (elementId, value, id){

//alert("Debug inside adv search main cat!" + value + " " + id + " eid: " + elementId);

  as.setXmlData(value);

  if (id == "1") {
    manArr[1] = 1;
  }

//  alert("pelle ; " + elementId);
/*
  var dispData = "<select id=\"selSup" + id + "\">\n";
  for (i=0; i < extractedData.length;i++){
    if (elementId == "subCategory") {
      dispData += "\t<option onclick=\"as.getSupCat(this, '" + extractedData[i+1] + "', " + id + ")\" id=\"" + extractedData[i+1] + "\">" + extractedData[i] + "</option>\n";
    } else if (elementId == "byline"){
      dispData += "\t<option id=\"" + extractedData[i+1] + "\">" + extractedData[i] + "</option>\n";
    }
    i++;
  }
*/
var dispData = "<select class=\"edit_adv_long_select\" id=\"selSup" + id + "\" onchange=\"as.getSupCat(this.options[this.options.selectedIndex].id, this.options[this.options.selectedIndex].value)\">\n";
if (elementId == "byline") {
  dispData = "<select class=\"edit_adv_long_select\" id=\"selSup" + id + "\" >\n";
}
  for (i=0; i < extractedData.length;i++){
    if (elementId == "subCategory") {





//      dispData += "\t<option onclick=\"as.getSupCat(this, '" + extractedData[i+1] + "', " + id + ")\" id=\"" + extractedData[i+1] + "\">" + extractedData[i] + "</option>\n";
if (language == "1") {
  dispData += "\t<option value=\"" + id + "\" id=\"" + extractedData[i+1] + "\">" + gw(extractedData[i], 1) + "</option>\n";
} else {
  dispData += "\t<option value=\"" + id + "\" id=\"" + extractedData[i+1] + "\">" + extractedData[i] + "</option>\n";
}
//      dispData += "\t<option value=\"" + extractedData[i+1] + "\" id=\"" + id + "\">" + extractedData[i] + "</option>\n";
    } else if (elementId == "byline"){
//      dispData += "\t<option id=\"" + extractedData[i+1] + "\">" + extractedData[i] + "</option>\n";
      dispData += "\t<option value=\"" + extractedData[i+1] + "\" id=\"" + id + "\">" + extractedData[i] + "</option>\n";
    }
    i++;
  }


  extractedData = new Array();
  dispData += "</select>\n";

  sup1 = "sup" + id;
  sup2 = "sup2_" + id;
  op = "op" + id;
  clear = "clear" + id;
  searchRow = "searchRow" + id;

//alert(dispData);

  document.getElementById(sup1).innerHTML = dispData;
  document.getElementById(sup1).style.display = "";
  document.getElementById(op).style.display = "";
  document.getElementById(clear).style.display = "";
  if (id != "4") {
    opr = "operator" + id;
    document.getElementById(opr).style.display = "";
  }
}

// ===========================================================================

AdvSearch.prototype.removeDiv = function(element, id){
  counter--;
  manArr[id] = "null";
//alert(counter)  ;

  sup1 = "sup" + id;
  sup2 = "sup2_" + id;
  op = "op" + id;
  clear = "clear" + id;
  searchRow = "searchRow" + id;
  main = "main" + id;

  op = "operator" + id;
  document.getElementById(main).selectedIndex = "0";
  if (document.getElementById(op).options.selectedIndex != null){
    document.getElementById(op).options.selectedIndex = "0";
  }


  document.getElementById(sup1).style.display = "none";
  document.getElementById(sup1).innerHTML = "";
  document.getElementById(sup2).style.display = "none";
  document.getElementById(sup2).innerHTML = "";

  document.getElementById(op).style.display = "none";
  document.getElementById(clear).style.display = "none";
  if (id != 1) {
    document.getElementById(searchRow).style.display = "none";
    document.getElementById(main).style.display = "none";

  }
}

// ===========================================================================

AdvSearch.prototype.addRow = function(id){
  counter++;
  manArr[id] = id;
  searchRow = "searchRow" + id;
  sup1 = "sup" + id;
  main = "main" + id;
  clear = "clear" + id;
//  document.getElementById(main).options[document.getElementById(main).selectedIndex].id = "0";

  document.getElementById(searchRow).style.display = "";
  document.getElementById(sup1).style.display = "";
  document.getElementById(main).style.display = "";
  document.getElementById(clear).style.display = "";
}

// ===========================================================================

AdvSearch.prototype.clearField = function(element){
  if (document.getElementById(element.id).innerHTML != null) {
    document.getElementById(element.id).innerHTML = "";
  } else if (document.getElementById(element.id).value != null){
    document.getElementById(element.id).value = "";
  }
}

// ===========================================================================

AdvSearch.prototype.doSearch = function(element){

  var advSearch = "";
  var archive = 1;
  if (document.getElementById("freeTextArea").value.length > 0) {
//    if (document.getElementById("translate").checked) {
//      advSearch += "all:" + document.getElementById("freeTextArea").value + " AND ";
//      translate = true;
//    } else {
//      advSearch += "(all:" + document.getElementById("freeTextArea").value + ") AND ";
      advSearch += "(all:" + document.getElementById("freeTextArea").value + ") AND ";
//    }
  }

  // check of model released.
  if (document.getElementById("modelReleased").checked){
  advSearch += "(category:mr) AND ";
  }

  // check which archive to search.
  if (document.getElementById("extArc").checked){
      archive = 2;
  }

  // check color
  if (document.getElementById("search_color").options[document.getElementById("search_color").selectedIndex].id != "0") {
    if (document.getElementById("search_color").options[document.getElementById("search_color").selectedIndex].id == "SV") {
        advSearch += "(original_transmission_reference:sv OR original_transmission_reference:s) AND ";          
    } else {
        advSearch += "(original_transmission_reference:" + document.getElementById("search_color").options[document.getElementById("search_color").selectedIndex].id + ") AND ";
    }
  }

  // check size.
  /*
  if (document.getElementById("size").options[document.getElementById("size").selectedIndex].id != "0") {
    advSearch += "size:[1000000 TO " + document.getElementById("size").options[document.getElementById("size").selectedIndex].id + "] AND ";
  }
*/
  // Start parsing stuff
  var tSearch = "";

//  for (i=1; i < (counter + 1) ;i++){


  for (i=0; i < manArr.length ;i++){
    if (manArr[i] == i) {
    var main = "main" + i;
    var sel = "selSup" + i;
    var selSup = "selSup" + i + "_" + i;
    var op = "operator" + i;
    var mainCat = "";

  // parse main category
    if (document.getElementById(main).options[document.getElementById(main).selectedIndex].id != null) {
      if (document.getElementById(main).options[document.getElementById(main).selectedIndex].id != "0") {
        tSearch += document.getElementById(main).options[document.getElementById(main).selectedIndex].id + ":";
      }
    }
 
    if (document.getElementById(sel) != null) {
//      tSearch += "\"" + document.getElementById(sel).options[document.getElementById(sel).selectedIndex].value + "\"";

//alert(tSearch);
//alert(sel);
//alert(document.getElementById(sel).selectedIndex);
//alert(document.getElementById(sel).options[document.getElementById(sel).selectedIndex].innerHTML);
      var sstring = document.getElementById(sel).options[document.getElementById(sel).selectedIndex].innerHTML;

//    if (language == "1") {
//      sstring = gid(document.getElementById(main).options[document.getElementById(main).selectedIndex].id + document.getElementById(sel).options[document.getElementById(sel).selectedIndex].id);
//      }
      
      
    tSearch += "\"" + sstring + "\"";
//      tSearch += "\"" + document.getElementById(sel).options[document.getElementById(sel).selectedIndex].innerHTML + "\"";
//        alert("advSearch : " + sstring + " " + document.getElementById(main).options[document.getElementById(main).selectedIndex].id);
    }

    if (document.getElementById(selSup) != null) {
    // link uses headline as supcat.
//      tSearch += " AND headline:\"" + document.getElementById(selSup).options[document.getElementById(selSup).selectedIndex].value + "\"";
  if (document.getElementById(selSup).options[document.getElementById(selSup).selectedIndex].id != "0"){

//        alert("advSearch : " + document.getElementById(selSup).options[document.getElementById(selSup).selectedIndex].innerHTML);
//      alert("advSearch : " + gid(document.getElementById(selSup).options[document.getElementById(selSup).selectedIndex].innerHTML, 1));
//alert("advSearch: " + gw(document.getElementById(selSup).options[document.getElementById(selSup).selectedIndex].innerHTML, 1));
  var ssearch = document.getElementById(selSup).options[document.getElementById(selSup).selectedIndex].innerHTML;
  if (language == 1) {
    ssearch = gid(document.getElementById(selSup).options[document.getElementById(selSup).selectedIndex].innerHTML, 1);
  }
//    tSearch += " AND headline:\"" + document.getElementById(selSup).options[document.getElementById(selSup).selectedIndex].innerHTML + "\"";
    tSearch += " AND headline:\"" + ssearch + "\"";
    }
  }

//    if (tSearch.length > 0) {advSearch += " (" + tSearch + ") ";}
    if (tSearch.length > 0) {advSearch += tSearch;}

    if (document.getElementById(op) != null) {
      if (document.getElementById(op).options[document.getElementById(op).selectedIndex].id != "0") {
        advSearch +=  " " + document.getElementById(op).options[document.getElementById(op).selectedIndex].id.toUpperCase() + " ";
      }
    }
    tSearch = "";
    mainCat = "";
    }
  }

//  alert(advSearch);
  // Execute the search (from mail.js)

  advancedSearch(advSearch, translate, archive);
}







// Initialize!
var as = new AdvSearch();

