var xmlHttp;
function createXmlHttpRequestObject(){
	var xmlHttp;
  	try {
    	xmlHttp = new XMLHttpRequest();
  	}
  	catch(e) {
    	var XmlHttpVersions = new Array('MSXML2.XMLHTTP.6.0',
                                    'MSXML2.XMLHTTP.5.0',
                                    'MSXML2.XMLHTTP.4.0',
                                    'MSXML2.XMLHTTP.3.0',
                                    'MSXML2.XMLHTTP',
                                    'Microsoft.XMLHTTP');
    	for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) {
      		try { 
        		xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
      		}	 
      		catch (e) {}
    	}
  	}
  	if (!xmlHttp)
    	alert("Error creating the XMLHttpRequest object.");
  	else 
    	return xmlHttp;
}

function getXMLNodeSerialisation(xmlNode) {
  var text = false;
  try {
    // Gecko-based browsers, Safari, Opera.
    var serializer = new XMLSerializer();
    text = serializer.serializeToString(xmlNode);
  }
  catch (e) {
    try {
      // Internet Explorer.
      text = xmlNode.xml;
    }
    catch (e) {}
  }
  return text;
}

/***********************************************
				Init Menu
***********************************************/
function init_menu(){
	var i, a, main;
	for(i=0; i<document.getElementsByTagName('div').length; i++) {
		a = document.getElementsByTagName('div')[i];
		if (a.className.toLowerCase()=='bopen'){
			tt=document.getElementById(a.getAttribute('id')).getElementsByTagName('div');
			tt[0].style.display='inline';
			tt2 = document.getElementById(a.getAttribute('id')+"link");
			//alert(tt2);
			if (tt2.className.toLowerCase()=='title2'){
				tt2.className ='title';
			}
		}

		if (a.className.toLowerCase()=='bclose'){
			tt=document.getElementById(a.getAttribute('id')).getElementsByTagName('div');
			tt[0].style.display='none';
			tt2 = document.getElementById(a.getAttribute('id')+"link");
			//alert(tt2);
			if (tt2.className.toLowerCase()=='title2'){
				tt2.className ='title';
			}
		}
	}

}

var ma,div;
/***********************************************
			Ajax Menu
***********************************************/
function showStep2 (layerName, token){
	var a,c;
	init_menu();
	for(i=0; i<document.getElementsByTagName('div').length; i++) {
		a = document.getElementsByTagName('div')[i];
		if (a.className.toLowerCase()=='bclose' || a.className.toLowerCase()=='bopen'){
			tt = document.getElementById(a.getAttribute('id')).getElementsByTagName('div');
			tt[0].style.display='none';
		}
	}
	a=document.getElementById(layerName).getElementsByTagName('div');
	if (a[0].style.display=='inline'){
		method='hide';
		c = 'bClose';
	}else{
		method='show';
		c = 'bOpen';
	}

	if (method=='show'){method='inline';}
	if (method=='hide'){method='none';}

	//document.getElementById(layerName).className = c;
	//a[0].style.display = method;

	sendRequest_menu2 (layerName, token);
}

function sendRequest_menu2 (layerName, token){
	var xmlHttp = createXmlHttpRequestObject();
	//url = 'test.xml';
	var url = 'aj_menu.php';
	url += '?div='+layerName+'&token='+token+'&ts='+new Date().getTime();
	xmlHttp.open('GET',url,true);
	xmlHttp.onreadystatechange=function(){
		if (xmlHttp.readyState==4 || xmlHttp.readyState=='complete'){
			if (xmlHttp.status == 200) {
				try  {
				// read the message from the server
					response = xmlHttp.responseText;
				// display the message 
					rightContentDiv = document.getElementById('rightContent');
					div = layerName;
					showMenu2();
					rightContentDiv.innerHTML = response;
					Nifty("div.contentb","transparent");	Nifty("div.contentp","transparent"); Nifty("div.contento","transparent"); Nifty("div.contenty","transparent"); Nifty("div.contentr","transparent"); Nifty("div#navigation","transparent");
				}
				catch(e) {
				// display error messages and stop updating the window
					alert("Error: " + e.toString());
				}					
			} else {
			  // display status message
				alert("There was a problem retrieving the XML data:\n" + xmlHttp.statusText);
			}
		}
	};
	xmlHttp.send(null);
}

function showMenu2(){
	var obj=document.getElementById(div);
	var str='';
	b=document.getElementById(div+"link");
	if (b.className.toLowerCase()=='title'){
		b.className ='title2';
	}
}
/***********************************************
			Ajax Menu (Contains submenu)
***********************************************/
function showStep(menu, layerName, token){
	var a,c;
	init_menu();
	for(i=0; i<document.getElementsByTagName('div').length; i++) {
		a = document.getElementsByTagName('div')[i];
		if (a.className.toLowerCase()=='bclose' || a.className.toLowerCase()=='bopen'){
			tt = document.getElementById(a.getAttribute('id')).getElementsByTagName('div');
			tt[0].style.display='none';
		}
	}
	a=document.getElementById(layerName).getElementsByTagName('div');
	if (a[0].style.display=='inline'){
		method='hide';
		c = 'bClose';
	}else{
		method='show';
		c = 'bOpen';
	}

	if (method=='show'){method='inline';}
	if (method=='hide'){method='none';}

	document.getElementById(layerName).className = c;
	a[0].style.display = method;

	sendRequest_menu(menu, layerName, token);
}

function sendRequest_menu(menu, layerName, token){
	var xmlHttp = createXmlHttpRequestObject();
	//url = 'test.xml';
	var url = 'aj_menu.php';
	url += '?menu='+menu+'&div='+layerName+'&token='+token+'&ts='+new Date().getTime();
	xmlHttp.open('GET',url,true);
	xmlHttp.onreadystatechange=function(){
		if (xmlHttp.readyState==4 || xmlHttp.readyState=='complete'){
			xml = xmlHttp.responseXML;
			if (!xml || !xml.documentElement)
				throw ("Invalid XML structure:\n"+xmlHttp.responseText);
			var rootNodeName = xml.documentElement.nodeName;
			if (rootNodeName == "parsererror")
				throw ("Invalid XML structure:\n"+xmlHttp.responseText);
			if (xmlHttp.status == 200) {
	/*				ma=getNodeContent2(xml,'link');*/
					linkArray = xml.getElementsByTagName("href");
					linkNameArray = xml.getElementsByTagName("linkname");
					div = layerName;
					setTimeout('showMenu()',500);
			} else {
			  // display status message
				alert("There was a problem retrieving the XML data:\n" + xmlHttp.statusText);
			}
		}
	};
	xmlHttp.send(null);
}

function showMenu(){
	var obj=document.getElementById(div);
	var str='';
	b=document.getElementById(div+"link");
	if (b.className.toLowerCase()=='title'){
		b.className ='title2';
	}	
	for (var i=0; i<linkArray.length; i++) {
		str += '<li>&raquo;&nbsp;<a href="'+linkArray.item(i).firstChild.data+'">'+linkNameArray.item(i).firstChild.data+'</a></li>';
	}

	for (var i=0;i<obj.childNodes.length;i++){
		a=obj.childNodes[i];
		if (a.className=='submenu'){
			a.innerHTML='<ul>'+str+'</ul>';
		}
	}

}

/***********************************************
				Small Calendar
***********************************************/
function showSmallCalendar(month){
	//createXHR();
	//var url='049/'+t+'.xml?ts='+new Date().getTime();
	var xmlHttp = createXmlHttpRequestObject();
	var ArgArray = month.split('&');
	var month = ArgArray[0];
	var token = ArgArray[1];
	url = 'aj_calendar.php?ym='+month+'&token='+token;
	url+='&ts='+new Date().getTime();
	xmlHttp.open('GET',url,true);
	xmlHttp.onreadystatechange=function(){ 
		if (xmlHttp.readyState==4 || xmlHttp.readyState=='complete'){
			if (xmlHttp.status == 200) {
				try  {
				// read the message from the server
					response = xmlHttp.responseText;
				// display the message 
					calendarDiv = document.getElementById('smallCalendar');
					calendarDiv.innerHTML = response;
				}
				catch(e) {
				// display error messages and stop updating the window
					alert("Error: " + e.toString());
				}
			} else {
			  // display status message
				alert("There was a problem retrieving the XML data:\n" + xmlHttp.statusText);
			}
		}	
	};
	xmlHttp.send(null);
}

/***********************************************
				Reload imagebox
***********************************************/
function reload_imagebox(){
	$.ImageBox.init(
				{
					loaderSRC: 'image/loading.gif',
					//closeHTML: '<img src="image/close.jpg" />'
					closeHTML: ''
				}
			);
	//alert("reload_imagebox??");
	clearLinkDot();
}

/***********************************************
				Reload lightbox
***********************************************/
function reload_lightbox(id){
	var idStr = '#' + id + ' a';
	$(idStr).lightbox();
	//clearLinkDot();
	//alert(navigator.appName);
}

/***********************************************
				Reload thickbox
***********************************************/
function reload_thickbox(){
	var signout = document.getElementById("signout");
	signout.innerHTML = '<a href="logout_form.php?height=165&width=250&modal=true" class="thickbox" title="Sign out">Sign out</a>';
	tb_init('a.thickbox, area.thickbox, input.thickbox');
}

/***********************************************
				Load Ajax Tab
***********************************************/
function initializetabcontentAjax(){
	for (var k = 0; k < arguments.length; k++){ //loop through passed UL ids
		//var div = arguments[k];
		var ArgArray = arguments[k].split('&');
		var div = ArgArray[0];
		var token = ArgArray[1];
		var ulobj = document.getElementById(div);
		var ulist = ulobj.getElementsByTagName("li"); //array containing the LI elements within UL
		for (var i = 0; i<ulist.length; i++){ //loop through each LI element
			var lilink = ulist[i].getElementsByTagName("a")[0];
			var rel = lilink.getAttribute("rel");
			if (rel){
				var url = "aj_tab.php?div="+div+"&rel="+rel+"&token="+token;
				lilink.onclick  = function() {	
					var rels = this.getAttribute("rel");
					var url = "aj_tab.php?div="+div+"&rel="+rels+"&token="+token;
					loadTab(div, rels, url, token);
				}				
				if (ulist[i].className=="selected") {
					loadTab(div, rel, url, token);
				}
			}
		} //end inner for loop
	} //end outer for loop
}

function loadTab(div, rel, url, token){
	var tabContent = div+"Content";
	var tab = document.getElementById(tabContent);
	tab.innerHTML = '<img src="image/loading.gif" width="16" height="16" align="absmiddle" /> Loading...';
	var ulist = document.getElementById(div).getElementsByTagName('li');
	for (var i = 0 ; i < ulist.length ; i++){
		var lilink = ulist[i].getElementsByTagName("a")[0];
		var rels = lilink.getAttribute("rel");
		if (rels == rel) {
			ulist[i].className = 'selected';
		}else ulist[i].className = '';
	}
	setTimeout('sendRequest_tabContent(\''+url+'\', \''+tabContent+'\', \''+token+'\',\''+div+'\')',500);
}

function sendRequest_tabContent(url, tabContent, token, div){
	var xmlHttp = createXmlHttpRequestObject();
	url+='&ts='+new Date().getTime();
	xmlHttp.open('GET', url, true);
	xmlHttp.onreadystatechange = function (){
		if (xmlHttp.readyState==4 || xmlHttp.readyState=='complete'){
			//alert (tabContent);
			if (xmlHttp.status == 200) {
				try  {
					var response = xmlHttp.responseText;
					document.getElementById(tabContent).innerHTML = response;
					//tb_init('a.thickbox, area.thickbox, input.thickbox');
					reload_thickbox();
				}
				catch(e) {
					alert("Error: " + e.toString());
				}
			} else {
				var msg='<strong>There was a problem retrieving the data:\n'+xmlHttp.status+':</strong><br/>'+xmlHttp.statusText;
				document.getElementById(tabContent).innerHTML=msg;
				//alert("There was a problem retrieving the data:\n" + xmlHttp.statusText);
			}
		}
	}
	xmlHttp.send(null);
}

/***********************************************
				Load Ajax Tab 2
***********************************************/
function initializetabcontentAjax2(){
	for (var k = 0; k < arguments.length; k++){ //loop through passed UL ids
		//var div = arguments[k];
		var ArgArray = arguments[k].split('&');
		var div = ArgArray[0];
		var token = ArgArray[1];
		var ulobj = document.getElementById(div);
		var ulist = ulobj.getElementsByTagName("li"); //array containing the LI elements within UL
		for (var i = 0; i<ulist.length; i++){ //loop through each LI element
			var lilink = ulist[i].getElementsByTagName("a")[0];
			var rel = lilink.getAttribute("rel");
			//alert(rel.length);
			//var liclass = lilink.getAttribute("class");
			if (rel.length > 0){
				var url = "aj_tab.php?div="+div+"&rel="+rel+"&token="+token;
				lilink.onclick  = function() {	
					var rels = this.getAttribute("rel");
					var url = "aj_tab.php?div="+div+"&rel="+rels+"&token="+token;
					loadTab2(div, rels, url, token);
				}				
				//if (ulist[i].className=="selected") {
				if (lilink.className=="selected") {
					loadTab2(div, rel, url, token);
				}
			}
		} //end inner for loop
	} //end outer for loop
		
}

function loadTab2(div, rel, url, token){
	var tabContent = div+"Content2";
	var tab = document.getElementById(tabContent);
	tab.innerHTML = '<img src="image/loading.gif" width="16" height="16" align="absmiddle" /> Loading...';
	var ulist = document.getElementById(div).getElementsByTagName('li');
	for (var i = 0 ; i < ulist.length ; i++){
		var lilink = ulist[i].getElementsByTagName("a")[0];
		var rels = lilink.getAttribute("rel");
		if (rels == rel) {
			//ulist[i].className = 'selected';
			lilink.className = 'selected'; 
		}else{
//			if (i == 0) ulist[i].className = 'first';
//			else if (i == ulist.length - 1) ulist[i].className = 'last';
//			else ulist[i].className = '';
			if (i == 0) lilink.className = 'first';
			else if (i == ulist.length - 1) lilink.className = 'last';
			else lilink.className = '';			
			
		}
	}
	setTimeout('sendRequest_tabContent(\''+url+'\', \''+tabContent+'\', \''+token+'\',\''+div+'\')',500);
	
}


/***********************************************
				Change Password
***********************************************/
// function that displays an error message
var showErrors = false;
function displayError($message){
  // ignore errors if showErrors is false
  if (showErrors) {
    // turn error displaying Off
    showErrors = false;
    // display error message
    alert("Error encountered: \n" + $message);
    // retry validation after 10 seconds
    //setTimeout("password_validate();", 10000);
  }
}

// the function handles the validation for any form field
function password_validate(){
  //alert("calling function password_validate()");
  var xmlHttp = createXmlHttpRequestObject();
  var serverAddress = "cp_validate.php";
	// when set to true, display detailed error messages
  	// initialize the validation requests cache 
  if (xmlHttp) {
    // if we received non-null parameters, we add them to cache in the
    // form of the query string to be sent to the server for validation
    var jsCheck = passwordCheck();
	if (jsCheck == true) {
		// encode values for safely adding them to an HTTP request query string
		var theForm = document.getElementById("changePasswordForm");
		var oldPassword = encodeURIComponent(theForm.oldPassword.value);
		var newPassword = encodeURIComponent(theForm.newPassword.value);
		var newPassword2 = encodeURIComponent(theForm.newPassword2.value);
		var cacheEntry = "oldPassword=" + oldPassword + "&newPassword=" + newPassword + "&newPassword2=" + newPassword2 + "&ts=" +new Date().getTime();
		// try to connect to the server
		try {
		  // continue only if the XMLHttpRequest object isn't busy
		  // and the cache is not empty
		  //if ((xmlHttp.readyState == 4 || xmlHttp.readyState == 0) && cache.length > 0) {
		  if ((xmlHttp.readyState == 4 || xmlHttp.readyState == 0)) {	  
			// get a new set of parameters from the cache
			//var cacheEntry = cache.shift();
			// make a server request to validate the extracted data
			xmlHttp.open("POST", serverAddress, true);
			xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			xmlHttp.onreadystatechange = function(){
			  // when readyState is 4, we read the server response
			  if (xmlHttp.readyState == 4) {
				// continue only if HTTP status is "OK"
				if (xmlHttp.status == 200) {
				  try {
					// read the response from the server
					  // retrieve the server's response 
					  var response = xmlHttp.responseText;
					  // server error?
					  if (response.indexOf("ERRNO") >= 0 
						  || response.indexOf("error:") >= 0
						  || response.length == 0)
						throw(response.length == 0 ? "Server error." : response);
					  // get response in XML format (assume the response is valid XML)
					  responseXml = xmlHttp.responseXML;
					  // get the document element
					  xmlDoc = responseXml.documentElement;
					  result = xmlDoc.getElementsByTagName("result")[0].firstChild.data;
					  //errMsg = xmlDoc.getElementsByTagName("errMsg")[0].firstChild.data;
					  // find the HTML element that displays the error
					  //message = document.getElementById(fieldID + "Failed");
					  if (result == 1){
						  message = document.getElementById("changePasswordError");
						  //message.innerHTML= '<div style="margin-top:50px;text-align:center; color:#6699FF; font-size:16px; font-weight:bold"><p>Login successfully!!</p><img src="image/loadingAnimation.gif" width="90%" /><p style="font-size:11px;color:#999999">redirecting...</p></div>';
						  //setTimeout("location.replace('main.php')", 1000); 
						  message.className = "success";
						  message.innerHTML = "Change password successfully!!!";
						  message = document.getElementById("changePasswordForm_content");
						  message.className = "success";
						  message.innerHTML = "You can proceed to other section.";						  
					  } else {
						  message = document.getElementById("changePasswordError");
						  // show the error or hide the error
						  message.className = (result == "0") ? "error" : "hidden";
						  message.innerHTML= "Cannot change password!! Pls check your password is correct or not!!!";
						  //setFocus();
						  // call validate() again, in case there are values left in the cache
						  //setTimeout("validate();", 500); 
					  } 
					  errorMsg = document.getElementById("errorMsg");
					  errorMsg.className = "hidden";
					  
					  msg = document.getElementById("msg");
					  msg.className = "hidden";
				  }
				  catch(e) {
					// display error message
					displayError(e.toString());
				  }
				} else {
				  // display error message
				  displayError(xmlHttp.statusText);
				}
			  }
			}
			xmlHttp.send(cacheEntry);
		  }
		}
		catch (e) {
		  // display an error when failing to connect to the server
		  displayError(e.toString());
		}
	} else {
		loginError = document.getElementById("changePasswordError");
		// show the error or hide the error
		loginError.className = "error";
		loginError.innerHTML = jsCheck;
		//setFocus();
	}
  }
}

function passwordCheck() {
	//alert("calling function passwordCheck()");
	var theForm = document.getElementById("changePasswordForm");
  	if (theForm.oldPassword.value =="" || theForm.newPassword.value == "" || theForm.newPassword2.value == "" ){
   		theForm.oldPassword.focus();
   		return "Incomplete form!";
  	}
	
 	if (theForm.oldPassword.value !=""){
		if ( new String(theForm.oldPassword.value).length < 6  || new String(theForm.oldPassword.value).length > 16){
  			theForm.oldPassword.focus();
  			return "The length of old password must be between 6 and 16 characters";
		}
  	}

  	if (theForm.newPassword.value !=""){
		if ( new String(theForm.newPassword.value).length < 6  || new String(theForm.newPassword.value).length > 16){
  			theForm.newPassword.focus();
  			return "The length of new password must be between 6 and 16 characters";
		}
  	}

  	if (theForm.newPassword2.value !=""){
		if ( new String(theForm.newPassword2.value).length < 6  || new String(theForm.newPassword2.value).length > 16){
  			theForm.newPassword2.focus();
  			return "The length of new password must be between 6 and 16 characters";
		}
  	}

	if ((theForm.oldPassword.value !="") && (theForm.newPassword.value !="")){
		if (theForm.oldPassword.value == theForm.newPassword.value) {
  			theForm.newPassword.focus();
  			return "Please use different password!!";
		}
  	}
  	
	if ((theForm.newPassword.value !="") && (theForm.newPassword2.value !="")){
		if (theForm.newPassword.value != theForm.newPassword2.value) {
  			theForm.newPassword2.focus();
  			return "Please re-type the password correctly!!";
		}
  	}
	
	return true;
}

/***********************************************
				Logout
***********************************************/
function logout(){
	//createXHR();
	//var url='049/'+t+'.xml?ts='+new Date().getTime();
	var xmlHttp = createXmlHttpRequestObject();
	url = 'logout.php';
	url+='?ts='+new Date().getTime();
	xmlHttp.open('GET',url,true);
	xmlHttp.onreadystatechange=function(){ 
		if (xmlHttp.readyState==4 || xmlHttp.readyState=='complete'){
			if (xmlHttp.status == 200) {
				try  {
				// read the message from the server
					result = xmlHttp.responseText;
				// display the message 
					if (result == 1){
						message = document.getElementById("logout");
						//message.innerHTML= '<div style="margin-top:-10px;text-align:center; color:#6699FF; font-size:16px; font-weight:bold"><p>Logout successfully!!</p><img src="image/loadingAnimation.gif" width="90%" /><p style="font-size:11px;color:#999999">redirecting...</p></div>';
						message.innerHTML= '<div style="margin-top:50px;text-align:center; color:#6699FF; font-size:16px; font-weight:bold"><p>Logout successfully!!</p><img src="image/loadingAnimation.gif" width="90%" style="margin: 5px auto;"/><p style="font-size:11px;color:#999999">redirecting...</p></div>'
						setTimeout("location.replace('index.php')", 1000); ;
					} else {
						message = document.getElementById("logoutError");
						  // show the error or hide the error
						message.className = (result == "0") ? "error" : "hidden";
						message.innerHTML= "Cannot logout!!";
					} 
				}
				catch(e) {
				// display error messages and stop updating the window
					alert("Error: " + e.toString());
				}
			} else {
			  // display status message
				alert("There was a problem retrieving the XML data:\n" + xmlHttp.statusText);
			}
		}	
	};
	xmlHttp.send(null);
}

function serialize(listID){
  // count the list's items
  var length = document.getElementById(listID).childNodes.length;
  var serialized = "";
  // loop through each element
  for (i = 0; i < length; i++) {
    // get current element
    var li = document.getElementById(listID).childNodes[i];
    // get current element's id without the text part
    var id = li.getAttribute("id");
    // append only the number to the ids array
    serialized += encodeURIComponent(id) + "_";
  }
  // return the array with the trailing '_' cut off
  return serialized.substring(0, serialized.length - 1);
}

function getFormIdValue(formName, id){
	var selects = document.getElementById(formName).getElementsByTagName('select');
	var list;
	//alert(selects.length);
	for (var i = 0; i < selects.length; i++){
		//alert(selects[i].getAttribute('id') + " " + id);
		if (selects[i].getAttribute('id') == id) {
			//alert("Match!!");
			list = selects[i];
			break;
		}
	}
	//alert(list);
	var ids = "";
	var j = 0;
	for(var i = 0; i < list.options.length; i++) {
		if (list.options[i].selected){
			j++;
			if (j > 1) ids += "_";
			ids += list.options[i].value;
		}			
	}	
	return ids;

}

function getFormIdValueFromCheckBox(formName, id){
	var thisForm = document.getElementById(formName);
	var j = 0;
	var ids = '';
	for (var i = 0; i < thisForm.length; i++){
		if ((thisForm.elements[i].name != undefined)&&(thisForm.elements[i].name.indexOf(id) > -1)){
			if (thisForm.elements[i].checked){
				j++;
				if (j > 1) ids += "_";
				ids += thisForm.elements[i].value;
			}
		}
	}
	return ids;
}


function trim(s){
  return s.replace(/(^\s+)|(\s+$)/g, "")
}

/***********************************************
		Form check Alphnumeric
***********************************************/
function alphanumeric(alphane){
	var numaric = alphane;
	for(var j=0; j<numaric.length; j++){
		  var alphaa = numaric.charAt(j);
		  var hh = alphaa.charCodeAt(0);
		  if((hh > 47 && hh<58) || (hh > 64 && hh<91) || (hh > 96 && hh<123)){
		  }else	{
			 return false;
		  }
	}
	return true;
}

/***********************************************
		Get Student List By class_id
***********************************************/
function sendRequest_getStudentListByClass_id (formName, selectedIndex, token){
	var xmlHttp = createXmlHttpRequestObject();
	var class_id = document.getElementById(formName+'_class_id').value;
	var year_id = document.getElementById(formName).year_id.value;
	var url = 'aj_student.php';
	url += '?formName='+formName+'&class_id='+class_id+'&year_id='+year_id+'&token='+token+'&ts='+new Date().getTime();
	xmlHttp.open('GET',url,true);
	xmlHttp.onreadystatechange=function(){
		if (xmlHttp.readyState==4 || xmlHttp.readyState=='complete'){
			xml = xmlHttp.responseXML;
			if (!xml || !xml.documentElement)
				throw ("Invalid XML structure:\n"+xmlHttp.responseText);
			var rootNodeName = xml.documentElement.nodeName;
			if (rootNodeName == "parsererror")
				throw ("Invalid XML structure:\n"+xmlHttp.responseText);
			if (xmlHttp.status == 200) {
				  try {
					  responseXml = xmlHttp.responseXML;
					  xmlDoc = responseXml.documentElement;
					  student_name_Array = xmlDoc.getElementsByTagName("student_name");
					  student_id_Array = xmlDoc.getElementsByTagName("student_id");
				  
					  var len = document.getElementById(formName+'_student_id').options.length;
					  if (len >0) {
						  for (var i = document.getElementById(formName+'_student_id').options.length-1; i >= 0; i-- ) {
							document.getElementById(formName+'_student_id').options[i] = null;
						  }	
					  }
					  //alert("Array LENGTH: " + student_name_Array.length);
					  for (i=0; i < student_id_Array.length; i++ ) {
    					document.getElementById(formName+'_student_id').options[i] = new Option(" " + student_name_Array.item(i).firstChild.data + " ", student_id_Array.item(i).firstChild.data);
					  }
				  }
				  catch(e) {
					// display error message
					displayError(e.toString());
				  }
			} else {
			  // display status message
				alert("There was a problem retrieving the XML data:\n" + xmlHttp.statusText);
			}
		}
	};
	xmlHttp.send(null);
}
