function OpenWindow(url, name, winWidth, winHeight)
{
	var screenWidth;
	var screenHeight;
		
	if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1)  
	{
		screenWidth = document.body.clientWidth;
		screenHeight = document.body.clientHeight;
	}
	else 
	{
		screenWidth = window.innerWidth;
		screenHeight = window.innerHeight;
	}
	
	var leftPos = (screenWidth - winWidth) / 2;
	var topPos = (screenHeight - winHeight) / 2;
	
	var winProperties = "width=" + winWidth + ",height=" + winHeight + ",top=" + topPos + ",left=" + leftPos + ",resizable=yes,scrollbars=yes";
	window.open(url, name, winProperties);
}

function ConfirmDelete(objectName)
{
	return confirm("Ta bort " + objectName + "?")
}

function EditImage(imageID)
{
	var	winWidth = 490;
	var winHeight;
	if (imageID == -1) // New image
	{
		winHeight = 400;
	}
	else // Edit existing image
	{
		winHeight = 600;
	}
	OpenWindow("SubmitImage.aspx?imageID=" + imageID, "EditImage", winWidth, winHeight);
}

function DisableTextFields()
{
	var textFields = new Array();
	textFields = document.getElementsByName("input");
	for (i=0; i<textFields.length; i++)
	{
		switch (textFields[i].className)
		{
			case "Min0Max999Dec0":
				textFields[i].maxLength = 3;
				break;
			case "Min0Max99Dec1":
				textFields[i].maxLength = 4;
				break;
			case "Min0Max9999Dec2":
				textFields[i].maxLength = 7;
				break;
		}
		if (textFields[i].value == "") // No previous value displayed
		{
			textFields[i].disabled = "disabled";
			textFields[i].style.backgroundColor = "#cccccc";
		}
	}
}

// Enables text fields on page load, if criteria condition is selected
var previouslySelectedRadioButtonIndex = -1;
function EnableTextFields()
{
	var form = document.getElementById("Wizard");
	var elements = form.elements;

	var i = 0;
	var isSelected = false;
	while (i < elements.length)
	{
		if (elements[i].name == "CriteriaCondition")
		{
			isSelected = elements[i].checked;
			if (isSelected)
				previouslySelectedRadioButtonIndex = i;		
		}
		else if (elements[i].name == "input") 
		{
			elements[i].style.backgroundColor = (isSelected) ? "#ffffff" : "#cccccc";
			elements[i].disabled = (isSelected) ? "" : "disabled";
			elements[i].tabIndex = 110 + i; // Possible to tab to input text fields
			elements[i].title = (isSelected) ? "Ange värde till svarsalternativet" : "";
		}
		i++
	}
}

// Called when criteria condition radio button is selected
function ToggleTextFields(caller)
{
	var form = document.getElementById("Wizard");
	var elements = form.elements;

	var i = 0;
	var isSelected = false;
	while (i < elements.length)
	{
		if (elements[i].name == "CriteriaCondition")
		{
			if (i == previouslySelectedRadioButtonIndex) // Current radio button same as previously selected
			{
				elements[i].checked = false; // Deselect radio button
				previouslySelectedRadioButtonIndex = -1;
			}
			isSelected = elements[i].checked;
			if (isSelected)
				previouslySelectedRadioButtonIndex = i;		
		}
		else if (elements[i].name == "input") 
		{
			elements[i].style.backgroundColor = (isSelected) ? "#ffffff" : "#cccccc";
			elements[i].disabled = (isSelected) ? "" : "disabled";
			elements[i].value = "";
			elements[i].tabIndex = 110 + i;
			elements[i].title = (isSelected) ? "Ange värde till svarsalternativet" : "";
		}
		i++
	}
}

// Called when "Spara och gå till nästa" button is selected
// Validates input text fields
function Validate()
{
	var form = document.getElementById("Wizard");
	var elements = form.elements;

	var isSelected = false;
	var i = 0;
	while (i < elements.length)
	{
		if (elements[i].name == "CriteriaCondition")
		{
			isSelected = elements[i].checked;
		}
		else if (elements[i].name == "input" && isSelected)
		{
			errorMessage = CompareToRegExp(elements[i].className, elements[i].value)
			if (errorMessage != "") // Incorrect input format
			{
				alert(errorMessage)
				elements[i].select();
				return false;
			}
		}
		i++
	}

	// Replace comma with period for saving in DB
	isSelected = false;
	i = 0;
	while (i < elements.length)
	{
		if (elements[i].name == "CriteriaCondition")
		{
			isSelected = elements[i].checked;
		}
		else if (elements[i].name == "input" && isSelected)
		{
			var commaRegExp = /,/;
			elements[i].value = elements[i].value.replace(commaRegExp, ".");	
		}
		i++
	}

	return true;
}

function CompareToRegExp(validationName, value)
{
	value = new String(value);
	var errorMessage = "";
	switch (validationName)
	{
		case "Min0Max999Dec0":
			regExp = /^(\d{1,3})|-$/;
			errorMessage = "Ange ett tal utan decimaler, upp till 999 eller -.";
			break;
		case "Min0Max99Dec1":
			regExp = /^(\d{1,2}(,\d{1,1})?)|-$/;
			errorMessage = "Ange ett tal med max en decimal, upp till 99,9 eller -.";
			break;
		case "Min0Max9999Dec2":
			regExp = /^(\d{1,4}(,\d{1,2})?)|-$/;
			errorMessage = "Ange ett tal med max två decimaler, upp till 9999,99 eller -.";
			break;
	}
	if (! regExp.test(value))
		return errorMessage;
	return "";
}

function EnableBusinessObjectAll(disable1, disable2)
{
	if (disable1 != "")
	{
		var objectToDisable = document.getElementById(disable1);
		objectToDisable.disabled = "disabled";
		objectToDisable.style.backgroundColor = "#cccccc";
		objectToDisable.selectedIndex = 0;
	}

	var objectToDisable = document.getElementById(disable2);
	objectToDisable.disabled = "disabled";
	objectToDisable.style.backgroundColor = "#cccccc";
	objectToDisable.value = "";
}

function EnableBusinessObjectSub(enable, disable)
{
	var objectToEnable = document.getElementById(enable);
	if (objectToEnable)
	{
		objectToEnable.disabled = "";
		objectToEnable.style.backgroundColor = "#ffffff";
	}
	
	var objectToDisable = document.getElementById(disable);
	if (objectToDisable)
	{
		objectToDisable.disabled = "disabled";
		objectToDisable.style.backgroundColor = "#cccccc";
		objectToDisable.value = "";
	}
}

function EnableBusinessObjectNew(enable, disable)
{
	var objectToEnable = document.getElementById(enable);
	objectToEnable.disabled = "";
	objectToEnable.style.backgroundColor = "#ffffff";
	
	if (disable != "")
	{
		var objectToDisable = document.getElementById(disable);
		objectToDisable.disabled = "disabled";
		objectToDisable.style.backgroundColor = "#cccccc";
		objectToDisable.selectedIndex = 0;
	}
}

function ValidateBusinessObjectNew(textFieldClientId, radioButtonClientId)
{	
	var radioButton = document.getElementById(radioButtonClientId);
	if (radioButton.checked)
	{
		var textField = document.getElementById(textFieldClientId);
		if (textField.value == "")
		{
			alert("Du måste ange ett namn.");
			textField.focus();
			return false;
		}
	}
}

function UpdateVerticalLines()
{

	var leftContainer = document.getElementById("LeftContainer");
	var rightContainer = document.getElementById("RightContainer");
	if(!leftContainer || !rightContainer)
		return;
	var maxHeight;
	maxHeight = (leftContainer.offsetHeight > rightContainer.offsetHeight) ? leftContainer.offsetHeight : rightContainer.offsetHeight;
	leftContainer.style.height = maxHeight;
	rightContainer.style.height = maxHeight;
	
	var criteriaColumn = document.getElementById("CriteriaColumn");
	var leftColumn = document.getElementById("LeftColumn");
	var rightColumn = document.getElementById("RightColumn");

	if (!criteriaColumn) // Columns not rendered
		return
			
	maxHeight = (criteriaColumn.offsetHeight > leftColumn.offsetHeight) ? criteriaColumn.offsetHeight : leftColumn.offsetHeight;
	maxHeight = (rightColumn.offsetHeight > maxHeight) ? rightColumn.offsetHeight : maxHeight;
	
	// criteriaColumn.style.height = maxHeight;
	leftColumn.style.height = maxHeight;
	rightColumn.style.height = maxHeight;
}

function ConfirmFormJump()
{
	return confirm("Om du öppnar en annan del av formuläret,\nkommer ett nytt eller ändrat svar ej att sparas.\nFör att spara svaret, välj \"Spara och gå vidare\".\n\nVill du öppna en annan del av formuläret?");
}
