// LAYER
var xwidth = 105;
var xheight = 180;
var browser = document.layers ? 0 : document.all ? 1 : 2;

// COLORS
var backtable = '#90C0FF';
var calendback = '#FFFFFF';
var lines = '#404040';
var bright = '#000000';
var festa = '#FD9139';

var tdbgCalendarPopWindowDateSelecton = ' style="background-image:url(portal/1/skin/3/images/bar2_02.gif); background-repeat:repeat-x;"';
var tdbgCalendarPopWindowDays = ' style="background-image:url(portal/1/skin/3/images/bar2_02.gif); background-repeat:repeat-x;"';
var tdbgWeekDays = ' '; //style="background-image:url(portal/1/skin/3/images/bar3_02.gif); background-repeat:repeat-x;"';

// ------------------
var mesi = MLf; 
var days = DSf; 

var dd = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

var today = new Date();
var anno = today.getFullYear();
var mese = today.getMonth();
var currday = today.getDate();
var cellwidth = Math.floor(xwidth / 7);
var cellclass = 'num cellcalss';
xwidth = cellwidth * 7;
var xmese = 0;
var aboutx = false;
var isOn = false;
var CChech = false;

function nformat(x) {
  return x > 9 ? x : "0" + x;
}

function action(g, m , a) {
   function format(x) {
      return x > 9 ? x : "0" + x;
   }
   getId().showIt(false);

   if (tipo == 0) {
      source[0].value = format(g);
      source[1].value = format(m + 1);
      source[2].value = a;
   }
   else
     source.value = format(g) + '-' + format(m + 1) + '-' + a;

	 if (source[0].name=='dan_do' && CChech)  {CheckDates(); SetPonuda();}
	 if (source[0].name=='dan_od' && CChech)  {CheckDates(); SetPonuda();}
}

document.write('<style type="text/css">\n<!--');
document.write('.cal { font-family: Arial, Helvetica, sans-serif; font-size: 10px; font-weight: bold; color: #FF6C02; background-color:#FFFFFF;}');
document.write('.num { font-family: Arial, Helvetica, sans-serif; font-size: 10px; text-decoration:none; color:#000000; text-align:center; }');
document.write('.mese {  font-family: Arial, Helvetica, sans-serif; font-size: 14px; font-weight: bold; color: #663300}');
document.write('.butt {  font-family: Arial, Helvetica, sans-serif; font-size: 10px}');

document.write('.cellcalss { cursor:pointer; }');
document.write('.calx { background-image:url(http://www.uniline.hr/portal/1/skin/2/images/krizic.gif); background-repeat:no-repeat; background-position:center; }');
document.write('-->\n</style>');


function comparedate(d1, d2) {
   if (d1.getFullYear() == d2.getFullYear() && d1.getMonth() == d2.getMonth() && d1.getDate() == d2.getDate()) 
      return true;
   return false;
}

function pasqua(aa) {
   var xx = new Array(22, 22, 23, 23, 24, 24);
   var yy = new Array(2, 2, 3, 4, 5, 5);
   var a = aa % 19;
   var b = aa % 4;
   var c = aa % 7;

   var i = Math.floor(aa / 100) - 15;
   var x = xx[i], y = yy[i];
   var d = (19*a + x) % 30;
   var e = (2*b + 4*c + 6 * d + y) % 7;
   var p = 22 + d + e;
   var m = 300;
   if (p > 31) { m = 400; p = p - 31; }
   return m + p;
}


function isfesta(d) {
   var feste = new Array(0, 101, 106, 425, 501, 602, 815, 1101, 1208, 1225, 1226);

   if (d.getDay() == 0)
      return true;

   var pp = pasqua(d.getFullYear()) + 1;
      if (pp % 100 > 31)
         pp = 401;

   feste[0] = pp;
   for (var i = 0; i < feste.length; i++)
      if (Math.floor(feste[i] / 100) == d.getMonth() + 1) {
         var gg = feste[i] % 100;
         if (gg == d.getDate())
            return true;
      }

   return false;
}

function ChangeMonth() {
	var myMonth = document.forms['XCalendar'].UMonths.value-1;
	var myYear = document.forms['XCalendar'].Year.value;
	
	var s = dataframe(calendar(99, myMonth, myYear));
   writeLayer(s);
   aboutx = false;
}


function RetunMonths(CurrentMonth) {
	var ReturnStr = '<select name="UMonths" id="UMonths" onchange="javascript:ChangeMonth(1);" class="form1">\n'
	for(var br=0; br<=11; br++) {
		ReturnStr += '<option value='+(br+1);
		if ((br)==CurrentMonth) ReturnStr += ' selected';
		ReturnStr += '>'+mesi[br]+'</option>\n';
		}
	ReturnStr += '</select>';
	return ReturnStr;
	
}

function calendar(currday, mese, anno, check) {
   var dx = 2 - (new Date(anno, mese, 1)).getDay();
   if (dx == 2)
      dx = -5;
   var daysInMonth = dd[mese];

   if (mese == 1) {
      if (anno % 4 == 0 && anno % 100 != 0  || anno % 400 == 0)
         daysInMonth++
   }
	
	var myAnno = '<select name="Year" id="Year" class="form1">\n<option value="2007">2007</option>\n</select>';
	var CloseCalendar = '<a href="javascript:void(0);" onclick="ClosePopUpCalendar();"><img src="images/tourBullet.gif" border="0"></a>';

	var tx = ''; //'<div class="mese">&nbsp;&nbsp;&nbsp;&nbsp;' + RetunMonths(mese) + ' ' + myAnno +'&nbsp;&nbsp;</div>\n';
	tx += '<table width="' + xwidth + '" border="0" cellspacing="1" cellpadding="1" bgcolor="#BBBBBB">\n'+
			'<tr><td colspan="10" class="mese" '+tdbgCalendarPopWindowDateSelecton+' height="26" valign="middle">\n'+
					'&nbsp;&nbsp;&nbsp;&nbsp;' + RetunMonths(mese) + ' ' + myAnno +'&nbsp;&nbsp;' + CloseCalendar + '\n'+
			'</td></tr>\n';
			
	tx += '<tr align="right" '+tdbgWeekDays+'>\n';
	for (var i = 0; i < 7; i++) tx += '<td width="'+cellwidth+'" class="cal">' + days[i] + '&nbsp;</td>\n';
	tx += '</tr>\n';
	
   for (var j = 0; j < 6; j++) {
      tx += '<tr bgcolor="' + calendback + '" align="right">\n';
      for (var i = 0; i < 7; i++) {
         var bgstring = "";
         var fgcol = lines;
         var fgstring = '&nbsp;';

         if (dx > 0 && dx <= daysInMonth) {
            fgstring = dx;
            var ddx = new Date(anno, mese, dx);			
            if (isfesta(ddx)) {
               bgstring = ' bgcolor="' + festa + '"';
            }
            if (comparedate(ddx, today)) {
               fgcol = bright;
               fgstring = '<b><u>' + dx + '</u></b>\n';
            }
            var tempdate = ddx.getDate() + ", " + ddx.getMonth() + ", " + ddx.getFullYear();
            fgstring = '<a href="javascript:action(' + tempdate + ')" class = "num"><font color="' + fgcol + '">' + fgstring + '</font></a>\n';
         }
         tx += '<td width="' + cellwidth + '" class="num"' + bgstring + ' '+tdbgCalendarPopWindowDays+'>\n';
         tx += fgstring;
         tx += '</td>\n';
         dx++;
      }
      tx += '</tr>\n';
   }
   tx += '</table>\n';

   return tx;
}

function Ucalendar(currday, mese, anno) {
	var DiM = dd[mese]; DiM = (mese == 1 && anno % 4 == 0 && anno % 100 != 0  || anno % 400 == 0 ? 29 : DiM);
	var dx = 2 - (new Date(anno, mese, 1)).getDay(); if (dx == 2) dx = -5;
	var tx = '<table width="130" border="0" cellspacing="0" cellpadding="1" bgcolor="#FFFFFF">\n';
		tx += '<tr align="right" '+tdbgWeekDays+'>\n'; for (var i = 0; i < 7; i++) tx += '<td width="' + cellwidth+ '" class="cal" height="10">' + days[i] + '&nbsp;</td>\n';tx += '</tr>\n';
	for (var j = 0; j < 6; j++) {
		if (dx>DiM) { break; }
		tx += '<tr bgcolor="' + calendback + '" align="right">\n'; 
		for (var i = 0; i < 7; i++) {
			if (dx>DiM) { break; }
			if (dx<1) tx+='<td width="' + cellwidth + '"></td>\n'; 
				else	tx += '<td width="' + cellwidth + '" id="cc'+(anno+''+mese+''+dx)+'" onclick="cclick('+(anno+','+mese+','+dx)+');" onmouseover="cover('+(anno+','+mese+','+dx)+');" onmouseout="cout(this);" style="border:1px #FFFFFF solid;"></td>\n';
			dx++; 
		}
		tx += '</tr>\n'; 
	}
		tx += '</table>\n';
	
	//alert(tx);
   return tx;
}

function Ucalendar_drow(currday, mese, anno) {
	var DiM = dd[mese]; DiM = (mese == 1 && anno % 4 == 0 && anno % 100 != 0  || anno % 400 == 0 ? 29 : DiM);
	var SCat = 0; for (tmp=0; tmp<mese; tmp++) SCat += dd[tmp];
	
	for(var i = 1; i<=DiM; i++) {
		obj = $('cc'+(anno+''+mese+''+i));
		
		var cclass=cellclass;
		var bgstring = '#FFFFFF';
		if (i > 0 && i <= DiM) {
			if (parseFloat(UOUS.substring(SCat+i, SCat+i+1))<1) {
					cclass += ' calx';
			} else {
				if ( ((anno==UYdo) && 
					 ((i>=UDdo) && (mese==UMdo-1) && (i<=UDod)) || 	
					 ((UMdo-1<mese) && (UMod-1==mese) && (i<=UDod)) ||  
					 ((UMdo-1<mese) && (UMod-1>mese)) ||
					 ((UMdo-1==mese) && (UMod-1>mese) && (i>=UDdo)) && 
					 ((UMod>=UMdo) || ((UDdo>UDod) && (UMdo==UMod)))) && BCB.BS>0) {
							 bgstring = '#87BAE0';
				}
			}

		} else bgstring = '#FFFFFF';
	
		obj.className=cclass;
		obj.bgColor = bgstring;
		obj.innerHTML = i;

	}
	
}

cCNT = function () {
	return {
		_selCol : '#87BAE0',
		_bnkCol : '#FFFFFF', 
		status : '',
		Get : function(p) {return eval('this.'+p);},
		Set : function(p, v) {eval('this.'+p+'="'+v+'";');},
		GetYMD : function (t) {tY=eval('this.Y'+t);tM=eval('this.M'+t);tD=eval('this.D'+t);return this.BuidYMD(tY,tM,tD);},
		SetYMD : function (t, Y, M, D) {eval('this.Y'+t+'=Y; this.M'+t+'=M; this.D'+t+'=D;');},
		
		BuidYMD : function(tY, tM, tD) {tY=parseFloat(tY);tM=parseFloat(tM);tM=(tM<=9?'0':'')+tM;tD=parseFloat(tD);tD=(tD<=9?'0':'')+tD;return parseFloat(tY+''+tM+''+tD);}
	}
} ();

function cclick(canno, cmese, cday) {
		
	var DiM = (cmese == 1 && canno % 4 == 0 && canno % 100 != 0  || canno % 400 == 0 ? 29 : dd[cmese]);
	
	if (parseFloat(cday)>0 && cday<=DiM && cCNT.Get('status')=='') {
		cCNT.Set('status', 'start');
		cdrow(BCB.UYdo, BCB.UMdo-2, 1, BCB.UYdo, BCB.UMdo, 31, cCNT._bnkCol); // prebriši sve na ekranu
		cdrow(cCNT.Y1, UMonthCurr-1, 1, cCNT.Y1, UMonthCurr+1, 31, cCNT._bnkCol);
		cCNT.SetYMD(1, canno, cmese, cday);
		cCNT.SetYMD(2, canno, cmese, cday);
	} else if (parseFloat(cday)>0 && cday<=DiM && cCNT.Get('status')=='start') {
		cCNT.Set('status', 'stop');
		if (cCNT.GetYMD(1) > cCNT.GetYMD(2)) { t=cCNT.Y1; cCNT.Y1=cCNT.Y2; cCNT.Y2=t; t=cCNT.M1; cCNT.M1=cCNT.M2; cCNT.M2=t; t=cCNT.D1; cCNT.D1=cCNT.D2; cCNT.D2=t;	}
		var i,x;
		o1 = $('mjesec_do'); o1.options[o1.selectedIndex].selected = false; i=0;while(x=o1.options[i]) { if (x.value == cCNT.M1+1) { x.selected = true; break; } i++; }
		o1 = $('mjesec_od'); o1.options[o1.selectedIndex].selected = false; i=0;while(x=o1.options[i]) { if (x.value == cCNT.M2+1) { x.selected = true; break; } i++; }
		if ((cCNT.M1+1) != parseFloat(BCB.UMdo)) RedrowDaysByCurrentMonth(document.frmAccSearch.dan_do, document.frmAccSearch.mjesec_do, document.frmAccSearch.godina_do);
		if ((cCNT.M2+1) != parseFloat(BCB.UMod)) RedrowDaysByCurrentMonth(document.frmAccSearch.dan_od, document.frmAccSearch.mjesec_od, document.frmAccSearch.godina_od);
		o1 = $('dan_do'); o1.options[o1.selectedIndex].selected = false; i=0;while(x=o1.options[i]) {if (x.value == cCNT.D1) { x.selected = true; break; } i++; }
		o1 = $('dan_od'); o1.options[o1.selectedIndex].selected = false; i=0;while(x=o1.options[i]) {if (x.value == cCNT.D2) { x.selected = true; break; } i++; }
		CheckDates(1);
		cCNT.Set('status', '');
	}
}

function cover(canno, cmese, cday) {
	$('cc'+(canno+''+cmese+''+cday)).style.borderColor="#AAAAAA";
	var DiM = (cmese == 1 && canno % 4 == 0 && canno % 100 != 0  || canno % 400 == 0 ? 29 : dd[cmese]);
	if (parseFloat(cday)>0 && cday<=DiM && cCNT.Get('status')=='start') { 
		cdrow(cCNT.Y1, cCNT.M1, cCNT.D1, cCNT.Y2, cCNT.M2, cCNT.D2, cCNT._bnkCol);
		cdrow(cCNT.Y1, cCNT.M1, cCNT.D1, canno, cmese, cday, cCNT._selCol);
		cCNT.SetYMD(2, canno, cmese, cday);
	}
}

function cout(obj) {obj.style.borderColor="#FFFFFF";}

function cdrow(Y1, M1, D1, Y2, M2, D2, C) {
	var eerr=0;
	if (cCNT.BuidYMD(Y1, M1, D1) > cCNT.BuidYMD(Y2, M2, D2)) { t=Y1; Y1=Y2; Y2=t; t=M1; M1=M2; M2=t; t=D1; D1=D2; D2=t;	}
	for(var ty=parseFloat(M1); ty<=parseFloat(M2); ty++) {

		if (Y1==Y2 && M1 == M2) {
			_D1 = D1; _D2 = D2;
		} else {
			if (ty == M1) { 
				_D1 = D1; _D2 = dd[M1]; 
				_D2 = (ty == 1 && Y1 % 4 == 0 && Y1 % 100 != 0  || Y1 % 400 == 0 ? 29 : _D2);
			} else if (ty == M2) {
				_D1 = 1; _D2 = D2;
			} else {
				_D1 = 1; _D2 = dd[ty];
				_D2 = (ty == 1 && Y1 % 4 == 0 && Y1 % 100 != 0  || Y1 % 400 == 0 ? 29 : _D2);
			}
		}
		
		for(var tx=parseFloat(_D1); tx<=parseFloat(_D2); tx++) {
			try{o=$('cc'+(Y1+''+ty+''+tx)); if (o.className.indexOf('calx') == -1) o.bgColor = C;} catch(err) {if (!eerr) {	eerr=1;	}}
		}
	}
}

function dataframe(x) {
	var s = '<form name="XCalendar" id="XCalendar" class="butt">\n';
	s += '<table width="' + xwidth + '" border="0" cellspacing="0" cellpadding="0" bgcolor="' + backtable + '" style="border:1px #888888 solid;">';
	s += '<tr>\n<td class="mese" valign="middle">';
	s += x;
	s += '</td></tr>\n</table></form>\n';
	return s;
}

function altro_mese(x) {
   xmese += x;
   if (x == 9)
      xmese = 0;
   var xday = (xmese == 0)? currday : 99;
   var mm = (mese + xmese) % 12;

   while (mm < 0)
      mm += 12;

   var s = dataframe(calendar(xday, mm, anno + Math.floor((mese + xmese) / 12)));
   writeLayer(s);
   aboutx = false;
}


function xabout() {
   if (aboutx)
      altro_mese(0);
   else {
      var aboutstr = '<table border="0" cellspacing="0" cellpadding="10" align="center"><tr><td nowrap class="mese">';
      aboutstr += '<br>Calendario vers. 1.0<br><br>';
      aboutstr += '&copy;2002 by Maurizio Mauri<br><br>';
      aboutstr += '<a href="mailto:M.Mauri@mclink.it" class="num">M.Mauri@mclink.it</a>';
      aboutstr += '</td></tr></table><br>';
   
      writeLayer(dataframe(aboutstr));
   }
   aboutx = true;
}

function ClosePopUpCalendar() {
	getId().showIt(!isOn);			
}

function getId() {
   switch (browser) {
      case 0:
         return document.layers.calframe;
      case 1:
         return eval('calframe');
      case 2:
         return document.getElementById("calframe");
   }
}


function moveLayer(xPos, yPos) {
   switch (browser) {
   case 0:
      this.left = xPos;
      this.top = yPos;
      break;
   case 1:
      this.style.pixelLeft = xPos;
      this.style.pixelTop = yPos;
     break;
   default:
      this.style.left = xPos;
      this.style.top = yPos;
   }
}


function createlayer() {
   var s;
   if (document.layers)
      s = '<layer id="calframe" visibility="hide" z-index=1>';
   else
      s = '<div id="calframe" style="position:absolute; visibility: hidden">';
   if (document.layers)
      s += '</layer>';
   else
      s += '</div>';

   document.writeln(s);
}


function showIt(on) {
   isOn = on;
   if (browser)
      this.style.visibility = (on) ? "visible" : "hidden";
   else
      this.visibility = (on) ? "show" : "hide"
}


function writeLayer(s) {
   var id = getId();
   if (browser)
      id.innerHTML = s;
   else {
      id.document.open();
      id.document.write(s);
      id.document.close();
   }
}

function init() {
   var id = getId();
   id.moveLayer = moveLayer;
   id.showIt = showIt;
   id.showIt(false);
}


function showCalendar(d, xpos, ypos) {
   if (!isOn) {

      if (d) {
            anno = d.getFullYear();
            mese = d.getMonth();
            currday = d.getDate();
         } else {
            anno = today.getFullYear();
            mese = today.getMonth();
            currday = today.getDate();
      }
      if (arguments.length > 2) {
         var id = getId();
         id.moveLayer(xpos, ypos);
      }
      else
         getId().moveLayer(100, 100);

      xmese = 0;

      writeLayer(dataframe(calendar(currday, mese, anno)));
      
   }
   getId().showIt(!isOn);
}



createlayer(1);
//onload = init;

// CALENDAR OFF
function fix_calendar(z) {
	if (document.frmAccSearch.period_search.checked==true) {
		
		document.frmAccSearch.dan_do.options.length = 0;
		document.frmAccSearch.dan_do.options[0] = new Option ('  ', '  ');
		document.frmAccSearch.dan_od.options.length = 0;  
		document.frmAccSearch.dan_od.options[0] = new Option ('  ', '  ');
		
		document.frmAccSearch.mjesec_do.options.length = 0;
		document.frmAccSearch.mjesec_do.options[0] = new Option ('  ', '  ');
		document.frmAccSearch.mjesec_od.options.length = 0;  
		document.frmAccSearch.mjesec_od.options[0] = new Option ('  ', '  ');
		 
		document.frmAccSearch.godina_do.options.length = 0;
		document.frmAccSearch.godina_do.options[0] = new Option ('  ', '  ');
		document.frmAccSearch.god_od.options.length = 0;  
		document.frmAccSearch.god_od.options[0] = new Option ('  ', '  ');
	} else{ 
	  	//Ispis datuma	
		for (i=1; i<=dd[mese]; i++){
			if (i==currday+1) {s = true;} else {s = false;}
			if (i<=9) {
				document.frmAccSearch.dan_od.options[i-1] = new Option ('0'+i, '0'+i,  "", s);
				document.frmAccSearch.dan_do.options[i-1] = new Option ('0'+i, '0'+i,  "", s);			
			    }
			 else {
				 document.frmAccSearch.dan_od.options[i-1] = new Option (i, i, "", s);
				 document.frmAccSearch.dan_do.options[i-1] = new Option (i, i, "", s); 		 	
			    }
			}
		//Ispis mjeseca
		for (i=1; i<=12; i++)	{
			if (i==mese+1) {s = true;} else {s = false;}
				if (i<=9) {
				document.frmAccSearch.mjesec_od.options[i-1] = new Option ('0'+i, '0'+i, "", s);
				document.frmAccSearch.mjesec_do.options[i-1] = new Option ('0'+i, '0'+i, "", s);
				}
				else {
				document.frmAccSearch.mjesec_od.options[i-1] = new Option (i, i, "", s);
				document.frmAccSearch.mjesec_do.options[i-1] = new Option (i, i, "", s);
				}
		}
		document.frmAccSearch.god_od.options[0] = new Option ('2006', '2006');
		document.frmAccSearch.godina_do.options[0] = new Option ('2006', '2006');	
	}		
	
}		

// Ažuriranje datuma dolaska
function RedrowDaysByCurrentMonth(DObj, MObj, YObj) {
	var DVal = DObj.options[DObj.selectedIndex].value;
	var MVal = MObj.options[MObj.selectedIndex].value;
	var YVal = YObj.options[YObj.selectedIndex].value;
	

	var DiM = dd[(MVal-1)]; DiM = ((MVal-1) == 1 && YVal % 4 == 0 && YVal % 100 != 0  || YVal % 400 == 0 ? 29 : DiM); 
	if (DVal > DiM) DVal = DiM;
	//alert('Ažuriranje u datumskoj listi: '+DObj.id+'\n'+MObj.id+'\n'+YObj.id+'\nVrijednosti redom: '+DVal+'\n'+MVal+'\n'+YVal+'\n\nDiM: '+DiM);
	
	
	//alert('Objekt: '+DObj.id+'Mjesec: '+MVal+'\nmese: '+mese+'\nanno: '+anno);
	var i = ((MVal-1) == 1 && YVal % 4 == 0 && YVal % 100 != 0  || YVal % 400 == 0 ? 29 : 28);
	while (i<=31) {
		if (i<=DiM) {
			DObj.options[i-1] = new Option (i, i);
			if (i == DVal) { DObj.options[i-1].selected = true; } else { DObj.options[i-1].selected = false; }
		} else {
			DObj.options.length = i-1;
			DObj.options[i-1] = null;
			return;
		}
		i++;
	}
}

var source, tipo;
var campi = new Array();
function cal(val, e, t) {
	var dt = new Array();
	xPos = (document.layers) ? e.pageX : ((document.all) ? event.x : e.clientX);
	yPos = (document.layers) ? e.pageY : ((document.all) ? event.y : e.clientY);
	tipo = t;	source = val;
	if (t == 0) { dt[0] = val[0].value; dt[1] = val[1].value; dt[2] = val[2].value;	} else { dt = val.value.split('-'); }
	showCalendar(new Date(dt[2], dt[1] - 1, dt[0]), (xPos +20), (yPos+document.body.scrollTop-20));
}
