/**
 * @author Lennart Öhrstedt
 */
var namn = new Array();
namn[0] = "Januari";
namn[1] = "Februari";
namn[2] = "Mars";
namn[3] = "April";
namn[4] = "Maj";
namn[5] = "Juni";
namn[6] = "Juli";
namn[7] = "Augusti";
namn[8] = "September";
namn[9] = "Oktober";
namn[10] = "November";
namn[11] = "December";
var visning = new Array();
var fore = new Array(31,31,28,31,30,31,30,31,31,30,31,30); //antal dagar i månaden före aktuell
var aktuell = new Array(31,28,31,30,31,30,31,31,30,31,30,31);	// antal dagar i aktuell månad
var idag = new Date();
var ar = idag.getFullYear(); //aktuellt år
var manad = idag.getMonth(); // aktull månad 0=January, 1=February, etc.
var dag = 0;
var nasta = 1;
var kk = 77;
var dagens = idag.getDate();  // dagens datum 1-31 
if ( dagens < 10) {
     dagens="0"+dagens.toString();
     var namnsdag = "m"+(manad+1).toString().concat(dagens);
    }
    else {
        var namnsdag = "m"+(manad+1).toString().concat(idag.getDate().toString()); 
}
function shownamnsdag(namnsdag) {
        document.getElementById(namnsdag).style.display="inline";         
    }
function greatings(){
    var dagens = idag.getDate();
    if (manad == 11 && dagens > 9 && dagens < 27) 
    {
        popUp('godjul');
    }
    if (manad == 11 && dagens > 26 || manad == 0 && dagens < 11)
    {   
        popUp('nyår');
    }
}
function datum()
{
	var dagens_datum = new Date();
	var dagens_datum_ar = dagens_datum.getFullYear(); //aktuellt år
	var dagens_datum_manad = dagens_datum.getMonth(); // aktull månad 0=January, 1=February, etc.
	var dagens_dag = dagens_datum.getDate(); // dagens datum 1-31
	var today = new Date(dagens_datum_ar,dagens_datum_manad,01);
	vdag=today.getDay(); //veckodag för det önskade datumet, alltså vilken veckodag månaden startar på
   veckodag=((vdag+6)%7)+1; // weekdays will be numbered 1 to 7 
	if ( (dagens_datum_manad == manad) && (dagens_datum_ar == ar) )
	{
   	x = "d" + (veckodag+dagens_dag-1);
   	document.getElementById(x).style.backgroundColor="#9acd32";
	}
}
function rensarad4()
{	
	document.getElementById("v4").style.display =  "none";
	document.getElementById("d29").style.display =  "none";
	document.getElementById("d30").style.display =  "none";
	document.getElementById("d31").style.display =  "none";
	document.getElementById("d32").style.display =  "none";
	document.getElementById("d33").style.display =  "none";
	document.getElementById("d34").style.display =  "none";
	document.getElementById("d35").style.display =  "none";   
}
function rensarad5()
{	
	document.getElementById("v5").style.display =  "none";
	document.getElementById("d36").style.display =  "none";
	document.getElementById("d37").style.display =  "none";
	document.getElementById("d38").style.display =  "none";
	document.getElementById("d39").style.display =  "none";
	document.getElementById("d40").style.display =  "none";
	document.getElementById("d41").style.display =  "none";
	document.getElementById("d42").style.display =  "none";  
}
function gregdaynumber(year,month,day)// computes the day number since 0 January 0 CE (Gregorian)
{  
	y=year;
	m=month;
	if(month < 3) y=y-1;
	if(month < 3) m=m+12;
	return Math.floor(365.25*y)-Math.floor(y/100)+Math.floor(y/400)+Math.floor(30.6*(m+1))+day-62;
} 
function isocalendar1(yyyy,mm,dd)// computes the ISO calendar date from the current Gregorian date
{			
	var today = new Date(yyyy,mm,dd); //Den önskade datument som skall visas
    year=yyyy; //today.getFullYear();
    month=mm ;//today.getMonth(); // 0=January, 1=February, etc.
    day=dd; //today.getDate(); // är 01 normalt
    wday=today.getDay(); //veckodag för det önskade datumet, alltså vilken veckodag månaden startar på
    weekday=((wday+6)%7)+1; // weekdays will be numbered 1 to 7    
	 isoyear=year; 
    d0=gregdaynumber(year,1,0);
    weekday0=((d0+4)%7)+1; 
    d=gregdaynumber(year,month+1,day);
    isoweeknr=Math.floor((d-d0+weekday0+6)/7)-Math.floor((weekday0+3)/7); 
    if((month == 11) && ((day-weekday) > 27))// check whether the last few days of December belong to the next year's ISO week
    {	isoweeknr=1;
    	isoyear=isoyear+1;
    } 
    if((month == 0) && ((weekday-day) > 3))// check whether the first few days of January belong to the previous year's ISO week
    {	d0=gregdaynumber(year-1,1,0);
    	weekday0=((d0+4)%7)+1;
    	isoweeknr=Math.floor((d-d0+weekday0+6)/7)-Math.floor((weekday0+3)/7);
    	isoyear=isoyear-1;
    } 																		
    var k = fore[month];			
    if	(year % 4 == 0)	// kolla om skottår		
    {	 
		fore[2] = 29;
    	aktuell[1] = 29;
    }	else
    {	
		fore[2] = 28;
    	aktuell[1] = 28;
    }
    for (	i = 0 ; i <= 42; i ++ ) //töm visnings array
    {	
		visning[i]=0;
    }
    dag = 0;
    nasta = 1;
    for (	i = weekday; i <= 42; i++ )
    {	
		if ( ( weekday + aktuell[month] -1) < i )
    	{	
			dag++;
    		visning[i] = dag;	//Fyller månaden
    	}	else
    	{	
			visning[i] = nasta;	//fyller början på nästa månad
    		nasta++;
    	}				
    }	 
    for (	i = 1; i < weekday; i++ )
    {	
		visning[i] = k - ( weekday - 2 );	//Fyller slutet föregående månad
    	k++;
    }		 
    i=1;
    document.getElementById("manaden").innerHTML = namn[manad];
    document.getElementById("aret").innerHTML =ar;
    document.getElementById("v0").innerHTML =  isoweeknr;
    if (	isoweeknr  ==  53 ||isoweeknr  ==   52 ) isoweeknr = 0 ; 
    document.getElementById("v1").innerHTML = isoweeknr+1;
    document.getElementById("v2").innerHTML = isoweeknr+2;
    document.getElementById("v3").innerHTML =  isoweeknr+3;    	
    if 	(	visning[i]  > 24 )
    {	
		document.getElementById("d1").style.color="#cccccc";
    }	else
    {	
		document.getElementById("d1").style.color="#000000";
    }
    document.getElementById("d1").innerHTML = visning[i]; i++;
    if 	(	visning[i]  > 24 )
    {	
		document.getElementById("d2").style.color="#cccccc";
    }	else
    {	
		document.getElementById("d2").style.color="#000000";
    }
    document.getElementById("d2").innerHTML = visning[i]; i++;
    if 	(	visning[i]  > 24 )
    {	
		document.getElementById("d3").style.color="#cccccc";
    }	else
    {	
		document.getElementById("d3").style.color="#000000";
    }
    document.getElementById("d3").innerHTML = visning[i]; i++;
    if 	(	visning[i]  > 24 )
    {	
		document.getElementById("d4").style.color="#cccccc";
    }	else
    {	
		document.getElementById("d4").style.color="#000000";
    }
    document.getElementById("d4").innerHTML = visning[i]; i++;
    if 	(	visning[i]  > 24 )
    {	
		document.getElementById("d5").style.color="#cccccc";
    }	else
    {	
		document.getElementById("d5").style.color="#000000";
    }
    document.getElementById("d5").innerHTML = visning[i]; i++;
    if 	(	visning[i]  > 24 )
    {	
		document.getElementById("d6").style.color="#cccccc";
    }	else
    {	document.getElementById("d6").style.color="#000000";
    }	 
    document.getElementById("d6").innerHTML = visning[i]; i++;
    document.getElementById("d7").innerHTML = visning[i]; i++;
    document.getElementById("d8").innerHTML = visning[i]; i++;
    document.getElementById("d9").innerHTML = visning[i]; i++;	
    document.getElementById("d10").innerHTML = visning[i]; i++;
    document.getElementById("d11").innerHTML = visning[i]; i++;
    document.getElementById("d12").innerHTML = visning[i]; i++;
    document.getElementById("d13").innerHTML = visning[i]; i++;
    document.getElementById("d14").innerHTML = visning[i]; i++;
    document.getElementById("d15").innerHTML = visning[i]; i++;
    document.getElementById("d16").innerHTML = visning[i]; i++;
    document.getElementById("d17").innerHTML = visning[i]; i++;
    document.getElementById("d18").innerHTML = visning[i]; i++;
    document.getElementById("d19").innerHTML = visning[i]; i++;
    document.getElementById("d20").innerHTML = visning[i]; i++;
    document.getElementById("d21").innerHTML = visning[i]; i++;
    document.getElementById("d22").innerHTML = visning[i]; i++;
    document.getElementById("d23").innerHTML = visning[i]; i++;
    document.getElementById("d24").innerHTML = visning[i]; i++;
    document.getElementById("d25").innerHTML = visning[i]; i++;
    document.getElementById("d26").innerHTML = visning[i]; i++;
    document.getElementById("d27").innerHTML = visning[i]; i++;
    document.getElementById("d28").innerHTML = visning[i]; 					
    if (	visning[i] == aktuell[month] )
    {	
		rensarad4();
    	rensarad5(); 
    	return;
    }	else
    {	
		i++;		
    	document.getElementById("v4").innerHTML =  isoweeknr+4;
    	document.getElementById("d29").innerHTML = visning[i]; i++;
    	if 	(	visning[i]  <= 6 )
    	{	
			document.getElementById("d30").style.color="#cccccc";
    	}	else
    	{	
			document.getElementById("d30").style.color="#000000";
    	}
    	document.getElementById("d30").innerHTML = visning[i]; i++;
    	if 	(	visning[i]  <= 6 )
    	{	
			document.getElementById("d31").style.color="#cccccc";
    	}	else
    	{	
			document.getElementById("d31").style.color="#000000";
    	}
    	document.getElementById("d31").innerHTML = visning[i]; i++;
    	if 	(	visning[i]  <= 6 )
    	{	
			document.getElementById("d32").style.color="#cccccc";
    	}	else
    	{	
			document.getElementById("d32").style.color="#000000";
    	}
    	document.getElementById("d32").innerHTML = visning[i]; i++;
    	if 	(	visning[i]  <= 6 )
    	{	
			document.getElementById("d33").style.color="#cccccc";
    	}	else
    	{	
			document.getElementById("d33").style.color="#000000";
    	}
    	document.getElementById("d33").innerHTML = visning[i]; i++;
    	if 	(	visning[i]  <= 6 )
    	{	
			document.getElementById("d34").style.color="#cccccc";
    	}	else
    	{	
			document.getElementById("d34").style.color="#000000";
    	}
    	document.getElementById("d34").innerHTML = visning[i]; i++;
    	if 	(	visning[i]  <= 6 )
    	{	
			document.getElementById("d35").style.color="#cccccc";
    	}	else
    	{	
			document.getElementById("d35").style.color="#000000";
    	}
    	document.getElementById("d35").innerHTML = visning[i]; i++;    			    	
		if (	visning[i] < 29 )
    	{	
			rensarad5();			
    		return;
    	}	else
    	{				
			document.getElementById("d36").innerHTML = visning[i]; i++;
    		if 	(	visning[i]  <= 6 )
			{	
				document.getElementById("d37").style.color="#cccccc";
			}	else
			{	
				document.getElementById("d37").style.color="#000000";
			}
			document.getElementById("d37").innerHTML = visning[i]; i++;
        	if 	(	visning[i]  <= 6 )
			{	
				document.getElementById("d38").style.color="#cccccc";
			}	else
			{	
				document.getElementById("d38").style.color="#000000";
			}
			document.getElementById("d38").innerHTML = visning[i]; i++;
        	if 	(	visning[i]  <= 6 )
			{	
				document.getElementById("d39").style.color="#cccccc";
			}	else
			{	
				document.getElementById("d39").style.color="#000000";
			}
			document.getElementById("d39").innerHTML = visning[i]; i++;
        	if 	(	visning[i]  <= 6 )
			{	
				document.getElementById("d40").style.color="#cccccc";
			}	else
			{	
				document.getElementById("d40").style.color="#000000";
			}
			document.getElementById("d40").innerHTML = visning[i]; i++;
        	if 	(	visning[i]  <= 6 )
			{	
				document.getElementById("d41").style.color="#cccccc";
			}	else
			{		document.getElementById("d41").style.color="#000000";
			}
			document.getElementById("d41").innerHTML = visning[i]; i++;
        	if 	(	visning[i]  <= 6 )
			{	
				document.getElementById("d42").style.color="#cccccc";
			}	else
			{	
				document.getElementById("d42").style.color="#000000";
			}
			document.getElementById("d42").innerHTML = visning[i]; i++;
			document.getElementById("v5").innerHTML = isoweeknr+5;
		}
	}											
	if(isoweeknr < 10) return isoyear+"-W0"+isoweeknr+"-"+weekday;
	if(isoweeknr > 9) return isoyear+"-W"+isoweeknr+"-"+weekday;		
}
function rensabokning()
{
	for ( i=1; i<42; i++ )
	{
		x = "d" + i;
		document.getElementById(x).style.color="#000000";
		document.getElementById(x).style.backgroundColor="#ffffff";
	}	
}
function fwd()
{		
	visaigen();
	rensabokning();
	manad ++;
	if (	manad == 12)
	{	
		manad = 0;
        ar ++;
    }
	isocalendar1(ar,manad,01);
	datum();	
}
function bwd()
{	
	visaigen();	
	rensabokning();
	if (manad == 0)
	{	manad = 11;
		ar = ar -1;
	}	else
	{	
		manad = manad -1;
	}
	isocalendar1(ar,manad,01);
	datum();	
}
function visaigen()
{	
	document.getElementById("v4").style.display =  "table-cell";
	document.getElementById("d29").style.display =  "table-cell";
	document.getElementById("d30").style.display =  "table-cell";
	document.getElementById("d31").style.display =  "table-cell";
	document.getElementById("d32").style.display =  "table-cell";
	document.getElementById("d33").style.display =  "table-cell";
	document.getElementById("d34").style.display =  "table-cell";
	document.getElementById("d35").style.display =  "table-cell";  
	document.getElementById("v5").style.display =  "table-cell";
	document.getElementById("d36").style.display =  "table-cell";
	document.getElementById("d37").style.display =  "table-cell";
	document.getElementById("d38").style.display =  "table-cell";
	document.getElementById("d39").style.display =  "table-cell";
	document.getElementById("d40").style.display =  "table-cell";
	document.getElementById("d41").style.display =  "table-cell";
	document.getElementById("d42").style.display =  "table-cell";  
}
function initiera ()
{
	isocalendar1(ar,manad,01);
	fwd();
	bwd();
}

