/*Zmienne globalne*/
var mies_tab = new Array("Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień");
var tabelaHead="<table border=\"0\" class=\"tbw\">\n";
var ret=tabelaHead;
var wsk=false;
var wsk_a=null;
var formatDaty = "d.m.Y";
var dys_tab=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var teraz=new Date();
var zatwierdz=new Date();
var mies=teraz.getMonth();
var rok=teraz.getFullYear();
var counter=mies;

var v_ofs = 0;
var h_ofs = 0;
var cursor;

var dMin = new Date();dMin.setMonth(dMin.getMonth()-1);
var dMax = new Date();dMax.setMonth(dMax.getMonth()+11);
var dStart = dMin;
var dStop = dMax;

var ns4=document.layers, ns6=document.getElementById&&!document.all, ie4=document.all;

if (document.addEventListener){
	document.addEventListener('click',function(e){getPosition(e);},true);
	document.addEventListener('mousedown',function(e){getPosition(e);},true);
}else{
	document.onclick=getPosition;
	document.onmousedown=getPosition; 
}

function k_start(){
     kalendarz_start();
}

function getPosition(e) {
    e = window.event || e;
    cursor = {x:0, y:0};

	if (e!=null) {
		if (e.clientX) {
			if ((ns4) || (ns6)) {
				cursor.x=e.pageX;
				cursor.y=e.pageY;
			} else {
				var de = document.documentElement;
		        var b = document.body;
				cursor.x = e.clientX + (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
		        cursor.y = e.clientY + (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
				//cursor.x=e.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
				//cursor.y=e.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
			}
		} else if (e.x) {
			cursor.x=e.x;
			cursor.y=e.y;
		} else {
			cursor.x=Math.round((screen.availWidth-w)/2);
			cursor.y=Math.round((screen.availHeight-h)/2);
		}
	} else {
		cursor.x=Math.round((screen.availWidth-w)/2);
		cursor.y=Math.round((screen.availHeight-h)/2);
	}


	/*
	if (e.pageX || e.pageY) {
        cursor.x = e.pageX;
        cursor.y = e.pageY;
    } 
    else {
        var de = document.documentElement;
        var b = document.body;
        cursor.x = e.clientX + 
            (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
        cursor.y = e.clientY + 
            (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
    }
	*/
} 


function rysuj(target){
	wsk_a = document.getElementById(target);
	if (wsk_a != null){
		var obj = document.getElementById('kalendarz');
		if(obj!=null){
			obj.style.left = cursor.x+'px'; //document.body.scrollLeft+event.clientX + h_ofs;
			obj.style.top  = cursor.y+'px'; //document.body.scrollTop+event.clientY + v_ofs;
			obj.style.visibility = "visible";
			var r,m;
			r = podajRok(wsk_a.value);
			m = podajMiesiac(wsk_a.value);
			if ((m != null) && (r != null)) { mies = m; rok = r; counter=m;}
			ustaw(rok,mies);
		}
	}
}


/*konfiguracja*/
function klik(log)
{
  var o_c,o_m,o_r;
  o_c = counter;
  o_m = mies;
  o_r = rok;
	counter++;
 	if(log == 1)
 	{
		mies++;
	 	if(mies == 12)
	 	{
	 		mies=0;rok=rok+1;
	 	}	
	}
   else
   {
		mies--;
    	if(mies == -1) {mies=11;rok=rok-1;}
 	}
   if (isInRange(rok,mies)) {
     ustaw(rok,mies);
   } else {
    counter = o_c;
    mies = o_m;
    rok = o_r;
  }
}

function setRange(r1,m1,r2,m2)
{
  if (r1 == 0) {
    d1 = dMin;
  } else {
    d1 = new Date(r1,m1,-1);
  }
  if (r2 == 0) {
    d2 = dMax
  } else {
    d2 = new Date(r2,m2+1,-1);
  }
  dStart = d1;
  dStop = d2;
}

function isInRange(rok,month)
{
  return true;
}



function wstaw(param)
{
	var arr   = param.split("|");
	var rok  = arr[0];
	var month = arr[1];
	var data  = arr[2];
	var ptr = parseInt(data);
 	zatwierdz.setDate(ptr);
 	if ((wsk_a != null)&&(wsk_a))
 	{
  		wsk_a.value = formatuj(rok,month,data);
  		ukryj();
   }
}


function wszystkie()
{
	wsk_a.value='wszystkie';
	ukryj();

}



function ustaw(rok,month)
{
	if (rok  == null)
 	{
  		rok = _okrok(teraz);
 	}
 	if (month == null)
 	{
  		month = teraz.getMonth();
 	}
 	if (month == 1)
 	{
 		dys_tab[1]  = (przestepny(rok)) ? 29 : 28;
 	}
        zatwierdz.setDate(1);
 	zatwierdz.setMonth(month);
 	zatwierdz.setYear(rok);
 	przeladuj();
}

function przeladuj()
{
 	przelicz();
        document.getElementById('dni').innerHTML = ret;
 	ret = tabelaHead;
}


function przelicz()
{
	var rok  = _okrok(zatwierdz);
	var month = zatwierdz.getMonth();
	var data  = 1;
	var dzisiaj = teraz.getDay();
	var day   = (zatwierdz.getDay()-1);
	var len   = dys_tab[month];
	var bgr,cnt,tmp = "";
	var j,i;
        ret += "<tr><td><div align=\"center\">"+"<a href=\"javascript:klik(0)\"><img src=\"i/btn/btn_bck-on.gif\" border=\"0\"></a></td>"+"<td colspan=\"5\" class=\"a2b\">"+rok+" "+mies_tab[mies]+"</td>"
	       +"<td><a href=\"javascript:klik(1)\"><img src=\"i/btn/btn_fwd-on.gif\" border=\"0\"></a>"+"</div></td></tr>";
   ret  += "<tr><td colspan=\"7\"><tr align=\"center\" class=\"a1\"><td width=\"20\">Pon</td><td width=\"20\">Wt</td><td width=\"20\">Śr</td><td width=\"20\">Czw</td><td width=\"20\">Pt</td><td width=\"20\">Sb</td><td width=\"20\">Nd</td></tr></td></tr>";
  for (j = 0; j < 7; j++)
 {
  	if (data > len) {break;}
  	for (i = 0; i < 7; i++)
  	{
        if(day==-1) {day=6;}
   	bgr = (i == 6) ? "#FFFFCC" : "#FFFFFF";

   	if ( ((j == 0) && (i < day)) ||(data > len))
   	{
          tmp  += generuj(bgr,rok,month,0);
   	}
        else
        {
          tmp  += generuj(bgr,rok,month,data);data++;
        }
    }
   ret += "<tr align=\"center\">\n" + tmp + "</tr>\n";tmp = "";}
   ret += "<tr><td colspan=\"7\" class=\"a1b\"><div align=\"center\"><a href=\"javascript:ukryj()\" class=\"u\">Zamknij</a></div></td></tr>";
   ret += "</table>\n";
}

function generuj(bgr,rok,month,sdate)
{
	 var param = "\'"+rok+"|"+month+"|"+sdate+"\'";

	 var td1 = "<td class=\"a1\" width=\"20\" bgcolor=\""+bgr+"\" ";
	 var td2 = "</span></td>\n";
	 var evt = "onmouseover=\"this.style.backgroundColor=\'#FF0000\'\" onmouseout=\"this.style.backgroundColor=\'"+bgr+"\'\" onmouseup=\"wstaw("+param+")\" ";
	 var ext = "<span style=\"cursor: pointer;\">";
	 var lck = "<span style=\"cursor: default;\">";
	 var lnk = "<a href=\"javascript:wstaw("+param+")\" onmouseover=\"window.status=\' \';return true;\">";
	 var cellValue = (sdate != 0) ? sdate+"" : "&nbsp;";


	 if ((teraz.getDate() == sdate )&&(teraz.getMonth() == month)&&(_okrok(teraz) == rok))
	 {
	 	 cellValue = "<b><font color='#FF8818'>"+cellValue+"</font></b>";
	 }
	 var cellCode = "";
	 if (sdate == 0 )
	 {
	  	 cellCode = td1+"style=\"cursor: default;\">"+lck+cellValue+td2;
	 } else {
	  	    cellCode = td1+evt+"style=\"cursor: pointer;\">"+ext+cellValue+td2;
	 }
	 return cellCode;
 }


function ukryj() {
 document.getElementById('kalendarz').style.visibility = "hidden"; 
 mies=teraz.getMonth();
 wsk = false;
 wsk_a = null;

 }


function przestepny(rok)
{
 if ((rok%400==0)||((rok%4==0)&&(rok%100!=0)))
 {
 	return true;
 }
 else
 {
 	return false;
	}
}

function _okrok(obj)
 {
 return obj.getFullYear();
 }

function form_data(data) {
 var reply = true;

  var mode = arr[0];
  var arg  = arr[1];
  var key  = arr[2].charAt(0).toLowerCase();
  if (key != "d") {
   var day = zatwierdz.getDay();
   var orn = isEvenOrOdd(data);
   reply = (mode == "[^]") ? !((day == arg)&&((orn == key)||(key == "a"))) : ((day == arg)&&((orn == key)||(key == "a")));}
  else {reply = (mode == "[^]") ? (data != arg) : (data == arg);}
 return reply;}

function formatuj(rok,month,data)
{
	if (formatDaty == null) {formatDaty = "d.m.Y";}
	var day = zatwierdz.getDay();
 	var crt = "";
 	var str = "";
 	var chars = formatDaty.length;
 	for (var i = 0; i < chars; i++)
 	 {
 		 crt = formatDaty.charAt(i);
  		switch (crt)
  		{
   		case "M": str += mies_tab[month]; break;
   		case "m": str += (month<9) ? ("0"+(++month)) : ++month; break;
   		case "Y": str += rok; break;
   		case "y": str += rok.substring(2); break;
  		   case "d": str += ((formatDaty.indexOf("m")!=-1)&&(data<10)) ? ("0"+data) : data; break;
         default: str += crt;
       }
    }
 return str;
}

function formatuj(rok,month,data)
{
	if (formatDaty == null) {formatDaty = "d.m.Y";}
	var day = zatwierdz.getDay();
 	var crt = "";
 	var str = "";
 	var chars = formatDaty.length;
 	for (var i = 0; i < chars; i++)
 	 {
 		 crt = formatDaty.charAt(i);
  		switch (crt)
  		{
   		case "M": str += mies_tab[month]; break;
   		case "m": str += (month<9) ? ("0"+(++month)) : ++month; break;
   		case "Y": str += rok; break;
   		case "y": str += rok.substring(2); break;
  		   case "d": str += ((formatDaty.indexOf("m")!=-1)&&(data<10)) ? ("0"+data) : data; break;
         default: str += crt;
       }
    }
 return str;
}


function zrobDate(data)
{
  if (formatDaty == null) {formatDaty = "d.m.Y";}
  var crt = "";
  var cyfry = "0123456789";
  var str = data;
  var _m,_d,_y;
  var chars = formatDaty.length;
  for (var i = 0; i < chars; i++)
  {
     crt = formatDaty.charAt(i);
     switch (crt)
     {
       case "Y": _y = str.substr(0,4);str = str.substr(4); break;
       case "y": _y = "20"+str.substr(0,2);str = str.substr(2); break;
       case "m":
          if (cyfry.indexOf(str.substr(1,1))==-1) {
            _m = str.substr(0,1);
            str = str.substr(1);
          } else {
            _m = str.substr(0,2);
            str = str.substr(2);
          }
          break;
       case "d":
          if (cyfry.indexOf(str.substr(1,1))==-1) {
            _d = str.substr(0,1);
            str = str.substr(1);
          } else {
            _d = str.substr(0,2);
            str = str.substr(2);
          }
          break;
       default: str = str.substr(1);
     }
  }
  if (_m.charAt(0) == "0") _m = _m.substr(1);
  if (_d.charAt(0) == "0") _d = _d.substr(1);

  _y = parseInt(_y);
  _m = parseInt(_m)-1;
  _d = parseInt(_d);

  if (isNaN(_y) || isNaN(_m) || isNaN(_d))
    return null;
  else
	  return new Date(_y,_m,_d)
}

function podajRok(d)
{
  dt = zrobDate(d);
  if (dt !=null)
    return dt.getFullYear();
  else
    return null;
}

function podajMiesiac(d)
{
  dt = zrobDate(d);
  if (dt !=null)
    return dt.getMonth();
  else
    return null;
}

function podajDzien(d)
{
  dt = zrobDate(d);
  if (dt !=null)
    return dt.getDay();
  else
    return null;
}


function kalendarz_start()
{
	var kal = document.createElement('div');
	var mon = document.createElement('div');
	var day = document.createElement('div');
	day.setAttribute('id', 'dni');
	day.style.position = 'absolute';
	day.style.left = '0px';
	day.style.top = '0px';
	day.style.zIndex = '117';
	day.style.width = '181px';
	day.style.height = '27px';
	kal.style.backgroundColor = '#FFFFFF';

	mon.setAttribute('id', 'miesiace');
	mon.className = 'clearfix';
	mon.style.position = 'absolute';
	mon.style.left = '0px';
	mon.style.top = '0px';
	mon.style.zIndex = '117';
	mon.style.width = '181px';
	mon.style.height = '27px';
	kal.style.backgroundColor = '#FFFFFF';

	kal.setAttribute('id', 'kalendarz');
	kal.className = 'clearfix';
	kal.style.position = 'absolute';
	kal.style.left = '0px';
	kal.style.top = '0px';
	kal.style.zIndex = '115';
	kal.style.width = '1px';
	kal.style.height = '77px';
	kal.style.visibility = 'hidden';
	kal.style.backgroundColor = '#FF0000';

	mon.appendChild(day);
	kal.appendChild(mon);
	document.body.appendChild(kal);

//	document.writeln("<div id=\"kalendarz\" style=\"position:absolute; left:0px; top:0px; z-index:115; width:1px; height:77px; visibility: hidden; background-color: #FF0000; #FF0000\">");
//	document.writeln("<div id=\"miesiace\" style=\"position:absolute; left:0px; top:0px; z-index:117; width:181px; height:27px;\">");
//	document.writeln("<div id=\"dni\" style=\"position:absolute; left:0px; top:0px; z-index:116; width:176px; height:17px; background-color: #FFFFFF; border: 1px none #000000\">&nbsp;</div></div>");
//	document.writeln("</div>");
}

