// ======================================================================================
// gloabl parameters
// ======================================================================================
var m_bShowHand = false;

// ======================================================================================
// Set variable to show the cursor as a hand
// ======================================================================================
function SetHand()
{
	// Only for Cursor when we mouseover the ImageMap
	m_bShowHand = true;
}

// ======================================================================================
// Set variable to show the cursor as a default (no more as a hand)
// ======================================================================================
function ResetHand()
{
	m_bShowHand = false;
}

// ======================================================================================
// Show the cursor as a hand
// ======================================================================================
function ShowHand(object)
{
	object.style.cursor = '';
	if(object != null && m_bShowHand)
	{
		object.style.cursor = 'Hand';
	}
}

// ======================================================================================
// Function to set and reset selected areas
// ======================================================================================
function ImageElm(strFieldName, strSelectedPath, strUnselectedPath, strDisabledPath)
{
	this.strFieldName = strFieldName;
	this.strSelectedPath  = strSelectedPath;
	this.strUnselectedPath = strUnselectedPath;
	this.strDisabledPath = strDisabledPath;
}

// ======================================================================================
// Select or unselect the clicked mapPart
// ======================================================================================
function Selection(HiddenHash, ImageHash, strAreaETUId, bModeSelect)
{
	// HiddenArray is the selected Array from the Hash by given AreaId
	// bModeSelect means if we select or deselct the items
	for(var nCond = 0; nCond == 0; nCond++)
	{
		var HiddenArray = HiddenHash[strAreaETUId];
		var ImageArray = ImageHash[strAreaETUId];
		if(HiddenArray == null || ImageArray == null)
		{
			alert('Array not defined');
			break;
		}
		
		// bModeSelect => Select Items
		if(bModeSelect)
		{
			for(var nIdx = 0; nIdx < HiddenArray.length; nIdx++)
			{
				var oHidden = document.getElementsByName(HiddenArray[nIdx])[0];
				
				if(oHidden == null)
				{
					alert('Hiddenfield ' + HiddenArray[nIdx] + ' was not found');
					break;	
				}
				
				
				//if not selected and 
				if(oHidden.value != '0' && oHidden.value != strAreaETUId)
				{	// set selected
					// deselect all the fields which have been setted with AreaId
					// ... and then select with new id
					Selection(HiddenHash, ImageHash,oHidden.value, false);
				}

				oHidden.value = strAreaETUId;

				var oImage = document.getElementsByName(ImageArray[nIdx].strFieldName)[0];

				if(oImage == null)
				{
					alert('Image ' + ImageArray[nIdx].strFieldName + ' was not found');
					break;	
				}
				
				oImage.src = ImageArray[nIdx].strSelectedPath;				
			}
		}
		else
		{
			for (var nIdx = 0; nIdx < HiddenArray.length; nIdx++)
			{
				var oHidden = document.getElementsByName(HiddenArray[nIdx])[0];
				
				if(oHidden == null)
				{
					alert('Hiddenfield ' + HiddenArray[nIdx] + ' was not found');
					break;	
				}

				//if not selected and
				if(oHidden.value != '0' && oHidden.value != strAreaETUId)
				{
					// dont deselect him, because it was selected by another Area
					continue;
				}

				oHidden.value = '0';

				var oImage = document.getElementsByName(ImageArray[nIdx].strFieldName)[0];

				if(oImage == null)
				{
					alert('Image ' + ImageArray[nIdx].strFieldName + ' was not found');
					break;	
				}
				
				oImage.src = ImageArray[nIdx].strUnselectedPath;
			}
		}
	}
}

// ======================================================================================
// Function to set and reset selected areas
// ======================================================================================
function SetOrUnset(HiddenHash, ImageHash, strHiddenFieldName, strImageName, strAreaETUId)
{
	for(var nCond = 0; nCond == 0; nCond++)
	{
		if(HiddenHash == null || ImageHash == null)
		{
			alert('Hashes not defined');
			break;
		}

		if(HiddenHash[strAreaETUId] == null || ImageHash[strAreaETUId] == null)
		{
			alert('Hashes for ' + strAreaETUId + ' not defined ' +
				HiddenHash[strAreaETUId] + '  ' + ImageHash[strAreaETUId]);
			break;
		}
		
		oCurrentHidden = document.getElementsByName(strHiddenFieldName)[0];
		if(oCurrentHidden == null)
		{
			alert('Hiddenfield not found');
			break;
		}

		if(oCurrentHidden.value == '0')
		{ //set selected
			// select with StrAreaEtuId
			Selection(HiddenHash, ImageHash, strAreaETUId, true);
		}
		else
		{
			// Deselct the 'oCurrentHidden.value'- Fields
			Selection(HiddenHash, ImageHash, oCurrentHidden.value, false);
			strAreaETUId = oCurrentHidden.value;
		}
	}
}

// ======================================================================================
// Select all mapParts
// ======================================================================================
function LoadAll()
{
	Selection(HiddenHash, ImageHash, strAreaETUId, true);
}
