var _oGR, cGR;
var ghmxy_align = 'center', ghmxy_type = 'absolute';
var onloadLista = new Array();
var wykonajNaKoncuLista = new Array();
var sUrl = oG_OSA["sUrl"]||"";
if (typeof debug == "undefined") debug = 1;
if (sUrl) if (sUrl.indexOf('http://') == -1) sUrl = "http://"+sUrl;

window.onerror = function(msg, url, line) {
    var dbg = typeof debug != 'undefined' ? 1 : 0;
    if (dbg == 1) return false;
    return true;
}

function czytajOnload() {
    for (var i = 0; i < onloadLista.length; i++) onloadLista[i]();
}

function wykonajNaKoncu() {
    try {
        for (var i = 0; i < wykonajNaKoncuLista.length; i++) wykonajNaKoncuLista[i]();
    } catch (oBlad) {}
}

function GR(){
    var r="", a=arguments, l=a.length, f, c, i, tmp = 0;
    if(!_oGR) _oGR = new cGR();
    if(l) {        
        f = a[0] + "#" + l;
        if(!_oGR[f] && _oGR[a[0]]){
            c = "return this." + a[0] + "(";
            for (i=1; i<l; i++) {                
                c += (i!=1?",":"") + "a["+i+"]";
            }
            c += ")";
            _oGR[f] = new Function("a",c);
        }
        if(_oGR[f]) r = _oGR[f](a);
        else {            
            var p = a[0].split("_");
            if (p[0] == "o" || p[0] == "p") {
                GR("zaladujPlikJS", 
                    sUrl+'/'+p[0].toLowerCase()+'/js/cgr/'+p[1].toLowerCase()+'.js', "head",
                    function() {
                        c = "if (typeof this." + a[0]+" == 'function') { return this." + a[0] + "(";
                        for (i=1; i<l; i++) c += (i!=1?",":"") + "a["+i+"]";
                        c += ")}else{return 0}";
                        _oGR[f] = new Function("a",c);     
                        if(_oGR[f]) r = _oGR[f](a);
                    }
                );
            }
            else {
                return 0;
            }          
        }
    }
    else {
        r = 0;
    }
    return r;
}

cGR = function() {
    this.wersja = (debug == 1 ? (new String (Math.random())).substring(2,11) : "1.2.0");
    this.nazwaKlasy = "cGR";
    this._bUa = navigator.userAgent.toLowerCase();
    this._bOp = (this._bUa.indexOf("opera") != -1 ? 1 : 0);
    this._bIe = (this._bUa.indexOf("msie") != -1 && !this._bOp ? 1 : 0);
        this._bIe4 = (this._bIe && (this._bUa.indexOf("msie 2.") != -1 || 
    this._bUa.indexOf("msie 3.") != -1 || this._bUa.indexOf("msie 4.") != -1) && !this._bOp ? 1 : 0);
    this._bKh = (this._bUa.indexOf("khtml") != -1 ? 1 : 0);
    this._bNN4 = document.layers ? 1 : 0;
    this._Ss="%3Cscript%20type%3D%22text%2Fjavascript%22%3E";
    this._Se="%3C%2Fscript%3E";
    this._tytuly = ["Reklama", "Nasi partnerzy"];
    this._liczbaLosowa = function () { return (new String (Math.random())).substring(2,11); };
    
    this.czyIE = function() { return (this._bIe == 1 || this._bIe4 == 1) ? 1 : 0; };
    this.czyOpera = function() { return this._bOp; };
    this.czyNN = function() { return this._bN4; };
    this.czyKhtml = function() { return this._bKh; };
    this.czyGecko = function() { return (this._bUa.indexOf("gecko") != -1 && !this._bKh ? 1 : 0) };    
    this.czyMac = function() { return (this._bUa.indexOf("mac") != -1 ? 1 : 0) };
    this.czyLinux = function() { return (this._bUa.indexOf("linux")!= -1 ? 1 : 0) };
    this.pobierzWersje = function() { return this.wersja; };
    this.relParam = function(rel, wyl) {
        var k, tmp, ret = new Array();
        wyl = wyl||0;
        rel = rel.replace(" ", "-");
        rel = rel.split('-');
        if (!wyl) rel.shift();        
        for (k in rel) {
            tmp = rel[k].split(':');
            ret[tmp[0]] = tmp[1];
        }         
        return ret;
    }; 
}

cGR.prototype = {
    $: function(id) {
        if (document.getElementById(id)) return document.getElementById(id);
        return null;
    },
    pobierzCssClass: function(oid) {
        oid = typeof oid == 'object' ? oid : GR("$", oid);
        return oid.className;
    },
    ustawCssClass: function(oid, cssClass) {
        oid = typeof oid == 'object' ? oid : GR("$", oid);
        oid.className = cssClass;
    },
    dodajCssClass: function(oid, cssClass) {
        oid = typeof oid == 'object' ? oid : GR("$", oid);
        oid.className = oid.className != "" ? oid.className+" "+cssClass : cssClass;
    },
    usunCssClass: function(oid, cssClass, nowa) {
        nowa = nowa||null;
        oid = typeof oid == 'object' ? oid : GR("$", oid);
        var uN = 1, pula = oid.className.split(" ");
        for (var i = 0; i < pula.length; i++) {
            if (pula[i] == cssClass) pula.splice(i, 1);
            if (pula[i] == nowa) uN = 0;
        } 
        if (uN) pula.push(nowa);
        oid.className = pula.join(" ");
        if (oid.className == "") oid.removeAttribute("class");
        if (oid.className) return oid.className;
        return null;
    },
    zmienCssClass: function (oid, cssClass, nowa) {
        return this.usunCssClass(oid, cssClass, nowa);
    },
    ustawReguleCss: function(oid, regula) {      
        oid = typeof oid == 'object' ? oid : GR("$", oid);
        if (GR("czyIE")) oid.style.setAttribute("cssText",regula);
        else oid.style.cssText = regula;
    },
    utworzElement: function(oid, tag, atrybuty, typ, tekst) {
        oid = typeof oid == 'object' ? oid : GR("$",oid);
        if (!oid) oid = document.getElementsByTagName("body").item(0);
        var ob = document.createElement(tag);
        typ = typ||"def"; tekst = tekst||null;
        for (k in atrybuty) {
            switch (k) {
                case "style":
					GR("ustawReguleCss", ob, atrybuty[k]);
					break;
				case "class":
					GR("ustawCssClass", ob, atrybuty[k]);
					break;
				default:
					ob.setAttribute(k, atrybuty[k]);
					break;
			}
        }
        if (tekst) this.utworzTekst(ob, tekst);
        switch (typ) {
           case "po":
               oid.parentNode.insertBefore(ob, oid.nextSibling);
               break;   
	       default:
	           oid.appendChild(ob);
	           break;
        }
	    
	    return ob;
    },
    usunElement: function(oid) {
        oid = typeof oid == 'object' ? oid : GR("$",oid);
        var r = oid.parentNode;
        r.removeChild(oid);
    },
    wstawHTML: function(oid, tresc) { 
        var element = typeof oid == 'object' ? oid : GR("$", oid);
        element.innerHTML=tresc; 
    },
    wpisz: function(tresc) { document.write(tresc); },
    wpiszSkrypt: function(skrypt, typ) { 
        typ = typ||"wpisz";
        var d = document;
        if (typ == "wpisz") {
            d.write(unescape(this._Ss)+skrypt+unescape(this._Se));
        }
        else if (typ == "head") {
            var s = d.createElement("script");
            s.setAttribute("type", "text/javascript");    
            this.utworzTekst(s, skrypt);        
            d.getElementsByTagName("head")[0].appendChild(s);
        }
    },
    dodajOnload: function(f) {
        if(GR("czyIE")) {
            window.onload = czytajOnload;
            onloadLista[onloadLista.length] = f;
        }
        else if(window.onload){
            if (window.onload != czytajOnload) {
                onloadLista[0] = window.onload;
                window.onload = czytajOnload;
            }
            onloadLista[onloadLista.length]=f;
        }
        else {
            window.onload = f;
        }
    },    
    dodajWykonajNaKoncu: function(f) {
        wykonajNaKoncuLista[wykonajNaKoncuLista.length] = f;
    },      
    zaladujPlikJS: function(p, typ, fWy) {
        var d = document;
        typ = typ||"head"; fWy = fWy||0;
        if (!oG_OSA["zaladowane"]) oG_OSA["zaladowane"] = {};
        try {
            if (typeof oG_OSA["zaladowane"][p] != "undefined" && oG_OSA["zaladowane"][p] == 1) {
                return;
            }
            p = p+(p.indexOf("?") + 1 ? "&" : "?")+this.pobierzWersje();
            if (d.getElementsByTagName("head") && typ == "head") {
                var s = document.createElement("script");                
                if (typeof fWy == "function") {
                    if (GR("czyIE")) {
                        s.onreadystatechange = function () {
                            if (/loaded|complete/.test(this.readyState)) fWy();
                        }
                    }
                    else s.onload = fWy;
                }
                s.setAttribute("type", "text/javascript");
                s.setAttribute("src", p);
                d.getElementsByTagName("head")[0].appendChild(s);
            } 
            else if(typ == "plik") {
                var tmp = "%3Cscript%20type%3D%22text%2Fjavascript%22%20src%3D%22"+p+"%22%3E";
                d.write(unescape(tmp)+unescape(this._Se));
            }
            oG_OSA["zaladowane"][p] = 1;
        }
        catch(oBlad) {}
    },
    zaladujPlikCSS: function(p) {
        var css = document.createElement("link");
        css.setAttribute("type", "text/css");
        css.setAttribute("rel", "stylesheet");
        css.setAttribute("href", p);
        document.getElementsByTagName("head")[0].appendChild(css);
    },
    utworzTekst: function(oid, tekst) {
        oid = typeof oid == 'object' ? oid : GR("$",oid);
        if (null == oid.canHaveChildren || oid.canHaveChildren) {
            oid.appendChild(document.createTextNode(tekst));
        } 
        else {
            oid.text = tekst;
        }
    }
};

cGR.prototype.zaczepZdarzenie = function(oid, typ, fn, o) {
    oid = typeof oid == "object" ? oid : GR("$", oid);
    Zdarzenia.zaczep(oid, typ, fn)
};
cGR.prototype.odczepZdarzenie = function(oid, typ, fn) {
    oid = typeof oid == "object" ? oid : GR("$", oid);
    Zdarzenia.odczep(oid, typ, fn)
};
cGR.prototype.przetworzLinki = function() {
    var i, tmp = [], linki = document.getElementsByTagName("a"); 
    var dRel = {
        "external":{"target":"_blank"},
        "popup":{"click":"popup"},
        "modul":{"click":"modul"},
        "zakladka":{"click":"zakladki", "obiekt":"zakladka"}
    };  
    var oZdarzenie = function() {};
    with({Z:oZdarzenie.prototype}) {
        Z.popup = function() { GR("pokazPopup", this); return false; }; 
        Z.modul = function() { GR("o_warstwaPrzykrywajaca_pokazModul", this); return false; };
        Z.zakladki = function() { GR("o_zakladki_wykonaj", this); return false; };
    }
    var oZ = new oZdarzenie();
    for (i = 0; i < linki.length; i++) {
        var attRel = linki[i].getAttribute("rel")||0;        
        if (attRel) {            
            for (k in dRel) {
                if (!dRel[k]) continue;
                if (attRel.indexOf(k) == 0) {
                    for (l in dRel[k]) {
                        switch (l) {
                            case "target":
                                linki[i].target = dRel[k][l];
                                break;
                            case "obiekt":
                                var attRelParam = GR("relParam",attRel, 1);
                                if (!oG_OSA[dRel[k][l]]) oG_OSA[dRel[k][l]] = {};
                                if (!oG_OSA[dRel[k][l]][attRelParam["id"]]) oG_OSA[dRel[k][l]][attRelParam["id"]] = linki[i];
                                break;
                            default:
                                if (linki[i].parentNode.className.indexOf("wyszarzony") == 0) {  
                                    linki[i].onclick = function() { return false; };
                                    break;
                                }
                                linki[i].onclick = oZ[dRel[k][l]];
                                break;
                        }
                    }
                }
            }
        }
    }
};

cGR.prototype.pobierzPozycjeScroll = function() {
    var xScroll, yScroll, d = document;

    if (self.pageYOffset) {
        xScroll = self.pageXOffset;
        yScroll = self.pageYOffset;
    } 
    else if (d.documentElement && d.documentElement.scrollTop) {
        xScroll = d.documentElement.scrollLeft;
        yScroll = d.documentElement.scrollTop;
    } 
    else if (d.body) {
        xScroll = d.body.scrollLeft;
        yScroll = d.body.scrollTop;
    }
    
	return new Array(xScroll,yScroll);
};

cGR.prototype.pobierzRozmiary = function() {	
    var xOkno, yOkno, xStrona, yStrona, xScroll, yScroll, d = document;
	   
    if (window.innerHeight && window.scrollMaxY) {	
        xScroll = d.body.scrollWidth;
        yScroll = window.innerHeight + window.scrollMaxY;
    } 
    else if (d.body.scrollHeight > d.body.offsetHeight){ 
        xScroll = d.body.scrollWidth;
        yScroll = d.body.scrollHeight;
    } 
    else {
        xScroll = d.body.offsetWidth;
        yScroll = d.body.offsetHeight;
    }	
	
    if (self.innerHeight) {
        xOkno = self.innerWidth;
        yOkno = self.innerHeight;
    } 
    else if (d.documentElement && d.documentElement.clientHeight) { 
        xOkno = d.documentElement.clientWidth;
        yOkno = d.documentElement.clientHeight;
    } 
    else if (d.body) {
        xOkno = d.body.clientWidth;
        yOkno = d.body.clientHeight;
    }	
	
    xStrona = (xScroll < xOkno) ? xOkno : xScroll;
    yStrona = (yScroll < yOkno) ? yOkno : yScroll;   
	   
    rozmiar = new Array(xStrona,yStrona,xOkno,yOkno,screen.width,screen.height) 
    return rozmiar;
};

cGR.prototype.pobierzPozycje = function(oid) {
    oid = (typeof oid == "object") ? oid : GR("$", oid);
	var T = 0, L = 0;
	while(oid.tagName != 'HTML') {
		T += oid.offsetTop||0;
		L += oid.offsetLeft||0;
		if (oid.offsetParent) oid = oid.offsetParent;
		else break;
	}
	T += oid.offsetTop||0;
    L += oid.offsetLeft||0;
	return [T, L];
};

cGR.prototype.pokazPopup = function(oAhref) {
    var k, i = 0, _pTmp = [], rel = oAhref.getAttribute("rel");
    var p = GR("relParam",rel), r = GR("pobierzRozmiary");
    var _p = {"scrollbars":0, "channelmode":0, "directories":0, "fullscreen":0, "resizable":0, "toolbar":0, 
              "location":0, "menubar":0, "status":0, "titlebar":0, "width":750, "height":550, "left":0, "top":0};
    p["width"] = p["s"]||p["width"]; p["height"] = p["w"]||p["height"];
    p["left"] = p["l"]||Math.floor((r[4] - p["width"])/2); p["top"] = p["g"]||Math.floor((r[3] - p["height"])/2);
    
    for (k in _p) {
        if (p[k]) {
            _pTmp[i] = k+'='+p[k]; i++; 
            continue;
        }
        _pTmp[i] = k+'='+_p[k]; i++;
    }
    window.open(oAhref.href, "", _pTmp.join());
};

cGR.prototype.pokazUkryj = function(pola, wlacz, typ) {
    wlacz = wlacz||[];
    typ = typ||"block";

    for (var i = 0; i < pola.length; i++) {
        var el = typeof pola[i] == 'object' ? pola[i] : GR("$", pola[i]);        
        if (!el) continue;       
        if (typeof wlacz[i] == "undefined") {
            wlacz[i] = el.style.display == "none" ? 1 : 0;
        }
        switch (wlacz[i]) {
            case 1:
                el.style.display = typ;
                break;
            default:
                el.style.display = "none";
                break;
        }
    } 
    return false; 
};

cGR.prototype.inicjalizujGemiusHeatMap = function() {
    try {
        var s = 'var ghmxy_align = "'+ghmxy_align+'";'+"\n"+
                     'var ghmxy_type = "'+ghmxy_type+'";'+"\n"+
                     'var ghmxy_identifier = new String("bOtLa5QakD3ll8BxlHcT6Je.rtEsAcMm2rn093IxryX.m7");';
        GR("wpiszSkrypt", s);
        GR("zaladujPlikJS","http://pro.hit.gemius.pl/hmapxy.js","plik");
    } catch(oBlad) {}
};

cGR.prototype.gemius = function(tbG) {
    try {
        var _plik = {"audience":"http://arbo.hit.gemius.pl/pp_gemius.js", "traffic":sUrl+"/o/js/gemius.js"};
        var _zmienne = {"audience":"pp_gemius_identifier", "traffic":"gemius_identifier"};
        for (k in tbG) {
            GR("wpiszSkrypt", "var "+_zmienne[k]+" = '"+tbG[k]+"';");
            GR("zaladujPlikJS",_plik[k],"plik");
        }
    } catch(oBlad) {}
}

cGR.prototype.Gemius = function(tbG) {
    var _F = function() { GR('gemius',tbG) };
    try { GR("dodajWykonajNaKoncu", _F) } catch(oB) {};
}

var dodajOnload = cGR.prototype.dodajOnload;
var dodajWykonajNaKoncu = cGR.prototype.dodajWykonajNaKoncu;
var gr$ = cGR.prototype.$;

dodajOnload(cGR.prototype.przetworzLinki);
dodajWykonajNaKoncu(cGR.prototype.inicjalizujGemiusHeatMap);

HTTPRequest = function(){};
with({$:HTTPRequest.prototype}){
    $.czyObsluguje = function(){
		return !!this.polaczenie();
	};
	$.zdarzenia = ["start", "open", "send", "load", "end"];
    $.filtr = function(url) {
        var utf16 = ['%u0104','%u0106','%u0118','%u0141','%u0143','%u015A','%u017B','%u0179','%u0105','%u0107','%u0119',
                     '%u0142','%u0144','%u015B','%u017C','%u017A'];
        var utf8 = ['%A1','%C6','%CA','%A3','%D1','%A6','%AF','%AC','%B1','%E6','%EA','%B3','%F1','%B6','%BF','%BC'];
        url = escape(url);
        var matches = url.match(/%u[a-z0-9]{4}/gi);
        if (matches != null) {
            for (var i = 0; i < matches.length; i++) {
                var utf8code = "";
                for(var j=0; j<utf16.length; j++){
                    if (utf16[j] == matches[i]) {
                        utf8code = utf8[j];
                        break;
                    }
                }
                url = url.replace(matches[i], utf8code);
            }
        }
        return url;
	};
	$.polaczenie = function(){
		var s = ["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"], ob;
        try {
            return new XMLHttpRequest();
        }
        catch (oBlad) {
            for (var i = 0; i < s.length; i++) {
            	try {
                	return new ActiveXObject(s[i]);
                	break;
            	}
            	catch (oBlad){}
            }
        }
	};
	$.formatujParametry = function(parametry){
		var i, r = [];
		for(i in parametry) {
		    r[r.length] = i + "=" + (this.filtr ? this.filtr(parametry[i]) : parametry[i]);
		}
		return r.join("&");
	};
	$.get = function(url, parametry, funkcjaObslugi, oczekiwanaOdpowiedz){
        return this.request("GET", url + (url.indexOf("?") + 1 ? "&" : "?") + 
		       this.formatujParametry(parametry), null, funkcjaObslugi, null, oczekiwanaOdpowiedz);
	};
	$.post = function(url, parametry, funkcjaObslugi, oczekiwanaOdpowiedz){
		return this.request("POST", url, parametry = this.formatujParametry(parametry), funkcjaObslugi, {
			"Connection": "close",
			"Content-Length": parametry.length,
			"Method": "POST " + url + " HTTP/1.1",
			"Content-Type": "application/x-www-form-urlencoded; charset=iso-8859-2"
		}, oczekiwanaOdpowiedz);
	};
	$.request = function(metoda, url, parametry, funkcjaObslugi, naglowki, oczekiwanaOdpowiedz){
		var i, o = this.polaczenie(), f = funkcjaObslugi instanceof Function;
		try{
			o.open(metoda, url, !oczekiwanaOdpowiedz);
			oczekiwanaOdpowiedz || (o.onreadystatechange = function() {
				var s = $.zdarzenia[o.readyState];
				f ? funkcjaObslugi(o) : s in funkcjaObslugi && funkcjaObslugi[s](o);
			});
			o.setRequestHeader("HTTP_USER_AGENT", "XMLHttpRequest");
			try {
				for(i in naglowki) {
					o.setRequestHeader(i, naglowki[i]);
				}
					o.overrideMimeType('text/html; charset=ISO-8859-2');
			}
			catch(oBlad) {}
			o.send(parametry);
			oczekiwanaOdpowiedz && (f ? funkcjaObslugi(o) : funkcjaObslugi["end"] && funkcjaObslugi["end"](o));
			return true;
		}
		catch(oBlad){
			return false;
		}
	};
}

var Zdarzenia = new Object;
Zdarzenia.zaczep = function(cel, typ, fn) {
    if (cel.addEventListener) cel.addEventListener(typ, fn, false);
    else if (cel.attachEvent) cel.attachEvent("on"+typ, fn);
    else cel["on"+typ] = fn; 
};
Zdarzenia.odczep = function(cel, typ, fn) {
    if (cel.removeEventListener) cel.removeEventListener(typ, fn, false);
    else if (cel.detachEvent) cel.detachEvent("on"+typ, fn);
    else cel["on"+typ] = null; 
};
Zdarzenia.formatuj = function(oZd) {
    if (GR("czyIE")) {
        oZd.charCode = (oZd.type == "keypress") ? oZd.keyCode : 0;
        oZd.eventPhase = 2;
        oZd.isChar = (oZd.charCode > 0);
        oZd.pageX = oZd.clientX + document.body.scrollLeft;
        oZd.pageY = oZd.clientY + document.body.scrollTop;
        oZd.preventDefault = function() { this.preventDefault = false; };
        if (oZd.type == "mouseout") oZd.relatedTarget = oZd.toElement;
        else if (oZd.type == "mouseover") oZd.relatedTarget = oZd.fromElement;
        oZd.stopPropagation = function () { this.cancelBubble = true; };
        oZd.target = oZd.srcElement;
        oZd.timeStamp = (new Date).getTime();
    }
    return oZd;
};
Zdarzenia.pobierz = function() {
    if (window.event) return this.formatuj(window.event);
    else return Zdarzenia.pobierz.caller.arguments[0]; 
};

