var _taggingJSLoaded = false;

var __st = 0;
var __en = 0;

_frTop = top;
var currentDoc = 1;

function findSelectedDoc(docNum)
{
  var i;
  var docSel = _frTop.GetCookie(_frTop.cookieDocSel);
  var searchStr = "," + docNum + ",";

  if (docSel == null || docSel == "")
    return false;

  docSel = "," + docSel + ",";
  if ((__st = docSel.indexOf(searchStr)) >= 0)
    {
    __st--;
    __en = __st + searchStr.length;
    if (__st > 0)
      __en--;
    return true;
    }
  else
    return false;
}

//WebC simpleDocList assumes we have a tagStateContains function
//that does what findSelectedDoc does
function tagStateContains(docNum)
{
  return(findSelectedDoc(docNum));
}


function numberorder(a,b) { return a - b }

function updateDocSelection(docNum)
{
  docNum = docNum.toString();
  var found = false;
  var docSel = _frTop.GetCookie(_frTop.cookieDocSel);
  var len = (docSel != null)? docSel.length : 0;

  __st = -1;
  __en = 0;
  found = findSelectedDoc(docNum);
  if (found)
  {
    var str1 = __st > 0 ? docSel.substring(0, __st) : "";
    var str2 = __en < len ? docSel.substring(__en, len) : "";

    docSel = str1 + str2;
  }
  else 
  {
    if (len == 0)
      docSel = docNum;
    else
      docSel += "," + docNum;
  }

  if (docSel.search(",") != -1)
  {
    var a = docSel.split(",");
    a.sort(numberorder);
    docSel = a.join(",");
  }
  if (docSel == "")
  {
    _frTop.DeleteCookie(_frTop.cookieDocSel);
    _frTop.DeleteCookie(_frTop.cookieDDRqd);  
  }
  else
  {
    _frTop.SetCookie(_frTop.cookieDDRqd, "0");
    _frTop.SetCookie(_frTop.cookieDocSel, docSel);
  }
}

function isSelected(docNum)
{
  __st = -1;
  __en = 0;
  return findSelectedDoc(docNum);
}

function clickTag(docNum)
{
  var elems = document.TAGForm.elements;
  var numItems = elems.length;
  var i;

  updateDocSelection(docNum);
  for (i = 0; i < numItems; i++)
    if (elems[i].name == "Tag" && elems[i].value == docNum)
      {
      elems[i].checked = isSelected(docNum);
      break;
      }
}

function initCiteCont()
{
  var elems = document.TAGForm.elements;

  if (elems != null)
    {
    var numItems = elems.length;
    var i;

    for (i = 0; i < numItems; i++)
      if (elems[i].name == "Tag")
	elems[i].checked = isSelected(elems[i].value);

    if (_frTop.closeOutline != null)
      _frTop.closeOutline();
    }
  if (currentDoc > 3)
    self.location="#"+currentDoc;
}

function initDocCont(url, query)
{
  if(url != null && url != "")
  {
    if(query != null && query != "" )
    {
      //build it from pieces
      var urlArray=url.split('?');

      var loc=urlArray[0] + '?' + query;

      SetPseudoCookie('docURL',loc);
    }
    else
    {
      //just use whats passed in for executive
      SetPseudoCookie('docURL',url);
    }
  }
  var tag = document.TAGForm.Tag;

  if (tag != null)
    {
    tag.checked = isSelected(tag.value);
    if (_frTop.documentLoaded != null)
      _frTop.documentLoaded();
    }

  if( self.segmentList != null  && self.segmentList != "")
  {
     SetPseudoCookie('SEGMENT_LIST_COOKIE', segmentList.toUpperCase());
  }
}

function scanForTag()
{
  var elems = document.TAGForm.elements;
  var docSel = _frTop.GetCookie(_frTop.cookieDocSel);
  var len = (docSel != null)? docSel.length : 0;
 
  /* we have checks but no cookie values, update the cookie*/
  if (elems != null && len ==0)
  {
    var numItems = elems.length;
    var i;
 
    for (i = 0; i < numItems; i++)
    {
      if (elems[i].name == "Tag")
      {
        if(elems[i].checked)
        {
         /*elems is zero based but docs are one based so add 1*/
         var docNum=i+1;
         updateDocSelection(docNum); 
        }
      }
    }
  } 
}

//this funtion updates cookieDocSel base on the checkboxes in the form
//it is the opposite of initCiteCont which update the checkboxes based
//on the values in the cookie
function updateUsingChecks()
{
  _frTop.DeleteCookie(_frTop.cookieDocSel);

  var elems = document.TAGForm.elements;
 
  if (elems != null)
  {
    var numItems = elems.length;
    var i;
 
    for (i = 0; i < numItems; i++)
    {
      if (elems[i].name == "Tag")
      {
        if(elems[i].checked)
        {
         /*elems is zero based but docs are one based so add 1*/
         var docNum=i+1;
         updateDocSelection(docNum); 
        }
      }
    }
  } 
}

_taggingJSLoaded = true;

