// Make a POST to the server 
// and pass on any data from browser
// via the XMLHTTPRequest
var lastPing = 0;
var url = "/";
var gallery_image = new Array();
var gallery_meta = new Array();
var gallery_control = new Array();

function talkToServer(request, callBack)
{
	var req = newXMLHttpRequest();
	//register the callback handler function
  	var callbackHandler = getReadyStateHandler(req, callBack);
	req.onreadystatechange = callbackHandler;

	req.open("GET", "" + url + "gallery_xml.php?" + request, true);
  	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	req.send(null);	
} // talkToServer

function loadArtist(artist) {

	
	talkToServer("artist=" + escape( encodeURI(artist)), loadArtistGallery);

} // loadArtist

// This is the callback functions that gets called
// for the response from the server with the XML data
function loadArtistGallery(testXML) {

	var res = testXML.getElementsByTagName("gallery")[0];
	var artist = res.getAttribute("artist");	
	var num_images = res.getAttribute("images");
	var timestamp = res.getAttribute("timestamp");

	if (timestamp > lastPing) {
		lastPing = timestamp;

		for(var i = 0; i < num_images; i++)	{

			var image = testXML.getElementsByTagName("image")[i];
			var filename = image.getAttribute("filename");

			gallery_image[i + 1] = testXML.getElementsByTagName("gallery_image")[i].firstChild.nodeValue;
			gallery_meta[i + 1] = testXML.getElementsByTagName("gallery_meta")[i].firstChild.nodeValue;
			gallery_control[i + 1] = testXML.getElementsByTagName("gallery_control")[i].firstChild.nodeValue;
			preloadImage(url + 'gallery/' + artist + '/' + filename);
		}
	} 
}

function loadImage(view) {
   
	   if(typeof(gallery_image[view]) == "undefined")
	   		return false;

		var gi = document.getElementById("gallery_image");
		var gc = document.getElementById("gallery_control");
		var gm = document.getElementById("gallery_meta");
		gi.innerHTML = gallery_image[view];
		gc.innerHTML = gallery_control[view]; 
		gm.innerHTML = gallery_meta[view]; 
}

function preloadImage(src) {
	preloadImg = new Image();
	preloadImg.src = src;
}


//the following two functions are helper infrastructure to 
//craete a XMLHTTPRequest and register a listner callback function

function newXMLHttpRequest() {
	var xmlreq = false;
	if (window.XMLHttpRequest) {
		xmlreq = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
    		// Try ActiveX
		try { 
			xmlreq = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e1) { 
			// first method failed 
			try {
				xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e2) {
				 // both methods failed 
			} 
		}
 	}
   	return xmlreq;
} 

function getReadyStateHandler(req, responseXmlHandler) {
	return function () {
	if (req.readyState == 4) {
		if (req.status == 200) {
        		responseXmlHandler(req.responseXML);
		} else {
			//var hellomsg = document.getElementById("hellomsg");
			//hellomsg.innerHTML = "ERROR: "+ req.status;
			//alert("ERROR: " + req.status);
      		}
    	}
 	}
}
