
function setElementText(element,text)
 {
	if(navigator.appName=="Netscape"){
	
		element.textContent = text;
	}
	else
	{
		element.innerText = text;
	}
 }
 
 
 function getElementText(element)
 {
	if(navigator.appName=="Netscape"){
	
		return element.textContent;
	}
	else
	{
		return element.innerText;
	}
 }
 
 
var g_imageContainer   = null;
var g_imageContainers   = null;

var g_textContainer   = null;

var g_isActionWorking = false;

var g_originalImage = null;	
var g_originalText = null;
var g_originalClassName = null;
	
var g_actionXmlhttp = null;
var g_actionCallback = null;
var g_actionURL = null;

var g_indicatorImage = null;
var g_indicatorText = null;

var g_doneImage = null;
var g_doneText = null;

var g_auxData = null;



function setActionUI(imageContainer,textContainer,indicatorImage,doneImage,indicatorText,doneText)
{
	g_imageContainer   = imageContainer;
	g_textContainer = textContainer;

	g_originalImage = g_imageContainer.style.backgroundImage;	
	g_originalText = getElementText(g_textContainer);

	g_indicatorImage = "url("+indicatorImage+")";
	g_indicatorText = indicatorText;

	g_doneImage ="url("+doneImage+")";
	g_doneText = doneText;
}

/*Assumes original image is identical for all image containers*/
function setActionUIMultiContainer(imageContainers,indicatorImage,doneImage)
{
	
	g_imageContainers = imageContainers;
	g_originalImage = g_imageContainers.item(0).style.backgroundImage;	
	g_indicatorImage = "url("+indicatorImage+")";
	g_doneImage ="url("+doneImage+")";
	
}

/*
	possible values: "original","indicator" or "done"
*/
function setActionUIState(state)
{
	if(state=="original")
	{
		g_imageContainer.style.backgroundImage = g_originalImage;
		setElementText(g_textContainer,g_originalText);
		return;
	}
	
	if(state=="indicator")
	{
		g_imageContainer.style.backgroundImage = g_indicatorImage;
		setElementText(g_textContainer,g_indicatorText);
		return;
	}
	
	if(state=="done")
	{
		g_imageContainer.style.backgroundImage = g_doneImage;
		setElementText(g_textContainer,g_doneText);
		return;
	}
		
}


function setActionUIStateMultiContainer(state)
{
	img = 0;
	
	if(state=="original")
	{
		img = g_originalImage;
	}
	
	if(state=="indicator")
	{
		img = g_indicatorImage;
	}
	
	if(state=="done")
	{
		img = g_doneImage;
		
	}
	
	for(i=0; i < g_imageContainers.length; i++){
		g_imageContainers.item(i).style.backgroundImage = img ;
	}
		
}


function setAction(actionURL,callback,imageContainer,textContainer,indicatorImage,doneImage,indicatorText,doneText)
{
	if (g_isActionWorking == true)
	    return;
	    
	g_actionCallback = callback;
	g_actionURL = actionURL;
	setActionUI(imageContainer,textContainer,indicatorImage,doneImage,indicatorText,doneText);
}

function setActionMultiContainer(actionURL,callback,imageContainersList,indicatorImage,doneImage)
{
	if (g_isActionWorking == true)
	    return;
	    
	g_actionCallback = callback;
	g_actionURL = actionURL;
	setActionUIMultiContainer(imageContainersList,indicatorImage,doneImage);
}


function preformAction()
{
	g_isActionWorking = true;
	
	g_actionXmlhttp = getHTTPObject();
	if (g_actionXmlhttp)
	{
		g_actionXmlhttp.open("GET",g_actionURL+ new Date().getTime(), g_actionCallback); 
		g_actionXmlhttp.onreadystatechange = actionResponse;
		g_actionXmlhttp.send(null); 
	}

	setActionUIState("indicator");
}


function preformActionMultiContainer()
{
	g_isActionWorking = true;
	
	g_actionXmlhttp = getHTTPObject();
	if (g_actionXmlhttp)
	{
		g_actionXmlhttp.open("GET",g_actionURL+ new Date().getTime(), g_actionCallback); 
		g_actionXmlhttp.onreadystatechange = actionResponseMultiContainer;
		g_actionXmlhttp.send(null); 
	}

	setActionUIStateMultiContainer("indicator");
}


function actionResponse()
{
	if (g_actionXmlhttp.readyState != 4) 
		return;
	
	g_isActionWorking = false;
	
	var result = g_actionCallback(g_actionXmlhttp.responseText);
	
	if(result==1)
	{
		setActionUIState("done");
	}
	else
	{
		setActionUIState("original");
	}

}

function actionResponseMultiContainer()
{
	if (g_actionXmlhttp.readyState != 4) 
		return;
	
	g_isActionWorking = false;
	
	var result = g_actionCallback(g_actionXmlhttp.responseText);
	
	if(result==1)
	{
		setActionUIStateMultiContainer("done");
	}
	else
	{
		setActionUIStateMultiContainer("original");
	}

}

/* Start: Handle add to favorites */
function addToFavorites(id,name,type,objectUUID,indicatorImage,doneImage)
{
	var url =  "/addfavorite/"+type+"/"+ objectUUID +"/";
	g_auxData = name;
	element = document.getElementById(id);
	setAction(url,addToFavoritesCallback,element,element,indicatorImage,doneImage,"Adding ...","Added To Favorites!");	
	preformAction();
}

function addToFriends(id,name,type,objectUUID,indicatorImage,doneImage)
{
	var url =  "/addfavorite/"+type+"/"+ objectUUID +"/";
	g_auxData = name;
	element = document.getElementById(id);
	setAction(url,addToFavoritesCallback,element,element,indicatorImage,doneImage,"Adding ...","Added To Friends!");	
	preformAction();
}

/* used in folder only*/
function addToFavorites2(imageContainerId,imageNewClassName,textContainerId,name,type,objectUUID,indicatorImage,doneImage)
{
	var url =  "/addfavorite/"+type+"/"+ objectUUID +"/";
	g_auxData = name;
	imageContainer = document.getElementById(imageContainerId);
	g_originalClassName = imageContainer.className;
	imageContainer.className = imageNewClassName;
	textContainer = document.getElementById(textContainerId);
	setAction(url,addToFavoritesCallback2,imageContainer,textContainer,indicatorImage,doneImage,"Adding ...","Added To Favorites!");	
	preformAction();
}


/*For social DNA use */
function addToFavorites3(containerName,name,type,objectUUID,indicatorImage,doneImage)
{
	var url =  "/addfavorite/"+type+"/"+ objectUUID +"/";
	g_auxData = name;
	elements = document.getElementsByName(containerName);
	setActionMultiContainer(url,addToFavoritesCallback,elements,indicatorImage,doneImage,"","");	
	preformActionMultiContainer();
}


function addToFavoritesCallback(responseText)
{
	
	if (responseText == "")
	{
		return 1;
	}
	else 
	{
		if (responseText == 'fav_exists')
		  alert(g_auxData +" is already your friend");
		else if(responseText == 'error')
		  alert("Error, could not add "+g_auxData +" to your friends");
		else if (responseText == 'user_unknown')
		  showLoginWindow(preformAction,null);
		else 
		   alert(responseText);
		
		    
		return 0;
	}
}

function addToFavoritesCallback2(responseText)
{
	
	result = addToFavoritesCallback(responseText);
	if(result==0){
	
		imageContainer.className = g_originalClassName;
	}
	
	return result;
}


/* End: Handle add to favorites */

/* Start: Flag as inappropriate */
function flagAsInappropriate(id,objectUUID,indicatorImage,doneImage)
{
	var ok = confirm('Flagging is an indication of possible inappropriate content:\n\n- Pornography\n- Violence\n- Hate\n- Copyrighted\n\nFlag this content as inappropriate?'); 
	if (! ok)
	  return;
	  
	var url =  "/ViewDocumentAction.ns?action=flag&id=" + objectUUID + "&td=";

	element = document.getElementById(id);
	setAction(url,flagAsInappropriateCallback,element,element,indicatorImage,doneImage,"Flagging...","Flagged");	
	preformAction();
}

function flagAsInappropriateCallback(responseText)
{
	if(responseText == 'flagged_exists')
	{
		alert("you already flagged this document as inappropriate");
		return 0;
	}  
	
	return 1;
}
/* End: Flag as inappropriate */