/***************************************************
* FILE: complex_query.js
***************************************************/

var layer_count=4;
var op_count=2;
var op_idx=2;   
var browser=get_navigator();
var layers;
  
if (browser=="NAV4") {
  document.write("<STYLE TYPE=\"text/css\">");
  for (var i=0; i<layer_count; i++)
    document.write("#layer"+i+" {position:relative;}");
  document.write("#toolbar {position:absolute;}");
  document.write("</STYLE>");
}
if (browser=="IE4") {
  layers=document.all.tags("DIV");
}
else if (browser=="NAV4") {
  layers=document.layers;
}
else if (browser=="NAV6") {
  layers=new Array(layer_count);
}
else
  layers=document.forms;

function encode_uri(str_in,charset_encoding) {
  var preserve_char="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz$-_.!*()";
  var str_out="";
  //if (isEmpty(charset_encoding))
  //  charset_encoding="iso-8859-1";
  for (var i=0; i<str_in.length; i++) {
    var c=str_in.charAt(i);
    if (preserve_char.indexOf(c)!=-1)
      str_out+=c;
    else if (c==' ')
      str_out+='+';
    else if (c <= '~' || charset_encoding=="iso-8859-1") {
      if (c.charCodeAt) {
        var code=c.charCodeAt(0);
        if (code<256)
          str_out+='%'+new Number(code).toString(16);  
      }
      else
        str_out+=escape(c);
    }
    else if (encodeURI) {
      str_out+=encodeURI(c);
    }
  }    
  // alert("encoding: "+charset_encoding+" str_in: "+str_in+" str_out: "+str_out);
  return str_out;
}

function write_layers() {
  for (var i=0; i<layer_count; i++) {
    document.write("<DIV ID=layer"+i+">");
    document.write("<FORM onSubmit=\"form_onSubmit(); return false;\">");
    document.write("<TABLE BORDER=0>");
    document.write("<TR NOWRAP>");
    document.write("<TD>");
    document.write("<INPUT TYPE=Text NAME=word SIZE=20 MAXLENGTH=255>");
    document.write("</TD>");
    document.write("<TD>");
    document.write("<SELECT NAME=code>");
    for (var j=0; j<code_arr.length; j++)
      document.write("<OPTION VALUE=\""+code_arr[j]+"\""+((j==0) ? " SELECTED" :"")+">"+code_text_arr[j]);  
    document.write("</SELECT>");
    document.write("</TD>");
    document.write("<TD>");
    if (i<layer_count-1) {
      document.write("<INPUT NAME=op"+i+" TYPE=Radio VALUE=\""+op_And+"\" onClick=op_onClick("+i+")"+((browser!="IE4" && browser!="NAV4" && browser!="NAV6") ? " CHECKED" :"")+">"+op_And);
      document.write("<INPUT NAME=op"+i+" TYPE=Radio VALUE=\""+op_Not+"\" onClick=op_onClick("+i+")>"+op_Not);
    }
    document.write("</TD>");
    if (browser=="IE4" || browser=="NAV4" || browser=="NAV6") {
      document.write("<TD>");
      if (i>0) { 
        document.write("<TABLE BORDER=0>");
        document.write("<TR>");
        document.write("<TD ALIGN=\"Center\">");
        document.write("<TABLE width=\"100\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" height=\"16\">");
        document.write("<TR>");
        document.write("<TD class=\"btnActiveStart\" width=\"5\"><IMG SRC=\"/bookit/design/common/images/transparent_1by1.gif\"></TD>");
        document.write("<TD NOWRAP class=\"btnActiveMiddle\" width=\"100%\"><A HREF=\"javascript:btnDelete("+i+")\" class=\"btnActiveMiddle\">"+button_Delete+"</A></TD>");
        document.write("<TD class=\"btnActiveEnd\" width=\"5\"><IMG SRC=\"/bookit/design/common/images/transparent_1by1.gif\"></TD>");
        document.write("</TR>");
	document.write("</TABLE>");
        document.write("</TD>");
        document.write("</TR>");
        document.write("</TABLE>");
      }
      document.write("</TD>");
    }
    document.write("</TR>");
    document.write("</TABLE>");
    document.write("</FORM>");
    document.write("</DIV>");
  }
}

/*****************************************************
* FUNCTION: hide_layer                      
******************************************************
*/
function hide_layer(layer_idx) {

  if (browser=="IE4" || browser=="NAV6") {
    layers[layer_idx].style.display="none";
  }
  else if (browser=="NAV4") {
    layers[layer_idx].visibility="hide";
  }
}

/*****************************************************
* FUNCTION: show_layer                      
******************************************************
*/
function show_layer(layer_idx) {

  if (browser=="IE4" || browser=="NAV6") {
    layers[layer_idx].style.display="";
  }
  else if (browser=="NAV4") {
    layers[layer_idx].visibility="visible";
  }
}

/*****************************************************
* FUNCTION: hide_layer                      
******************************************************
*/
function is_visible_layer(layer_idx) {

  if (browser=="IE4" || browser=="NAV6") {
    return layers[layer_idx].style.display!="none";
  }
  else if (browser=="NAV4") {
    return layers[layer_idx].visibility!="hide";
  }
  else
    return true;
}

/*****************************************************
* FUNCTION: get_layer_form                      
******************************************************
*/
function get_layer_form(layer_idx) {

  if (browser=="IE4") {
    return layers[layer_idx].document.forms[layer_idx];
  }
  else if (browser=="NAV4") {
    return layers[layer_idx].document.forms[0];
  }
  else if (browser=="NAV6") {
    return document.forms[layer_idx];
  }
  else
    return layers[layer_idx];
}

/*****************************************************
* FUNCTION: clear_layer                      
******************************************************
*/
function clear_layer(layer_idx) {

  get_layer_form(layer_idx).word.value="";
  get_layer_form(layer_idx).code.selectedIndex=0;
  if (layer_idx<layer_count-1)
    for (var j=op_idx; j<op_idx+op_count; j++)
      get_layer_form(layer_idx).elements[j].checked=false;
  return true;
}

/*****************************************************
* FUNCTION: get_last_visible_layer                      
******************************************************
*/
function get_last_visible_layer() {

  for(var i=layer_count-2; i>=0; i--) {
    for (var j=op_idx; j<op_idx+op_count; j++)
      if (get_layer_form(i).elements[j].checked)
        return i+1;
  }
  return 0;
}

/*****************************************************
* FUNCTION: paint                      
******************************************************
*/
function paint() {

  if (browser=="NAV4") {
    var pos_x=layers[0].pageX;
    var pos_y;

    for(var i=0; i<layer_count; i++)
      if (is_visible_layer(i)) {
         pos_y=layers[i].pageY+layers[i].clip.height;
      }
    // alert("pos_x="+pos_x+" pos_y="+pos_y);
    layers[layer_count].pageX=pos_x;
    layers[layer_count].pageY=pos_y;
  }
  return true;
}

/*****************************************************
* FUNCTION: btnDelete                      
******************************************************
*/
function btnDelete(layer_idx) {

  var last_visible_idx=get_last_visible_layer();
  for(var i=layer_idx; i<last_visible_idx; i++) {
    get_layer_form(i).word.value=get_layer_form(i+1).word.value;
    get_layer_form(i).code.selectedIndex=
      get_layer_form(i+1).code.selectedIndex;
    for (var j=op_idx; j<op_idx+op_count; j++) {
      get_layer_form(i).elements[j].checked=
        (i<layer_count-2) ? get_layer_form(i+1).elements[j].checked : false;
    }
  }
  clear_layer(last_visible_idx);
  if (last_visible_idx==layer_idx)
    for (var j=op_idx; j<op_idx+op_count; j++)
      get_layer_form(layer_idx-1).elements[j].checked=false;
  hide_layer(last_visible_idx);
  paint();
}

/*****************************************************
* FUNCTION: op_onClick                      
******************************************************
*/
function op_onClick(layer_idx) {

  if (!is_visible_layer(layer_idx+1)) {
    show_layer(layer_idx+1);
    get_layer_form(layer_idx+1).word.focus();
    paint();
  }
  return true;
}

/*****************************************************
* FUNCTION: btnClear                      
******************************************************
*/
function btnClear() {

  for(var i=0; i<layer_count; i++) {
    if (i>0)
      hide_layer(i);
      clear_layer(i);    
  }
  paint();
  deleteCookie("query");
}

/*****************************************************
* FUNCTION: btnSearch                      
******************************************************
*/
function btnSearch(in_action) {
  form_onSubmit(in_action);
}

/**************************************************************
* FUNCTION: form_onSubmit                      
***************************************************************
*/
function form_onSubmit(in_action) {
   var complex_data_new = "";
   var ccl_query        = "";
   var op               = "";
   var value;
   if (in_action == undefined) {
      in_action = 1;
   }
   for(var i = 0; i < layer_count; i++) {
      if (is_visible_layer(i) && get_layer_form(i).word.value != "") {
         value             = get_layer_form(i).word.value;
         complex_data_new += value + subfield_sep;
         if (op == op_And || op == op_Or)
            ccl_query += " " + op + " (" + value;
         else
            if (op == op_Not)
               ccl_query += " " + op_And + " " + op + " (" + value;
            else
               ccl_query  = "(" + value;
         value             = get_layer_form(i).code.options[get_layer_form(i).code.options.selectedIndex].value;
         complex_data_new += get_layer_form(i).code.options.selectedIndex+subfield_sep;
         if (value != "")
            ccl_query += " /" + value + ")";
         else
            ccl_query += ")";
         op = "";
         if (i < layer_count - 1) {
            for (var j = op_idx; j < op_idx + op_count; j++)
               if (get_layer_form(i).elements[j].checked) {
                  op                = get_layer_form(i).elements[j].value;
                  complex_data_new += "1" + subfield_sep;
               }
               else
                  complex_data_new+="0"+subfield_sep;
         }
      }
   }

   if (ccl_query != "" || in_action != 1) {
      get_layer_form(layer_count).in_complex_data.value   = encode_uri(complex_data_new, "utf-8");
      get_layer_form(layer_count).in_ccl_query__m.value   = encode_uri(ccl_query, "utf-8");
      get_layer_form(layer_count).in_setting_action.value = unescape(in_action);
      if (in_action != 1) {
         get_layer_form(layer_count).in_init_flag.value = 0;
      }
      else {
         get_layer_form(layer_count).in_init_flag.value = 1;
      }
      get_layer_form(layer_count).submit();
   }
   else {
      alert(validate_message);
      get_layer_form(0).word.focus();
   }
   return false;
}

/*****************************************************
* FUNCTION: body_onLoad                      
******************************************************
*/
function body_onLoad() {
  var element_tab;

  // alert("get: "+complex_data);
  if (browser=="NAV6") {
    for (var i=0; i<layer_count; i++) {
      layers[i]=document.getElementById("layer"+i);
      // alert(layers[i].id);
    }
    layers[layer_count]=document.getElementById("toolbar");
    // alert(layers[layer_count].id);
  }
  if (browser!="IE2")
    element_tab=complex_data.split(subfield_sep);
  else 
    element_tab=new Array("");
  for(var i=0; i<layer_count; i++) {
    var k=(op_count+2)*i;
     if (k+1<=element_tab.length)
       get_layer_form(i).word.value=element_tab[k];
     if (k+2<=element_tab.length)
       get_layer_form(i).code.options.selectedIndex=parseInt(element_tab[k+1]);
     if (i<layer_count-1) {
       for (var j=op_idx; j<op_idx+op_count; j++)
         if (k+j+1<=element_tab.length && element_tab[k+j]=="1")
           get_layer_form(i).elements[j].checked=true;
     }
  }
  for(var i=get_last_visible_layer()+1; i<layer_count; i++)
    hide_layer(i);
  // if (browser=="IE4" || browser=="NAV4" || browser=="NAV6") {
  //   for(var i=0; i<layer_count; i++) {
  //     get_layer_form(i).onsubmit=form_onSubmit;
  //  }
  // }
  paint();
  get_layer_form(0).word.focus();
  // alert("browser: "+browser);
  return true;
}

/*****************************************************
* FUNCTION: check_type                      
******************************************************
*/
function check_type(f) {

var e1=document.forms[0].code;

alert("check_type: Antal param.");
alert(document.forms[0].elements.length);
alert(e1.selectedIndex);

for (i=0; i<document.forms[0].elements.length; i++) {
 var e=document.forms[0].elements[i];

    alert("Värde ");
    alert(e.selectedIndex);
 }

}
