// ----------------------------------------------------------------------------
//  ... cbClass.js
//      Dynamically add, remove or check style classes
//
//        functions:
//            xHasClass( e, c )                 check element for style class
//            xAddClass( e, c )                 add style class to element
//            xRemoveClass( e, c )              remove style class from element
//            xSwitchClasses( e, old, new )     switch style classes of element
//
// ----------------------------------------------------------------------------

function interspace( str ) {
  return ( str.length && ( str.charAt( str.length - 1 ) != ' ' ) ) ? ' ' : '';
}

function xHasClass( e, c ) {
  e      = xGetElementById( e );
  var rx = new RegExp( "(^|\\s)"+c+"(\\s|$)" );
  return ( e && e.className != '' ) ? rx.test( e.className ) : false ;
}

function xAddClass( e, c ) {
  if ( ( e = xGetElementById( e ) ) != null ) {
    if ( !xHasClass( e, c ) ) {
      e.className += interspace( e.className ) + c;
    }
  }
}

function xRemoveClass( e, c ) {
  if ( ( e = xGetElementById( e ) ) != null ) {
    if ( xHasClass( e, c ) ) {
      var rx = new RegExp( "(^|\\s)"+c+"(\\s|$)", 'g' );
      e.className = e.className.replace( rx,
        function( str, p1, p2 ) { return (p1 == ' ' && p2 == ' ') ? ' ' : ''; }
      );
    }
  }
}

function xSwitchClasses( e, cold, cnew ) {
  xRemoveClass( e, cold );
  xAddClass( e, cnew );
}

// ----------------------------------------------------------------------------
// ... cbVacancyRowClasser( cl_all, cl_mark )
// ----------------------------------------------------------------------------

function cbVacancyRowClasser( cl_select, cl_mark ) {
  var elems = xGetElementsByClassName( cl_select );
  if( !elems ) return null;

  function paint_rows( ) {
    for ( var i = 0; i < elems.length; i++ ) {
      if ( !elems[ i ].checked )
        if ( elems[ i ].granny.el.className != elems[ i ].granny.cl )
          elems[ i ].granny.el.className = elems[ i ].granny.cl;
    }
    for ( var i = 0; i < elems.length; i++ ) {
      if ( elems[ i ].checked )
        elems[ i ].granny.el.className = cl_mark;
    }
  }

  for ( var i = 0; i < elems.length; i++ ) {
    var granny = elems[ i ].parentNode.parentNode;
    elems[ i ].granny = {};
    elems[ i ].granny.el = granny
    elems[ i ].granny.cl = granny.className;
    xAddEventListener( elems[ i ], 'click', paint_rows, false );
  }

  paint_rows( );

  return this;
}

// ----------------------------------------------------------------------------
//	end cbClass.js
// ----------------------------------------------------------------------------
