/*
 * JSO
 * Wojciech Wierchoła
 */

var jso={
	ie:false,
  gI:function(a,b){
    // get Element by ID
    if(!b)b=document;
    return b.getElementById(a)
  },
  gT:function(a,b,i){
    // get Elements by Tag Name
    if(!b)b=document;
    b=b.getElementsByTagName(a)
    a=[]
    for(i=0;i<b.length;i++)a[a.length]=b[i];
    return a
  },
  cE:function(a,b,c,d,e,i){
    // create Element
    a=document.createElement(a)
    for(i in b)a[i]=b[i];
    for(i in c)if(typeof c[i]!="function")a.appendChild(c[i].nodeType?c[i]:document.createTextNode(c[i]));;
    for(i in e)jso.aE(a,i,e[i]);
    if(d)d.appendChild(a);
    return a
  },
  gE:function(x){
    // get Element from Event
    x=x||window.event;
    x=x.target||x.srcElement;
    if(x.nodeType==3)x=x.parentNode;
    return x
  },
  aE:function(O,E,F){
    // add Event to Element
    return(O.x=O.addEventListener)?O.x(E,F,0):(O.x=O.attachEvent)?O.x('on'+E,F):!1;
  },
  kalendarzyk:function(e){
    // wykurwisty kalendarzyk ;)
    var tmp,tmp2;
    tmp=jso.gE(e)
    if(tmp.nodeName.toLowerCase()=="label")tmp=jso.gT("input",tmp)[0];
    if(tmp.nodeName.toLowerCase()!="input"){
      tmp2=tmp
      while(!(tmp=jso.gT("input",tmp2.parentNode)[0])){
        tmp2=tmp2.parentNode
      }
    }

    this.htmlInput=tmp
    if(tmp=jso.gI("kalendarzyk")){
      if(tmp.kalendarzyk.htmlInput!=this.htmlInput)tmp.parentNode.removeChild(tmp);
      else return;
    }
    if(this.htmlInput.value==""){
      tmp=new Date()
      this.dzien=tmp.getUTCDate()
      this.miesiac=tmp.getMonth()
      this.rok=tmp.getFullYear()
    }else{
      tmp=this.htmlInput.value.split("-")
      this.dzien=parseFloat(tmp[2])
      this.miesiac=parseFloat(tmp[1])-1
      this.rok=parseFloat(tmp[0])
    }
    this.przkarzDate=function(){
      var tmp = this.rok+"-"+(this.miesiac<9?"0":"")+(this.miesiac+1)+"-"+(this.dzien<10?"0":"")+this.dzien
      if(kalendarzyk_min_date&&kalendarzyk_min_date>tmp){
        alert("Minimalna data to: '"+kalendarzyk_min_date+"'.")
        return;
      }
      this.htmlInput.value=tmp
      this.div.parentNode.removeChild(this.div)
    }
    this.ustawDate=function(){
      var tmp={}
      this.htmlMiesiac.value=this.miesiac
      this.htmlRok.value=this.rok
      tmp.OD=Date.UTC(this.rok,this.miesiac,1)
      tmp.DO=Date.UTC(this.rok,this.miesiac+1,1)
      tmp.body=jso.cE("tbody")
      tmp.i=tmp.OD
      for(;tmp.i<tmp.DO;tmp.i+=86400000){
        tmp.date=new Date(tmp.i)
        tmp.dzien=tmp.date.getUTCDate()
        tmp.dzienTygodnia=tmp.date.getUTCDay()
        if(tmp.dzienTygodnia==1||tmp.i==tmp.OD){
          tmp.tr=jso.cE("tr",0,0,tmp.body)
          if(tmp.i==tmp.OD&&tmp.dzienTygodnia!=1){
            jso.cE("td",{className:"zapychacz",colSpan:tmp.dzienTygodnia?tmp.dzienTygodnia-1:6},0,tmp.tr)
          }
        }
        jso.cE("td",{kalendarzyk:this,className:(tmp.dzien==this.dzien?"aktywny":(tmp.dzienTygodnia==0||tmp.dzienTygodnia==6?"weekend":""))},[tmp.dzien],tmp.tr,{click:this.dzienClick})
      }
      if(tmp.old_body=jso.gT("tbody",this.table)[0]){
        this.table.replaceChild(tmp.body,tmp.old_body)
      }else{
        this.table.appendChild(tmp.body)
      }
    }
    this.dzienClick=function(e){
      e=jso.gE(e)
      e.kalendarzyk.dzien=parseFloat(e.firstChild.nodeValue)
      e.kalendarzyk.przkarzDate()
    }
    this.poprzedniMiesiac=function(e){
      e=jso.gE(e)
      if(e.kalendarzyk.miesiac>0)e.kalendarzyk.miesiac--;
      else{
        e.kalendarzyk.rok--;
        e.kalendarzyk.miesiac=11;
      }
      e.kalendarzyk.ustawDate()
      return false
    }
    this.nastepnyMiesiac=function(e){
      e=jso.gE(e)
      if(e.kalendarzyk.miesiac<11)e.kalendarzyk.miesiac++;
      else{
        e.kalendarzyk.rok++;
        e.kalendarzyk.miesiac=0;
      }
      e.kalendarzyk.ustawDate()
      return false;
    }
    this.htmlRokKeyPress=function(e){
      e=e||event
      if(e.keyCode==13){
        e=jso.gE(e)
        e.blur()
      }
    }
    this.htmlRokBlur=function(e){
      e=jso.gE(e)
      var tmp
      tmp=parseFloat(e.value)
      if(isNaN(tmp)||tmp>2050||tmp<1950){
        e.value=e.kalendarzyk.rok
      }else{
        e.kalendarzyk.rok=tmp
        e.kalendarzyk.ustawDate()
      }
    }
    this.htmlMiesiacChange=function(e){
      e=jso.gE(e)
      e.kalendarzyk.miesiac=parseFloat(e.value)
      e.kalendarzyk.ustawDate()
    }
    this.usun=function(e){
      e=jso.gE(e)
      e.kalendarzyk.htmlInput.value=""
      e.kalendarzyk.div.parentNode.removeChild(e.kalendarzyk.div)
    }
    this.zamknij=function(e){
      e=jso.gE(e)
      e.kalendarzyk.div.parentNode.removeChild(e.kalendarzyk.div)
    }
    var thead=jso.cE("tr",0,[
      jso.cE("th",0,["pon"]),
      jso.cE("th",0,["wto"]),
      jso.cE("th",0,["śro"]),
      jso.cE("th",0,["czw"]),
      jso.cE("th",0,["pią"]),
      jso.cE("th",{className:"weekend"},["sob"]),
      jso.cE("th",{className:"weekend"},["nie"])
    ])
    var tfoot=thead.cloneNode(1)
    this.div=jso.cE("div",{id:"kalendarzyk",kalendarzyk:this},[
      this.table=jso.cE("table",{kalendarzyk:this},[
        jso.cE("thead",0,[
          jso.cE("tr",0,[
            jso.cE("th",{className:"kalendarzyk_ikona"}),
            jso.cE("th",{kalendarzyk:this,colSpan:3,className:"klikalny"},["usuń datę"],0,{click:this.usun}),
            jso.cE("th",{kalendarzyk:this,colSpan:3,className:"klikalny"},["zamknij"],0,{click:this.zamknij})
          ]),
          jso.cE("tr",0,[
            jso.cE("th",{className:"nawigacja_poprzedni",title:"poprzedni miesiąc",kalendarzyk:this},0,0,{click:this.poprzedniMiesiac}),
            jso.cE("th",{colSpan:2,className:"klikalny",title:"rok"},[this.htmlRok=jso.cE("input",{type:"text",kalendarzyk:this},0,0,{keypress:this.htmlRokKeyPress,blur:this.htmlRokBlur})]),
            jso.cE("th",{colSpan:3,className:"klikalny",title:"miesiąc"},[
              this.htmlMiesiac=jso.cE("select",{kalendarzyk:this},[
                  jso.cE("option",{value:0},["styczeń"]),
                  jso.cE("option",{value:1},["luty"]),
                  jso.cE("option",{value:2},["marzec"]),
                  jso.cE("option",{value:3},["kwiecień"]),
                  jso.cE("option",{value:4},["maj"]),
                  jso.cE("option",{value:5},["czerwiec"]),
                  jso.cE("option",{value:6},["lipiec"]),
                  jso.cE("option",{value:7},["sierpień"]),
                  jso.cE("option",{value:8},["wrzesień"]),
                  jso.cE("option",{value:9},["październik"]),
                  jso.cE("option",{value:10},["listopad"]),
                  jso.cE("option",{value:11},["grudzień"])
                ],0,{change:this.htmlMiesiacChange}
              )
            ]),
            jso.cE("th",{className:"nawigacja_nastepny",title:"następny miesiąc",kalendarzyk:this},0,0,{click:this.nastepnyMiesiac})
          ]),
          thead
        ]),
        jso.cE("tfoot",0,[tfoot])
      ])
    ])
    this.div.style.left=(e.pageX||e.clientX)-15+"px"
    this.div.style.top=(e.pageY||e.clientY)-15+"px"
    this.ustawDate()
		if(jso.ie)jso.cE("iframe",0,0,this.div);
    jso.gT("body")[0].appendChild(this.div)
  }
}
/*@cc_on @if(@_jscript) jso.ie=true @end @*/

jso.aE(window,"load",function(){
    $$("label.kalendarzyk")._each(function(element){
        var input = jso.gI(element.htmlFor)
//        jso.aE(input,"click",function(e){new jso.kalendarzyk(e||event)})
        input.readOnly=true
        jso.cE("span",0,
          [
            " ",
/*            jso.cE("a",0,["dzisiejsza data"],0,{
              click:function(e){
                  var input=jso.gE(e||event).parentNode.parentNode.getElementsByTagName("input")[0],data=new Date();
                  input.value=data.getFullYear()+"-"+((data.getMonth()+1)<10?"0":"")+(data.getMonth()+1)+"-"+(data.getUTCDate()<10?"0":"")+data.getUTCDate()
                }
              }
            ),*/
            " | ",
            jso.cE("a",0,[jso.cE("img",{src:"/images/data.gif",alt:"kalendarz"})],0,{click:function(e){new jso.kalendarzyk(e||event);}}),
          ],
          input.parentNode
        )
      }
    )
  }
)
