/**
 * controls.js
 * 
 * library to provide control(ui) functions
 * 
 * @category   Bos
 * @package    Bos_Extensions
 * @subpackage System
 * @author     Carsten Thiel <cth@bos-bremen.de>
 * @copyright  2010 bremen online services GmbH & Co. KG
 * @version    $Revision: 1.14 $
 */

function bos_controls_addIcon(stType, fHide, lLeft, lTop) {

  var oPanel = document.createElement('div');
  base_addClassName(oPanel, 'controls_' + stType + '_panel');

  oPanel.bos_setPosition = function(lLeft, lTop) {
    this.bos_positionLeft = (typeof lLeft == 'number') ? lLeft : 10;
    this.bos_positionTop = (typeof lTop == 'number') ? lTop : 10;
  };

  oPanel.bos_setPosition(lLeft, lTop);

  oPanel.bos_show = function(lLeft, lTop) {
    var lLeft = (isNaN(lLeft)) ? this.bos_positionLeft : lLeft;
    var lTop = (isNaN(lTop)) ? this.bos_positionTop : lTop;
    base_setPosition(this, lLeft, lTop);
  };

  oPanel.bos_hide = function() {
    base_setPosition(this, -9999, 0);
  };

  var oIcon = document.createElement('div');
  base_addClassName(oIcon, 'icon');
  oPanel.appendChild(oIcon);

  if (fHide)
    oPanel.bos_hide();

  document.body.appendChild(oPanel);
  return oPanel;
}

function bos_controls_initGroupCmdToggleButton(stGroupCmdPanelID) {
  var oToggleBox = $('#' + stGroupCmdPanelID + ' .grp_cmd_toggle_box');

  oToggleBox.change(function() {
    $('#' + stGroupCmdPanelID + ' .grp_cmd_input_box').each(
        function(lIndex, oInput) {
          oToggleBox = $('#' + stGroupCmdPanelID + ' .grp_cmd_toggle_box');          

          $(oInput).attr('checked', oToggleBox.attr('checked'));
          $(oInput).change();
        });
    
    return true;
  });
}

function bos_controls_initImagemapHovering() {

  $('body').delegate('area', 'mouseover', function(e) {

    // Bekomme akutelle Id von area bei mouseover
    var lAreaKey = this.id.toString().split('_').pop();

    // Wenn das der Map-Area zugehoerige Div's im CSS nicht den
    // 'block'-Status hat
    if ($('#info_panel_' + lAreaKey).css('display') !== 'block') {

      // Selektiere alle versteckten Div's
      var rgHiddenDivIds = $("div[id^='info_panel_']");

      // Fuer aktuelle Id vom versteckten Div
      var lHiddenDivKey = null;

      // Foreach
      $.each(rgHiddenDivIds, function(lIndexKey, mxValue) {

        // Speichere jewelige Id
        var lHiddenDivKey = mxValue.id.toString().split('_').pop();

        // Nehme diese Id's und blende alle generell aus
        $('#info_panel_' + lHiddenDivKey).fadeOut(300);

      });

      // Blende akutelle Id von area bei mouseover ein
      $('#info_panel_' + lAreaKey).fadeIn(300);

    }

    // Wenn mouseover mouseout img
    $('body').delegate('.image_imagemap', 'mouseover mouseout', function(e) {

      // Blende aktuelle Id von area bei mouseover aus
      $('#info_panel_' + lAreaKey).fadeOut(300);

    });

  });

}

function bos_controls_initTableHovering() {

  var oTable = $('table.hover tbody');
  
  oTable.each(function() {    
    oChildren = $(this).children('tr');
    if (oChildren.children().length==0) return;
    
    //row hovering
    $(this).hover(function() {
      $(this).css('background-color', 'blue');  
    },
    function() {
      $(this).css('background-color', 'white');  
    });
    
    oChildren.each(function() {
      
      $(this).children('td').each(function() {
        
        //cell hovering
        $(this).hover(function() {
          $(this).css('background-color', 'red');  
        },
        function() {
          $(this).css('background-color', 'white');  
        });
      
      });      
    }); 
  });

}

