function Cranky_isImageFrozen(imageId)
{
	return document.Cranky_frozenImages && document.Cranky_frozenImages[imageId];
}

function Cranky_freezeImage(imageId)
{
	if (!document.Cranky_frozenImages)
	{
		document.Cranky_frozenImages = new Array();
	}
	document.Cranky_frozenImages[imageId] = true;
}

function Cranky_isRatingStopped(imageId)
{
	return document.Cranky_stoppedRatings && document.Cranky_stoppedRatings[imageId];
}

function Cranky_stopRating(imageId)
{
	if (!document.Cranky_stoppedRatings)
	{
		document.Cranky_stoppedRatings = new Array();
	}
	document.Cranky_stoppedRatings[imageId] = true;
}

function Cranky_getDefaultImage(imageId)
{
	return document.Cranky_defaultImages ? document.Cranky_defaultImages[imageId] : null;
}

function Cranky_setDefaultImage(imageId, imageURL)
{
	if (!document.Cranky_defaultImages)
	{
		document.Cranky_defaultImages = new Array();
	}
	document.Cranky_defaultImages[imageId] = imageURL;
}

function Cranky_setImage(imageId, imageURL, imageText, freeze)
{
	if (Cranky_isImageFrozen(imageId))
	{
		return;
	}

	if (freeze)
	{
		Cranky_freezeImage(imageId);
	}

	var element = document.getElementById(imageId);	
	if (!Cranky_getDefaultImage(imageId))
	{
		Cranky_setDefaultImage(imageId, element.src);
	}

	element.src = imageURL;
	if (imageText)
	{
		element.alt = imageText;
	}

	if (freeze)
	{
		element.useMap = "";
	}

	return true;
}

function Cranky_restoreImage(imageId)
{
	if (Cranky_isImageFrozen(imageId))
	{
		return;
	}
	
	var imageURL = Cranky_getDefaultImage(imageId);
	if (imageURL)
	{
		var element = document.getElementById(imageId);		
		element.src = imageURL;
	}
}

function Cranky_selectRating(controlId, rating, imageId, imageURL, imageText)
{
	if (Cranky_isImageFrozen(imageId))
	{
		return;
	}

	Cranky_setDefaultImage(imageId, imageURL);
	Cranky_setImage(imageId, imageURL, imageText);

	var element = document.getElementById(controlId);
	element.value = rating;
}

function Cranky_updateRating(requestURL, pageId, queryId, rating, imageId, imageURL, imageText, showId, hideId)
{
	if (Cranky_isRatingStopped(imageId))
	{
		return;
	}

	Cranky_stopRating(imageId);

	requestURL += "?pageId=" + pageId + "&queryId=" + queryId + "&rating=" + rating;
	sendXmlHttpRequest(requestURL);

	Cranky_setImage(imageId, imageURL, imageText, true);

	var element;
	if (showId)
	{
		element = document.getElementById(showId);
		showElement(element);
	}		

	if (hideId)
	{
		element = document.getElementById(hideId);
		hideElement(element);
	}
}
