/**
 * Copyright (c) 2006-2009 Wydawnictwo Bauer Sp. z o.o., Sp.k. All Rights Reserved
 * Author: Krzysztof Kozlowski, http://www.kozik.net.pl
 *
 * $Id: func.js 3382 2009-04-08 12:17:31Z kkozlowski $
 * @file
 */

function check_string(ua, browser)
{
	place = ua.indexOf(browser) + 1;
	return place;
}

/**
 * Czy przeglądarka to shit totalny?
 */
function browser_is_msie()
{
  if (browser_is_opera() || browser_is_firefox())
    return false;
  if (check_string(navigator.userAgent.toLowerCase(), 'msie'))
    return true;
  return false;
}

/**
 * Czy przeglądarka jest szybka i wygodna, ale ma wszystkich gdzies?
 */
function browser_is_opera()
{
  if (check_string(navigator.userAgent.toLowerCase(), 'opera'))
    return true;
  return false;
}

/**
 * Czy przeglądarka trzyma się standardów?
 */
function browser_is_firefox()
{
  if (check_string(navigator.userAgent.toLowerCase(), 'firefox'))
    return true;
  return false;
}

function validate_required_textfield_event()
{
  var style_color_ok = "#d5e9bf" ;
  var style_color_bad = "#fbe1bd" ;

  if (this.value.length > 0)
    this.style.backgroundColor = style_color_ok;
  else
    this.style.backgroundColor = style_color_bad ;
}

function validate_required_textfield(id)
{
  var style_color_ok = "#d5e9bf" ;
  var style_color_bad = "#fbe1bd" ;

  elem = document.getElementById(id) ;
  if (elem != null)
  {
    if (elem.value.length > 0)
      elem.style.backgroundColor = style_color_ok ;
    else
      elem.style.backgroundColor = style_color_bad ;
  }
}

function register_element_to_validate(id)
{
  elem = document.getElementById(id) ;
  if (elem != null)
  {
    validate_required_textfield(id) ;
    elem.onkeyup = validate_required_textfield_event ;
  }
}

function add_onload_event(func)
{
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

/**
 * Ukrycie elementu, pewnie nie działa poprawnie na MSIE...
 */
function hide_item(id)
{
  var item = document.getElementById(id) ;
  if (item)
  {
    //item.style.visibility = 'collapse' ; // Rabany MSIE 6 i 7 nie obsluguje 'collapse'... ja piernicze...
    item.style.visibility = 'hidden' ;
    item.style.display = 'none' ;
  }
}

/**
 * Odkrycie elementu, pewnie nie działa poprawnie na MSIE...
 */
function show_item(id)
{
  var item = document.getElementById(id) ;
  if (item)
  {
    item.style.visibility = 'visible' ;
    item.style.display = 'block' ;
  }
}

/**
 * Wyłącza inny element 'slave_id' w zależności od tego czy 'master_id' ma wartość/stan równe 'master_value'
 * @param master_id     string; ID elementu nadrzędnego
 * @param master_value  boolean; dla jakiej wartości element podrzędny ma zostać wyłączony
 * @param slave_id      string; ID elementu podrzednego
 * @param show_on_other boolean; Jeśli element nie ma wartości 'master_value', to włącz 'slave_id'.
 */
function disable_form_item(master_id, master_value, slave_id, show_on_other)
{
  var master_item = document.getElementById(master_id) ;
  var slave_item = document.getElementById(slave_id) ;
  if (master_item && slave_item)
  {
    if ((master_item.type == 'checkbox') || (master_item.type == 'radio'))
    {
      if (master_item.checked == master_value)
        slave_item.disabled = true ;
      else if(show_on_other)
        slave_item.disabled = false ;
    }
  }
}

/**
 * Ukrywa/odkrywa inny element 'slave_id' w zależności od tego czy 'master_id' ma wartość/stan równe 'master_value'
 * @param master_id     string; ID elementu nadrzędnego
 * @param master_value  boolean; dla jakiej wartości element podrzędny ma zostać wyłączony
 * @param slave_id      string; ID elementu podrzednego
 * @param show_on_other boolean; jeśli element nie ma wartości 'master_value', to odkryj 'slave_id'.
 */
function hide_form_item(master_id, master_value, slave_id, show_on_other)
{
  var master_item = document.getElementById(master_id) ;
  var slave_item = document.getElementById(slave_id) ;
  if (master_item && slave_item)
  {
    if ((master_item.type == 'checkbox') || (master_item.type == 'radio'))
    {
      if (master_item.checked == master_value)
        hide_item(slave_id) ;
      else if(show_on_other)
        show_item(slave_id) ;
    }
  }
}
