var cal_div_id = "event_calendar";
var cal_month_div_id = "event_calendar_month";
var cal_day_class = "cal_day";
var cal_week_class = "cal_week";
var weekDays = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"];
var current_month = new Date();

function getUrlVars()
{
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');

    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }

    return vars;
}
var urlvars = getUrlVars();
//alert(urlvars['date']);
if (urlvars['date']!==undefined) current_month.setTime(urlvars['date']*1000);


/*
if (window.addEventListener) {
	window.addEventListener('load',LoadCalendar,false);
} else {
	window.attachEvent('onload',LoadCalendar,false);
}
*/
LoadCalendar();

function LoadCalendar () {
	var cal_div = document.getElementById(cal_div_id);
	if (cal_div==undefined) {
		var timer = setTimeout("LoadCalendar ()", 500);
	} else {
		drawCalendar(current_month);
	}
}

function switchNextMonth () {
	current_month.setTime(current_month.getTime()+60*60*24*1000*30);
	clearCalendar();
	drawCalendar(current_month);
}
function switchPrevMonth () {
	current_month.setTime(current_month.getTime()-60*60*24*1000*30);
	clearCalendar();
	drawCalendar(current_month);
}

function clearCalendar() {
	var cal_div = document.getElementById(cal_div_id);
	while ( cal_div.childNodes.length >= 1 )
    {
        cal_div.removeChild( cal_div.firstChild );       
    } 
}

function drawCalendar (start) {
	var startday = new Date();
	startday.setTime(start.getTime());
	var cal_div = document.getElementById(cal_div_id);
	var currmonth, prevday, nextday, isactive;
	startday.setDate(1);
	if (cal_div!==null) {
		var cal_month_div = document.getElementById(cal_month_div_id);
		var monname = "";
		try{
			if (language_timeformat_month!==undefined && language_timeformat_month!=="") {
				monname = language_timeformat_month.replace("Y", startday.getFullYear()).replace("m", padstring(startday.getMonth()+1, 2, "0"));
				if (month_names!==undefined) monname = monname.replace("%F", month_names[(startday.getMonth()+1)])
				if (month_names_short!==undefined) monname = monname.replace("%M", month_names_short[(startday.getMonth()+1)]);
			} else {
     			monname = month_names[(startday.getMonth()+1)]+" "+startday.getFullYear();
     		}
		}catch(e){
     		 monname = startday.getFullYear()+" - "+padstring(startday.getMonth()+1, 2, "0");
		}
		
		cal_month_div.innerHTML = monname;
			var prevarr = new Array();
			prevday = new Date();
			prevday.setTime(startday.getTime());
			while (prevday.getDay()!==1) {
				prevday.setTime(prevday.getTime()-60*60*24*1000);
				prevarr[prevday.getDay()] = getDayItem(prevday.getDate(), prevday.getDay());
				
			}
			for (var i=1;i<prevarr.length;i++) { cal_div.appendChild(prevarr[i]); }

		currmonth = startday.getMonth();
		while ( currmonth==startday.getMonth() ) {
			currdate = startday.getFullYear() + "-" + padstring(startday.getMonth()+1, 2, "0") + "-" + padstring(startday.getDate(), 2, "0");
			isactive = startday.getMonth()==start.getMonth() ? true : false;
			cal_div.appendChild(getDayItem(startday.getDate(), startday.getDay(), day_eventcounts[currdate], isactive, startday ));
			ld = startday.getDay();
			startday.setTime(startday.getTime()+60*60*24*1000);
			if (ld==startday.getDay()) startday.setTime(startday.getTime()+60*60*1*1000);
		}
		if (startday.getDay() !== 1) {
			nextday = new Date();
			nextday.setTime(startday.getTime());
			while (nextday.getDay()!==0) {
				cal_div.appendChild(getDayItem(nextday.getDate(), nextday.getDay() ));
				ld = nextday.getDay();
				nextday.setTime(nextday.getTime()+60*60*24*1000);
				if (ld==nextday.getDay()) nextday.setTime(nextday.getTime()+60*60*1*1000);
			}
			cal_div.appendChild(getDayItem(nextday.getDate(), nextday.getDay() ));
		}
	}
}

function getDayItem (badge, dayofweek, eventcount, active, daydate) {
	var newElement = document.createElement("DIV");
	active = active==true ? "activeDay" : "inactiveDay";
		if (daydate!==undefined) {
			var dayzero = new Date();
			dayzero.setTime(daydate.getTime());
			dayzero.setHours(0);
			dayzero.setMinutes(0);
			dayzero.setSeconds(1);
			var today = new Date();
			today.setHours(0);
			today.setMinutes(0);
			today.setSeconds(1);
			istoday = Math.floor(today.getTime()/1000)==Math.floor(dayzero.getTime()/1000) ? " today " : "" ; 
		} else {
			istoday = "";
		}
	newElement.className = cal_day_class+" day"+dayofweek + " " + active + " " + istoday;
	newElement.innerHTML = badge;
	var hasevents = (eventcount!==undefined && eventcount>0) ? 1 : 0 ;
	if (hasevents==1) newElement.className += " hasevents"; 
	newElement.setAttribute("hasevents", hasevents);
	newElement.onmouseover = function () {
		if (eventcount!==undefined) settooltip('ittooltip', eventcount);
	}
	newElement.onmouseout = function () {
		cleartooltip('ittooltip');
	}
	if (hasevents==1) {
		newElement.style.cursor = "pointer";
		//alert(dayzero.getTime()/1000);
		newElement.onclick = function () {
			//alert(Math.floor(dayzero.getTime()/1000) ) ;
			window.location = "search.php?date="+Math.floor(dayzero.getTime()/1000+60*60*3);
		}
	}
	//  .onMouseOver
	return newElement;
}


var STR_PAD_LEFT = 1;
var STR_PAD_RIGHT = 2;
var STR_PAD_BOTH = 3;
 
function padstring(str, len, pad, dir) {
 	str = new String(str);
	if (typeof(len) == "undefined") { var len = 0; }
	if (typeof(pad) == "undefined") { var pad = ' '; }
	if (typeof(dir) == "undefined") { var dir = STR_PAD_LEFT; }
 	
 	//alert(STR_PAD_LEFT);
 	//alert(str.length);	
	if (len + 1 >= str.length) {

		switch (dir){
 
			case STR_PAD_LEFT:
				str = Array(len + 1 - str.length).join(pad) + str;
			break;
 
			case STR_PAD_BOTH:
				var right = Math.ceil((padlen = len - str.length) / 2);
				var left = padlen - right;
				str = Array(left+1).join(pad) + str + Array(right+1).join(pad);
			break;
 
			default:
				str = str + Array(len + 1 - str.length).join(pad);
			break;
 
		} // switch
 
	}
 
	return str;
 
}
