
//for a nice error dialogue about what's going on
	onerror=handleErr;
	var txt="";
	var httpRstatus="";
	var url="update_desk.php";
	
	//the XMLHttpRequest object
	var ajaxRequest;
	
function postData(dataString,php_url,asynch,stateChangeFunction){
	ajaxRequest = getHttpRequest();
	params = dataString;
	
	ajaxRequest.open("POST", php_url, asynch);
	ajaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	ajaxRequest.setRequestHeader("Content-length", params.length);
	ajaxRequest.setRequestHeader("Connection", "close");
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = stateChangeFunction;
	ajaxRequest.send(params);
	return ajaxRequest.responseText;

}
	
function listAvailSchedules(){	
	params = "listSched=true";
	postData(params,url,true,stateListSchedule);

}

function stateListSchedule()
{ 	
	if (ajaxRequest.readyState==4)
	{ 	
		var list=ajaxRequest.responseText.split(",");
//		alert(list);
		list.sort(scheduleSorter);
		var x=document.getElementById('sselectSchedule');
		while(x.length>0){
			x.remove(x.length-1);
		}
		for(i=0;i<list.length;i++){
			var y=document.createElement('option');
			var txt=list[i];
			if(list[i].indexOf("schedule")==-1) break;
			else{
				txt=txt.substring(8);
				txt=txt.substring(0,2)+"_"+txt.substring(2,4)+"_"+txt.substring(4);
			}
			y.text=txt;
			x.add(y,null);
		}
		var cal=x.options[0].text;
		cal=cal.replace(/_/g,"");
		//alert(cal);
		loadCells(cal);
		
	}


}

function getHttpRequest(){
		try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
		httpRstatus="success";
		return ajaxRequest;
	} catch (e){
		// Internet Explorer Browsers
		httpRstatus="fail";
		try{
				alert("what!?");
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
			httpRstatus="success";
			return ajaxRequest;
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
				httpRstatus="success";
				return ajaxRequest;
			} catch (e){
				// Something went wrong
				httpRstatus="fail";
				alert("Your browser broke!");				
			}
		}
	}
	return ajaxRequest;
}

function handleErr(msg,url,l)
{
	txt="There was an error on this page.\n\n";
	txt+="Error: " + msg + "\n";
	txt+="URL: " + url + "\n";
	txt+="Line: " + l + "\n\n";
	txt+="Click OK to continue.\n\n";
	alert(txt);
	return true;
}

var celltracker;

function sendUpdate(cellName,info,tag,userName)
{
	var x=document.getElementById('sselectSchedule');
	var cal=x.options[x.selectedIndex].text;
	cal=cal.replace(/_/g,"");
	params = "cellname="+cellName+"&info="+info+"&caldate="+cal+"&userName="+userName;
	celltracker = "tag"+tag;
	postData(params,url,true,stateChanged);
}

var x
function stateChanged()
{ 	
	x = document.getElementById(celltracker);
	x.src="images/crossmark2.jpg";
	if (ajaxRequest.readyState==4)
	{ 
		if(ajaxRequest.responseText=="Success"){
			x = document.getElementById(celltracker);
			x.src="images/checkmark.jpg";
		}else{
			x = document.getElementById(celltracker);
			x.src="images/crossmark.jpg";
		}
	}
}

function accessedPage(userName)
{
	getHttpRequest();
	params = "accessName="+userName;
	postData(params,url,true,null);
}

function selectExistingCalendar(val){
	var x=document.getElementById('sselectSchedule');
	var cal=x.options[x.selectedIndex].text;
	cal=cal.replace(/_/g,"");
	params = "caldate=schedule"+cal;
	postData(params,url,true,stateChangedCal);
	loadCells(cal);
}

function stateChangedCal(){
	if (ajaxRequest.readyState==4)
	{ 
		if(ajaxRequest.responseText=="Success"){
		}else{
		}
	}
	
}

function createNewSchedule(){
//	var x = document.getElementById("createSchedule");
	var month = document.getElementById("startMonth").value;
	var day = document.getElementById("startDay").value;
	var year = document.getElementById("startYear").value;

	if(month.length<2 && month.length>0) month="0"+month;
	else{
		if(month.length==2){
		}else{
			alert("Input format (month) is incorrect (use mm/dd/yyyy)");
			return 0;
		}
	}
	if(day.length<2 && day.length>0) day="0"+day;
	else{
		if(day.length==2){
		}else{
			alert("Input format (day) is incorrect (use mm/dd/yyyy)");
			return 0;
		}
	}

	if(year.length<4){	
		alert("Input format(year) is incorrect (use mm/dd/yyyy)");
		return 0;
	}
	params = "month="+month+"&day="+day+"&year="+year;
	postData(params,url,true,stateNewCal);
}

function stateNewCal(){
	if (ajaxRequest.readyState==4)
	{ 
		if(ajaxRequest.responseText=="Success"){
		}else{
		}
	}
	listAvailSchedules();
}

function clearCells(){
	var x;
	for(i=1;i<21;i++){
		for(j=1;j<8;j++){
			x=document.getElementById(""+i+","+j);
			if(x!=null){
				x.value="";
				var y = document.getElementById("tag"+i+""+j);
				y.src="images/crossmark2.jpg";

			}
		}
	
	}
	//alert(x);
}

function loadCells(dbname){
	clearCells();
	params = "getCells="+dbname;
	postData(params,url,true,loadCellsState);
}

function loadCellsState()
{ 	
	if (ajaxRequest.readyState==4)
	{ 
		var cells=ajaxRequest.responseText.split(",");
		var ii=0;;
		for(i=1;i<21;i++){
			for(j=1;j<8;j++){
				x=document.getElementById(i+","+j);
				if(x!=null){
					x.value=cells[ii];
					ii++;
				}
			}
		}
	}
}

function mysubmit()
{
	alert("Schedule Succesfully Updated!");
}

//sorts an array of "scheduleMMDDYYYY" strings from newest to oldest	
function scheduleSorter(a,b){
//if a is higher than b then return>0
//if equal retunr=0
//if b higher than a in list, return<0
	a = a.substring(8);
	ay=a.substring(4);
	am=a.substring(0,2);
	ad=a.substring(2,4);
	b = b.substring(8);
	by=b.substring(4);
	bm=b.substring(0,2);
	bd=b.substring(2,4);
		 if(ay>by) return -1;
	else if(ay<by) return 1;
	else if(am>bm) return -1;
	else if(am<bm) return 1;
	else if(ad>bd) return -1;
	else if(ad<bd) return 1;
	else return 0;
}