FW_version["fhemweb_readingsGroup.js"] = "$Id$";

//$(document).ready(FW_readingsGroupReadyFn);
$(FW_readingsGroupReadyFn);

function
FW_readingsGroupReadyFn() {

  // replace all informIds of the form devName-readingName with rgName-devName.readingName
  $(".readingsGroup").each(function() {
    if( this.className.search(/\bsortable\b/) ) {
      loadScript( 'pgm2/sorttable.js', function() {
        setTimeout( function() {
          $(".readingsGroup").each(function() {
            var sort = parseInt($(this).attr('sortColumn'));
            if( sort )
              sorttable.doSort(this, Math.abs(sort)-1, sort<0?true:false );
          } );
        }, 100 );
      } );
    }

    var name = $(this).attr('id').split("-")[1];
    $(this).find("[informId]").each(function() {
      var informId = $(this).attr('informId');
      var parts = informId.split("-");
      if( parts[0] != name ) {
        informId = name+'-'+informId.replace('-','.');
        $(this).attr('informId', informId);
      }
    });

    $(this).find("[rg-fhemWidget-label]").each(function() {
      var txt = $(this).attr('rg-fhemWidget-label');
      var contents = $(this).find('div').first().contents();
      if( contents.size() == 2 )
        contents.first().replaceWith(txt);
    });
  });
}

function
FW_readingsGroupToggle(d) {
  var rg = document.getElementById( 'readingsGroup-'+d );
  if( rg ) {
    s=rg.style;
    s.display = s.display=='none' ? 'table' : 'none';

    var group = rg.getAttribute('groupId');
    if( group ) {
      var elArr = document.querySelectorAll( '[groupId='+group+']' );
      for( var k=0; k<elArr.length; k++ ){
        el = elArr[k];
        if( el != rg ) {
          el.style.display = 'none';
        }
      }
    }
  }
}

function
FW_readingsGroupShow(d,v) {
  var rg = document.getElementById( 'readingsGroup-'+d );
  if( rg ) {
    s=rg.style;
    if( s.display=='none' && v )
      FW_readingsGroupToggle(d);
    else if( s.display!='none' && !v )
      FW_readingsGroupToggle(d);
  }
}

function
FW_readingsGroupToggle2(d) {
  var rg = document.getElementById( 'readingsGroup-'+d );
  if( rg ) {
    s=rg.style;
    s.width = rg.scrollWidth+'px';
    var rows = rg.childNodes[0].childNodes;
    for(var r=0; r<rows.length; r++){
      var row = rows[r];
      var pm = row.querySelectorAll('[id=plusminus]');
      if( pm.length ) {
        for(var i=0; i<pm.length; i++){
          if( pm[i].innerHTML == '+' )
            pm[i].innerHTML = '-';
          else if( pm[i].innerHTML == '-' )
            pm[i].innerHTML = '+';
        }
      } else {
        row.style.display = row.style.display=='none' ? '' : 'none';
      }
    }

    var group = rg.getAttribute('groupId');
    if( group ) {
      var elArr = document.querySelectorAll('[groupId='+group+']');
      for(var k=0; k<elArr.length; k++){
        el = elArr[k];
        s=el.style;
        s.width = rg.scrollWidth+'px';
        if( el != rg ) {
          var rows = el.childNodes[0].childNodes;
          for(var r=0; r<rows.length; r++){
            var row = rows[r];
            var pm = row.querySelectorAll('[id=plusminus]');
            if( pm.length ) {
              for(var i=0; i<pm.length; i++){
                pm[i].innerHTML = '+';
              }
            } else {
              row.style.display = (r==0 ? '' : 'none');
            }
          }
        }
      }
    }
  }
}

function
FW_readingsGroupUpdateLine(d){
  var dd = d[0].split("-", 3);

  if(dd.length != 2)
    return;

  if( dd[1] === 'sort' ) {
    var rg = document.getElementById( 'readingsGroup-'+dd[0] );
    if( sorttable )
      sorttable.doSort( rg );

  } else if( dd[1] != "visibility" )
    return

  if( d[1] == 'toggle' ) FW_readingsGroupToggle( dd[0] );
  if( d[1] == 'toggle2' ) FW_readingsGroupToggle2( dd[0] );
  if( d[1] == 'show' ) FW_readingsGroupShow( dd[0], 1 );
  if( d[1] == 'hide' ) FW_readingsGroupShow( dd[0], 0 );

  //console.log("xxx: "+d[1]);
}

function FW_readingsGroupCreate(elName, devName, vArr, currVal, set, params, cmd)
{
}


FW_widgets['readingsGroup'] = {
  createFn:FW_readingsGroupCreate,
  updateLine:FW_readingsGroupUpdateLine
};


/*
=pod
=cut
*/