// pop-up na srodku ekranu
function popup(url, winName, w, h, scroll) {
	var winl = (screen.width - w) / 2;
	var wint = (screen.height - h) / 2;
	winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+scroll+',resizable'
	win = window.open(url, winName, winprops)
	if (parseInt(navigator.appVersion) >= 4) {
		win.window.focus();
	}
	return win;
}

// X - obiekt/zmienna 
// N - liczba wyświetlanych poziomów hierarchii 
// M - filter własności (wyrażenie RegExp) 
function objToStr(X,N,M,n,f,w){ 
  if(!n)n=0;if(!N)N=1;if(!M)M=/.*/; 
  if(!f)f='  ';if(!w)w='\n';var t=T='',V,K,y,r; 
  if(y=(typeof(X)=='object'&&X)){ 
    K=X.constructor; 
    if(K)if(r=/function\s+(.+)\s*\(/.exec(' '+K.toString()+' '))T=r[1]; 
  } 
  V=/Date|RegExp|Math|Number|String|Boolean/.test(T)?w+f+X.toString():''; 
  t+=y?T+' ('+V:X;n++; 
  if(n<=N)for(k in X)if(M.test(k)) 
    t+=w+f+'['+k+']'+' : '+objToStr(X[k],N,M,n,f,w+f); 
  t+=y?(n>N?w+f+'{przerwano}':''):V; 
  return t+=y?w+')':'';
} 

function isNumber(val) {
	return (val == val*1);
}

function rowChangeColor(element,kolor) {
	element.style.background=kolor;
}
//SWAP ICONS ON MOUSE-OVER & MOUSE-OUT
function swapIcon(imgId,imgPath){
	imgId.setAttribute("src",imgPath);
}
function f_newWindow(f,w,h) {
	title=Math.floor(Math.random()*9999)+1;
   	window.open(f,"window_"+title,"location=no,toolbar=no,directories=no,status=no,scrolling=yes,scrollbars=yes,resizable=yes,menubar=no,left=0,top=0,width=50,height=50");
}
function number_format(number, decimals, sep, th_sep ) {
//liczba, ile po przecinku, separator dziesietny, separator tysieczny
      var pre = "";
      if(number < 0) {
      	pre = "-";
	      number *= (-1)
      }
      if(th_sep == undefined) th_sep = '';
      number = Math.round( number * Math.pow(10, decimals) ) / Math.pow(10,decimals);
      str_number = number+"";
      arr_int = str_number.split(".");
      if(!arr_int[0]) arr_int[0] = "0";
	      if(!arr_int[1]) arr_int[1] = "";
      		if(arr_int[1].length < decimals) {
			    nachkomma = arr_int[1];
      			for (var i=arr_int[1].length+1; i <= decimals; i++) { 
					nachkomma += "0"; 
				}
      			arr_int[1] = nachkomma;
      		}
      		if(th_sep != "" && arr_int[0].length > 3) {
      			Begriff = arr_int[0];
      			arr_int[0] = "";
      			for(var j = 3; j < Begriff.length ; j+=3) {
      				Extrakt = Begriff.slice(Begriff.length - j, Begriff.length - j + 3);
      				arr_int[0] = th_sep + Extrakt +  arr_int[0] + "";
      			}
      			str_first = Begriff.substr(0, (Begriff.length % 3 == 0)?3:(Begriff.length % 3));
      			arr_int[0] = str_first + arr_int[0];
      		} 
	return pre+arr_int[0]+sep+arr_int[1];
}
function selectCombo(cel,wartosc) {
	zaznaczona=0;
	for(i=0;i<cel.options.length;i++) {
		if(cel.options[i].value==wartosc) {
			cel.selectedIndex=i;
			zaznaczona=1;
			break;
		}
	}
}
function br2nl(str) {
	var regexp =/<br[^>]*?>/ig
	return str.replace(regexp,'\n')
}

function saveCookie(cName,cValue) {
	dzis = new Date();
  	dzis.setTime(dzis.getTime()+365*24*3600*1000); //1 ROK
  	s=dzis.toGMTString();
  	document.cookie = cName+"=" + escape(cValue) + "; expires=" + s;
}

function getCokie(cName) {
	var start = document.cookie.indexOf(cName + "=");
  	var len = start + cName.length + 1;
  	if((!start) && (document.cookie.substring(0, cName.length) != cName)) {
    		return null;
   	}
  	if(start == -1) {
    		return null;
   	}
  	var end = document.cookie.indexOf(";", len);
  	if (end == -1) end = document.cookie.length;
  	return unescape(document.cookie.substring(len, end));
}

function saveCookieArray(cName,cValue,cSeparator) {
	var ciacho = getCokie(cName);
  	var zawartosc;
  	if(ciacho) { 
    		var element,start=0,koniec,i=0;
    		var reszta=ciacho;
		var czyjest='nie';
		do {
	 		koniec=reszta.indexOf(cSeparator);
	 		if(koniec == -1) koniec=reszta.length;	 
	 		element=reszta.substring(start,koniec);
	 		reszta=reszta.substr(koniec+2);
	 		if(element) {
		  		if(cValue==element) { 
		  			czyjest='tak'; 
		  		}
	 		}
		} while(koniec>0);
    
		if(czyjest=='nie') { 
			zawartosc=ciacho+cSeparator+cValue;	
		}
	} else { 
   		zawartosc=cValue; 
  	}
  	if(zawartosc) {        
   		saveCookie(cName,zawartosc);
  	}
}

function delCookieArray(cName,cValue,cSeparator) {
  var ciacho = getCokie(cName);
  var zawartosc='';
  if(ciacho)
  {   
    //tablica=new Array;
    var element,start=0,koniec,i=0;
    var reszta=ciacho;
	do
	{
	 koniec=reszta.indexOf(cSeparator);
	 if(koniec == -1) koniec=reszta.length;	 
	 element=reszta.substring(start,koniec);
	 reszta=reszta.substr(koniec+2);
	 if(element)
	 {
	  if(cValue!=element)
	  {
	   if(zawartosc) { 
	   	zawartosc=zawartosc+cSeparator+element; 
	   } else { 
	   	zawartosc=element; 
	   }
	  }
	 } 	 	 
	}while(koniec>0);
  }  
  saveCookie(cName,zawartosc);
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v3.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


// dodawanie tablic
Array.prototype.merge = function() {
	for (var i = 0; i < arguments.length; ++i) {
		for (var j = 0; j < arguments[i].length; ++j) {
			this[this.length] = arguments[i][j];
		}
	}
	return this.length;
};


// +----------------------------------------------------------------+
// | Array functions that are missing in IE 5.0                     |
// +----------------------------------------------------------------+

// Removes the last element from an array and returns that element.
if (!Array.prototype.pop) {
    Array.prototype.pop = function() {
        var last;
        if (this.length) {
            last = this[this.length - 1];
            this.length -= 1;
        }
        return last;
    };
}

// Adds one or more elements to the end of an array and returns the new length of the array.
if (!Array.prototype.push) {
    Array.prototype.push = function() {
        for (var i = 0; i < arguments.length; ++i) {
            this[this.length] = arguments[i];
        }
        return this.length;
    };
}

// Removes the first element from an array and returns that element.
if (!Array.prototype.shift) {
    Array.prototype.shift = function() {
        var first;
        if (this.length) {
            first = this[0];
            for (var i = 0; i < this.length - 1; ++i) {
                this[i] = this[i + 1];
            }
            this.length -= 1;
        }
        return first;
    };
}

// Adds one or more elements to the front of an array and returns the new length of the array.
if (!Array.prototype.unshift) {
    Array.prototype.unshift = function() {
        if (arguments.length) {
            var i, len = arguments.length;
            for (i = this.length + len - 1; i >= len; --i) {
                this[i] = this[i - len];
            }
            for (i = 0; i < len; ++i) {
                this[i] = arguments[i];
            }
        }
        return this.length;
    };
}

// Adds and/or removes elements from an array.
if (!Array.prototype.splice) {
    Array.prototype.splice = function(index, howMany) {
        var elements = [], removed = [], i;
        for (i = 2; i < arguments.length; ++i) {
            elements.push(arguments[i]);
        }
        for (i = index; (i < index + howMany) && (i < this.length); ++i) {
            removed.push(this[i]);
        }
        for (i = index + howMany; i < this.length; ++i) {
            this[i - howMany] = this[i];
        }
        this.length -= removed.length;
        for (i = this.length + elements.length - 1; i >= index + elements.length; --i) {
            this[i] = this[i - elements.length];
        }
        for (i = 0; i < elements.length; ++i) {
            this[index + i] = elements[i];
        }
        return removed;
    };
}
