/* --- Swazz Javascript Calendar ---
/* --- v 1.0 3rd November 2006
/* --- last modification: 16th August 2007 by Pascal Hennig
By Oliver Bryant
http://calendar.swazz.org
Modified by Alan Blount - alan[a7]zeroasterisk[d07]com
Modified by William Eriau - inmagnaveritas[at]gmail.com - fixed positioning problem when using doctype 
Modified by Pascal Hennig - added german as second language; 
							made script flexible, so you can use parameters to disable or allow the Past. Just call lcs(this, true) to disable the Past.
							Choose between Monday and Sunday as your starting day.
*/

//var dateformat = 'ymd'; // year-month-date
//var dateformat = 'mdy'; // date-month-year

var dateformat 	= 'dmy'; 		// date-month-year (default)
var datesplitter= '.'; 			// in between date, month, year... typically '/' or '-' or '.'
var prefix0 	= true; 		// months and dates less than 10, get prefixed w/ a '0'
var disablepast = false; 		// disable date selection in the past
var startday	= 'Mon';		// Mon = Monday; Sun = Sunday
var language	= 'fi';			// de = German; en = English; fi = Finnish

var disable_from = 0;   //  Nyt voit disabloida haluamastasi päivästä alkaen
var disable_future = 0; // Voit myös disabloida tulevaisuudesta. (Tommi Partanen)
var calendar_call = null;
 
if( startday == 'Sun' )
{
	if( language == 'en' )	{
		document.write('<table id="fc" style="position:absolute;border-collapse:collapse;background:#FFFFFF;border:1px solid #ABABAB;display:none" cellpadding=2>');
		document.write('<tr><td style="cursor:pointer" onclick="csubm()"><img src="cal/arrowleftmonth.gif"></td><td colspan=5 id="mns" align="center" style="font:bold 13px Arial"></td><td align="right" style="cursor:pointer" onclick="caddm()"><img src="cal/arrowrightmonth.gif"></td></tr>');
		document.write('<tr><td align=center style="background:#ABABAB;font:12px Arial">S</td><td align=center style="background:#ABABAB;font:12px Arial">M</td><td align=center style="background:#ABABAB;font:12px Arial">T</td><td align=center style="background:#ABABAB;font:12px Arial">W</td><td align=center style="background:#ABABAB;font:12px Arial">T</td><td align=center style="background:#ABABAB;font:12px Arial">F</td><td align=center style="background:#ABABAB;font:12px Arial">S</td></tr>');
	}
	else if( language == 'de' ) {
		document.write('<table id="fc" style="position:absolute;top:356px;left:380px;border-collapse:collapse;background:#FFFFFF;border:1px solid #ABABAB;display:none" cellpadding=2><tr><td style="cursor:pointer" onclick="csubm()"><img src="cal/arrowleftmonth.gif"></td><td colspan=5 id="mns" align="center" style="font:bold 13px Arial"></td><td align="right" style="cursor:pointer" onclick="caddm()"><img src="cal/arrowrightmonth.gif"></td></tr><tr><td align=center style="background:#ABABAB;font:12px Arial">SO</td><td align=center style="background:#ABABAB;font:12px Arial">MO</td><td align=center style="background:#ABABAB;font:12px Arial">DI</td><td align=center style="background:#ABABAB;font:12px Arial">MI</td><td align=center style="background:#ABABAB;font:12px Arial">DO</td><td align=center style="background:#ABABAB;font:12px Arial">FR</td><td align=center style="background:#ABABAB;font:12px Arial">SA</td></tr>');
	}
	else if( language == 'fi' )	{
		document.write('<table id="fc" style="position:absolute;z-index:1001;border-collapse:collapse;background:#FFFFFF;border:1px solid #ABABAB;display:none" cellpadding=2>');
		document.write('<tr><td style="cursor:pointer" onclick="csubm()"><img src="cal/arrowleftmonth.gif"></td><td colspan=5 id="mns" align="center" style="font:bold 13px Arial"></td><td align="right" style="cursor:pointer" onclick="caddm()"><img src="cal/arrowrightmonth.gif"></td></tr>');
		document.write('<tr><td align=center style="background:#ABABAB;font:12px Arial">S</td><td align=center style="background:#ABABAB;font:12px Arial">M</td><td align=center style="background:#ABABAB;font:12px Arial">T</td><td align=center style="background:#ABABAB;font:12px Arial">W</td><td align=center style="background:#ABABAB;font:12px Arial">T</td><td align=center style="background:#ABABAB;font:12px Arial">F</td><td align=center style="background:#ABABAB;font:12px Arial">S</td></tr>');
	}
	for(var kk=1;kk<=6;kk++) 
	{
		document.write('<tr>');
		for(var tt=1;tt<=7;tt++) 
		{
			num=7 * (kk-1) - (-tt);
			document.write('<td id="v' + num + '" style="width:18px;height:18px;z-index:1001"> </td>');
		}
		document.write('</tr>');
	}
}

if(  startday == 'Mon' )
{

	if( language == 'en' )	{
		document.write('<table id="fc" style="position:absolute;border-collapse:collapse;background:#FFFFFF;border:1px solid #ABABAB;display:block; display/**/:none" cellpadding=2>');
		document.write('<tr><td style="cursor:pointer" onclick="csubm()"><img src="cal/arrowleftmonth.gif"></td><td colspan=5 id="mns" align="center" style="font:bold 13px Arial"></td><td align="right" style="cursor:pointer" onclick="caddm()"><img src="cal/arrowrightmonth.gif"></td></tr>');
		document.write('<tr><td align=center style="background:#ABABAB;font:12px Arial">M</td><td align=center style="background:#ABABAB;font:12px Arial">T</td><td align=center style="background:#ABABAB;font:12px Arial">W</td><td align=center style="background:#ABABAB;font:12px Arial">T</td><td align=center style="background:#ABABAB;font:12px Arial">F</td><td align=center style="background:#ABABAB;font:12px Arial">S</td><td align=center style="background:#ABABAB;font:12px Arial">S</td></tr>');
	}
	else if( language == 'de' ) {
		document.write('<table id="fc" style="position:absolute;top:356px;left:380px;border-collapse:collapse;background:#FFFFFF;border:1px solid #ABABAB;display:none" cellpadding=2><tr><td style="cursor:pointer" onclick="csubm()"><img src="arrowleftmonth.gif"></td><td colspan=5 id="mns" align="center" style="font:bold 13px Arial"></td><td align="right" style="cursor:pointer" onclick="caddm()"><img src="arrowrightmonth.gif"></td></tr><tr><td align=center style="background:#ABABAB;font:12px Arial">MO</td><td align=center style="background:#ABABAB;font:12px Arial">DI</td><td align=center style="background:#ABABAB;font:12px Arial">MI</td><td align=center style="background:#ABABAB;font:12px Arial">DO</td><td align=center style="background:#ABABAB;font:12px Arial">FR</td><td align=center style="background:#ABABAB;font:12px Arial">SA</td><td align=center style="background:#ABABAB;font:12px Arial">SO</td></tr>');
	}
	else if( language == 'fi' )	{
		document.write('<table style="position:absolute;z-index:1001;overflow:hidden;width:160px;border-collapse:collapse;background:#FFFFFF;border:1px solid #ABABAB;display:none;" id="fc" cellpadding=2>');
		document.write('<tr><td style="cursor:pointer" onclick="csubm()"><img src="cal/arrowleftmonth.gif"></td><td colspan=5 id="mns" align="center" style="font:bold 13px Arial"></td><td align="right" style="cursor:pointer" onclick="caddm()"><img src="cal/arrowrightmonth.gif"></td></tr>');
		document.write('<tr><td align=center style="background:#ABABAB;font:12px Arial">Ma</td><td align=center style="background:#ABABAB;font:12px Arial">Ti</td><td align=center style="background:#ABABAB;font:12px Arial">Ke</td><td align=center style="background:#ABABAB;font:12px Arial">To</td><td align=center style="background:#ABABAB;font:12px Arial">Pe</td><td align=center style="background:#ABABAB;font:12px Arial">La</td><td align=center style="background:#ABABAB;font:12px Arial">Su</td></tr>');
	}
	for(var kk=1;kk<=7;kk++)
	{
		document.write('<tr>');
		for(var tt=-5;tt<=1;tt++)
		{
			num=7 * (kk-1) - (-tt);
			document.write('<td id="v' + num + '" style="width:18px;height:18px; background-color:#C4E7EC; border: 1px solid #F7FBFF">&nbsp;</td>');
		}
		document.write('</tr>');
	}	
}

document.write('<!--[if lte IE 6.5]><iframe style="display:block;position:absolute;top:0;left:0;z-index:-1;filter:mask();width:170px;height:210px;"></iframe><![endif]-->');
document.write('</table>');
document.all?document.attachEvent('onclick',checkClick):document.addEventListener('click',checkClick ,false);

// Calendar script
var now = new Date;
var sccm=now.getMonth();
var sccy=now.getFullYear();
var scfd=now.getDate();
var ccm=sccm;
var ccy=sccy;
var cfd=scfd;

var updobj;

if( language == 'en' )
	var mn=new Array('JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC');
else if( language == 'de' )
	var mn=new Array('JAN','FEB','M&Auml;R','APR','MAI','JUN','JUL','AUG','SEP','OKT','NOV','DEZ');
else if(language == 'fi')
	var mn=new Array('Tammi','Helmi','Maalis','Huhti','Touko','Kesä','Heinä','Elo','Syys','Loka','Marras','Joulu');
var mnn=new Array('31','28','31','30','31','30','31','31','30' ,'31','30','31');
var mnl=new Array('31','29','31','30','31','30','31','31','30' ,'31','30','31');
var calvalarr=new Array(42);
prepcalendar('',ccm,ccy);



function getObj(objID)
{
if (document.getElementById) {return document.getElementById(objID);}
else if (document.all) {return document.all[objID];}
else if (document.layers) {return document.layers[objID];}
}

function checkClick(e) {
if (e == 'skip') { getObj('fc').style.display='none'; return; }
e?evt=e:evt=event;
CSE=evt.target?evt.target:evt.srcElement;
if (getObj('fc'))
if (!isChild(CSE,getObj('fc')))
getObj('fc').style.display='none';
}

function isChild(s,d) {
while(s) {
if (s==d)
return true;
s=s.parentNode;
}
return false;
}

function Left(obj)
{
var curleft = 0;
if (obj.offsetParent)
{
while (obj.offsetParent)
{
curleft += obj.offsetLeft
obj = obj.offsetParent;
}
}
else if (obj.x)
curleft += obj.x;
return curleft;
}

function Top(obj)
{
var curtop = 0;
if (obj.offsetParent)
{
while (obj.offsetParent)
{
curtop += obj.offsetTop
obj = obj.offsetParent;
}
}
else if (obj.y)
curtop += obj.y;
return curtop;
}


if (!window.onload) window.onload = function() {
	getObj('fc').style.display = 'block';
	getObj('fc').style.visibility = 'hidden';
	setTimeout("onload_hide()", 1);
}


function onload_hide() {
	getObj('fc').style.display = 'none';
	getObj('fc').style.visibility = 'visible';
}

function lcs(ielem, parameter_disablepast, parameter_disablefuture) {
//alert ("kutsu");

if( parameter_disablepast != null && parameter_disablepast !=0) 	{	
    //alert (parameter_disablepast);
    disable_from = parameter_disablepast;
    //alert ("past: "+disable_from);
}

//Added disable future 28.12.2009 by Tommi Partanen
//Disable_future variable is handled in prepcalendar() function.
if( parameter_disablefuture != null && parameter_disablefuture !=0) 	{
		disable_future = parameter_disablefuture;
		//alert ("future: "+disable_future);
}

updobj=ielem;
getObj('fc').style.left = Left(ielem) + "px";
getObj('fc').style.top = Top(ielem) + ielem.offsetHeight + "px";
getObj('fc').style.display = 'block';

// First check date is valid
curdt=ielem.value;
curdtarr=curdt.replace(/\ /gi,'').replace(/[^0-9]/gi,'/').split('/');
isdt=true;
for(var k=0;k<curdtarr.length;k++) {
//alert(curdtarr[k]);
if (isNaN(parseInt(curdtarr[k])))
isdt=false;
}

//CCD = Current Calendar Day
//CCM = Current Calendar Month
//CCY = Current Calendar Year
if (isdt&(curdtarr.length==3)) {
if (dateformat=='ymd') {
ccy=parseInt(curdtarr[0], 10);
ccm=parseInt(curdtarr[1], 10)-1;
ccd=parseInt(curdtarr[2], 10);
} else if (dateformat=='mdy') {
ccy=parseInt(curdtarr[2], 10);
ccm=parseInt(curdtarr[0], 10)-1;
ccd=parseInt(curdtarr[1], 10);
} else {
ccy=parseInt(curdtarr[2], 10);
ccm=parseInt(curdtarr[1], 10)-1;
ccd=parseInt(curdtarr[0], 10);
}

//alert("ccd: "+ccd+" ccm: "+ccm+" ccy: "+ccy);

prepcalendar(ccd,ccm,ccy);
}
}

function evtTgt(e)
{
var el;
if(e.target)el=e.target;
else if(e.srcElement)el=e.srcElement;
if(el.nodeType==3)el=el.parentNode; // defeat Safari bug
return el;
}
function EvtObj(e){if(!e)e=window.event;return e;}
function cs_over(e) {
evtTgt(EvtObj(e)).style.background='#96C9D2';
}
function cs_out(e) {
evtTgt(EvtObj(e)).style.background='#C4E7EC';
}
function cs_click(e) {
if (e != 'skip') updobj.value=calvalarr[evtTgt(EvtObj(e)).id.substring(1,evtTgt(EvtObj(e)) .id.length)];
getObj('fc').style.display='none';
if (calendar_call != null) calendar_call(updobj);
}

function f_cps(obj) {
obj.style.background='#C4E7EC';
obj.style.font='10px Arial';
obj.style.color='#333333';
obj.style.textAlign='center';
obj.style.textDecoration='none';
obj.style.border='1px solid #F7FBFF';
obj.style.cursor='pointer';
}

function f_cpps(obj) {
obj.style.background='#C4E7EC';
obj.style.font='10px Arial';
obj.style.color='#ABABAB';
obj.style.textAlign='center';
obj.style.textDecoration='line-through';
obj.style.border='1px solid #F7FBFF';
obj.style.cursor='default';
}

function f_hds(obj) {
obj.style.background='#E36087';
obj.style.font='bold 10px Arial';
obj.style.color='#000000';
obj.style.textAlign='center';
obj.style.border='1px solid #250709';
obj.style.cursor='pointer';
}

// day selected
function prepcalendar(hd,cm,cy) {
//init(parameter_dateformat, parameter_datesplitter, parameter_disablepast);

//alert("hd: "+ hd+ "/n cm: "+cm+ "/n cy"+cy);
now=new Date();
sd=now.getDate();
td=new Date();
td.setDate(1);
td.setFullYear(cy);
td.setMonth(cm);
cd=td.getDay();
getObj('mns').innerHTML=mn[cm]+ ' ' + cy;
marr=((cy%4)==0)?mnl:mnn;

for(var d=1;d<=42;d++) {

f_cps(getObj('v'+parseInt(d)));
if ((d >= (cd -(-1))) && (d<=cd-(-marr[cm]))) {
dip=(disablepast&&(d-cd < sd)&&(cm==sccm)&&(cy==sccy));

if (disable_from) {
	var cdate = new Date();
	cdate.setFullYear(cy,cm,d-cd+disable_from-1);
	var future = new Date();
	/* 
  CY = Current year
  CM = Current Month
  D = day number in the loop (index)
  CD = day of the week (number representing the weekday) of the first day of the month. 0 = Mo, 1= Tu...
  CDATE = date with disable_from (?)
  NOW = current date on calendar call.	
	*/
	
  var one_day=1000*60*60*24; //one day in milliseconds

	 if (disable_future) {
	     var current_day=now.getDate(); //This variable states the current day of month (0....31)
	     
       //Here future is the last available date on calendar.
       future.setFullYear(cy,cm,current_day+disable_future); 
	     
       var date2check= new Date();
       date2check.setFullYear(cy,cm,d-3); //d-2 is to maintain date2check as the same date as loop index d.
      
	     //alert ("loop index (d): "+d+"\n current_day: "+current_day+"\n now: "+now+" \n future: "+future+" \n date2check: "+date2check);
  	   
       //if date2check if later than given future limit, print disabled box.
       // Note! In last "dip=..." check dates are first converted to milliseconds and then days to make correct calculations.
        dip=(cdate<now || ( (date2check.getTime()-now.getTime()) / one_day )>disable_future );
        //alert(future.getTime() )
        //date2check.getTime-now.getTime)>
   } else {
   //This else block was the original code before adding worktime to future was allowed.
      future.setFullYear(cy,cm,d-cd-1);
	   dip=(cdate<now || future>now);
   }
	
	
}


htd=((hd!='')&&(d-cd==hd));
//DIP = disabled box
if (dip)
f_cpps(getObj('v'+parseInt(d)));
else if (htd)
f_hds(getObj('v'+parseInt(d)));
else
f_cps(getObj('v'+parseInt(d)));

getObj('v'+parseInt(d)).onmouseover=(dip)?null:cs_over;
getObj('v'+parseInt(d)).onmouseout=(dip)?null:cs_out;
getObj('v'+parseInt(d)).onclick=(dip)?null:cs_click;

getObj('v'+parseInt(d)).innerHTML=d-cd;

cmx = parseInt(cm)+1;
if (cmx < 10 && prefix0==true) {
cmx = '0'+cmx;
}
dx = d-cd;
if (dx < 10 && prefix0==true) {
dx = '0'+dx;
}
if (dateformat=='ymd') {
calvalarr[d]=''+cy+datesplitter+cmx+datesplitter+dx;
} else if (dateformat=='mdy') {
calvalarr[d]=''+cmx+datesplitter+dx+datesplitter+cy;
} else {
calvalarr[d]=''+dx+datesplitter+cmx+datesplitter+cy;
}
}
else {
getObj('v'+d).innerHTML=' ';
getObj('v'+parseInt(d)).onmouseover=null;
getObj('v'+parseInt(d)).onmouseout=null;
getObj('v'+parseInt(d)).style.cursor='default';
}
} //for loop end
}


function caddm() {
marr=((ccy%4)==0)?mnl:mnn;

ccm+=1;
if (ccm>=12) {
ccm=0;
ccy++;
}
cdayf();
prepcalendar('',ccm,ccy);
}
//Added for Next Year Function
function caddy() {
marr=((ccy%4)==0)?mnl:mnn;
ccy++;
prepcalendar('',ccm,ccy);
}


function csubm() {
marr=((ccy%4)==0)?mnl:mnn;

ccm-=1;
if (ccm<0) {
ccm=11;
ccy--;
}
cdayf();
prepcalendar('',ccm,ccy);
}
//added for Previous Year Function
function csuby() {
marr=((ccy%4)==0)?mnl:mnn;

ccy--;
prepcalendar('',ccm,ccy);
}


function cdayf() {
if (!disablepast||((ccy>sccy)||((ccy==sccy)&&(ccm>=sccm))))
return;
else {
ccy=sccy;
ccm=sccm;
cfd=scfd;
}
}