/*---------------------------------------------------
U.I. INFO-KAM  
www.infokam.kielce.pl
Copyright (c) 2005

This script can be used freely
only copyright messages is needed
it contains  simple classes give multiselect property for dtree menu

-----------------------------------------------*/
// there've to include  wybor.js
// funkcja   dekodujnrref(url); na podtawie parametru url ustawia parametry filtru
// funkcja   dekodujnrref_i_wylacz(url);  wyacza parametr filtru




// Class TlNode
// Klasa TlNode - properties of Nodes
function TlNode(id, pid, url, atree) {
	this.id = id;
	this.pid = pid;
	this.url = url;
    this.tree = atree; // menu do ktorego nalezy wezel
};

// The Class maintains Selected Nodes
//

function TSelectedNodes(objName) {
  this.lNodes = new Array()//[];
  this.obj = objName;
  this.LastSelectedNode = null;
  this.readtablecookie();
};



// add method add (or replace) node is selected , to the list
// Check is the node on the same level menu is selected
// if other node on the same level've been finded add method replace itwith new one
// and return old one's id  other return -5
// additionaly this method calls functions:
// functiobndekodujnrref(url)  - it sets  dbase query of filters
// or
// dekodujnrref_i_wylacz(url) - it clears dbase query of filters
TSelectedNodes.prototype.add=function(id, pid, url,atree)
{
	var n=0;
	var alreadySelected=false;
	var finddeleted=false;
	var oldnodid = -5;

	this.LastSelectedNode=id;


//Is ther one of this level ?
 	for (n=0; n<this.lNodes.length; n++) {
       if ( (this.lNodes[n].pid == pid)  &&   (this.lNodes[n].tree == atree))// teraz juz sprawdzamy czy to to samo menu
        {
          if (this.lNodes[n].id != id)
            {
            alreadySelected=true;
            oldnodid=this.lNodes[n].id;
            this.lNodes[n].pid=pid;
            this.lNodes[n].id=id;
            this.lNodes[n].url=url;
            this.lNodes[n].tree=atree;
            dekodujnrref(url);
            return oldnodid;
           }
           else  // Jak ten sam to odznaczamy
           {
            alreadySelected=true;
             if (this.lNodes[n].url != '')  dekodujnrref_i_wylacz(this.lNodes[n].url)
                else              dekodujnrref_i_wylacz(url);
            oldnodid=this.lNodes[n].id;
            this.lNodes[n].pid= -5;
            this.lNodes[n].id= -5;
            this.lNodes[n].url='';
            this.lNodes[n].tree=null;
            return oldnodid;
           }
        }
    };
    if (!alreadySelected){
    	for (n=0; n<this.lNodes.length; n++) {
               if ((this.lNodes[n].id== -5)  &&   (this.lNodes[n].pid== -5) )
                    {
                    this.lNodes[n].pid=pid;
                    this.lNodes[n].id=id;
                    this.lNodes[n].url=url;
                    this.lNodes[n].tree=atree;
                    finddeleted=true;
                    }
                }
         if (!finddeleted) 	this.lNodes[this.lNodes.length] = new TlNode(id, pid, url,atree);

         dekodujnrref(url);
      }

  	   return -5;
};


TSelectedNodes.prototype.ClearList=function()
{
	for (n=0; n<this.lNodes.length; n++) {

                    this.lNodes[n].pid= -5;
                    this.lNodes[n].id= -5;
                    this.lNodes[n].url='';
                    this.lNodes[n].tree=null;
                }
};


TSelectedNodes.prototype.IsInList=function(id,pid,atree){

	var n=0;


	for (n=0; n<this.lNodes.length; n++)
     {
       if (this.lNodes[n].id==id && this.lNodes[n].pid==pid && this.lNodes[n].tree==atree)  {
             return true;
        }
     }
   return false;
};

TSelectedNodes.prototype.findeaftercloseLeve=function(pid,atree){

	var n=0;
	for (n=0; n<this.lNodes.length; n++)
     {
       if (this.lNodes[n].pid==pid && this.lNodes[n].tree==atree)  {
             return this.lNodes[n].id;
        }
     }
   return -5;
};



TSelectedNodes.prototype.writeCookie = function(cookieName, cookieValue, expires, path, domain, secure) {

	document.cookie =

		escape(cookieName) + '=' + escape(cookieValue)

		+ (expires ? '; expires=' + expires.toGMTString() : '')

		+ (path ? '; path=' + path : '')

		+ (domain ? '; domain=' + domain : '')

		+ (secure ? '; secure' : '');

};

TSelectedNodes.prototype.readCookie = function(cookieName) {

	var cookieValue = '';

	var posName = document.cookie.indexOf(escape(cookieName) + '=');

	if (posName != -1) {

		var posValue = posName + (escape(cookieName) + '=').length;

		var endPos = document.cookie.indexOf(';', posValue);

		if (endPos != -1) cookieValue = unescape(document.cookie.substring(posValue, endPos));

		else cookieValue = unescape(document.cookie.substring(posValue));

	}

	return (cookieValue);

};

TSelectedNodes.prototype.clearCookie = function() {

	var now = new Date();

	var yesterday = new Date(now.getTime() - 1000 * 60 * 60 * 24);


var n=0;
var z=0;
//     startCookie=document.cookie.indexOf(nazwa);
z=0;
 	for (n=0; n<this.lNodes.length+6; n++) {
        if (document.cookie.indexOf('NT'+n)>=0 )
           {
            this.writeCookie('NT'+z , 'z', yesterday);
            this.writeCookie('NTtree'+z,'z', yesterday );
            this.writeCookie('NTid'+z,'z', yesterday );
            this.writeCookie('NTpid'+z,'z', yesterday );
            this.writeCookie('NTurl'+z,'z', yesterday );
            z++;
          }
       }

};


TSelectedNodes.prototype.writetablecookie = function()
{

var n=0;
var z=0;
var s='';
//     startCookie=document.cookie.indexOf(nazwa);
z=0;


//alert('zapisuje do cookie ');
//   this.clearCookie();

 	for (n=0; n<this.lNodes.length; n++) {
        if ((this.lNodes[n].id!= -5)  &&   (this.lNodes[n].pid!= -5) )
          {
            s = this.lNodes[n].tree+'.'+this.lNodes[n].id+'.'+this.lNodes[n].pid+'.'+this.lNodes[n].url;
            this.writeCookie('TS'+z , s);
            z++;
          }
       }
    this.writeCookie('TSn' , z);
//    alert('zapisuje');
}


TSelectedNodes.prototype.getCookieVal =function(offset) {
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}


TSelectedNodes.prototype.readargcookie = function(argname)
{
var arg = argname + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen) {
    var j = i + alen;
    if (document.cookie.substring(i, j) == arg)
        return this.getCookieVal (j);
    i = document.cookie.indexOf(" ", i) + 1;
        if (i == 0) break;
     }
   return null;
}


TSelectedNodes.prototype.readtablecookie = function()
{

var n=0;
var z=0;
var s=null;
var parametry=new Array();
//     startCookie=document.cookie.indexOf(nazwa);

   //alert('czytam cookie '+ document.cookie);

  count = this.readargcookie('TSn');
//  alert('odczytuje '+count);
  
  for (n=0;n<count;n++)
    {
    s=this.readargcookie('TS'+n);
//    alert(s);
     if (s != null)
        {
         parametry=s.split(".");
          if (parametry.length==4 )
            if (parametry[0]=='d1' || parametry[0]=='d2')
            {
              this.add(parametry[1],parametry[2],parametry[3],parametry[0]);
            //alert(s);
          }
        }
    }

}


TSelectedNodes.prototype.showall = function(a)
{

var n=0;
var s=0;

s='';
 	for (n=0; n<this.lNodes.length; n++) {
       s += this.lNodes[n].tree+' '+this.lNodes[n].id+' '+this.lNodes[n].pid+'\n';
        }
     alert(s);
  return  null;
}


var globalSelectedNodes = new TSelectedNodes('ListOfSelectedNods');

