
function ajaxRead(fileNum){

      resetValues();

      vMenuNum = fileNum;
      vProcessName = vProcessNum[fileNum];

      try {

      if(window.XMLHttpRequest){
          xmlObj = new XMLHttpRequest();
      } else if(window.ActiveXObject){
          xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
      } else {
          return;
      }

      xmlObj.onreadystatechange = function(){
        if(xmlObj.readyState == 4){
	        // image based screens = home
	       	if ((vProcessName == 'Image') || (vProcessName == 'Image+')) {
	          	processImg(xmlObj.responseXML);
	       	} else if ((vProcessName == 'ImageList') || (vProcessName == 'ImageList+')) {
	          	processImg(xmlObj.responseXML);
        	// text based screens = statement, bio
		} else if ((vProcessName == 'Text') || (vProcessName == 'Text+')) {
	          	processText(xmlObj.responseXML);
	        // list based screens = shows
	       	} else if ((vProcessName == 'List') || (vProcessName == 'List+')) {
	          	processList(xmlObj.responseXML);
	        // rollover gallery - in gallery.js
	       	} else if ((vProcessName == 'Gallery1')) {
	          	processGallery(xmlObj.responseXML);
	        // popup gallery - in gallery.js
	       	} else if ((vProcessName == 'Gallery2')) {
	          	processPopup(xmlObj.responseXML);
	        // list gallery - in gallery.js
	       	} else if ((vProcessName == 'Gallery3')) {
	          	processGalleryList(xmlObj.responseXML);
	        // grid
	       	} else if ((vProcessName == 'Grid')) {
	          	processGrid(xmlObj.responseXML);
		// text/list combo
		} else if ((vProcessName == 'TextList') || (vProcessName == 'TextList+')) {
	          	processTextList(xmlObj.responseXML);
		// includes contact or url
		} else if ((vProcessName == 'Contact')) {
	          	processContact(xmlObj.responseXML);
	          	
		// for specialist services
		// layouts - used in TBA Service section
		} else if ((vProcessName == 'Layouts')) {
	          	processLayouts(xmlObj.responseXML);
	          	
	          
       		// nothing to see - put a blank page
	       	} else {
	       		errorOutput="Page does not exist";
	       		processError(errorOutput);
	       	}
        }
      }
    
      xmlObj.open ('GET', vFileName[vMenuNum], true);
     
      xmlObj.send ('');
     
      }
      catch (errorOutput) {
	  processError(errorOutput);
      }

}

function resetValues() {
	a = null;
	b = null;
	c = null;
	d = null;
	e = null;
	f = null;

}

function processError(errorOutput){
      insertData = "";
      insertData += "<div id='container'>";
      insertData += "<h2>" + vScreenName[vMenuNum] + "</h2>";
      insertData += errorMsg;
      //insertData += "<br>Error = " + errorOutput;
      insertData += "</div>";
      document.getElementById ('dataArea').innerHTML = insertData;
      return;
}  
    
function processText(obj){
      	try {

      	a = obj.getElementsByTagName('pagetitle');
      	b = obj.getElementsByTagName('pagedata');
      	if (vProcessName == 'Text+') {
		d = obj.getElementsByTagName('urltext');
	      	e = obj.getElementsByTagName('url');
      	}

      	// catch errors in IE
      	if (a.length == 0) {
      		processError(errorOutput);
        	return;
      		}
      	insertData = "";
      	vNum = 0
      	vNum = b.length/a.length;

      	insertData += "<div id='textcontainer'>";
      	insertData += "<h2>" + vScreenName[vMenuNum] + "</h2>";
      
      	// deal with the single items first
      	for (i=0; i<a.length; i++){
      	
      	vLink = "";

		// deal with the additional data
		if (vProcessName == 'Text+') {
			processPlus(i);
		}

	      	// if no title listed ...
		if (a[i].firstChild.data != 'n/a') {
		 	// set up the headers
			insertData += "<h3>" + a[i].firstChild.data + "</h3>";
		}

	      	// now work on the multiples
	      	for (j=0; j<b.length; j++){
	   	
			// deal with each row properly
			if (( j < ((i * vNum) + vNum)) && ( j >= ((i * vNum)))) {
				
			      // if no text listed ...
			      if (b[j].firstChild.data != 'n/a') {
			      	insertData += "<p>" + b[j].firstChild.data + " " + vLink +"</p>";
			      }
	
			}
	
		}
      	}

      	insertData += "</div>";
      	document.getElementById ('dataArea').innerHTML = insertData;

      	}
      	catch (errorOutput) {
	  	processError(errorOutput);
      	}
}

function processImg(obj){
	try {

	a = obj.getElementsByTagName('pagetitle');
	b = obj.getElementsByTagName('imgfile');
	c = obj.getElementsByTagName('imgtext');
	if ((vProcessName == 'Image+') || (vProcessName == 'ImageList+')) {
		d = obj.getElementsByTagName('urltext');
		e = obj.getElementsByTagName('url');
		f = obj.getElementsByTagName('ajaxnum'); // think this is not required. Use URL
	}

	// catch errors in IE
	if (a.length == 0) {
	      	processError(errorOutput);
	        return;
	}

	insertData = "";
	if ((vProcessName == 'Image') || (vProcessName == 'Image+')) {
		insertData += "<div id='imgcontainer'>";
	} else {
		insertData += "<div id='imglistcontainer'>";
	}

	for (i=0; i<a.length; i++){

	vLink = "";
      	
		// deal with the additional data
	      	if ((vProcessName == 'Image+') || (vProcessName == 'ImageList+')) {
		 	processPlus(i);
	      	}
      	
	      	// if no title listed ...
	      	if (a[i].firstChild.data != 'n/a') {
	 		// set up the headers
			insertData += "<h3>" + a[i].firstChild.data + "</h3>";
	      	}
	      	// if no image listed ...
	      	if (b[i].firstChild.data != 'n/a') {
   			insertData += "<img name=picture border='0' src='" + graphicDir + b[i].firstChild.data + "'>";
	      	} 
	      	// if no text listed ...
	      	if (c[i].firstChild.data != 'n/a') {
	      		insertData += "<p>" + c[i].firstChild.data + " " + vLink + "</p>";
	      	} 
	      
      	}


      	insertData += "</div>";
      	document.getElementById ('dataArea').innerHTML = insertData;

      	}
      	catch (errorOutput) {
		processError(errorOutput);
      	}
}

function processList(obj){
	try {

	a=obj.getElementsByTagName('pagetitle');
	b=obj.getElementsByTagName('startdate');
	c=obj.getElementsByTagName('enddate');
	g=obj.getElementsByTagName('pagedata');
	if (vProcessName == 'List+') {
		d = obj.getElementsByTagName('urltext');
		e = obj.getElementsByTagName('url');
	}
	// catch errors in IE
	if (a.length == 0) {
		processError(errorOutput);
		return;
	}
	insertData = "";

	insertData += "<div id='textcontainer'>";
	insertData += "<h2>" + vScreenName[vMenuNum] + "</h2><div id='listcontainer'><ul>";

	for (i=0; i<b.length; i++){

	vPeriod = "";
	vLink = "";
	vDescription = "";
	vType = "";

		// deal with the additional data
		if (vProcessName == 'List+') {
			processPlus(i);
			//if (vLink != "") {
			//	vLink = " - " + vLink;
			//}
		}

		// type conversion
	      	if (a[i].firstChild.data != 'n/a') {
	      		vType = a[i].firstChild.data;
	      	}
      	
		// description conversion - used in website conversion
		if (g[i].firstChild.data != 'n/a' ) {
			vDescription = " - " + g[i].firstChild.data;
		} 

		if (c[i].firstChild.data != 'n/a') {
			vStartDate = new Date(b[i].firstChild.data);
			vEndDate = new Date(c[i].firstChild.data);
	
			vNow = new Date();
			vDiffDay = vEndDate.getTime() - vNow.getTime();
			vDays = Math.floor(vDiffDay / (1000 * 60 * 60 * 24)) + 1;
		
			if (b[i].firstChild.data == c[i].firstChild.data ) {
				vPeriod =  c[i].firstChild.data + " - ";
			} else {
				vPeriod =  b[i].firstChild.data + " - " +  c[i].firstChild.data + " - ";
			}
		}
	
		// to deal with link type heading
	 	if ( i > 0) {
			if ( a[i].firstChild.data == a[i-1].firstChild.data ) {
	 		} else {
	      			insertData += "</ul><h2>" + vType + "</h2><ul>";
			}
		} else {
			      	insertData += "<h2>" + vType + "</h2><ul>";
		}

		if(vDays < 1) {
		  	insertData += "<li>" + vPeriod + vLink + vDescription + "</li>" ;
		} else {
		  	insertData += "<li><b>" + vPeriod + vLink + vDescription + "</b></li>" ;
		}
	}

      insertData += "</ul></div></div>";
      document.getElementById ('dataArea').innerHTML = insertData;

      }
      catch (errorOutput) {
	  processError(errorOutput);
      }
}

function processTextList(obj){
	try {

      	a = obj.getElementsByTagName('pagetitle');
      	b = obj.getElementsByTagName('pagedata');
      	c = obj.getElementsByTagName('listdata');
	if (vProcessName == 'TextList+') {
		d = obj.getElementsByTagName('urltext');
		e = obj.getElementsByTagName('url');
	}
      	// catch errors in IE
      	if (a.length == 0) {
      		processError(errorOutput);
        	return;
      	}
      	insertData = "";
      
      	insertData += "<div id='textcontainer'>";
      	insertData += "<h2>" + vScreenName[vMenuNum] + "</h2>";
      
      	// deal with the single items first
      	for (i=0; i<a.length; i++){

	vLink = "";

		// deal with the additional data
		if (vProcessName == 'TextList+') {
			processPlus(i);
		}

	      	// if no title listed ...
	      	if (a[i].firstChild.data != 'n/a') {
	 		// set up the headers
			insertData += "<h3>" + a[i].firstChild.data + "</h3>";
	      	}

	      	// if no text listed ...
	      	if (b[i].firstChild.data != 'n/a') {
	      		insertData += "<p>" + b[i].firstChild.data + "</p>";
	      	}

	      	// for lists ...
	      	//insertData += "<div id='textlistcontainer'>";
	      	if (c[i].firstChild.data != 'n/a') {
	      	insertData += "<li>" + c[i].firstChild.data + " " +  vLink + "</li>";
	      }      		      
      	}
      	insertData += "</div>";
      	document.getElementById ('dataArea').innerHTML = insertData;

      	}
     	catch (errorOutput) {
	  	processError(errorOutput);
      	}
}

function processGrid(obj){
      try {

      a=obj.getElementsByTagName('gridtitle');
      b=obj.getElementsByTagName('gridname');
      c=obj.getElementsByTagName('gridcol');
      // catch errors in IE
      if (a.length == 0) {
      	processError(errorOutput);
        return;
      	}
      insertData = "";
      vNum = 0
      vNum = c.length/a.length; 
      
      insertData += "<div id='textcontainer'>";
      insertData += "<h2>" + vScreenName[vMenuNum] + "</h2>";

      insertData += "<div id='gridcontainer'>";
      
      // deal with the single items first
      for (i=0; i<a.length; i++){
      	
 	// set up the headers
 	if ( i == 0) {
		insertData += "<h3>" + a[i].firstChild.data + "</h3>";
	      	insertData += "<table>";
  		insertData += "<tr><td><b>" + b[i].firstChild.data + "</b></td> ";
	// deal with the other rows	
	} else {
		insertData += "<tr><td>" + b[i].firstChild.data + " </td> ";
	}

	      	// now work on the multiples
	      	for (	j=0; j<c.length; j++){
     	
			// deal with each row properly
			if (( j < ((i * vNum) + vNum)) && ( j >= ((i * vNum))))
			{
				// deal with the first and other data
				if (( j < ((vNum))) && ( j >= ((0))))
				{
			  	insertData += "<td><b>" + c[j].firstChild.data +  "</b></td> ";
				} else {
			  	insertData += "<td>" + c[j].firstChild.data +  " </td> ";
			  	}
			}
		}

      insertData += "</tr><tr><td>";
	      
      }

      insertData += "</td></tr></table>";
      insertData += "</div>";
      insertData += "</div>";

      document.getElementById ('dataArea').innerHTML = insertData;

      }
      catch (errorOutput) {
	  processError(errorOutput);
      }
}

function processPlus(x){
      try {

	// catch errors in IE
      	if (d.length == 0) {
      		alert("Error");
	      	processError(errorOutput);
	        return;
      	}

	vUrl = '';
	vEmail = '';
	vMenu = '';

      	if (d[x].firstChild.data != 'n/a') {
      		
 		if (e[x].firstChild.data != 'n/a') {
 			// anything below 99 is ajax process
			if ((e[x].firstChild.data >= 0) && (e[x].firstChild.data < 99)) {
				vMenu = "<a href='' onclick='ajaxRead(" + e[x].firstChild.data + "); return false'>" + d[x].firstChild.data + "</a>";

			// 99 represents mail not an ajax process
			} else if (e[x].firstChild.data == 99) {
				vEmail = "<a href='mailto:"+vPart3+vPart1+vPart2+"?subject="+vPart4+"'>"+ d[x].firstChild.data +"</a>";
			// otherwise its a link
			} else {  		      
				vUrl = "<a href='" + e[x].firstChild.data + "' target='_new'>"+ d[x].firstChild.data + "</a> ";
			}
		}      		      

	// send this back
	vLink = vUrl + vEmail + vMenu;
      	}

      }
      catch (errorOutput) {
		processError(errorOutput);
      }
}


