function CNarzedzia()
{
   obiekt = new Object();

   obiekt.unicodeEscape = function(pstrString)
   {
     if (pstrString == "")
     {
       return "";
     }
     var iPos = 0;
     var strOut = "";
     var strChar;
     var strString = escape(pstrString);
     while (iPos < strString.length)
     {
       strChar = strString.substr(iPos, 1);
       if (strChar == "%")
       {
         strNextChar = strString.substr(iPos + 1, 1);
         if (strNextChar == "u")
         {
           strOut += strString.substr(iPos, 6);
           iPos += 6; 
         }
         else
         {
           strOut += "%u00" + strString.substr(iPos + 1, 2);
           iPos += 3;
         }
       }
       else
       {
         strOut += strChar;
         iPos++;
       }
     };
     return strOut;
   };

   obiekt.keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";   

   obiekt.koduj64 = function(input)
   {
      var output = "";
      var chr1, chr2, chr3;
      var enc1, enc2, enc3, enc4;
      var i = 0;

      do {
         chr1 = input.charCodeAt(i++);
         chr2 = input.charCodeAt(i++);
         chr3 = input.charCodeAt(i++);

         enc1 = chr1 >> 2;
         enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
         enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
         enc4 = chr3 & 63;

         if (isNaN(chr2)) {
            enc3 = enc4 = 64;
         } else if (isNaN(chr3)) {
            enc4 = 64;
         }

         output = output + this.keyStr.charAt(enc1) + this.keyStr.charAt(enc2) +
            this.keyStr.charAt(enc3) + this.keyStr.charAt(enc4);
      } while (i < input.length);

      return output;
   };

   obiekt.dekoduj64 = function(input)
   {
      var output = "";
      var chr1, chr2, chr3;
      var enc1, enc2, enc3, enc4;
      var i = 0;
   
      // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
      input = input.replace(/[^A-Za-z0-9\+\/\=]+/g, "");
   
      do {
         enc1 = this.keyStr.indexOf(input.charAt(i++));
         enc2 = this.keyStr.indexOf(input.charAt(i++));
         enc3 = this.keyStr.indexOf(input.charAt(i++));
         enc4 = this.keyStr.indexOf(input.charAt(i++));
   
         chr1 = (enc1 << 2) | (enc2 >> 4);
         chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
         chr3 = ((enc3 & 3) << 6) | enc4;
   
         output = output + String.fromCharCode(chr1);
   
         if (enc3 != 64) {
            output = output + String.fromCharCode(chr2);
         }
         if (enc4 != 64) {
            output = output + String.fromCharCode(chr3);
         }
      } while (i < input.length);
   
      return output;
   };
   
   obiekt.parsujXml = function(o)
   {
      if (window.ActiveXObject)
      {
         var doc=new ActiveXObject("Microsoft.XMLDOM");
         doc.async="false";
         doc.loadXML(o);
      }
      else
      {
         var parser=new DOMParser();
         var doc=parser.parseFromString(o,"text/xml");
      }
      return doc.documentElement;
   };

   obiekt.wirtualnyFormularz = function(plik)
   {
      f = document.createElement("form");
      f.setAttribute("name","formularz");
      f.setAttribute("action",plik);
      f.setAttribute("method","post");
      
      document.getElementById("dFormularz").appendChild(f);
      
      return f;
   };
   
   obiekt.wirtualnePoleFormularza = function(formularz, nazwa, wartosc, ilosc)
   {
      if(ilosc)
      {
         for(var j=0;j<ilosc;j++)
         {
            i = document.createElement("input");
            i.setAttribute("type","hidden");
            i.setAttribute("name",nazwa[j]);
            i.setAttribute("value",wartosc[j]);
            formularz.appendChild(i);
         }
      }
      else
      {
         i = document.createElement("input");
         i.setAttribute("type","hidden");
         i.setAttribute("name",nazwa);
         i.setAttribute("value",wartosc);
         formularz.appendChild(i);
      }
   };
   
   obiekt.usunCookie = function(nazwa)
   {
   	this.utworzCookie(nazwa,"",-1);
   };
   
   obiekt.utworzCookie = function(nazwa, wartosc, czas)
   {
	  //alert(nazwa);
      var data = new Date();
//      if(czas==null) czas=365;
      if(czas==null) czas=381600;
//      data.setTime(data.getTime()+(czas*24*60*60*1000));

//
// Czas jest w minutach !!
//
      data.setTime(data.getTime()+(czas*60*1000));
      document.cookie = nazwa + "=" + escape(wartosc) + ((data == null) ? "" : ("; expires=" + data.toGMTString())) + "; path=/";
   };
   
   obiekt.czytajCookie = function(nazwa)
   {
      var ciasteczko = nazwa + "=";
   
      if (document.cookie.length > 0)
      {
         poczatek = document.cookie.indexOf(ciasteczko);
   
         if (poczatek != -1)
         {
            poczatek += ciasteczko.length;
            koniec = document.cookie.indexOf(";", poczatek);
   
            if (koniec == -1) koniec = document.cookie.length;
            
            return unescape(document.cookie.substring(poczatek, koniec));
         }
      }
   };
   
   obiekt.kodKlawisza = function(klawisz)
   {
      if(klawisz)
         kodKlawisza = klawisz.keyCode ?
         klawisz.keyCode :
         klawisz.charCode ?
         klawisz.charCode :
         klawisz.which;
      
      return kodKlawisza;
   };
   
   obiekt.zliczajZnaki = function(wskaznik,obiekt)
   {
      switch(wskaznik)
      {
         case 0:
            if(obiekt.value.length>256)
               obiekt.value=obiekt.value.slice(0,250);
         break;
         case 1:
            if(obiekt.value.length>100)
               obiekt.value=obiekt.value.slice(0,200);
         break;
         case 2:
            if(obiekt.value.length>90)
               obiekt.value=obiekt.value.slice(0,90);
         break;
      }
   };

   obiekt.naEnter = function(wykonaj,klawisz)
   {
      kodKlawisza=this.kodKlawisza(klawisz);
      if(kodKlawisza==13)
         eval(wykonaj);
   };

	obiekt.aktywujDeaktywuj = function(wskaznik,pola)
	{	
	   for(var i=0;i<pola.length;i++)
	   {	
			 if(pola[i][1]=='u')
			 		obiekt.ukryjPokazElement(wskaznik,false,pola[i][0]);
			 else if (pola[i][1]=='d')
				document.getElementById(pola[i][0]).disabled=!wskaznik;
	   }
	};

   obiekt.ukryjPokazElement = function(ukryjPokaz,tablica,elementy)
   {
      if(ukryjPokaz)
      {
         if(tablica)
         {
            for(var i=0;i<elementy.length;i++)
            {
               if(document.getElementById(elementy[i]))
               {
                  document.getElementById(elementy[i]).style.visibility="visible";
                  document.getElementById(elementy[i]).style.position="static";
               }
            }
         }
         else
         {
            if(document.getElementById(elementy))
            {
               document.getElementById(elementy).style.visibility="visible";
               document.getElementById(elementy).style.position="static";
            }
         }
      }
      else
      {
         if(tablica)
         {
            for(var i=0;i<elementy.length;i++)
            {
               if(document.getElementById(elementy[i]))
               {
                  document.getElementById(elementy[i]).style.visibility="hidden";
                  document.getElementById(elementy[i]).style.position="absolute";
                  document.getElementById(elementy[i]).style.top=0;
                  document.getElementById(elementy[i]).style.left=0;
               }
            }
         }
         else
         {
            if(document.getElementById(elementy))
            {
               document.getElementById(elementy).style.visibility="hidden";
               document.getElementById(elementy).style.position="absolute";
               document.getElementById(elementy).style.top=0;
               document.getElementById(elementy).style.left=0;
            }
         }
      }
   };

   obiekt.aktualizujUzytkownika = function(wskaznik,cookieNazwa)
   {

      var u=this.czytajCookie(cookieNazwa);
	  //alert(u);
/*
      if(!wskaznik)
         var wskaznik = new Array
         (
            "itAutorOpinii",
            "diNadawca"
         );
*/
//      if(szukanieOpinii)
//         for(var i=0;i<szukanieOpinii.iloscWynikow;i++)
//            wskaznik[wskaznik.length]="diNadawca"+i;

//alert(wskaznik+","+narzedzia.czytajCookie(cookieNazwa));

      for(var i=0;i<wskaznik.length;i++)
         if(u)
         {
            if(document.getElementById(wskaznik[i]))
            {
               document.getElementById(wskaznik[i]).value=u;
               document.getElementById(wskaznik[i]).setAttribute("disabled","true");
            }
         }
         else
         {
            if(document.getElementById(wskaznik[i]))
            {
               document.getElementById(wskaznik[i]).value="Gość";
               document.getElementById(wskaznik[i]).removeAttribute("disabled");
            }
         }
   };

   return obiekt;
};

var narzedzia = new CNarzedzia();
