/*--------------------------------------------------
definition: Change the Photo

parameter: id - id of the photo to show
--------------------------------------------------*/
function showPhoto (id)
{
	//create objects
	var textObj = document.getElementById('detail');
	var loadObj = document.getElementById('loading');
	var xmlHttp = ajaxFunction();
	
	if(loadObj.value == 'yes')
		return;
	
	//set the parameter
	var params = 'action=1&id='+id;
	
	//ajax function
	xmlHttp.onreadystatechange=function()
    {
		if(xmlHttp.readyState==1)
			loadObj.value = 'yes';
		if(xmlHttp.readyState==2)
			loadObj.value = 'yes';
		if(xmlHttp.readyState==3)
			loadObj.value = 'yes';
    	if(xmlHttp.readyState==4)
      	{
			textObj.innerHTML = xmlHttp.responseText;
			loadObj.value = 'no';
      	}
	}
	xmlHttp.open("POST","./ajax/community_process.php",true);
	xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHttp.setRequestHeader("Content-length", params.length);
	xmlHttp.setRequestHeader("Connection", "close");
  	xmlHttp.send(params);
	
	return;
}





/*--------------------------------------------------
definition: Highlight photo thumbnails that are
            rolled over

parameter: id - id of the photo to show
           on - is the photo rolled over
--------------------------------------------------*/
function highlight (id,on)
{
	var thumb = document.getElementById(id);
	
	if(on)
	{
		thumb.style.border ='4px solid #999999';
		thumb.style.margin = '0px';
	}
	else
	{
		thumb.style.border ='1px solid #999999';
		thumb.style.margin = '3px';
	}
	
	return;
}





/*--------------------------------------------------
definition: gets a specific page in the list of
            photos

parameter: page - the page to retrieve
           limit - the current number of items per
		           page
--------------------------------------------------*/
function getPage (page,limit)
{
	//get objects
	var listObj = document.getElementById('list');
	var xmlHttp = ajaxFunction();
	
	//update the page links
	updateLinks(page,limit);
	
	//set the parameter
	var params = 'action=2&page='+page+'&limit='+limit;
	
	//ajax function
	xmlHttp.onreadystatechange=function()
    {
    	if(xmlHttp.readyState==4)
      	{
			if(xmlHttp.responseText.search(/ERROR/) == -1)
				listObj.innerHTML = xmlHttp.responseText;
      	}
	}
	xmlHttp.open("POST","./ajax/community_process.php",true);
	xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHttp.setRequestHeader("Content-length", params.length);
	xmlHttp.setRequestHeader("Connection", "close");
  	xmlHttp.send(params);
	
	return;
}





/*--------------------------------------------------
definition: update the paging links

parameter: page - the page to retrieve
           limit - the current number of items per
		           page
--------------------------------------------------*/
function updateLinks(page,limit)
{
	var pageObj = document.getElementById('pages');
	var xmlHttp = ajaxFunction();
	
	//set the parameter
	var params = 'action=3&page='+page+'&limit='+limit;
	
	//ajax function
	xmlHttp.onreadystatechange=function()
    {
    	if(xmlHttp.readyState==4)
      	{
			pageObj.innerHTML = xmlHttp.responseText;
      	}
	}
	xmlHttp.open("POST","./ajax/community_process.php",true);
	xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHttp.setRequestHeader("Content-length", params.length);
	xmlHttp.setRequestHeader("Connection", "close");
  	xmlHttp.send(params);
	
	return;
}





/*--------------------------------------------------
definition: show the photo scroller links

parameter: id - id of the photo to show
           total - total photos in the list
		   dir - direction of the scroll
--------------------------------------------------*/
function scrollPhoto (id,total,dir)
{
	var loadObj = document.getElementById('loading');
	if (loadObj.value == 'yes') return;
	
	//show the photo
	showPhoto(id);
	
	//if the image was not found on the current page
	if(!findImage(id,dir))
	{
		var limit = document.getElementById('limit').value;
		var nextpage = parseInt(document.getElementById('nextPage').value);
		var prevpage = parseInt(document.getElementById('prevPage').value);
		var page = parseInt(document.getElementById('curPage').value);
		
		if(dir == 'next' && page<nextpage)
		{
			getPage(page+1,limit);
		}
		else if(dir == 'prev' && page>prevpage)
		{
			getPage(page-1,limit);
		}
		else
		{
			getPage(page,limit);
		}
	}
	
	//create objects
	var scrollContainer = document.getElementById('scroll');
	var limit = document.getElementById('limit').value;
	var xmlHttp = ajaxFunction();
	
	//set the parameter
	var params = 'action=4&id='+id+'&total='+total+'&limit='+limit;
	
	//ajax function
	xmlHttp.onreadystatechange=function()
    {
    	if(xmlHttp.readyState==4)
      	{
			scrollContainer.innerHTML = xmlHttp.responseText;
      	}
	}
	xmlHttp.open("POST","./ajax/community_process.php",true);
	xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHttp.setRequestHeader("Content-length", params.length);
	xmlHttp.setRequestHeader("Connection", "close");
  	xmlHttp.send(params);
	
	return;
}




function findImage (id,dir)
{
	var images = document.getElementsByTagName('img');
	
	//see if the current id is within the page
	for(var i=0; i<images.length; i++)
	{
		//found the image
		if(id == images[i].id)
			return true;
	}
	
	return false;
}





/*--------------------------------------------------
definition: create the ajax object

parameter: none
--------------------------------------------------*/
function ajaxFunction()
{
	var xmlHttp;
	try
  	{
  		// Firefox, Opera 8.0+, Safari
  		xmlHttp=new XMLHttpRequest();
  	}
	catch (e)
  	{
  		// Internet Explorer
  		try
    	{
    		xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    	}
  		catch (e)
    	{
    		try
      		{
      			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
      		}
    		catch (e)
      		{
      			alert("Your browser does not support AJAX!");
      			return false;
      		}
    	}
  	}
	
	return xmlHttp;
}
