var next_week_init = 0;
function next_week(target_week_day,datesource)
{
		
	date = datesource;
	
	day = date.getDate();
	month = date.getMonth();
	year = date.getFullYear();
	week_day = date.getDay();
	
	months = new Array('January',
	'February',
	'March',
	'April',
	'May',
	'June',
	'July',
	'August',
	'September',
	'October',
	'November',
	'December');
	
	
	if(week_day <= target_week_day){
		days_left = target_week_day - week_day;
	}
	else{
		days_left = 7 - (week_day - target_week_day);
	}
	
	//This script works by finding out the number of days separating
	//the current date and the next target week day.
	next_week_day = new Date(year, month, day + days_left);
	
	//Sjekk at vi ikke går inn i en ny måned, trekk fra en uke for å beholde oss i samme måned
	if(month != next_week_day.getMonth() && next_week_init > 2 && (next_week_day.getDate()-7) < date){
		next_week_day.setDate(next_week_day.getDate()-7);
	}
	next_week_init++; // for å unngå at vi booker i fortid på initialisering
	return next_week_day;
}


function markdates(date)
{
	
	var plusFromToday = new Date();
	plusFromToday.setTime(aktivdato.valueOf())
	plusFromToday.setDate(plusFromToday.getDate()+(7-selectedperiodrange));
	
	if ((date>=aktivdato) && (date<=plusFromToday)){
		return true;
	}
	else{
		return false;
	}
	
}


function fixDate( datoraw ){
	var dr_year = datoraw.getFullYear();
	var dr_mnd = datoraw.getMonth() + 1;
	dr_mnd = (dr_mnd < 10) ? '0' + dr_mnd : dr_mnd;
	
	var dr_dag = datoraw.getDate();
	dr_dag = (dr_dag < 10) ? '0' + dr_dag : dr_dag;
	
	
	document.getElementById('dato').value = dr_year + "-" + dr_mnd + "-" + dr_dag +","+(7-selectedperiodrange);
}
aktivdato = next_week(0,new Date());
function initcal(d,v){
	var e = document.getElementById('rangepicker');
	for(i=0; i<e.length; i++){
		if(e.options[i].value == v){
			e.selectedIndex = i;
			i = e.length;
		}
	}
	var initdate = new Date();
	var draw = d.split("-");
	initdate.setYear(draw[0]*1);
	initdate.setMonth(draw[1]*1-1);
	initdate.setDate(draw[2]*1);
	aktivdato = initdate;
	if(initdate.getDay() != e.options[document.getElementById('rangepicker').selectedIndex].value.split(",")[0]){
		aktivdato = next_week(0,initdate);
	}
	newcal();
}
function newcal(){
	
	$('btn_finnenheter').style.display = 'block';
	if(document.getElementById('rangepicker').options[document.getElementById('rangepicker').selectedIndex].value == 'annen'){
		$('btn_finnenheter').style.display = 'none';
		document.getElementById('calendar-container').innerHTML = '<p>Kontakt oss p&aring; telefon eller epost dersom du &oslash;nsker &aring; booke en annen periode</p>';
		
		return;	
	}
	selectedperiodraw = document.getElementById('rangepicker').options[document.getElementById('rangepicker').selectedIndex].value.split(",");
	selectedperiod = selectedperiodraw[0]; // returnerer ukedag. 0=søn, 6=lør
	selectedperiodrange = selectedperiodraw[1];
	
	aktivdato = next_week(selectedperiod,aktivdato);
	fixDate(aktivdato);
	document.getElementById('calendar-container').innerHTML = '';
	nowdate = new Date();
	
	
	var cal = new Zapatec.Calendar.setup({
		
		flat         : "calendar-container", // ID of the parent element
		flatCallback : function(date){
			return false;
		},
		onSelect : function(cal){
			var dato = new Date(cal.date);
			aktivdato = next_week(selectedperiod,dato);
			fixDate(aktivdato);
			cal.reinit();
			
		},
		noHelp : true,
		align : "Bc",
		date : aktivdato,
		showsTime      :     false,
		dateStatusFunc :    function (date) { // disable weekend days (Saturdays == 6 and Sundays == 0)
			if(markdates(date)){
				if(date.getDay() != selectedperiod){
					return "disabled hl";
				}
				else{
					if(date.getDay() != nowdate.getDay()){
						return "hl";
					}
					else{
						return "disabled hl";
					}
				}
			}
			else{
				if(date.getDay() != selectedperiod){
					return true;
				}
				else{
					return false;
				}
			}
			
			
			
	} });
}