function show_props(obj)
{
  var result = ""
  for (var i in obj)
     result += i + " = " + obj[i] + "; "//"\n"
  return result
}

function ObjectPosition(obj)
{
  var curleft = 0;
  var curtop = 0;
  if (obj.offsetParent)
  {
    do
	{
      curleft += obj.offsetLeft;
      curtop += obj.offsetTop;
    } while (obj = obj.offsetParent);
  }
  return [curleft,curtop];
}

function WS (url, name, w, h)
{
  l = ((screen.availWidth - w) / 2);
  t = (screen.availHeight - h) / 2 ;
  dlg = window.open(url, name, 'resizable,scrollbars=no,menubar=0,width=' + w + ',height=' + h + ',left=' + l + ',top=' + t);
  dlg.focus();
}

function WS_scroll (url, name, w, h)
{
  /*************/
  /*** sirka ***/
  if (w == 0)
  {
    l = 0;
    w = screen.availWidth;
  }
  else
  {
    l = ((screen.availWidth - w) / 2);
  }
  /*** sirka ***/
  /*************/

  /*************/
  /*** vyska ***/
  if (h == 0)
  {
    t = 0;
    h = screen.availHeight;
  }
  else
  {
    t = (screen.availHeight - h) / 2 ;
  }
  /*** vyska ***/
  /*************/

  dlg = window.open(url, name, 'resizable,scrollbars=yes,menubar=0,width=' + w + ',height=' + h + ',left=' + l + ',top=' + t);
  dlg.focus();
}

function WS_preview ($file)
{
  WS_scroll('image.php?f=' + $file,'PREVIEW', 0, 0);
}

function closeIt ()
{
  close ();
}

function closeParent ()
{
  this.window.parent.closeIt ();
}


function editorOnSubmit ()
{
  syncTextarea();
  if (form.target == 'NAHLED_DETAIL')
  {
    WS(self, 'about:blank', 'NAHLED_DETAIL', 600, 300);
  }

//  return false;

}

function set_innerHTML ($dest, $elementId, $value)
{
  $element = $dest.document.getElementById ($elementId);
  if ($element != null)
  {
    $element.innerHTML = $value;
  }
}

function hideElements ($dest, $tagName, $class)
{
  var tags = $dest.document.getElementsByTagName ($tagName);

  for (i = 0; i < tags.length; i++)
  {
    if (tags[i].className == $class)
    {
      tags[i].style.display='none';
    }
  }
}

function reload ()
{
  this.parent.location = this.parent.location;
//  this.parent.location.reload();
//  this.parent.history.go(0);
}

function reloadParent ()
{
  $source = this.window.parent.opener;
  if ($source)
  {
    $source.location = $source.location;
//    $source.location.reload();
//    $source.history.go(0);
  }
}

function maxLength ($element)
{
  if ($element.getAttribute("maxlength") != null)  //  if ($element.hasAttribute("maxlength")) - nefunguje v IE
    return parseInt($element.getAttribute("maxlength"), 10);

  else
    return 0;
}

function mainOnLoad ($prihlasen)
{

  $element = document.getElementById (_errElement);
  if ($element)  emptyEditStyle ($element, true);


  /*** moznost spusteni onLoad scriptu pomoci funkce dle jmena dane obrazovky ***/
  $funcName = this.name + '__onLoad';

  if (funcExist ($funcName))
  {
    $onLoadRet = eval ($funcName + ' ();');
    if ($onLoadRet)  { return; }
  }

  if (document.screen_form)
  {

	if ((!$prihlasen) && (screen_form.E_MAIL.value != ''))
	{
      screen_form.HESLO.focus();
	}

	else
    {
      for (var i=0; i < screen_form.elements.length; i++)
      {
        $element = screen_form.elements[i];
        if (($element.type != 'hidden') && ($element.type != 'button') && ($element.canFocus))
        {
          $element.focus();
          break;
        }
      }
    }
  }

  if (_errMsg != '')
    alert (_errMsg);

  else if (_infoMsg != '')
    alert (_infoMsg);
}


//******************************************************************************
//*********************************** RoKa *************************************
function emptyEditStyle ($element, $isEmpty)
{
  $element.parentNode.style.backgroundColor = $isEmpty ? 'red' : '';
}

function tooLongEditStyle ($element, $isTooLong)
{
  $element.parentNode.style.backgroundColor = $isTooLong ? 'blue' : '';
}

function funcExist ($funcName)
{
  return (eval ("typeof (" + $funcName + ")") == "function");
}

function isElementEmpty ($element, $forced)
{

  $isEmpty = false; $isTooLong = false;

  if ($forced)
  {

    if (($element.type == "text") || ($element.type == "password") || ($element.type == "file"))
      $isEmpty = ($element.value.trim () == "");

    else if ($element.type == "textarea")
      $isEmpty = ($forced && ($element.value.trim () == ""));

    else if ($element.type == "select-one")
	  $isEmpty = (($element.value == "-1") || ($element.value == "-1.-1"));

	else if ($element.type == "radio")
	{
	  $name = $element.name;
	  $collection = document.all[$name];
	  $checked = false;
	  for (var j=0; ((j < $collection.length) && ($checked == false)); j++)
	  {
	    $item = $collection.item(j);
	    $checked = $checked || ($item.checked);
	  }
	  $isEmpty = $checked == false;
	}

	else if ($element.type == "checkbox")
	{
	  $name = $element.name;
	  $prefix = $name.split (';')[0];
	  $return = getIdList_CheckBox ($prefix, ';', jsCheckBox__checked);
	  $isEmpty = $return.array.length == 0;
	}

	else
	  $isEmpty = true;
  }

  return $isEmpty;
}

function elementEmptyById ($elementId, $isOk)
{
  $element = document.getElementById ($elementId);
  if ($element)
  {
    $isEmpty = isElementEmpty ($element, true);
    emptyEditStyle ($element, $isEmpty);
    if ($isOk && $isEmpty)  $element.focus();

    return $isEmpty;
  }


  else
    return true;
}

function jsBtnAction ($source, $validation, $href, $target, $id)
{

  _validateBreak = false;
  $isOk = true; $showEmpty  = false; $showTooLong = false;

  /*******************************************/
  /*** kontrola vyplneni povinnych polozek ***/
  if ($validation)
  {

	  for (var i=0; i < screen_form.elements.length; i++)
	  {
	    $element = screen_form.elements[i];
      if (($element) && (!$element.disabled))
      {
        $forced = ($element.name.indexOf("*") != -1);
        $isEmpty = isElementEmpty ($element, $forced);

        $maxLength = maxLength ($element);
        $checkLength = (($element.type == "textarea") && ($maxLength != 0));
        $isTooLong = ($checkLength && ($element.value.length > $maxLength));

        emptyEditStyle ($element, $isEmpty);
        if (!$isEmpty)  tooLongEditStyle ($element, $isTooLong);

        if ($isOk && ($isEmpty || $isTooLong))  $element.focus();
        $isOk = $isOk && ($isEmpty == false) && ($isTooLong == false);
        $showEmpty  = $showEmpty || $isEmpty;
        $showTooLong = $showTooLong || $isTooLong;
	    }
	  }

    /*** moznost dalsi "validace" pomoci funkce dle jmena dane obrazovky ***/
    $funcName = this.name + '__validate';
    if (funcExist ($funcName))
    {
	  $isOk = $isOk && eval ($funcName + ' ($source);');
	  if (_validateBreak)  { return; }
    }
  }

  /******************************/
  /*** odeslani dat na server ***/
  if ($isOk)
  {
    try
    {
      if ($id != undefined)  screen_form.ID.value = $id;

	    document.screen_form.ACTION.value = $source;

      /*************************************************/
      /*** pripojeni seznamu nezaskrtnutych checkboxu ***/

      $notChecked = getIdList_CheckBox ('', '', jsCheckBox__unchecked);
      document.screen_form.NOT_CHECKED.value = $notChecked.arrayIdList.join('|');

      /*** pripojeni seznamu nezaskrtnutych checkboxu ***/
      /*************************************************/

      document.screen_form.action = ($href == '') ? 'index.php' : $href;
      document.screen_form.target = $target;
      document.screen_form.submit();
    }

    catch(e)
    {}

    finally
    {
      document.screen_form.action = 'index.php';
      document.screen_form.target = '';
    }

  }
  else
  {
    $alertText = "Zvýrazněné položky jsou chybně vyplněny!\n";

    if ($showEmpty)  $alertText = $alertText + "\nČervená pole musíte vyplnit!";
    if ($showTooLong)  $alertText = $alertText + "\nModrá pole obsahují více textu, než je možné uložit!";

    alert ($alertText);
  }

}

function linkedSelection ($master, $slave)
{
  selIndex = $master.value;
  for (var i=0; i < $slave.length; i++)
  {
    var curItem = $slave[i];
    var parts = curItem.value.split('.');
    curVisible = (parts[0] == selIndex) || (parts[0] == '-1');
    //v IE nefunguje na polozce seznamu nastaveni "style.display"
    curItem.style.display = curVisible ? '' : 'none';
    curItem.selected = curItem.selected && curVisible;
  }
}

function linkedSelectionById ($masterId, $slaveId)
{
  $master = document.getElementById ($masterId);
  $slave = document.getElementById ($slaveId);
  linkedSelection ($master, $slave);
}

function submitId ($id, $action)
{
  screen_form.ID.value = $id;

  screen_form.ACTION.value = $action || 'DEFAULT';
  screen_form.submit();
}

function submitMenu ($nextScreen)
{
  screen_form.NEXT_SCREEN.value = $nextScreen;
  $defaultBtn = document.getElementById ('DEFAULT_BTN');

  if ($defaultBtn != null)
  {
    $defaultBtn.click();
  }
  else
  {
    screen_form.ACTION.value = 'DEFAULT';
    screen_form.submit();
  }
}

function submitReload ()
{
  screen_form.ACTION.value = 'RELOAD';
  screen_form.submit();
}

function submitEventFrame ($href)
{
  EVENT_FRAME.location = $href;
}

function submitFrame ($href)
{
  this.location = $href;
}

function isKeyEvent (e, key)
{
  var keycode;
  if (window.event) // IE
    keycode = e.keyCode;
  else if(e.which) // Netscape/Firefox/Opera
    keycode = e.which;

  return keycode == key;
}

function doNext (el)
{

  var countEl, nextEl, currEl, findNext = false;
  countEl = el.form.elements.length;
  for (var i = 0; i < countEl; i++)
  {
    currEl = el.form.elements [i];
    nextEl = el.form.elements [i + 1];

    findNext = findNext || (currEl == el);
	if (findNext && nextEl && (nextEl.type != 'hidden') && nextEl.focus)
	{
	  nextEl.focus ();
      return;
    }
  }
}

function checkListCnt ($array, $checkedCnt, $uncheckedCnt, $allEnabledIsChecked, $arrayIdList)
{
  this.array = $array;
  this.checkedCnt = $checkedCnt;
  this.uncheckedCnt = $uncheckedCnt;
  this.allEnabledIsChecked = $allEnabledIsChecked;
  this.arrayIdList = $arrayIdList;
}

function getIdList_CheckBox ($prefix, $splitStr, $checkType)
{

  $array = new Array ();
  $arrayIdList = new Array ();
  $checkedCnt = 0;
  $uncheckedCnt = 0;
  $allEnabledIsChecked = true;

  var $tags = document.getElementsByTagName ('INPUT');
  for (i = 0; i < $tags.length; i++)
  {
    $name = $tags[i].name;
	  if (($name.indexOf ($prefix) == 0) && ($tags[i].type == 'checkbox'))
    {
      if (((($tags[i].checked) && ($checkType == jsCheckBox__checked)) ||
		  ((!$tags[i].checked) && ($checkType == jsCheckBox__unchecked)) ||
		  ($checkType == jsCheckBox__all)))
      {
        $id = ($splitStr == '') ? $name : $name.split ($splitStr)[1];
        $array.push (new Array ($id, $tags[i].checked, $tags[i]));
        $arrayIdList.push ($id);

        if ($tags[i].checked)
          $checkedCnt = $checkedCnt + 1;

        else
	      $uncheckedCnt = $uncheckedCnt + 1;

      }

      if (!$tags[i].disabled)
	  {
        $allEnabledIsChecked = $allEnabledIsChecked && $tags[i].checked;
      }

    }
  }

  $result = new checkListCnt ($array, $checkedCnt, $uncheckedCnt, $allEnabledIsChecked, $arrayIdList);
  return $result;
}

function getIdList_ComboBox ($prefix, $splitStr)
{

  $array = new Array ();

  var $tags = document.getElementsByTagName ('SELECT');
  for (i = 0; i < $tags.length; i++)
  {
    $name = $tags[i].name;
	if (($name.indexOf ($prefix) == 0) && ($tags[i].type == 'select-one'))
    {
      $id = $name.split ($splitStr)[1];
      $array.push (new Array ($id, $tags[i].value, $tags[i]));
    }
  }

  return $array;
}

function setFocusById ($elementId)
{
  $element = document.getElementById ($elementId);
  if ($element != null)
  {
    $element.focus ();
  }
}

function numbersOnly (myfield, e, dec)
{
  var key;
  var keychar;

  if (window.event)
     key = window.event.keyCode;
  else if (e)
     key = e.which;
  else
     return true;
  keychar = String.fromCharCode(key);

  // control keys
  if ((key==null) || (key==0) || (key==8) ||
      (key==9) || (key==13) || (key==27) )
     return true;

  // numbers
  else if ((("0123456789").indexOf(keychar) > -1))
     return true;

  // decimal point jump
  else if (dec && (keychar == "."))
  {
    myfield.form.elements[dec].focus();
    return false;
  }
  else return false;
}

function showGraf ($source, $grafOdpovedi)
{

  $divGraf = document.getElementById ('DIV_GRAF');

  if ((!$source) || (!$divGraf))  exit ();

  /*****************************************/
  /*** skryti pri kliku na jiz zobrazeny ***/
  if (($source == grafSource) && ($divGraf.style.display == 'block'))
  {
    $divGraf.style.display = 'none';

  	return;
  }

  grafSource = $source;

  $divGraf.style.display = 'block';

  $sourcePos = ObjectPosition ($source);
  $left = $sourcePos[0] - 1; $top = $sourcePos[1] + 1;
  $divGraf.style.left = $left;
  $divGraf.style.top = $top + $source.offsetHeight;


  /******************************/
  /*** HLAVNI NASTAVENI GRAFU ***/

  var $grafArr = $grafOdpovedi.split(';');

  /*********************/
  /*** soucet hodnot ***/
  $grafSum = 0;
  for (i in $grafArr)  $grafSum += parseInt ($grafArr [i]);


  for (i in $grafArr)
  {
    $tdGraf = document.getElementById ('tdGraf_#' + i);
    $divGrafBar = document.getElementById ('divGrafBar_#' + i);
    $divGrafValue = document.getElementById ('divGrafValue_#' + i);

    if (($tdGraf) && ($divGrafBar) && ($divGrafValue))
	{
      $left = $tdGraf.offsetLeft + 1;
      $width = $tdGraf.offsetWidth - 2;

      $value = parseInt ($grafArr [i]);

      /************************************************************/
	  /*** bily obdelnik zakryvajici cast sloupec podle hodnoty ***/
	  $divGrafBar.style.top = $tdGraf.offsetTop + 1;
      $divGrafBar.style.left = $left;
      $divGrafBar.style.width = $width;
      if ($grafSum == 0)
		$divGrafBar.style.height = $tdGraf.offsetHeight - 2;
      else
	    $divGrafBar.style.height = Math.round ((($tdGraf.offsetHeight - 2) * ($grafSum - $value)) / $grafSum);

      /*************************************/
	  /*** vypocty procent pro zobrazeni ***/
      $proc = 0;
	  if ($grafSum != 0)
      {
        $proc = ($value * 100) / $grafSum;
      }
      $proc2Dec = Math.round ($proc * 10) / 10;

	  $procLbl = '';
	  if ($proc2Dec != 0)
	  {
        $procLbl = '<br>' + $proc2Dec + '%';
	  }

      /***********************************************/
	  /*** nastaveni a zobrazeni hodnoty a procent ***/
	  $divGrafValue.style.left = $left;
      $divGrafValue.style.width = $width;
	  $divGrafValue.innerHTML = '<b>' + $value + '</b>' + $procLbl;
    }
  }

}

function hideGraf ()
{
  $divGraf = document.getElementById ('DIV_GRAF');
  if ($divGraf)  $divGraf.style.display = 'none';
}

function showHelp ($source, $helpText)
{
  $divHelp = document.getElementById ('DIV_HELP');
  $dataHelp = document.getElementById ('DATA_HELP');

  if ((!$source) || (!$divHelp) || (!$dataHelp)) exit ();

  /*****************************************/
  /*** skryti pri kliku na jiz zobrazeny ***/
  if (($source == helpSource) && ($divHelp.style.display == 'block'))
  {
    $divHelp.style.display = 'none';

  	return;
  }
  helpSource = $source;

  $divHelp.style.display = 'block';

  $sourcePos = ObjectPosition ($source);
  $left = $sourcePos[0] - 1; $top = $sourcePos[1] + 1;
  $divHelp.style.left = $left;
  $divHelp.style.top = $top + $source.offsetHeight;
  $divHelp.style.width = $source.offsetWidth;

  $dataHelp.innerHTML = $helpText;
}

function hideHelp ()
{
  $divHelp = document.getElementById ('DIV_HELP');
  if ($divHelp)  $divHelp.style.display = 'none';
}

function focusChecked ($name)
{

  $checked = false;
  $collection = document.all[$name];
  for (var j=0; ((j < $collection.length) && ($checked == false)); j++)
  {
    $item = $collection.item(j);

    if ($item.checked)
    {
      $checked = true;
      $item.focus();
    }
  }

  return $checked;
}

function mnuSelectedShow ($index, $show)
{
  $element = document.getElementById ('MNU_SELECTED_' + $index);
  if ($element)  $element.style.display = $show ? 'inline' : 'none';
}

function tableCellProperty ($display)
{
  if ($display)
  {
     if	(_isExplorer)
	 { /* jen pro IE */
       return 'block';
     }
     else
	 { /* ostatni prohlizece */
       return 'table-cell';
     }
  }

  else
  {
    return 'none';
  }
}

function tableRowProperty ($display)
{
  if ($display)
  {
     if	(_isExplorer)
	 { /* jen pro IE */
       return 'block';
     }
     else
	 { /* ostatni prohlizece */
       return 'table-row';
     }
  }

  else
  {
    return 'none';
  }
}

function maxValueByName ($prefix)
{
  $result = -1;

  var $tags = document.getElementsByTagName ('INPUT');
  for (i = 0; i < $tags.length; i++)
  {
    $name = $tags[i].name;
	if ($name.indexOf ($prefix) == 0)
	{
      if ($tags [i].value > $result)  $result = $tags [i].value;
	}
  }

  return parseInt ($result);
}

function setNextValue ($elementName, $value)
{
  if ($value != -1)
  {
    $element = parent.document.getElementById ($elementName);
    if ($element)  $element.value = $value;
  }
}

function showHideElements ($tagName, $tagId, $imageId, $onLoad, $stateInputId)
{
  if ($onLoad == undefined)  $onLoad = false;


  $image = document.getElementById ($imageId);

  if ($onLoad)
  {
    $negImage = false;
    $visible = ($image.className == 'expand');
  }
  else
  {
    $negImage = true;
    $visible = ($image.className == 'collapse');
  }

  var $tags = document.getElementsByTagName ($tagName);;
  for (i = 0; i < $tags.length; i++)
  {
    if ($tags[i].id == $tagId)
	{
	  $tags[i].style.display = tableRowProperty (!$visible);
    }
  }

  if ($negImage)
  {
    $image.className = $visible ? 'expand' : 'collapse';
  }

  $stateInput = document.getElementById ($stateInputId);
  if ($stateInput)
  {
    $stateInput.value = ($image.className == 'collapse') ? 1 : 0;
  }
}

function submitTargetFrame ($href, $target, $hrefParam)
{

  if ($hrefParam == undefined)  $hrefParam = '';

  try
  {
    document.screen_form.action = $href + $hrefParam;
    document.screen_form.target = $target;
    document.screen_form.submit();
  }

  catch(e)
  {}

  finally
  {
    document.screen_form.action = 'index.php';
    document.screen_form.target = '';
  }
}

function submitNextValue_IdKompetence ($href)
{
  $element = document.getElementById ('ID_KOMPETENCE');
  $idKompetence = $element.value;

  emptyEditStyle ($element, $idKompetence == "-1");
  if ($idKompetence == "-1")
  {
	$element.focus();
	alert ('Nejdříve musíte vybrat kompetenci!');
  }
  else
  {
    submitTargetFrame ($href, 'EVENT_FRAME', '&P1=' + $idKompetence);
  }
}

function getCheckedById ($elementId, $def)
{
  $element = document.getElementById ($elementId);
  if ($element)
    return $element.checked;

  else
    return $def;
}
