function reqobject(){
  this.reqnum=0;
  this.retnum=0;
  //this.types = Array('pnumberofblades','pfinish','pbladepitch','style1','proomsize','pbladespan','plightkitincluded','pceilingheight','brand1','pricerange','ptype');
  this.types = sli_type_array;
  this.boxids = Array();
}
var reqobj = new reqobject();


function get(){
  types = reqobj.types;
  reqobj.boxids=Array();
  for (j=0;j<types.length;j++){
    var type = types[j];
    if(document.getElementById(type) != null) {
      document.getElementById(type).innerHTML='...loading...';
    }
  }
  var req = 'http://'+document.domain+'/options.php?sli_type='+sli_type;
  $.get(req,initialresultreturn);
}


function isIE() {
    return /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent);
}

function initialresultreturn(t){
//document.getElementById('opt').innerHTML='...loading...';
  json = getArray2(t);
    
  //alert (json['finish2'][1][1]);
  // output the finish2 options
  var output = '';
  types = reqobj.types;
//alert(types);
  reqobj.boxids = Array();
  for ( j = 0 ; j < types.length ; j++ ){
    var type = types[j];
    if ( document.getElementById(type) != null ) {
//      alert(type);
      output = '<li id="label_' + type + ':all" class="sli_checkbox_enabled"><label><input type="button" id="' + type + ':all" onClick="resetsinglefacet(\'' + type + '\'); return true;" value="Uncheck All"/></label></li>';
      if ( json['types'][type] ){
        for ( i = 0 ; i < json['types'][type][1].length ; i++ ) {
//          if ( i % 2 == 0 ) {
//            output += '<li class="odd">';
//          } else {
//            output += '<li class="even">';
//          }
          output += '<li id="label_' + type + ':'+json['types'][type][1][i] + '" class="sli_checkbox_enabled"><label><input type="checkbox" style="border:0 ; background-image:none;" id="' + type + ':' + json['types'][type][1][i] + '" onClick="adjust(\'' + type + '\',\'' + json['types'][type][1][i] + '\', this.checked); return true;" />' + json['types'][type][0][i] + '</label></li>';
          reqobj.boxids.push(type + ':' + json['types'][type][1][i]);
        }
      }
      document.getElementById(type).innerHTML = output;
    }
  }
//  output += '<b><div id="resultcount" style="float:left">'+json['resultcount']+'</div></b> results<br>  <a href="#" onClick="resetoptions(); return false;">reset</a>';

//alert(output);
//  var obj =  document.getelementbyid('opt');
//  obj.innerHTML='***'+output+'***';
//  document.getElementById('opt').innerHTML=output;

    // reselect ones that were selected before! IE ONLY
    /*if(isIE()) {
        var vals = document.getElementById('submitaf').value.split(" ");
        for(i=0; i<vals.length; i++) {
            //var kv = vals[i].split(':');
            if(document.getElementById(vals[i])) {
                var kv = vals[i].split(':');
                document.getElementById(vals[i]).checked = true;
                //document.getElementById(vals[i])
                adjust(kv[0],kv[1],true);
            }
        }
    }*/

}

function resultreturn(t) {
  // only processes data if the return number is higher than the previous return number
  json = getArray2(t);
  
  if ( json['retnum'] > reqobj.retnum ) {
    reqobj.retnum = json['retnum'];

    document.getElementById('submitaf').value = document.getElementById('sli_type').value + ' ' + json['af'];
//    document.getElementById('formsubmit').value = 'View all '+json['resultcount']+' results';
    document.getElementById('resultcount').innerHTML = '&nbsp;-&nbsp;' + json['resultcount'] + ' Results Found';
    document.getElementById('sli_progress_1').style.display = 'none';
    //document.getElementById('resultcount2').innerHTML = json['resultcount'] + ' Results Found';

    var intype='';
    if ( json['type'] ) {
      intype = json['type'];
    }
    var types = reqobj.types;
    var onboxes='^';
    for ( j = 0 ; j < types.length ; j++) {
      var type = types[j];
      if ( json['types'][type] ) {
        for ( i = 0 ; i < json['types'][type][1].length ; i++ ) {
          tmp = type + ':' + json['types'][type][1][i];
          onboxes += tmp + '^';
//          alert(type+':'+json['types'][type][0][i]);
        }
      }
    }
//    alert(onboxes);
//    alert('l='+reqobj.boxids.length);
    for ( i = 0 ; i < reqobj.boxids.length ; i++ ) {
//alert(i);
      boxid = reqobj.boxids[i];
//alert(boxid);
      if ( onboxes.indexOf('^' + boxid + '^') >= 0 ) {
//        document.getElementById(boxid).checked          = false;
        document.getElementById(boxid).disabled           = false;
        document.getElementById('label_'+boxid).className = 'sli_checkbox_enabled';
//alert(boxid+'=on');
      } else {
//alert(intype+' - '+boxid);
        //if (boxid.indexOf(intype+':')<0 && document.getElementById(boxid).checked==false){
        if ( document.getElementById(boxid).checked == false ) {
//          document.getElementById(boxid).checked          = false;
          document.getElementById(boxid).disabled           = true;
          document.getElementById('label_'+boxid).className = 'sli_checkbox_disabled';
        }
//alert(boxid+'=off');
      }
    }
    
  } else {
//    alert('return too old, this = ' + json['retnum'] + ', stored=' + reqobj.retnum);
  }

}

function adjust(type, option, checked) {

//alert(type+'-'+option+'-'+checked);
  // do a request back to the back end, looking for the new options set
  reqobj.reqnum++;
  // cycle through the box names
  var opts = '';
  for ( i = 0 ; i < reqobj.boxids.length ; i++ ) {
    if ( document.getElementById(reqobj.boxids[i]).checked == true ) {
      opts += '&op[]=' + reqobj.boxids[i];
    }
  }
//  alert(msg);
//  alert('type='+type+', option='+option+', checked='+checked);
  var req = 'http://' + document.domain + '/options.php?sli_type=' + sli_type + '&num=' + reqobj.reqnum + '&checked=' + checked + '&type=' + escape(type) + opts;
  req = req + '&option=' + escape(option);
//  alert(req);
  if ( option != '' ) {
    document.getElementById(type + ':all').checked = false;
  }
  document.getElementById('sli_progress_1').style.display = 'inline';
  $.get(req, resultreturn, "text");

}

function resetoptions() {

  for ( i = 0 ; i < reqobj.boxids.length ; i++) {
    if ( document.getElementById(reqobj.boxids[i]) != null ) {
      document.getElementById(reqobj.boxids[i]).checked            = false;
      document.getElementById(reqobj.boxids[i]).disabled           = false;
      document.getElementById('label_'+reqobj.boxids[i]).className = 'sli_checkbox_enabled';
    }
  }
  document.getElementById('resultcount').innerHTML = '&nbsp;';
//  document.getElementById('resultcount2').innerHTML = '&nbsp;';

}

function resetsinglefacet(type) {

  for ( i = 0 ; i < reqobj.boxids.length ; i++ ) {
    if ( reqobj.boxids[i].indexOf(type) == 0 ) {
        if ( document.getElementById(reqobj.boxids[i]) != null ) {
          document.getElementById(reqobj.boxids[i]).checked            = false;
          document.getElementById(reqobj.boxids[i]).disabled           = false;
          document.getElementById('label_'+reqobj.boxids[i]).className ='sli_checkbox_enabled';
        }
    }
  }
  //document.getElementById('resultcount').innerHTML = '&nbsp;';
  //document.getElementById('resultcount2').innerHTML = '&nbsp;';
  adjust(type, '', false);

}

function getArray2 (r) { 
  if ( r && r.replace ) {
    r = r.replace(/&quot;/g, '\"');
    eval("var x=" + r);
    return x;
  }
}