// function that runs on page load
  function Load() {
		markDays();	
	}


   var months = new Array(13);
   months[0]  = "January";
   months[1]  = "February";
   months[2]  = "March";
   months[3]  = "April";
   months[4]  = "May";
   months[5]  = "June";
   months[6]  = "July";
   months[7]  = "August";
   months[8]  = "September";
   months[9]  = "October";
   months[10] = "November";
   months[11] = "December";

	var days = new Array(7);
	days[0] = "Monday";
	days[1] = "Tuesday";
	days[2] = "Wednesday";
	days[3] = "Thursday";
	days[4] = "Friday";
	days[5] = "Saturday";
	days[6] = "Sunday";


//functions that adds weeks depending on which the user scrolls the calendar
function scroller(direction) {

	var second = document.getElementById("Week2");
	var fourth = document.getElementById("Week4");
	var third = document.getElementById("Week3");	
	var monthdiv = document.getElementById("Month");	
	var year = document.getElementById("monthyear").childNodes[0].nodeValue;
	year = year.substring(year.indexOf(" "),year.length);
	if (direction == "up") {
		var elem = document.getElementById("Week1");
		var first = elem.childNodes[0];		
		var dayval = first.childNodes[0].nodeValue;	
		monthdiv.removeChild(document.getElementById("Week5"));		
		second.id = "Week3";
		elem.id = "Week2";	
		third.id ="Week4";
		fourth.id = "Week5";	
		elem.className = "inside";
		fourth.className = "outside";
		
		var newweek = document.createElement('div');
		newweek.id = "Week1";
		monthdiv.insertBefore(newweek,document.getElementById("Week2"));		
		for (var j=0; j<13;j++) {
			if (months[j] == dayval.substring(0,dayval.indexOf(" "))) {			
				break;
			}
		}		
		
		//find the date of first day on the calendar
		var firstday = elem.childNodes[0];	
		var firstval = firstday.childNodes[0].nodeValue;	
		if ((firstval.substring(firstval.indexOf(" ") + 1) > 22) ) {
				if (j==12){
					year --;
					j = 11;}
				var month_text = document.createTextNode( months[j] + ' ' + year );
				var monthyear = document.getElementById("monthyear");
				if (monthyear.childNodes.length > 0 ){
					monthyear.removeChild(monthyear.childNodes.item(0));
				}
				monthyear.appendChild(month_text);
		}
		
		//alert( dayval.substring(dayval.indexOf(" ") + 1,dayval.indexOf(" ",dayval.indexOf(" ")+1))-7);
		addweek(1,j,( (1*dayval.substring(dayval.indexOf(" ") + 1))-7),year);
	} else {
		var elem = document.getElementById("Week5");
		var first = elem.childNodes[0];		
		var dayval = first.childNodes[0].nodeValue;	
		monthdiv.removeChild(document.getElementById("Week1"));		
		second.id = "Week1";
		elem.id = "Week4";	
		third.id ="Week2";
		fourth.id = "Week3";
		elem.className = "inside";
		second.className = "outside";
		var newweek = document.createElement('div');
		newweek.id = "Week5";
		monthdiv.appendChild(newweek);		
		for (var j=0; j<12;j++) {
			if (months[j] == dayval.substring(0,dayval.indexOf(" "))) {		
				break;
			}
		}	
		
		//find the date of first day on the calendar
		var firstday = third.childNodes[0];	
		var firstval = firstday.childNodes[0].nodeValue;	
		if ((firstval.substring(firstval.indexOf(" ") + 1) < 8) ) {
				if (j==0){
					year ++;}
				var month_text = document.createTextNode( months[j] + ' ' + year );
				var monthyear = document.getElementById("monthyear");
				if (monthyear.childNodes.length > 0 ){
					monthyear.removeChild(monthyear.childNodes.item(0));
				}
				monthyear.appendChild(month_text);
		}
		//alert(5 + ' ' +j + ' ' + ( (1*dayval.substring(dayval.indexOf(" ") + 1))+7) + ' ' +year);
		addweek(5,j,( (1*dayval.substring(dayval.indexOf(" ") + 1))+7),year);
	}
	

		

}

//This function is called whenever a week needs to be loaded.
function addweek(w,month,num, year) {
	var mlimit = new Array(31,((year % 4 == 0 && year % 100 !=0) || year % 400 == 0 ? 29 : 28),31,30,31,30,31,31,30,31,30,31);
	var now  = new Date();
//	var year = now.getYear();
//	if (year < 200) {
//		year = year + 1900;
//	}
	var week = document.getElementById("Week" + w);
	
	if (w == 1 || w == 5 ) {
		week.className = "outside";
		
	}else{
		week.className = "inside";
	}
		
	
	//alert(w + ' ' + month + ' ' +num);
	markEvents(w,month,num,year);
	for (var i = 0; i < 7; i++) {
		var day = document.createElement('div');
		day.id = days[i];
		if (i < 5)  {
			day.className = "week";
			}
		else{
			day.className = "weekend";
		}
		if (num == 0 || num < 0 ) {	
			month = month - 1
			if (month < 0) {
				month = 11;
				year --;
				
			}
			num = (mlimit[month] + num)
		}
		if (num > mlimit[month]) {
			num = (num - mlimit[month]); 
			month = month + 1
			if (month >11 ){
				month = 0;
				
			}
		} 
		 
	   if (w == 2) {
				
				var month_text = document.createTextNode( months[month] + ' ' + year );
				var monthyear = document.getElementById("monthyear");
				if (monthyear.childNodes.length > 0 ){
					monthyear.removeChild(monthyear.childNodes.item(0));	}			
				monthyear.appendChild(month_text);
		}
		
		if (num == now.getDate() && month == now.getMonth() ) {
		  var day_text = document.createTextNode(days[i] + ' ' + months[month] + ' ' +   now.getDate() );
		  day.style.backgroundColor = '#F8C887';  
		}
		else  {   
		   
		   if (num == 1) {
				var day_text = document.createTextNode(months[month] + ' 1');
				}
			else {
				if ( i == 0 ) {
					var day_text = document.createTextNode(months[month] +  ' ' +  num );
				} else {
					var day_text = document.createTextNode( num);
				}
			}
		}
		
		
		day.style.fontWeight ='bold';
		day.style.fontSize = '12px';
		day.style.textIndent = '5px';
		var dayevent = document.createElement("div");
		dayevent.id = month + "-" + num;
		day.appendChild(day_text);
		day.appendChild(dayevent);
		week.appendChild(day);
		num = num + 1;
		}	
		
}

//function that initially creates the calendar upon loading
function markDays(){

	var now  = new Date();
	var year = now.getYear();
	var mlimit = new Array(31,((year % 4 == 0 && year % 100 !=0) || year % 400 == 0 ? 29 : 28),31,30,31,30,31,31,30,31,30,31);	
	if (year < 200) {
		year = year + 1900;}
	var month = now.getMonth();
	var num = (now.getDate() + (1- now.getDay())-7);
	
	if (num < 0) {
		month = month -1;
		num = num + (mlimit[month]) ;
	}
	//alert(num + ' ' + month + ' ' + mlimit[month]);
	for (var w = 1; w<6; w++) {
		addweek(w,month,(num + (7 * (w-1))),year)
		  }
	}	

//This function is called every time a new week is added to the calendar
function markEvents(w, month, num,year) {
	 var mlimit = new Array(31,((year % 4 == 0 && year % 100 !=0) || year % 400 == 0 ? 29 : 28),31,30,31,30,31,31,30,31,30,31);	
	var xmlhttp = Sarissa.getXmlHttpRequest();
	month ++;
	if (num > mlimit[month-1]) {
			num = (num - mlimit[month-1]); 
			month = month + 1
			if (month >12 ){
				month = 0;
				
			}
	}
	var num3 = num-1;
	var date = year + "/" +  month + "/" + num3;
	var num2 = num + 7;
	if (num2 > mlimit[month-1]) {
			num2 = (num2 - mlimit[month-1]); 
			month = month + 1
			if (month >12 ){
				month = 0;
				
			}
	}
	var date2 = year + "/" +  month + "/" + num2;
	//alert('data.php?date=' + date + '&date2=' + date2);
    xmlhttp.open('GET', 'data.php?date=' + date + '&date2=' + date2 + "'", true);
    xmlhttp.onreadystatechange = function() {
      if (xmlhttp.readyState == 4) {
        receiveUsernames(xmlhttp.responseXML,w,month-1,num);
      }
    };
	
    xmlhttp.send(null);



}

//data.php sends back information which goes to this function after a short delay for loading
function receiveUsernames(dom,w,month,num,year) {

 	var mlimit = new Array(31,((year % 4 == 0 && year % 100 !=0) || year % 400 == 0 ? 29 : 28),31,30,31,30,31,31,30,31,30,31);
 	//var week = document.getElementById("Week" + w);
 	var appts = dom.getElementsByTagName("appointment");
	if (appts.length > 0) {
		for (var j = 0; j <appts.length; j++) {
			var daynum = appts[j].childNodes[1].firstChild.nodeValue;
			var time = appts[j].childNodes[2].firstChild.nodeValue;	
			var title = appts[j].childNodes[3].firstChild.nodeValue;
			//alert(daynum + ' : ' + time + ' ' + title );
			var monthnum = daynum.substring(daynum.indexOf("-")+1,daynum.indexOf("-")+3)-1;
			var temp = daynum.indexOf("-") +4;
			daynum = daynum.substring(temp,daynum.length )-0;
			//alert(daynum + ' : ' + monthnum + ' ' + month );
			if (num > mlimit[month]) {
					num = (num - mlimit[month]); 
					month = month + 1
					if (month >11 ){
						month = 0;
					}
				} 
		if (monthnum == month) {
				//alert (title + ' ' + daynum + ' ' + num);
//				if ((daynum - num)<0) {
//					daynum = (mlimit[month] - num) + daynum;
//				} else {
//					daynum = daynum - num;
//				}
				
//			if (daynum < 7 ) {
//					//alert(daynum + ' ' + j + ' ' + num);
//					var event = document.createElement('div');
//					event.id = "event";
//					var day = week.childNodes[daynum]	
					var event = document.getElementById(month + "-" + daynum);
					//alert(month + "-" + num + "  " + title  + " " + daynum);
					var returnvar = document.createElement("br");
					var day_text = document.createTextNode( time.substring(0,5) + ' ' + title );		
					event.appendChild(day_text);
					event.appendChild(returnvar);
					//day.appendChild(event);	
					
				//}	
			}
		}
	}	

  }
  
  
  //non-used code
  function datecheck(year){
	  
	var elem = document.getElementById("Week1");
	var first = elem.childNodes[0];		
	var dayval = first.childNodes[0].nodeValue;	
	var month_text = document.createTextNode( months[month] + ' ' + year );
	var monthyear = document.getElementById("monthyear");
	if (monthyear.childNodes.length > 0 ){
		monthyear.removeChild(monthyear.childNodes.item(0));
	}
	monthyear.appendChild(month_text);
	   
	  
	  
  }
