/*
	zm. od 20/21.09.2001 - 03.10.2001 Jerzy L.

	05.11.20001  - rozszerzono zakres drugiego parametru (opcjonalnego)
		-  0 - daty do "dzisiejszej" BEZ niej samej
		-  1 - daty od "dzisiejszej" BEZ niej samej
		- 10 - daty DO "dzisiejszej" WLACZNIE
		- 11 - daty OD "dzisiejszej" WLACZNIE
		- inne lub brak - dowolna data
*/

var mies_tab = new Array("Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień");
var dni_tab = new Array('Pon','Wto','Śro','Czw','Pią','Sob','Nie');
var dys_tab=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var tabelaHead="<table border=0 class='tbw'>\n";

var ret;
var wsk_a=null;
var formatDaty = "Y-m-d";

var teraz=new Date(__biezacaData);
var terazDay = teraz.getDate();
var terazMonth = teraz.getMonth();
var terazYear = teraz.getFullYear();

var zatwierdz=new Date(__biezacaData);
var mies=teraz.getMonth();
var rok=teraz.getFullYear();
var counter=mies;

var mouseXX = 0;
var mouseYY = 0;
var aMod = null;

var oldh = null;

var cPath = 'images/';
var defMonth = null, defYear = null, defDay = null;
var przegladarka = null;

var imgL = '', imgR = '', imgL_0 = '', imgR_0 = '';
var debug = false;

function dbg_alert(msg)
{
	if(debug) alert(msg);
}

function setentry()
{
	defMonth = defYear = defDay = null;

	tmp = wsk_a.value.split('/');

	if(tmp.length != 3) return false;

	fmt = formatDaty.split('/');
 	for (var i = 0; i < fmt.length; i++)
 	{
		// usun poczatkowe zera (nie wiem czemu parseInt wariuje dla 09 !!!????
 		z = tmp[i].replace(/^0*/, "");
  		switch (fmt[i])
  		{
   		case "M":
   		case "m":
   			defMonth = parseInt(z)-1;
   			if(defMonth == NaN) defMonth = null;
   			break;
   		case "Y":
   		case "y":
   			defYear = parseInt(z);
   			if(defYear == NaN) defYear = null;
   			break;
   		case "d":
   			defDay = parseInt(z);
   			if(defDay == NaN) defDay = null;
   			break;
   		}
	}

	if(defMonth != NaN && defYear != NaN && defDay != NaN)
	{
		// sprawdzenie, czy dane nie spoza zakresu !
		defDate = new Date(__biezacaData);
		defDate.setFullYear(defYear);
		defDate.setMonth(defMonth, defDay);

		ok = defDay ;
		// w lutym specjalnie
		if(defMonth == 1)
		  	ok = przestepny(defYear) ? defDay <= 29 : defDay <= 28;
		else
		  	ok = (defMonth >= 0 && defMonth <= 11) &&
		    	(defDay >= 1 && defDay <= dys_tab[defMonth]) &&
		    	(defYear >= 1800 && defYear <= 2099);

		if(!ok)
		  	return false;

		if(aMod != null) // bug Netscape !
			switch(aMod)
			{
				case 0: ok = defDate <= teraz; 	break;

				case 1: ok = defDate >= teraz;  break;

				case 10: ok = defDate <= teraz; break;

				case 11: ok = defDate >= teraz; break;

			}

		if(ok)
		{
			mies = defMonth;
 			rok = defYear;
 			return true;
 		}
 	}
 	return false;
}


function incDay(data)
{


}

function decDay(data)
{

}

//wrapper
function show_calendar(target, mod)
{
	rysuj(target, mod);
}

var inProcessing = false;

function rysuj(target, mod)
{
	wsk_a = target;
 	aMod = mod;

	setentry() == true ? ustaw(rok, mies) : ustaw();

 	if ((wsk_a != null) && (wsk_a))
 		with(przegladarka)
 		{
 			setpos();
 			show();
 		}
}


/*konfiguracja*/
function klik(log)
{
	counter++;
 	if(log == 1)
 	{
 		mies++;
	 	if(mies == 12) {mies=0;rok=rok+1;}
	}
   	else
   	{
		mies--;
    		if(mies == -1) {mies=11;rok=rok-1;}
 	}

 	if(aMod != null) // bug Netscape !
 	switch(aMod)
 	{
 		case 0, 10:
 			if( (mies>terazMonth) && (rok>=terazYear) )
    			{
    				mies--;
    			}
    			if(mies == -1) {mies=11;rok=rok-1;}
 			break;
 		case 1, 11:
 			if( (mies<terazMonth) && (rok<=terazYear))
    			{
    				mies++;
    			}
			if(mies == 12)
	 		{
	 			mies=0;rok=rok+1;
	 		}
	 		break;
 	}

 	ustaw(rok,mies);
}

function wstaw_kal(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(inProcessing) return;
	inProcessing = true;
	if (rok  == null)
 	{
  		rok = terazYear;
 	}
 	if (month == null)
 	{
  		month = terazMonth;
 	}
 	if (month == 1)
 	{
 		dys_tab[1]  = (przestepny(rok)) ? 29 : 28;
 	}
 	zatwierdz.setYear(rok);
 	zatwierdz.setMonth(month);
 	zatwierdz.setDate(1);
 	przeladuj();

 	inProcessing = false;
}

function przeladuj()
{
 	ret = tabelaHead;
 	przelicz();
 	if(przegladarka.ns4)
		ret = '<html><head><title>Dynamiczny</title>'+
 		  '</head><body><table border=1 cellpadding=0 cellspacing = 0><tr><td>'+ret+'</td></tr></table></body></html>';
	przegladarka.write(ret);
}

function przelicz()
{
	var rok  = zatwierdz.getFullYear();
	var month = zatwierdz.getMonth();
	var data  = 1;
	var dzisiaj = terazDay;
	var day   = (zatwierdz.getDay()-1);
	var len   = dys_tab[month];
	var bgr,cnt,tmp = "";
	var j,i;

	if((aMod != null) && rok == terazYear && month == terazMonth)
	{
		switch(aMod)
	  	{
	  		case 0:
	  		case 10:
	  			imgL = imgL_0;
	  			imgR = "&nbsp;";
	  			break;

	  		case 1:
	  		case 11:
	  			imgL = "&nbsp;";
	  			imgR = imgR_0;
	  			break;
	  		default:
  				imgL = imgL_0;
				imgR = imgR_0;
				break;
	  	}
	}
	else
	{
		imgL = imgL_0;
	  	imgR = imgR_0;
	}

	if(przegladarka.ns4)
	{
		ret += "<tr><td align='center'>"+ imgL + "</td>"+"<td colspan='5' class='nsa2b' align='center'>"+rok+" "+mies_tab[mies]+"</td>"+
	       		"<td align='center'>"+imgR+"</td></tr>";

   		ret  += "<tr><td colspan='7'><tr align='center'>";
   		for (j = 0; j < 6; j++) // dni tygodnia
   	  		ret += "<td class='nsktd' width='20'>"+dni_tab[j]+"</td>";
   		ret += "<td class='nsktdr' width='20'>"+dni_tab[6]+"</td>";
  		for (j = 0; j < 7; j++)
 		{
  			if (data > len) {break;}
  			for (i = 0; i < 7; i++)
  			{
   				if(day==-1) {day=6;}
   				bgr = (i == 6) ? "#EAEAEA" : "#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' align='center'><a href='javascript:ukryj();' class='nsa2bc'>Zamknij</a></td></tr>";
   		ret += "</table>\n";
	}
	else
	{
		ret += "<tr><td align='center'>"+ imgL + "</td>"+"<td colspan='5' class='a2b' align='center'>"+rok+" "+mies_tab[mies]+"</td>"+
	       		"<td align='center'>"+imgR+"</td></tr>";

   		ret  += "<tr><td colspan='7'><tr align='center'>";
   		for (j = 0; j < 6; j++) // dni tygodnia
   	  		ret += "<td class='nsktd' width='20'>"+dni_tab[j]+"</td>";
   		ret += "<td class='nsktdr' width='20'>"+dni_tab[6]+"</td>";
  		for (j = 0; j < 7; j++)
 		{
  			if (data > len) {break;}
  			for (i = 0; i < 7; i++)
  			{
   				if(day==-1) {day=6;}
   				bgr = (i == 6) ? "#EAEAEA" : "#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' align='center'><a href='javascript:ukryj();' class='a2b'>Zamknij</a></td></tr>";
   		ret += "</table>\n";
	}
}

function bgChange(layer,bgc) {
                  if (layer.style) layer.style.backgroundColor=bgc;
                  else layer.bgColor=bgc;
                  window.status = '';
}

function generuj(bgr,rok,month,sdate)
{
	 var param = "\'"+rok+"|"+month+"|"+sdate+"\'";
	 var evt = " onMouseOver=\"bgChange(this,'#FF0000')\" onMouseOut=\"bgChange(this,'"+bgr+"')\" ";
	 var laj="<ilayer width='100%'><layer width='100%' "+evt+">%s</layer></ilayer>";

	if(przegladarka.ie4up || przegladarka.ns6)
	{
	 	var td1 = "<td align='right' width='20' bgcolor='"+bgr+"'"+evt+">";
	 	var td2 = "</td>\n";
	 	var lnk = "<a class='nsa2b' href=\"javascript:wstaw_kal("+param+")\"  onMouseOver=\"window.status=' ';return true;\">";
	}
	else
	{
	 	var td1 = "<td align='right' width='20' bgcolor=\""+bgr+"\">";
	 	var td2 = "</td>\n";
	 	var lnk = "<a class='nsa2b' href=\"javascript:wstaw_kal("+param+")\"  onMouseOver=\"window.status=' ';return true;\">";
	}

	var cellValue = (sdate != 0) ? sdate+"" : "&nbsp;";
	var cellCode = "";
	var empty = true;

	if(aMod != null) // bug Netscape !
		switch(aMod)
	 	{
	 		case 0: // nierownosci nieostre ponizej wykluczaja dzien biezacy !
		 		empty = !sdate || (terazDay <= sdate && terazMonth == month && terazYear == rok);
		 		break;

	 		case 1:
	 			empty = !sdate || (terazDay >= sdate && terazMonth == month && terazYear == rok);
	 			break;
	 		case 10: // nierownosci nieostre ponizej wykluczaja dzien biezacy !
		 		empty = !sdate || (terazDay < sdate && terazMonth == month && terazYear == rok);
		 		break;

	 		case 11:
	 			empty = !sdate || (terazDay > sdate && terazMonth == month && terazYear == rok);
	 			break;
	 		default:
	 			empty = !sdate || (terazDay == sdate && terazMonth == month && terazYear == rok);
	 			break;
	 	}
	 else empty = !sdate || (terazDay == sdate && terazMonth == month && terazYear == rok);

	 if(!empty)
	 {
		if(sdate == defDay && month == defMonth && rok == defYear)
		{
			td1 = "<td class='nsa2bblue' width='20' bgcolor='"+bgr+"'"+evt+">";
			cellValue = "<b><font color='#0000FF'>"+cellValue+"</font></b>";

		}

	 }

	 if(empty)
	 {
	 	td1 = "<td style='font-size: 12px; font-family: Verdana, Arial, Helvetica, sans-serif; color:#CACACA' width=\"20\" bgcolor=\""+bgr+"\">";
	 	cellCode = td1+cellValue+td2;
	 }
	 else
	 if(przegladarka.ie4up || przegladarka.ns6)
	 	cellCode = td1+lnk+cellValue+'</a>'+td2;
	 else
	 	cellCode = td1+laj.replace('%s', lnk+cellValue+'</a>')+td2;

	 return cellCode;
 }


function ukryj() {
	przegladarka.hide();
 	mies=terazMonth;
 	wsk_kal = false;
 	wsk_a = null;
}


function przestepny(rok)
{
 	return rok % 400 == 0 || (rok%4 == 0 && rok % 100 != 0);
}


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)
{
	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 Przegladarka(objName)
{
	function w_expl(s)
	{
		this.kal.innerHTML=s
	}

	function w_netsc(s)
	{
		with(this.kal.document)
		{
			open();write(s);close()
		}
	}

	function mm_expl(e)
	{
		mouseXX= event.x +document.body.scrollLeft;
		mouseYY= event.y +document.body.scrollTop;
		if(oldh != null)
			oldh(e);
	}

	function mm_netsc(e)
	{
		mouseXX = e.pageX;
		mouseYY = e.pageY;
		if(oldh != null)
			oldh(e);
	}

	function s_expl()
	{
   		with(this.kal.style)
     		{
 			left = mouseXX+4;
  	   		top  = mouseYY+4;
   			visibility = "visible";
   		}
	}

	function s_netsc()
	{
     		with(this.kal)
     		{
     			left = mouseXX+4;
  	   		top  = mouseYY+10;
   			visibility = "show";
   		}
	}


	function h_expl()
	{
   		this.kal.style.visibility = "hidden";
	}

	function h_netsc()
	{
     		this.kal.visibility = "hide";
	}

	function p_expl()
	{
   		with(this.kal.style)
     		{
 			left = mouseXX+4;
  	   		top  = mouseYY+4;
   		}
	}

	function p_netsc()
	{
     		with(this.kal)
     		{
     			left = mouseXX+4;
  	   		top  = mouseYY+4;
   		}
	}


	this.ie4=document.all;
	this.ns4=document.layers;
	this.up5=document.getElementById?document.getElementsByTagName('div'):0;
	this.ns6=this.up5 && !this.ie4;
	this.ns=this.ns4||this.ns6;
	this.ie4up = this.ie4;

	this.write = this.ns4 ? w_netsc:w_expl;
	this.setpos = this.ns4 ? p_netsc : p_expl;
	this.show = this.ns4 ? s_netsc : s_expl;
	this.hide = this.ns4 ? h_netsc : h_expl;
	this.cal_mouseMove = this.ns ? mm_netsc : mm_expl;

	if(document.onmousemove != this.cal_mouseMove)
	{
		if(document.onmousemove != null)
			oldh = document.onmousemove;
		else oldh = null;
		document.onmousemove=this.cal_mouseMove;
	}

	if (this.ns4) document.captureEvents(Event.MOUSEMOVE)

	this.kal = this.up5 ? document.getElementById(objName) : (this.ie4 ? document.all[objName] : document[objName])
}

function kalendarz_start()
{
	imgL_0 = "<a href='javascript:klik(0)'><img src='images/s1_l.gif' border=0 alt='Poprzedni miesiąc'></a>",
 	imgR_0 = "<a href='javascript:klik(1)'><img src='images/s1_r.gif' border=0 alt='Następny miesiąc'></a>";

	if(przegladarka == null)
	  przegladarka = new Przegladarka('kalendarz');
}

function kalendarz_stop()
{
}


