var Utils={
  holdOn: false,
  tInterval: 0,
  getTInterval: function() {
    return 1000 * Utils.tInterval++;
  },
  getParams: function(node) {
        var params=new Object();
        var elems=node.getElementsByClassName("params");
        for(var i=0; i<elems.length; i++) {
        var el=elems[i].getElementsByTagName("div");
                for (var j=0; j<el.length; j++) {
                        params[el[j].className]=el[j].innerHTML;
                }
        }
        return params;
  },
  suffix: function(num) {
    if (num ==1) return 'a';
    num%=100;
    if (num == 12 || num == 13 || num == 14) return '';
    num%=10;
    if (num == 2 || num == 3 || num == 4) return 'y';
    return '';
  },
  processDt: function(clazzName,maxMinutes,eff,fmt, elem) {
    DatesProcessor.process({
        clazzName: clazzName, 
        maxMinutes: maxMinutes, 
        effFunc: eff==true?DatesProcessor.defEffFunc:null, 
        fmt: fmt, 
        elem: elem,
        newerElemFunc: DatesProcessor.timeAgoReplFunc
        });
  },
  processDtGosp: function(clazzName,maxMinutes,eff,fmt, elem) {
    DatesProcessor.process({
        clazzName: clazzName, 
        maxMinutes: maxMinutes, 
        effFunc: eff==true?DatesProcessor.defEffFunc:null, 
        fmt: fmt, 
        elem: elem,
        newerElemFunc: DatesProcessor.hhmiReplFunc,
        olderElemFunc: DatesProcessor.ddmReplFunc
        });
  },
  logP: function(params) {
    var el = $("logP");
    if (! el) {
        el = document.createNode("div");
        el.setAttribute("id","logP");
        el.setAttribute("style","opacity:0");
        document.body.appendChild(el);
    }
    el.innerHTML="<img src='http://p.gazeta.pl?"
        +params
        +"&t="
        +(new Date()).getTime()
        +"&u="
        +getCookie('GazetaPlUser')
        +"' width='1px' height='1px'/>";
  }
}




var DatesProcessor = {
  defEffFunc: function(p) {
    Element.removeClassName(p.elem,p.clazzName);
    Element.addClassName(p.elem,p.clazzName+"_");
    if (p.mDiff>p.maxMinutes)
        Element.addClassName(p.elem,p.clazzName+"_old");
    Element.show(p.elem);
  },
  timeAgoReplFunc: function(p) {
                var hDiff = Math.floor(p.mDiff/60);
                var mDiff=p.mDiff%60;
                p.elem.innerHTML = p.elem.innerHTML.replace(p.dtRgP[p.dtRgI.ALL],
                        (hDiff > 0 ? hDiff + " godzin"+Utils.suffix(hDiff)+ " " : "")
                        + (mDiff>0 ? mDiff + " minut"+Utils.suffix(mDiff) : "")
                        +" temu");
  },
  hhmiReplFunc: function(p) {
                var hDiff = Math.floor(p.mDiff/60);
                var mDiff=p.mDiff%60;
                p.elem.innerHTML = p.elem.innerHTML.replace(p.dtRgP[p.dtRgI.ALL],
                p.dtRgP[p.dtRgI.HH]+':'+p.dtRgP[p.dtRgI.MI]);
  },
  ddmReplFunc: function(p) {
                p.elem.innerHTML =  p.elem.innerHTML
                    .replace(p.dtRgP[p.dtRgI.ALL], p.dtRgP[p.dtRgI.DD]+' '+
			DatesProcessor.month[parseInt(p.dtRgP[p.dtRgI.MM].replace(/^0/,""))-1]);
  },
  process: function(p) {
    var dtRgxp; 
    var dtRgI = {YY: 2, MM: 3, DD: 4, HH: 5, MI: 6, DAY: 1, ALL: 0}

    if ("YMD"==p.fmt) {
               dtRgxp = /(([12][0-9]{3})[-\/]([01]?[0-9])[-\/]([0123]?[0-9])[^\d]*)?([012]?[0-9]):([0-6]?[0-9])/
        dtRgI.YY=2; dtRgI.DD=4; 
    } else {
               dtRgxp = /(([0123]?[0-9])[-\/]([01]?[0-9])[-\/]([12][0-9]{3})[^\d]*)?([012]?[0-9]):([0-6]?[0-9])/
        dtRgI.YY=4; dtRgI.DD=2;
    }
    if (typeof(now) == 'undefined' || typeof(now.getTime) == 'undefined') {
        return false;
    }
    var el = p.elem ? Element.getElementsByClassName(p.elem,p.clazzName) : Element.getElementsByClassName(document,p.clazzName);
    for (var i=0; i<el.length; i++) {
        try {
            var elDt = new Date(now.getTime());
            var dtP = dtRgxp.exec(el[i].innerHTML);
            if (dtP[dtRgI.DAY]) {
                elDt = new Date (1*dtP[dtRgI.YY], (1*dtP[dtRgI.MM])-1, 1*dtP[dtRgI.DD], 1*dtP[dtRgI.HH], 1*dtP[dtRgI.MI]);
            } else {
                elDt.setHours(1*dtP[dtRgI.HH]);
                elDt.setMinutes(1*dtP[dtRgI.MI]);
                if (elDt.getTime() > now.getTime())
                    elDt.setTime(elDt.getTime() - (1000*60*60*24));
            }

            var mDiff = Math.ceil((now.getTime() - elDt.getTime()) / 60000);
            var params={dtRgP: dtP, dtRgI: dtRgI, elem: el[i], clazzName: p.clazzName, mDiff: mDiff, maxMinutes: p.maxMinutes};
            if (typeof(p.effFunc) == 'function') {
                p.effFunc.call(null,params);
            }
            if (mDiff>p.maxMinutes && typeof(p.olderElemFunc) == 'function') {
                    p.olderElemFunc.call(null,params);
            } else if (mDiff<=p.maxMinutes && typeof(p.newerElemFunc) == 'function') {
                    p.newerElemFunc.call(null,params);
            }
            params=null;
        } catch (e) {}

    }
  },
  month: ["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paz","lis","gru"]
}

