/////////////////////////////////////////////
////////// OBS�UGA KALENDARZA ///////////////
/////////////////////////////////////////////
function Calendar(T,E,i,j,tE,tBody,Row,f,t,d,wd){if(!document.getElementById||!document.body.appendChild)return
T=(T=T||window.event).target||T.srcElement
function cEl(t,p,h,w){p.appendChild(t=document.createElement(t))
if(h)t.innerHTML=h
if(w)t.colSpan=5
return t}
function cB(x){with(T.Cal){B=0;x==0?Y--:x==1?Y++:x==2?(!M?(M=11,Y--):M--):(M==11?(M=0,Y++):M++)}}
if(!T.Cal){E=document.createElement('ins')
E.className='clndr'
T.parentNode.insertBefore(E,T.nextSibling)
T.Cal={E:E,B:1,cD:new Date().getUTCDate(),cM:new Date().getMonth(),cY:new Date().getFullYear(),sD:0,sM:-1,sY:0,M:-1,Y:0}
if((i=T.value.match(/\d{2,4}/g))&&i.length==3){with(T.Cal){sY=Y=i[0];sM=M=i[1]-1;sD=+i[2]}}
}
E=T.Cal.E
with(T.Cal){if(B){M=M+1?M:sM+1?sM:cM;Y=Y||sY||cY;window.status=sM}f=Date.UTC(Y,M,1);t=Date.UTC(Y,M+1,1)}
while(E.childNodes[0])E.removeChild(E.firstChild)
tE=cEl('table',E)
tBody=cEl('thead',tE)
tBody.onmouseup=function(){T.focus()}
tBody.onmousemove=function(){if(window.getSelection)window.getSelection().removeAllRanges()}
Row=cEl('tr',tBody)
cEl('td',Row,'&#171;').onmousedown=function(){cB(0)}
cEl('th',Row,T.Cal.Y,1)
cEl('td',Row,'&#187;').onmousedown=function(){cB(1)}
Row=cEl('tr',tBody)
cEl('td',Row,'&#171;').onmousedown=function(){cB(2)}
cEl('th',Row,cld_BlaTek.month[T.Cal.M],1)
cEl('td',Row,'&#187;').onmousedown=function(){cB(3)}
tBody=cEl('tbody',tE)
Row=cEl('tr',tBody)
for(i=0;i<7;i++){cEl('th',Row,cld_BlaTek.day[i]).className='day'+(i+1)%7}
for(i=f;i<t;i+=86400000){with(new Date(i)){d=getUTCDate();wd=getUTCDay()}
if(wd==1||i==f)Row=cEl('tr',tBody)
if(wd!=1&&d==1){for(j=1;j<(wd?wd:7);j++)cEl('td',Row).className='empty day'+j}
(tE=cEl('td',Row,d)).className='day'+wd
tE.onmousedown=function(x){x=+this.innerHTML
with(T.Cal){sD=x;sM=M;sY=Y;T.value=Y+'-'+((x=M+1)<10?'0'+x:x)+'-'+(sD<10?'0'+sD:sD)}}
with(T.Cal){if(d==cD&&M==cM&&Y==cY)tE.className+=' today';if(d==sD&&M==sM&&Y==sY)tE.className+=' selected'}}
for(i=wd||7;i<7;){cEl('td',Row).className='empty day'+(++i%7)}
T.onblur=function(){if(T.Cal.B)E.className='clndr hide';T.form.className=T.form.className.replace(/\bhideSel\b/,'')}
T.Cal.B=1
E.className='clndr'
T.form.className+=' hideSel'}


//global object (You can translate month&day names)
cld_BlaTek={
 day:['Mon','Tue','Wen','Thu','Fri','Sat','Sun'],
 month:['January','Febuary','March','April','May','June',
 'July','August','September','October','November','December']
}

//this function change days displayed in the input field
//x - number of days to add to input field
function changeDay(x,T,d){T=gId(T)
if((i=T.value.match(/\d{1,4}/g))&&i.length==3){d=new Date(1*i[0],i[1]-1,1*i[2])
x=new Date(d.getTime()+x*8.64e7)
T.value=x.getFullYear()+'-'+((d=x.getMonth()+1)<10?'0'+d:d)+'-'+((d=x.getDate())<10?'0'+d:d)}}

//this function add onfocus event listener to input fields
function addCalendar(a,i){aEL(window,'load',function(){for(j in a){if(i=document.getElementById(a[j]))aEL(i,'focus',Calendar)}})}

function aEL(o,t,f,b,x){if(o.addEventListener)o.addEventListener(t,f,b||false)
else if(o.attachEvent)o.attachEvent('on'+t,f)}


//below line activates calendar on input fields with id: to, from, today
addCalendar(['data_r'])
addCalendar(['data_z'])
addCalendar(['gas_date'])
addCalendar(['rent_date'])
addCalendar(['av_date'])


/////////////////////////////////////////////
///////////// SUMATOR GODZIN ////////////////
/////////////////////////////////////////////
function godz(){
	// sprawdzanie danych
	var rozp=vDate(document.getElementById('data_r').value);
	var zak=vDate(document.getElementById('data_z').value);
	if(!rozp){
		document.getElementById('data_r').focus();
		alert("Nie ustawiono prawid�owej daty rozpocz�cia akcji");
		return false;
	}
	if(!zak){
		document.getElementById('data_z').focus();
		alert("Nie ustawiono prawid�owej daty zako�czenia akcji");
		return false;
	}
	// tworzenie obiekt�w daty
	var zak = new Date(zak[1],zak[2]-1, zak[3]);
	var rozp = new Date(rozp[1], rozp[2]-1, rozp[3]);
	
	if(zak<rozp){
		alert("Data zako�czenia akcji musi by� przynajmniej r�wna dacie jej rozpocz�cia.");
		return false;
	}
	
	// sumowanie godzin
	var suma=0;
	for(var a=Date.parse(rozp); a<=Date.parse(zak); a+=1000*60*60*24){
		var akt = new Date(a);
		var dTyg = akt.getDay();
		var gOd=vTime(dTyg,0);
		var gDo=vTime(dTyg,1);
		if(gOd==false || gDo==false){
			document.forms.zlecenie.suma_godz.value='';
			return false;
		}
		if(gDo[0]!='' && gOd[0]!='') suma += (Date.parse(new Date(1970, 0, 1, gDo[1], gDo[2], 0)) - Date.parse(new Date(1970, 0, 1, gOd[1], gOd[2], 0)))/1000/60;
	}
	
	// formatowanie danych wyj�ciowych
	var godz = Math.floor(suma/60);
	var minu = suma%60;
	if(minu<10) minu='0'+minu;
	document.forms.zlecenie.suma_godz.value = godz+":"+minu;
	alert("Obliczona suma nie uwzgl�dnia pomini�cia ewentualnych dni wolnych od pracy (np. �wi�t)\nW zazie potrzeby prosz� dokona� r�cznej korekty liczby godzin.");
	return true;
}

// walidacja czasu
function vTime(dT, f) {
	var godz = document.forms.zlecenie['plan['+dT+']['+f+']'].value;
	var re = /^(?:([0-2][0-9]):([0-5][0-9]))?$/;
	var tmp = re.exec(godz);
	if(!tmp){
		document.forms.zlecenie['plan['+dT+']['+f+']'].focus();
		alert("Format godziny jest nieprawid�owy. (gg:mm)");
		return false
	}
	return tmp;
}

// walidacja daty
function vDate(data) {
	var re = /^([12][0-9]{3})-((?:1[0-2])|(?:0?[1-9]))-((?:3[0-1])|(?:[1-2][0-9])|(?:0[1-9]))$/;
	return re.exec(data);
}
function sprdata(o){
	if(!vDate(o.value)){
		alert("Wpisana data nie jest prawid�owa\nWpisz dat� w formacie RRRR-MM-DD");
		o.focus();
	}
}

/////////////////////////////////////////////
//////////// WALIDACJA STAWEK ///////////////
/////////////////////////////////////////////

function vCash(ob) {
	var re = /^(?:[0-9]+(\.[0-9]{2})?)?$/;
	ob.value = ob.value.replace(/,/, '.');
	if(!re.exec(ob.value)){
		alert("Wprowadzono nieprawid�ow� kwot�");
		ob.focus();
	}
}

/////////////////////////////////////////////
////// OBS�UGA WIELOKROTNEGO SELECTA ////////
/////////////////////////////////////////////

var arrOldValues;

// zaznaczanie/odznaczanie ca�ych sieci
function siec(to, typ){
	try{
		for (var i=0; i<sieci[typ].length; i++)
			document.getElementById('s['+sieci[typ][i]+']').selected=to.checked;
	} catch(e){}
}

// zaznaczanie/odznaczanie ca�o�ci
function SelectAllList(akcja){
	var CONTROL=document.getElementById('sklep');
	for(var i = 0;i < CONTROL.length;i++)
		CONTROL.options[i].selected = akcja;
}
// oznaczanie
function FillListValues(CONTROL){
	var arrNewValues;
	var intNewPos;
	var strTemp = GetSelectValues(CONTROL);
	arrNewValues = strTemp.split(",");
	for(var i=0;i<arrNewValues.length-1;i++)
		if(arrNewValues[i]==1)
			intNewPos = i;


	for(var i=0;i<arrOldValues.length-1;i++){
		if(arrOldValues[i]==1 && i != intNewPos)
			CONTROL.options[i].selected= true;
		else if(arrOldValues[i]==0 && i != intNewPos)
			CONTROL.options[i].selected= false;
		
		if(arrOldValues[intNewPos]== 1)
			CONTROL.options[intNewPos].selected = false;
		else
			CONTROL.options[intNewPos].selected = true;
	}
}

function GetSelectValues(CONTROL){
	var strTemp = "";
	var str
	for(var i = 0;i < CONTROL.length;i++)
		if(CONTROL.options[i].selected == true)
			strTemp += "1,";
		else
			strTemp += "0,";

	return strTemp;
}
function zbierz(){
	var strTemp = "";
	var CONTROL=document.getElementById('sklep');
	
	for(var i = 0;i < CONTROL.length;i++)
		if(CONTROL.options[i].selected == true)
			strTemp += CONTROL.options[i].value+",";
			
	document.getElementById('sklepy').value = strTemp.slice(0,-1);
}

function GetCurrentListValues(CONTROL){
	var strValues = "";
	strValues = GetSelectValues(CONTROL);
	arrOldValues = strValues.split(",")
}