var ajaxHintTimeout;
var ajaxHintObject;
var ajaxHintOffset = -1;

var actMailFolder;
var actMailMessage;
var cntMailMessages = 0;

//typ pozycji obiektu
function ObjectPosition(x, y) {
  this.x=x;
  this.y=y;
}

//dodawanie funcji do wywołania przy body onload
function addOnLoad(f) {
var currentEvent = window.onload==undefined?undefined:window.onload.toString();
  if(currentEvent == undefined) {
    window.onload = new Function("event", f+"();\n");
  } else {
    if(currentEvent.lastIndexOf("}") != -1)
      window.onload = new Function("event", currentEvent.substring(currentEvent.indexOf("{")+1, currentEvent.lastIndexOf("}")-1)+"\n"+f+"();\n");
    else
      window.onload = new Function("event", f+"();\n");
  }
}

//dodaje dynamicznie bibliotekę javascript
function loadLibJS(f) {
  var s = document.createElement('script');
  s.type = "text/javascript";
  s.src = f;
  try {
    document.getElementsByTagName('head')[0].appendChild(s);
  } catch(ex) {}
}

//pobieranie z obiektu o tagów "tag" o className "cn"
function getTagsByClassName(o, tag, cn) {
  var reCheck = new RegExp('(^| )' + cn + '($| )', '');
  var ts = o.getElementsByTagName(tag);
  var r = new Array();
  for(var i = ts.length - 1; i >= 0; i--) {
    if(ts[i].className && reCheck.test(ts[i].className))
      r.push(ts[i]);
  }
  return r;
}

//znajduje dla obiektu o, parent tag "tag" o className "cn"
function getParentByClassName(o, tag, cn) {
  if(o == null) return null;
  var reCheck = new RegExp('(^| )' + cn + '($| )', '');
  while(o.parentNode && (o.nodeName.toUpperCase() != tag.toUpperCase() || !o.className || !reCheck.test(o.className)))
    o = o.parentNode;
  return (o.nodeName.toUpperCase() == tag.toUpperCase() && o.className && reCheck.test(o.className) ? o : null);
}


//next sibling dla obiektu o, tag "tag" o className "cn"
function getNextTagByClassName(o, tag, cn) {
  if(o == null || o.nextSibling == undefined) return null;
  var reCheck = new RegExp('(^| )' + cn + '($| )', '');
  while(o.nextSibling && (o.nodeName.toUpperCase() != tag.toUpperCase() || !o.className || !reCheck.test(o.className)))
    o = o.nextSibling;
  return (o.nodeName.toUpperCase() == tag.toUpperCase() && o.className && reCheck.test(o.className) ? o : null);
}

//previous sibling dla obiektu o, tag "tag" o className "cn"
function getPreviousTagByClassName(o, tag, cn) {
  if(o == null || o.previousSibling == undefined) return null;
  var reCheck = new RegExp('(^| )' + cn + '($| )', '');
  while(o.previousSibling && (o.nodeName.toUpperCase() != tag.toUpperCase() || !o.className || !reCheck.test(o.className)))
    o = o.previousSibling;
  return (o.nodeName.toUpperCase() == tag.toUpperCase() && o.className && reCheck.test(o.className) ? o : null);
}

//zwraca pozycję obiektu od id i
function getObjectPositionById(i) {
  try {
    return getObjectPosition(document.getElementById(i));
  } catch(ex) {
    return null;
  }
}

//zwraca pozycję obiektu o
function getObjectPosition(o) {
var p = new ObjectPosition(o.offsetLeft, o.offsetTop);
  while(o.offsetParent) {
    o = o.offsetParent;
    p.x += o.offsetLeft;
    p.y += o.offsetTop;
  }
  return p;
}

//URLenkodowanie UTF-8
function utf8UrlEncode(s) {
  var u = '';
  for(var i = 0; i < s.length; i++) {
    var c = s.charCodeAt(i);
    if (c < 128) {
      u += String.fromCharCode(c);
    } else if((c > 127) && (c < 2048)) {
      u += String.fromCharCode((c >> 6) | 192);
      u += String.fromCharCode((c & 63) | 128);
    } else {
      u += String.fromCharCode((c >> 12) | 224);
      u += String.fromCharCode(((c >> 6) & 63) | 128);
      u += String.fromCharCode((c & 63) | 128);
    }
  }
  return escape(u);
}

//naprawiacz daty dla cookies
function fixDate(date) {
  base = new Date(0);
  skew = base.getTime();
  if(skew > 0) date.setTime(date.getTime() - skew);
}

//zapisanie cookie
function setCookie(name, value, expires, path, domain, secure) {
var curCookie = name + "=" + escape(value) +
      ((expires) ? "; expires=" + expires.toGMTString() : "") +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      ((secure) ? "; secure" : "");
  document.cookie = curCookie;
}

//odczytanie nazw cookies
function getCookiesNames(prefix) {
var dc = document.cookie;
var cookieName;
var stack = new Array();
var offset = 0;
  while(dc.indexOf(prefix, offset) != -1) {
    cookieName = prefix;
    offset = dc.indexOf(prefix, offset)+prefix.length;
    while(dc.charAt(offset)>='0' && dc.charAt(offset)<='9')
      cookieName += dc.charAt(offset++);
    if(dc.charAt(offset)=='=')
      stack.push(cookieName);
  }
  return stack.length!=0?stack:null;
}

//odczytanie cookie
function getCookie(name) {
var dc = document.cookie;
var prefix = name + "=";
var begin = dc.indexOf("; " + prefix);
  if (begin == -1) {
    begin = dc.indexOf(prefix);
    if (begin != 0) return null;
  } else
    begin += 2;
  var end = document.cookie.indexOf(";", begin);
  if (end == -1)
    end = dc.length;
  return unescape(dc.substring(begin + prefix.length, end));
}

//usunięcie cookie
function deleteCookie(name, path, domain) {
  if (getCookie(name)) {
    document.cookie = name + "=" +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    "; expires=Thu, 01-Jan-70 00:00:01 GMT";
  }
}

//otwieranie obrazka w popupie
function popImage(l) {
var popImage=window.open('',"popImage", (document.all?"width=150,height=150,":"")+"scrollbars=no,resizable=yes,toolbar=no,userbar=no,location=no,status=no,menubar=no,screenX=100,screenY=100");
  popImage.document.writeln('<html><head><title>Obrazek</title></head>');
  popImage.document.writeln('<body style="background-color: #ffffff; margin: 0px;" onLoad="autoSize();">');
  popImage.document.writeln('<img style="border: 0px; cursor: pointer;" id="image" src="'+l+'" onClick="window.close();">');
  popImage.document.writeln('<script language="JavaScript" type="text/javascript" ><!--');
  popImage.document.writeln('function autoSize(o,l) {');
  if(document.all) {
    popImage.document.writeln('window.resizeBy(document.getElementById("image").offsetWidth-document.body.clientWidth, document.getElementById("image").offsetHeight-document.body.clientHeight);');
  } else {
    popImage.document.writeln('window.resizeTo(2000, 150);');
    popImage.document.writeln('window.resizeBy(document.getElementById("image").offsetWidth-window.innerWidth, document.getElementById("image").offsetHeight-window.innerHeight);');
  }
  popImage.document.writeln('window.focus();');
  popImage.document.writeln('}');
  popImage.document.writeln('/'+'/-'+'-></script>');
  popImage.document.writeln('</body></html>');
  popImage.document.close();
}

//otwieranie popupa
function popUp(l,w,h,s) {
var popUp = window.open(l,"popUp", "width="+w+",height="+h+",scrollbars="+(s==1?"yes":"no")+",resizable=yes,toolbar=no,userbar=no,location=no,status=no,menubar=no");
  popUp.document.close();
  popUp.focus();
}

//nawigacja - przejdź do pozycji na liście
function naviListGo(n) {
var h = window.location.href.replace('showAll=1', 'showAll=0');
  if(h.indexOf("?offset=") != -1)
    h = h.replace(/\?offset=[0-9]*/, "?offset="+n);
  else if(h.indexOf("&offset=") != -1)
    h = h.replace(/&offset=[0-9]*/, "&offset="+n);
  else if(h.indexOf("?") == -1)
    h = h.replace(/\#.*/, "")+"?offset="+n;
  else
    h = h.replace(/\#.*/, "")+"&offset="+n;
  window.location = h;
}

//nawigacja - pokaż całą listę
function naviShowAll() {
var h = window.location.href;
  if(h.indexOf("?showAll=") != -1)
    h = h.replace(/\?showAll=[0-9]*/, "?showAll=1");
  else if(h.indexOf("&showAll=") != -1)
    h = h.replace(/&showAll=[0-9]*/, "&showAll=1");
  else if(h.indexOf("?") == -1)
    h = h.replace(/\#.*/, "")+"?showAll=1";
  else
    h = h.replace(/\#.*/, "")+"&showAll=1";
  window.location = h;
}

//objekt request
function Request() {}

//wyciąganie parametrów z urla
function extractReqParams(s) {
  try {
    var anch = document.createElement('a');
    anch.href = s;
    if(anch.search != '') {
      var retArr = anch.search.replace('?', '').split('&');
      var req = new Request();
      for(var i = retArr.length - 1; i >= 0 ; i--)
        if(retArr[i].indexOf('=') != -1) {
          var attr = retArr[i].split('=', 2);
          eval('Request.prototype.'+attr[0]+'=null;');
          eval('req.'+attr[0]+'="'+attr[1]+'";');
        } else {
          retArr.splice(i, 1);
        }
      if(retArr.length > 0)
        return req;
      return null;
    } else {
      return null;
    }
  } catch(ex) {
    return null;
  }
}

//rozpoczyna wyszukiwanie
function startSearch() {
  try {
    if(document.forms['formSearch'].elements['searchWord'].value != '')
      document.forms['formSearch'].submit();
  } catch(ex) {}
}

//sprawdzanie formularza newslettera
function checkFormNewsletter(formName, boxId, alerts) {
  var f = document.forms[formName];
  var e = f.elements['email'];
  var emailRE = /^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,9})$/;
  if(!e.value) {
    alert(alerts[0]);
  } else if(!emailRE.test(e.value)) {
    alert(alerts[1]);
  } else {
    advAJAX.submit(f, {
      onSuccess : function(obj) {
        try {
          if(obj.responseText.search(/<!--[01]-->/) == 0)
            document.getElementById(boxId).innerHTML = obj.responseText.replace(/<!--[01]-->/, '');
          else
            alert(alerts[2]);
        } catch(ex) {}
      },
      onError: function(obj) {
        try {
          alert('Błąd: ' + obj.status);
        } catch(ex) {}
      }
    });
  }
  return false;
}

//przykrycie strony
function coverPage(u) {
  var pl = document.getElementById('pageLid');
  if(!pl) {
    pl = document.createElement('div');
    pl.id = 'pageLid';
    pl.style.position = document.all ? 'absolute' : 'fixed';
    if(u)
      pl.onclick = new Function('uncoverPage();');
    document.body.appendChild(pl);
  }
  pl.style.height = document.all ? document.body.clientHeight+'px' : '100%';
}

//odkrycie strony
function uncoverPage() {
  if(document.getElementById('pageLid'))
    document.body.removeChild(document.getElementById('pageLid'));
  if(document.getElementById('layerImage'))
    document.body.removeChild(document.getElementById('layerImage'));
}

//otwarcie obrazka w warstwie
function popLayerImage(l) {
  coverPage(true);
  var img = document.createElement('img');
  img.id = 'layerImage';
  img.onload = new Function('showLayerImage(this);');
  img.onclick = new Function('uncoverPage();');
  document.body.appendChild(img);
  img.src = l;
}

//wycentrowanie obiektu na ekranie
function centerObjectOnScreen(o) {
  var winW = document.all ? (document.documentElement&&document.documentElement.clientWidth) ? document.documentElement.clientWidth-20 : document.body.clientWidth-20:window.innerWidth-16;
  var winH = document.all ? (document.documentElement&&document.documentElement.clientHeight) ? document.documentElement.clientHeight-20 : document.body.clientHeight-20:window.innerHeight-16;
  if(navigator.appVersion.indexOf('MSIE 6') != -1) {
    o.style.position = 'absolute';
    o.style.left = document.documentElement.scrollLeft + Math.floor((winW - o.offsetWidth) / 2)+'px';
    o.style.top = document.documentElement.scrollTop + Math.floor((winH - o.offsetHeight) / 2)+'px';
  } else {
    o.style.position = 'fixed';
    o.style.left = Math.floor((winW - o.offsetWidth) / 2)+'px';
    o.style.top = Math.floor((winH - o.offsetHeight) / 2)+'px';
  }
}
  
//pokazanie obrazka w warstwie
function showLayerImage(o) {
  coverPage();
  centerObjectOnScreen(o);
  o.style.visibility = 'visible';
}

//zmiana zaznaczenia gałęzi (stara)
function checkBranchOld(o) {
  var f = o.form;
  var tln = o.name.substr(0, o.name.lastIndexOf('_')) + '_0';
  var checkStart = false;
  var checkEnd = false;
  var i = 0
  var oi = 0;
  while(!checkEnd && i < f.elements.length) {
    if(checkStart) {
      if(f.elements[i].name > o.name)
        f.elements[i].checked = o.checked;
      else
        checkEnd = true;
    } else if(f.elements[i] == o) {
      checkStart = true;
      oi = i;
    }
    i++;
  }
  if(o.checked) {
    checkStart = true;
    while(checkStart) {
      i = oi - 1;
      checkEnd = false;
      while(!checkEnd && i >= 0 && f.elements[i].name >= o.name) {
        if(f.elements[i].name == o.name && !f.elements[i].checked)
          checkEnd = true;
        i--;
      }
      i = oi + 1;
      while(!checkEnd && i < f.elements.length && f.elements[i].name >= o.name) {
        if(f.elements[i].name == o.name && !f.elements[i].checked)
          checkEnd = true;
        i++;
      }
      if(!checkEnd) {
        i = oi - 1;
        while(!checkEnd && i >= 0 && f.elements[i].name <= o.name) {
          if(f.elements[i].name < o.name) {
            o = f.elements[i];
            oi = i;
            o.checked = true;
            checkEnd = true;
          }
          i--;
        }
        if(o.name == tln || i < 0)
          checkStart = false;
      } else {
        checkStart = false;
      }
    }
  } else {
    i = oi - 1;
    checkEnd = false;
    var ntc = o.name;
    var ntcBuff = o.name;
    while(!checkEnd && i >= 0) {
      if(f.elements[i].name < ntc) {
        f.elements[i].checked = false;
        ntcBuff = f.elements[i].name;
        if(ntcBuff < ntc)
          ntc = ntcBuff;
      } else if(f.elements[i].name == tln) {
        checkEnd = true;
      }
      i--;
    }
  }
}

//zmiana zaznaczenia gałęzi
function checkBranch(o) {
  var f = o.form;
  var bn = o.name.substr(0, o.name.lastIndexOf('_'));
  var tln = bn + '_0' + (o.name.indexOf('[]') != -1 ? '[]' : '');
  var checkStart = false;
  var checkEnd = false;
  var i = 0
  var oi = 0;
  while(!checkEnd && i < f.elements.length) {
    if(checkStart) {
      if(f.elements[i].name.indexOf(bn) == 0 && f.elements[i].name > o.name)
        f.elements[i].checked = o.checked;
      else
        checkEnd = true;
    } else if(f.elements[i] == o) {
      checkStart = true;
      oi = i;
    }
    i++;
  }
  checkStart = true;
  while(checkStart) {
    i = oi;
    chkParent = false;
    while(!chkParent && i >= 0 && f.elements[i].name.indexOf(bn) == 0 && f.elements[i].name >= o.name) {
      if(f.elements[i].name == o.name && f.elements[i].checked)
        chkParent = true;
      i--;
    }
    i = oi + 1;
    while(!chkParent && i < f.elements.length && f.elements[i].name.indexOf(bn) == 0 && f.elements[i].name >= o.name) {
      if(f.elements[i].name == o.name && f.elements[i].checked)
        chkParent = true;
      i++;
    }
    i = oi - 1;
    checkEnd = false
    while(!checkEnd && i >= 0 && f.elements[i].name.indexOf(bn) == 0 && f.elements[i].name <= o.name) {
      if(f.elements[i].name < o.name) {
        o = f.elements[i];
        oi = i;
        o.checked = chkParent;
        checkEnd = true;
      } else {
        i--;
      }
    }
    if(!checkEnd && i >= 0) {
      o = f.elements[i];
      oi = i;
    }
    if(o.name == tln || i < 0)
      checkStart = false;
  }
}

//pobranie powiatów dla województwa w formularzu
function formGetDistrictsByProvince(o) {
  if(document.getElementById(o.parentNode.id.replace('Province', 'District')))
    advAJAX.get({
      url : 'index.php?page=lista_powiatow',
      parameters : {
        'province' : (o.options[o.selectedIndex].value == '' ? '-1' : o.options[o.selectedIndex].value)
      },
      tag : o,
      onSuccess : function(obj) {
        document.getElementById(obj.tag.parentNode.id.replace('Province', 'District')).innerHTML = obj.responseText;
      },
      onError : function(obj) {
        alert('Błąd: ' + obj.status);
      }
    });
}

//sprawdzanie wartości i wyszukiwanie po enterze
function blurAndSubmitOnEnter(evnt, o, uf) {
  if(window.event && evnt.keyCode == 13) {
    o.blur();
    uf.checkAndSubmit();
  } else if(evnt.which && evnt.which == 13) {
    o.blur();
    uf.checkAndSubmit();
  }
}

//klikanie pozycji z listy ajaxowej
function ajaxHintClick(o, sep) {
  if(ajaxHintObject) {
    if(sep && ajaxHintObject.value != '' && ajaxHintObject.value.indexOf(sep) != -1) {
      ajaxHintObject.value = ajaxHintObject.value.substring(0, ajaxHintObject.value.lastIndexOf(sep)) + (ajaxHintObject.value[ajaxHintObject.value.length - 1] == sep ? '' : sep) + o.innerHTML;
    } else {
      ajaxHintObject.value = o.innerHTML;
    }
    ajaxHintObject.focus();
  }
  ajaxHintHide();
}

//uaktywnianie pozycji z listy ajaxowej
function ajaxHintOver(o) {
  var ahl = document.getElementById('ajaxHintList');
  if(ahl)
    for(var i = 0; i < ahl.childNodes.length; i++)
      ahl.childNodes[i].className = (ahl.childNodes[i] == o ? 'active' : '');
}

//ukrywanie podpowiedzi ajaxowej
function ajaxHintHide() {
  var ahl = document.getElementById('ajaxHintList');
  if(ahl)
    document.body.removeChild(ahl);
}

//anulowanie wyszukiwania ajaxem
function ajaxStopHintSearch() {
  clearTimeout(ajaxHintTimeout);
  var ahl = document.getElementById('ajaxHintList');
  if(ahl)
    document.body.removeChild(ahl);
}

//zwracanie listy ajaxem i obsługa
function ajaxHintSearch(e, o, url, sep) {
  clearTimeout(ajaxHintTimeout);
  if(o) {
    var ahl = document.getElementById('ajaxHintList');
    var k = (window.event ? window.event.keyCode : e.which);
    if(k == 38 || k == 40 || k == 13) {
      if(ahl) {
        if(k == 13) {
          if(ajaxHintOffset >= 0) {
            if(sep && o.value != '' && o.value.indexOf(sep) != -1) {
              o.value = o.value.substring(0, o.value.lastIndexOf(sep)) + (o.value[o.value.length - 1] == sep ? '' : sep) + ahl.childNodes[ajaxHintOffset].innerHTML;
            } else {
              o.value = ahl.childNodes[ajaxHintOffset].innerHTML;
            }
            o.focus();
          }
          document.body.removeChild(ahl);
        } else if(ahl.childNodes.length > 0 && ahl.childNodes[0].className != 'img') {
          if(k == 38) {
            ajaxHintOffset--;
            if(ajaxHintOffset < 0)
              ajaxHintOffset = ahl.childNodes.length - 1;
          } else if(k == 40) {
            if(ahl.childNodes.length != 0) {
              ajaxHintOffset++;
              if(ajaxHintOffset >= ahl.childNodes.length)
                ajaxHintOffset = -1;
            } else {
              ajaxHintOffset = -1;
            }
          }
          for(var i = 0; i < ahl.childNodes.length; i++)
            ahl.childNodes[i].className = (i == ajaxHintOffset ? 'active' : '');
        }
      }
      ajaxHintTimeout = null;
    } else {
      ajaxHintObject = o;
      ajaxHintTimeout = setTimeout('ajaxHintSearch(null, null, "'+url+'", '+(sep ? '"'+sep+'"' :'null')+');', 1000);
    }
  } else if((sep ? ajaxHintObject.value.substr(ajaxHintObject.value.lastIndexOf(sep) + 1) : ajaxHintObject.value).replace(/(^ +)|( +)$/, '') != '') {
    var ahl = document.getElementById('ajaxHintList');
    if(!ahl) {
      var pos = getObjectPosition(ajaxHintObject);
      ahl = document.createElement('div');
      ahl.id = 'ajaxHintList';
      ahl.style.position = 'absolute';
      ahl.style.left = (pos.x) + 'px';
      ahl.style.top = (pos.y + ajaxHintObject.offsetHeight) + 'px';
      ahl.style.width = (ajaxHintObject.offsetWidth - 2)+ 'px';
      document.body.appendChild(ahl);
    }
    if(ahl.childNodes.length == 0) {
      var imgDiv = document.createElement('div');
      imgDiv.className = 'img';
      var img = document.createElement('img');
      img.src = '/img/layout/wait_small.gif';
      ahl.appendChild(imgDiv);
      imgDiv.appendChild(img);
    }
    advAJAX.get({
      url : url + utf8UrlEncode((sep ? ajaxHintObject.value.substr(ajaxHintObject.value.lastIndexOf(sep) + 1) : ajaxHintObject.value).replace(/(^ +)|( +)$/, '')),
      onSuccess: function(obj) {
        try {
          var list = obj.responseXML.getElementsByTagName('list').item(0);
          var ahl = document.getElementById('ajaxHintList');
          if(ahl) {
            ahl.innerHTML = '';
            if(list.childNodes.length > 0)
              for(var i = 0; i < list.childNodes.length; i++) {
                var elm = document.createElement('div');
                elm.style.padding = '3px';
                elm.style.width = (ahl.offsetWidth - 8) + 'px';
                elm.innerHTML = list.childNodes[i].childNodes[0].nodeValue;
                elm.onclick = new Function('ajaxHintClick(this, '+(sep ? '"'+sep+'"' : 'null')+');');
                elm.onmouseover = new Function('ajaxHintOver(this);');
                ahl.appendChild(elm);
              }
            else
              ajaxHintHide();
          }
          ajaxHintOffset = -1;
          ajaxHintTimeout = null;
        } catch(ex) {}
      },
      onError: function(obj) {
        try { 
          alert('Błąd: ' + obj.status);
          ajaxHintTimeout = null;
        } catch(ex) {}
      }
    });
  } else {
    ajaxHintHide();
    ajaxHintTimeout = null;
  }
}

//inicjalizacja formularza wyszukiwania
function initFormSearch() {
  var req = extractReqParams(window.location.href);
  try {
    if(req.searchWord)
      document.forms['formSearch'].elements['searchWord'].value = req.searchWord;
  } catch(ex) {}
}

//inicjalizacja ajaxowych contentów
function initAjaxContents(acs, doAfter) {
  var reCheck = new RegExp('^<!--.+\/\/-->$', '');
  var reClean = new RegExp('(^<!--)|(\/\/-->$)', 'g');
  if(acs)
    acs = [acs];
  else
    acs = getTagsByClassName(document, 'div', 'ajaxContent');
  for(var i = 0; i < acs.length; i++) {
    if(reCheck.test(acs[i].innerHTML)) {
      advAJAX.get({
        url : acs[i].innerHTML.replace(reClean, ''),
        tag : [acs[i], doAfter],
        unique : false,
        onSuccess : function(obj) {
          var doAfter = obj.tag[1];
          obj.tag = obj.tag[0];
          var reCheck = new RegExp('<!--[0-9]+,[0-9]+,[0-9]+\/\/-->', '');
          obj.tag.innerHTML = obj.responseText;
          if(reCheck.test(obj.responseText))
            addAjaxNaviList(obj.tag, obj.url, obj.responseText.substring(obj.responseText.indexOf('<!--') + 4, obj.responseText.indexOf('//-->')).split(','));
          try {
            var o = getPreviousTagByClassName(obj.tag, 'div', 'tabs');
            o = getTagsByClassName(o, 'div', 'tab');
            for(var i = 0; i < o.length; i++) {
              var currentEvent = o[i].onclick.toString();
              if(currentEvent.indexOf(', this);' != -1))
                o[i].onclick = new Function('event', currentEvent.substring(currentEvent.indexOf('{') + 1, currentEvent.lastIndexOf('}') - 1).replace(', this);', ', this, "' + obj.url + '");'));
            }
          } catch(ex) {}
          if(doAfter)
            eval(doAfter+'();');
        },
        onError : function(obj) {
          alert('Błąd: ' + obj.status);
        }
      });
    }
  }
}

//dodawanie nawigacji do ajaxowej listy (offset, total, group)
function addAjaxNaviList(o, url, p) {
  for(var i = 0; i < p.length; i++)
    p[i] = parseFloat(p[i]);
  if(p[1] > p[2]) {
    var anl = document.createElement('div');
    anl.className = 'ajaxNaviList';
    var f = document.createElement('form');
    f.name = 'formNaviAjax' + '_' + (new Date()).getTime();
    var e = document.createElement('select');
    e.name = 'group';
    for(var i = 0; i < p[1]; i += p[2]) {
      e.options[e.options.length] = new Option(i / p[2] + 1, i);
      if(p[0] == i)
        e.options[e.options.length - 1].selected = true;
    }
    e.onchange = new Function('event', 'ajaxNaviListGo("'+f.name+'", "'+url+'", this.options[this.selectedIndex].value);');
    f.appendChild(e);
    if(p[0] > 0) {
      e = document.createElement('div');
      e.innerHTML = '&lt;';
      e.className = 'prev';
      e.onclick = new Function('event', 'ajaxNaviListGo("'+f.name+'", "'+url+'", '+(p[0] - p[2] < 0 ? 0 : p[0] - p[2])+');');
      anl.appendChild(e);
    }
    anl.appendChild(f);
    if(p[0] < p[1] - p[2]) {
      e = document.createElement('div');
      e.innerHTML = '&gt;';
      e.className = 'next';
      e.onclick = new Function('event', 'ajaxNaviListGo("'+f.name+'", "'+url+'", '+(p[0] + p[2] >= p[1] ? p[1] - p[2] : p[0] + p[2])+');');
      anl.appendChild(e);
    }
    o.appendChild(anl);
  }
}

//ajaxowa nawigacja - przejdź do pozycji na liście
function ajaxNaviListGo(f, url, n) {
  var o = getParentByClassName(document.forms[f], 'div', 'ajaxContent');
  url = url.replace('showAll=1', 'showAll=0');
  if(url.indexOf("?offset=") != -1)
    url = url.replace(/\?offset=[0-9]*/, "?offset="+n);
  else if(url.indexOf("&offset=") != -1)
    url = url.replace(/&offset=[0-9]*/, "&offset="+n);
  else if(url.indexOf("?") == -1)
    url = url.replace(/\#.*/, "")+"?offset="+n;
  else
    url = url.replace(/\#.*/, "")+"&offset="+n;
  if(o) {
    o.innerHTML = '<!--'+url+'//-->';
    initAjaxContents(o);
  }
}

//ajaxowe pobieranie danych do formularza
function ajaxJSEval(url) {
  advAJAX.get({
    url : url,
    onSuccess : function(obj) {
      eval(obj.responseText);
    },
    onError : function(obj) {
      alert('Błąd: ' + obj.status);
    }
  });
}

//tab sortujący
function tabSortList(m, o, url) {
  if(url && o.className.indexOf('tabOn') == -1) {
    var ts = getTagsByClassName(o.parentNode, 'div', 'tab');
    for(var i = 0; i < ts.length; i++)
      ts[i].className = 'tab' + (ts[i] == o ? ' tabOn' : '');
    var o = getNextTagByClassName(o.parentNode, 'div', 'ajaxContent');
    if(o) {
      o.innerHTML = '<!--' + url + '&sort=' + m + '//-->';
      initAjaxContents(o);
    }
  }
}

//pokazuje treść pytania i odpowiedzi
function showLectureAnswer(o, id) {
  o.innerHTML = 'Trwa wczytywanie...';
  o.onclick = '';
  advAJAX.get({
    url : 'index.php?page=szkolenie_pytanie&id='+id,
    tag : o,
    onSuccess : function(obj) {
      obj.tag.className = 'answer';
      obj.tag.innerHTML = obj.responseText;
    },
    onError : function(obj) {
      alert('Błąd: ' + obj.status);
    }
  });
}

//przeładowanie strony
function reloadPage(d) {
  setTimeout('window.location.reload();', (d ? d : 1500));
}

//timer pytania
function questionTimer() {
  var o = document.getElementById('questionTimer');
  var n = ['sekundę','sekundy','sekund'];
  if(o) {
    var t = parseFloat(o.innerHTML);
    if(--t >= 0) {
      o.innerHTML = t;
      o.nextSibling.innerHTML = n[t == 1 ? 0 : ((t%100 < 10 || t%100 > 20) && (t%10 == 2 || t%10 == 3 || t%10 == 4) ? 1 : 2)];
      setTimeout('questionTimer();', 1000);
    } else {
      o.parentNode.style.display = 'none';
      o.parentNode.nextSibling.style.display = 'inline';
      setTimeout('window.location.reload();', 1000);
    }
  }
}

