/*
  Funkcje związane z PageChain.inc
*/

// Ustawia wartości elementów formularza tak, by wywołanie "form.submit()"
// powodowało powrót do poprzedniej strony w "łańcuchu".
// form - nazwa formularza lub obiekt
// stepCount - ile kroków wstecz (domyślnie 1)
function PageChainSetGoBack(form, stepCount)
{
  if(typeof(form) == 'string') form = document.forms[form];
  if(typeof(stepCount) == 'undefined') stepCount = 1;
  var len = parseInt(form.elements['PC_L_'].value);
  var newLen = len-1-stepCount;
  form.elements['PC_L_'].value = newLen.toString();
  form.action = newLen >= 0 ? form.elements['PC_PN_' + newLen.toString()].value : VirtDir + '/index.asp';
}

// Po wysłaniu formularza trzeba koniecznie wywołać PageChainCancelLevelOffset(...)
function PageChainSetLevelOffset(form, offset)
{
  if(typeof(form) == 'string') form = document.forms[form];
  form.elements['PC_LO_'].value = (offset-1).toString();
}

function PageChainCancelLevelOffset(form)
{
  if(typeof(form) == 'string') form = document.forms[form];
  form.elements['PC_LO_'].value = '0';
}

// Wysyła formularz tak, aby zadana strona (action) pojawiła się w łańcuchu
// na zadanym poziomie (zagnieżdżenia).
// offset - zagnieżdżenie w łańcuchu w stosunku do bieżącej strony
// Standardowe wysłanie formularza jest równoważne offset = 1,
// co oznacza dodanie nowej strony do łańcucha (i nawigatora).
function PageChainSubmitNewPage(form, action, offset)
{
  if(typeof(form) == 'string') form = document.forms[form];
  PageChainSetLevelOffset(form, offset);
  var oldAction = form.action
  if(action) form.action = action;
  form.submit();
  PageChainCancelLevelOffset(form);
  form.action = oldAction;
}

// Uruchamia formularz (form.submit()) w sposób powodujący powrót
// do poprzedniej strony w "łańcuchu".
// form - nazwa formularza lub obiekt
// stepCount - ile kroków wstecz (domyślnie 1)
function PageChainSubmitGoBack(form, stepCount)
{
  if(typeof(form) == 'string') form = document.forms[form];
  PageChainSetGoBack(form, stepCount);
  form.submit();
}

// Powoduje wyczyszczenie informacji o "łańcuchu". Efekt jest taki, jakby strona
// nie uczestniczyła w "łańcuchu".
// form - nazwa formularza lub obiekt
function PageChainCancelChain(form)
{
  if(typeof(form) == 'string') form = document.forms[form];
  form.elements['PC_L_'].value = '';
}

// Uruchamia formularz (form.submit()) w sposób powodujący powrót
// do strony o zadanym numerze w "łańcuchu".
// form - nazwa formularza lub obiekt
function PageChainGoToPage(form, pageNo)
{
  if(typeof(form) == 'string') form = document.forms[form];
  form.action = form.elements['PC_PN_' + (pageNo).toString()].value;
  form.submit();
}

// większe o 1 od PageChainLenAdjusted() w aspie tworzącym stronę
function PageChainLen(form)
{
  if(typeof(form) == 'string') form = document.forms[form];
  return parseInt(form.elements['PC_L_'].value);
}

// Powoduje ustawienie strony po powrocie (cofnięciu w nawigatorze) na <a name=posname
function PageChainSetScrollPos(form, posName)
{
  if(typeof(form) == 'string') form = document.forms[form];
  form.elements['PC_SP_' + (PageChainLen(form)-1).toString()].value = posName;
}

function PageChainSubmitNext(form, action, fromPosName)
{
  PageChainSetScrollPos(form, fromPosName);
  PageChainSubmitNewPage(form, action, 1);
}

