function jah(url, target) {
    
    // native XMLHttpRequest object
    if(document.getElementById(target)){
    
       document.getElementById(target).innerHTML = '<span class="loading"> Loading...  <br /> <img src="-images/blank.gif" width=180 height=180 border="0"> </span> ' ;
    }
    
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = function() {jahDone(target);};
        //alert(url);
        req.open("GET", url, true);
        req.send(null);
    // IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = function() {jahDone(target);};
            req.open("GET", url, true);
            req.send();
        }
    }
}    

function jahDone(target) 
{
		 // only if req is "loaded"
		 if(req.readyState == 4){
		 
        // only if "OK"
        if (req.status == 200) {
            results = req.responseText;
            //alert(results);
            document.getElementById(target).innerHTML = results;       
        } else {
            document.getElementById(target).innerHTML="jah error:\n" + req.statusText;
        }
    }
}

		function viewLargeImage(imageId)
		{
				  //alert("imageId: " + imageId);
				  if(imageId && imageId != ""){
					 
					 var popupImageViewer = document.getElementById("popupImageViewer");
					 //alert("popupImageViewer: " + popupImageViewer);
					 if(popupImageViewer){
					 
						 var imgPlaceHolder = document.getElementById("placeforimg");
						 //alert("imgPlaceHolder: " + screen.width);
						 if(imgPlaceHolder){
						 
						    imgPlaceHolder.style.width = '600px';
						    //alert(imgPlaceHolder.style.width);
						    imgPlaceHolder.style.height = '600px';
						    //alert(imgPlaceHolder.style.height);
						    imgPlaceHolder.innerHTML = "<span class=\"loadingcaption\">LOADING...</span>";
						    //alert(imgPlaceHolder.innerHTML);
						 }
						 popupImageViewer.style.top = ((screen.height / 2) - (popupImageViewer.offsetHeight / 2));
						 popupImageViewer.style.left = ((screen.width / 2) - (popupImageViewer.offsetWidth / 2));
						 //alert("top: " + popupImageViewer.style.top + ", left: " + popupImageViewer.style.left);
						 //alert("height: " + popupImageViewer.offsetHeight + ", width: " + popupImageViewer.offsetWidth);
						 popupImageViewer.style.visibility = 'visible';
						 
						 processHTTPRequest('getlargeimage?id=' + imageId, "displayImage")
					 }
				  }	
		}
		
		function closeImageViewer()
		{
				  try{
				  
					  var imgPlaceHolder = document.getElementById("placeforimg");
					  var captionPlaceHolder = document.getElementById("placeforimgcaption");
						  
					  if(imgPlaceHolder){
					  
						  imgPlaceHolder.innerHTML = "";
					  }
					  //alert(imgPlaceHolder.innerHTML)
					  if(captionPlaceHolder){
						  
						 captionPlaceHolder.innerHTML = "";
					  }
				  }
				  catch(e){
				  }
				  var popupImageViewer = document.getElementById("popupImageViewer");
				  if(popupImageViewer){
				  
				     popupImageViewer.style.visibility = 'hidden';
				     //alert('popupImageViewer.style.visibility=' + popupImageViewer.style.visibility);
				  }
		}
		
		function displayImage(response)
		{
				  try{
				  
					  var responses = response.split('<br/>');
					  //alert(responses);
					  var imgPlaceHolder = document.getElementById("placeforimg");
					  var captionPlaceHolder = document.getElementById("placeforimgcaption");
					  imgPlaceHolder.style.width = 'auto';
					  imgPlaceHolder.style.height = 'auto';
					  
					  if(imgPlaceHolder){
					  
						  imgPlaceHolder.innerHTML = responses[0];
					  }
					  if(captionPlaceHolder){
						  
						 captionPlaceHolder.innerHTML = responses[1];
					  }
					  var popupImageViewer = document.getElementById("popupImageViewer");
					  popupImageViewer.style.top = ((screen.height / 2) - (popupImageViewer.offsetHeight / 2));
					  if(parseInt(popupImageViewer.style.top, 10) < 0){
					  
					     popupImageViewer.style.top = '10px';
					  }
					  popupImageViewer.style.left = ((screen.width / 2) - (popupImageViewer.offsetWidth / 2));
					  //alert("top: " + popupImageViewer.style.top + ", left: " + popupImageViewer.left);
					  //alert("height: " + (screen.height / 2) + ", width: " + (popupImageViewer.offsetHeight / 2));
				  }
				  catch(e){
				  } 	  
		}
		
		function showDiv(id, className, content, event)
		{
				  var divElement = createDivElement(id, className);
				  //alert("divElement: " + divElement);
				  //alert("event: " + event + ", y1:" + event.y + ", y2:" + event.offsetY + ", y3:" + event.screenY + ", y3:" + event.pageY);
				  if(divElement != null){
				  
				     var point = getMousePosition(event);
				     //alert("point: " + point + ", x:" + point.x + ", y:" + point.y);
				     divElement.style.left = event.x;
				     divElement.style.top = event.y + 150;
				     divElement.innerHTML = content;
				  }
		}
		
		function hideDiv(id)
		{
				  disposeDivElement(id);
		}
		
		function disposeDivElement(id)
		{
				  try{
				  
					  var divElement = document.getElementById(id);
					  if(divElement && divElement.parentNode){
					  
						 divElement.parentNode.removeChild(divElement);
					  }
				  }
				  catch(e){
				  
						alert("ERROR[disposeDivElement]: " + e.message);
				  }
		}
		
		function createDivElement(id, className)
		{
				  try{
				  
					  //alert("createDivElement(" + id + ")");
					  var divElement = document.createElement("div");
					  divElement.id = id;
					  divElement.className = className;
					  document.body.appendChild(divElement);
					  divElement.style.position = 'absolute';
					  divElement.style.visibility = 'visible';
					  return divElement;
				  }
				  catch(e){
				  
						//alert("ERROR[createDivElement]: " + e.message);
				  }
				  return null;
		}
		
		function getMousePosition(event)
		{
				  // Temporary variables to hold mouse x-y pos.s
				  var tempX = 0;
				  var tempY = 0;
				  try{
				  
					  // Detect if the browser is IE or not.
					  // If it is not IE, we assume that the browser is NS.
				 	  var IE = document.all?true:false;

			          // If NS -- that is, !IE -- then set up for mouse capture
				      if(!IE){
				      
				         document.captureEvents(Event.MOUSEMOVE);
				      }

				      // Main function to retrieve mouse x-y pos.s

				      if(IE){ // grab the x-y pos.s if browser is IE
				  
					     tempX = event.clientX + document.body.scrollLeft;
					     tempY = event.clientY + document.body.scrollTop;
					  } 
					  else{  // grab the x-y pos.s if browser is NS
				  
						 tempX = e.pageX;
						 tempY = e.pageY;
					  }
				  
				      // catch possible negative values in NS4
				      if(tempX < 0){
				         
				         tempX = 0;
				      }
				      if(tempY < 0){
				      
				         tempY = 0;
				      }
				  }
				  catch(e){
				  
						//alert("ERROR[getMousePosition]: " + e.message);
				  }
				  return (new point(tempX, tempY));
		}
		
		function point(v1, v2)
		{
				  this.x = v1;
				  this.y = v2;
		}
