	var sharedPath = "/shared/wow-com/images/basics/raidcalendar/";

	var resetMonth = 1;
	var resetDay = 0;
	var totalResets = 0;
	
	var instances_7 = [3, 17, 16, 15, 18, 13, 11, 10, 9, 8, 7, 12, 2, 1, 0]; //holds all instances with 7 day lockout timer
	var instances_5 = [4];
	var instances_3 = [5, 6];
	var instances_3za = [14];

	var reset7 = 0;
	var reset5 = 2; 	//Onyxia begins
	var reset3 = 0; 	//Zul'Gurub begins
	var reset3za = 2; 	//Zul'Aman begins
	var moreLink, tooltipContent, raidsCounter;
	
	function drawCalendar () {
		var cells = document.getElementsByTagName("TD");
		for (var i=0; i< cells.length; i++) {
			cell = cells[i];
			if(cell.className.indexOf("calendarCell") != -1) cell.className = "calendarCell";
		}
		document.getElementById("townhallTable").className = "townhallbig";
		document.getElementById("infoContainer").innerHTML = raidtext1;
		document.getElementById("infoContainer").innerHTML += raids;
		document.getElementById("infoContainer").innerHTML += raidtext2;    
		initCalendar((currMonth != "") ? currMonth : todate.getMonth() + 1, year);
	}
	
	function getResetDay (inputResetMonth, inputResetDay) {
		if (inputResetMonth == 1)	return inputResetDay;
		else {
			var d=1;
			while (d < inputResetMonth) {
				inputResetDay += monthArray[d];
				d++;
				}
			}
		return inputResetDay;
	}
	
	function clearCalendar(month) {
		i=1;
		while (i <= 42) {
			calendarElement=document.getElementById('cell_div_'+ i);
			calendarElement.innerHTML = "";
		i++;
		}
	}
	
	function initCalendar(newMonth, year) {
		currMonth = newMonth;
		monthName=monthArrayName[newMonth];
		calendarElement=document.getElementById("monthTitle");
		calendarElement.innerHTML=monthName.toUpperCase();	
	
		var counterDay=0;
		var startDay;
		if (year == 2006 || year == 106)
		startDay=6;
		else if (year == 2007 || year == 107)
		startDay=0;
		else if (year == 2008 || year == 108)
		startDay=1;	
		else if (year == 2009 || year == 109)
		startDay=3;
		else if (year == 2010 || year == 110)
		startDay=4;
		else if (year == 2011 || year == 111)
		startDay=5;
		else if (year == 2012 || year == 112)
		startDay=6;
		else if (year == 2013 || year == 113)
		startDay=1;
		else if (year == 2014 || year == 114)
		startDay=2;
	
		var i=1;
		var dayCount=1;
	
		if (newMonth == 1){
			x=(startDay + 1)%7;
			counterDay=0;
		} else {
			var monthCount=newMonth - 1;
			var y=0;
			counterDay=1;	
			while (monthCount > 0) {
				y += monthArray[monthCount];
				monthCount--;
				counterDay=y;
			}
			x=y%7 + 1 + startDay;	
		}
	
		counterDay++;
		
		y=(x - 1)%7;	
		
		if (x == 0)
		y=6;
		z=y;
		
		clearCalendar(newMonth);
		
		i=1;
		
		beforeStart=y;
		
		while(beforeStart > 0) {
			var calendarElement=document.getElementById("cell_" + beforeStart);
			calendarElement.innerHTML='';
			beforeStart--;
		}
		
		if (newMonth == todate.getMonth()+1) {
			changeThis=todate.getDate() + y;
			calendarElement.style.color='#ffffff';
			calendarElement=document.getElementById("cell_background_"+changeThis);
			calendarElement.style.backgroundImage = "url(/shared/wow-com/images/basics/raidcalendar/celltoday.jpg)";
			savedCell=changeThis;
		} else {
			if (savedCell != 0) {
				calendarElement=document.getElementById("cell_background_"+savedCell);
				calendarElement.style.backgroundImage='';
			}
		}
		
		while (i <= monthArray[newMonth]) {
			y++;
			var calendarElement=document.getElementById("cell_" + y);
			var calendarCell = document.getElementById("cell_div_" + y);		
			calendarElement.innerHTML=i;
			i++;	
			raidColumn=1;
			if ((counterDay-resetDay)%3 - reset3==0){	
				revealIcons(instances_3, y)		
			}
	
			if ((counterDay-resetDay)%3 - reset3za==0){	
				revealIcons(instances_3za, y)		
			}
	
			if ((counterDay-resetDay)%7 - reset7==0) {	
				revealIcons(instances_7, y)
			}
		
			if ((counterDay-resetDay)%5 - reset5==0){	
				revealIcons(instances_5, y)		
			}	
			
			if(raidsCounter > 6) { /*if more than 7 raids DOM-create more-Link */
				var moreLink = document.createElement("a");
				moreLink.theText = tooltipContent;
				moreLink.onmouseover = function () { ddrivetip(this.theText);	}
				moreLink.onmouseout = function () { hideddrivetip();	}
				moreLink.className = "moreLink";

			   text = document.createTextNode(more);
			   moreLink.appendChild(text);

				calendarCell.appendChild(moreLink);
			}
			counterDay++;
			moreLink = null;
			tooltipContent = "";
			raidsCounter = 0;
		}
		
		while (i <= 42) {
			y++;
			if (y <= 42) {
				var calendarElement=document.getElementById("cell_" + y);
				calendarElement.innerHTML='';
			}
			i++;	
		}
	
		nextMonth = newMonth + 1; 
		previousMonth=newMonth - 1;
	}
		
	function revealIcons (arr, counter) {
	var calendarCell = document.getElementById("cell_div_" + counter);		
	var raidsAdded = calendarCell.getElementsByTagName("img").length;
		for (var i = 0; i < arr.length; i++) {
			var raidName = raid[arr[i]][1];
			var raidImg = sharedPath + language + '/' + raid[arr[i]][3] + ".gif";
			var raidLockoutTime = (raid[arr[i]][2] == 3 || raid[arr[i]][2] == 5) ? threeAM : textmaintenance;
			var maintenanceText = "<span class=raidName> "+ raidName +" </span><br><strong class=raidTime> "+ textresettime +": </strong>"; 
			maintenanceText += "<span style=color:#fff;>" + raidLockoutTime + "</span>";

			if(raidsAdded < 7) { //show first 7 instances
				var theImage = document.createElement('IMG');
				theImage.src = raidImg;
				theImage.text = maintenanceText; //nessesary to address IE variable-saving-issue-inside loop
				theImage.onmouseover = function () { ddrivetip(this.text); }
				theImage.onmouseout = function () { hideddrivetip(); }

				calendarCell.appendChild(theImage);
				raidsAdded++;
			} else { /* 7+ instances get saved in a tooltip*/
				raidsCounter++;
				tooltipContent += '<div class="raidInfo">';								
				tooltipContent += '	<img src="' + raidImg + '" height="31" width="29" border="0" alt="">';								
				tooltipContent += '	<span>' + maintenanceText + '</span>';								
				tooltipContent += '</div>';								
			}
		}
	}

	
	function goNextMonth() {
		if (nextMonth < 13) initCalendar(nextMonth, year);
	}
	
	function goPreviousMonth() {
		if (previousMonth > 0)	initCalendar(previousMonth, year);
	}
	
	function changeView(calendarType) {
		type = calendarType;
		drawCalendar(currMonth);
	}

	function addEvent(obj, evType, fn) {
		if (obj.addEventListener) {
			obj.addEventListener(evType, fn, false);
		return true;
		} else if (obj.attachEvent) {
		var r = obj.attachEvent("on"+evType, fn);
		return r;
		} else {
			return false;
		}
	}