// Tomek Wassidlow 2006-08-16 (wersja 2006-08-29)

// opcje SELECT w DOM: http://www.mredkj.com/tutorials/tutorial005.html

var tableId = "survey_fields_table";

var rowNumber = "row_number";
var removeFieldButton = "remove_field_button";
var moveUpFieldButton = "move_up_field_button";
var moveDownFieldButton = "move_down_field_button";

var fieldOptionsPrefix = "field_options_";

//używane do ustalania kolejności pól
var fieldIndex = "field_index";

//prefiksy parametrów przekazywanych przy zatwierdzaniu formularza
var fieldOrderPrefix = "field_order_";
var fieldTypePrefix = "field_type_";
var fieldNamePrefix = "field_name_";
var fieldDescriptionPrefix = "field_descr_";
var fieldMaxLengthPrefix = "field_max_length_";
var fieldMinLengthPrefix = "field_min_length_";
var fieldSizePrefix = "field_size_";
var fieldDefaultValuePrefix = "field_default_value_";
var fieldRowsPrefix = "field_rows_";
var fieldColsPrefix = "field_cols_";
var fieldOptionPrefix = "field_option_";
var fieldOptionSelectedPrefix = "field_option_selected_";

var fieldTypes = new Array();
fieldTypes[0] = "pole tekstowe";
fieldTypes[1] = "obszar tekstowy";
fieldTypes[2] = "grupa opcji jednokrotnego wyboru (radio)";
fieldTypes[3] = "grupa opcji wielokrotnego wyboru (checkbox)";
fieldTypes[4] = "lista jednokrotnego wyboru (combo)";
fieldTypes[5] = "lista wielokrotnego wyboru";

/* dodaje rząd tabeli zgodnie z wybranym polem */
function addField(fieldTypeId)
{
	var table = document.getElementById(tableId);
	var lastRow = table.rows.length;
	var row = table.insertRow(lastRow);
	
	var cssClass = "portlet-table-alternate";
	if(lastRow % 2 == 1)
		cssClass = "portlet-table-body";
	row.className = cssClass;
	
	row.setAttribute(fieldIndex, lastRow);
	
	var cell = row.insertCell(0);
	cell.innerHTML =
		"<table width=\"100%\">" +
		"<tr>" +
		"<td align=\"left\"><b><span id=\"" + rowNumber + "\">" + lastRow + "</span>.</b></td>" +
		"<td align=\"left\" width=\"100%\"><b>" + fieldTypes[fieldTypeId] + "</b></td>" +
		"<td align=\"right\"><input type=\"button\" rowid=\"" + lastRow + "\" name=\"" + removeFieldButton + "\" value=\"Usuń\" class=\"portlet-form-button\" onClick=\"removeField(" + lastRow + ");\" /></td>&nbsp;" +
		"<td align=\"right\"><input type=\"button\" rowid=\"" + lastRow + "\" name=\"" + moveUpFieldButton + "\" value=\"&#8593;&nbsp;Wyżej\" class=\"portlet-form-button\" onClick=\"moveUpField(" + lastRow + ");\" /></td>&nbsp;" +
		"<td align=\"right\"><input type=\"button\" rowid=\"" + lastRow + "\" name=\"" + moveDownFieldButton + "\" value=\"&#8595;&nbsp;Niżej\" class=\"portlet-form-button\" onClick=\"moveDownField(" + lastRow + ");\" /></td>&nbsp;" +
		"</tr>" +
		"</table>";
	
	var hidden = document.createElement("input");
	hidden.type = "hidden";
	hidden.name = fieldTypePrefix + lastRow;
	hidden.value = fieldTypeId;
	hidden.setAttribute("id", fieldTypePrefix + lastRow);
	cell.appendChild(hidden);
	
	var fieldTable = document.createElement("table");
	fieldTable.setAttribute("width", "100%");
	cell.appendChild(fieldTable);
	
	var rowIndex = 0;
	var leftCell;
	var rightCell;
	
	row = fieldTable.insertRow(rowIndex++);
	leftCell = row.insertCell(0);
	leftCell.innerHTML = "nazwa wyświetlana:";
	rightCell = row.insertCell(1);
	rightCell.innerHTML = "<input name=\"" + fieldNamePrefix + lastRow + "\" id=\"" + fieldNamePrefix + lastRow + "\" type=\"text\" size=\"20\" maxlength=\"64\" />";
	
	row = fieldTable.insertRow(rowIndex++);
	leftCell = row.insertCell(0);
	leftCell.innerHTML = "opis/treść pytania:";
	rightCell = row.insertCell(1);
	rightCell.innerHTML = "<textarea name=\"" + fieldDescriptionPrefix + lastRow + "\" id=\"" + fieldDescriptionPrefix + lastRow + "\" rows=\"3\" cols=\"50\" />";
		
	if(fieldTypeId == 0)//pole tekstowe
	{
		row = fieldTable.insertRow(rowIndex++);
		leftCell = row.insertCell(0);
		leftCell.innerHTML = "długość pola (liczba znaków):";
		rightCell = row.insertCell(1);
		rightCell.innerHTML = "<input name=\"" + fieldSizePrefix + lastRow + "\" id=\"" + fieldSizePrefix + lastRow + "\" type=\"text\" size=\"2\" maxlength=\"3\" value=\"20\"/>";
		
		row = fieldTable.insertRow(rowIndex++);
		leftCell = row.insertCell(0);
		leftCell.innerHTML = "długość minimalna (liczba znaków):";
		rightCell = row.insertCell(1);
		rightCell.innerHTML = "<input name=\"" + fieldMinLengthPrefix + lastRow + "\" id=\"" + fieldMinLengthPrefix + lastRow + "\" type=\"text\" size=\"3\" maxlength=\"3\" value=\"0\"/>";
		
		row = fieldTable.insertRow(rowIndex++);
		leftCell = row.insertCell(0);
		leftCell.innerHTML = "długość maksymalna (liczba znaków):";
		rightCell = row.insertCell(1);
		rightCell.innerHTML = "<input name=\"" + fieldMaxLengthPrefix + lastRow + "\" id=\"" + fieldMaxLengthPrefix + lastRow + "\" type=\"text\" size=\"3\" maxlength=\"3\" value=\"64\" />";

		row = fieldTable.insertRow(rowIndex++);
		leftCell = row.insertCell(0);
		leftCell.innerHTML = "wartość domyślna:";
		rightCell = row.insertCell(1);
		rightCell.innerHTML = "<input name=\"" + fieldDefaultValuePrefix + lastRow + "\" id=\"" + fieldDefaultValuePrefix + lastRow + "\" type=\"text\" size=\"30\" />";		
	}
	else if(fieldTypeId == 1)//obszar tekstowy
	{
		row = fieldTable.insertRow(rowIndex++);
		leftCell = row.insertCell(0);
		leftCell.innerHTML = "długość minimalna (liczba znaków):";
		rightCell = row.insertCell(1);
		rightCell.innerHTML = "<input name=\"" + fieldMinLengthPrefix + lastRow + "\" id=\"" + fieldMinLengthPrefix + lastRow + "\" type=\"text\" size=\"3\" maxlength=\"3\" value=\"0\"/>";
		
		row = fieldTable.insertRow(rowIndex++);
		leftCell = row.insertCell(0);
		leftCell.innerHTML = "długość maksymalna (liczba znaków):";
		rightCell = row.insertCell(1);
		rightCell.innerHTML = "<input name=\"" + fieldMaxLengthPrefix + lastRow + "\" id=\"" + fieldMaxLengthPrefix + lastRow + "\" type=\"text\" size=\"3\" maxlength=\"3\" value=\"512\" />";
		
		row = fieldTable.insertRow(rowIndex++);
		leftCell = row.insertCell(0);
		leftCell.innerHTML = "liczba rzędów:";
		rightCell = row.insertCell(1);
		rightCell.innerHTML = "<input name=\"" + fieldRowsPrefix + lastRow + "\" id=\"" + fieldRowsPrefix + lastRow + "\" type=\"text\" size=\"2\" maxlength=\"3\" value=\"3\" />";		
		
		row = fieldTable.insertRow(rowIndex++);
		leftCell = row.insertCell(0);
		leftCell.innerHTML = "liczba kolumn:";
		rightCell = row.insertCell(1);
		rightCell.innerHTML = "<input name=\"" + fieldColsPrefix + lastRow + "\" id=\"" + fieldColsPrefix + lastRow + "\" type=\"text\" size=\"2\" maxlength=\"3\" value=\"40\" />";
		
		row = fieldTable.insertRow(rowIndex++);
		leftCell = row.insertCell(0);
		leftCell.innerHTML = "wartość domyślna:";
		rightCell = row.insertCell(1);
		rightCell.innerHTML = "<textarea name=\"" + fieldDefaultValuePrefix + lastRow + "\" id=\"" + fieldDefaultValuePrefix + lastRow + "\" rows=\"3\" cols=\"50\" />";
	}
	else if(fieldTypeId == 2)//grupa opcji jednokrotnego wyboru (radio)
	{
		var cellId = fieldOptionsPrefix + lastRow;
		
		row = fieldTable.insertRow(rowIndex++);
		leftCell = row.insertCell(0);
		leftCell.innerHTML = "nowa opcja:";
		rightCell = row.insertCell(1);
		rightCell.innerHTML = 
			"<input type=\"text\" id=\"new_option_" + lastRow + "\" size=\"20\" maxlength=\"128\" />" +
			"&nbsp;" +
			"<input type=\"button\" value=\"dodaj opcję\" class=\"portlet-form-button\" onClick=\"addOption('" + cellId + "', this.form.elements['new_option_" + lastRow + "'], " + fieldTypeId + ")\" />";
	
		row = fieldTable.insertRow(rowIndex++);
		leftCell = row.insertCell(0);
		leftCell.innerHTML = "zdefiniowane opcje:";
		rightCell = row.insertCell(1);
		rightCell.innerHTML = "";
		rightCell.setAttribute("id", cellId);
	}
	else if(fieldTypeId == 3)//grupa opcji wielkrotnego wyboru (checkbox)
	{
		var cellId = fieldOptionsPrefix + lastRow;
		
		row = fieldTable.insertRow(rowIndex++);
		leftCell = row.insertCell(0);
		leftCell.innerHTML = "nowa opcja:";
		rightCell = row.insertCell(1);
		rightCell.innerHTML = 
			"<input type=\"text\" id=\"new_option_" + lastRow + "\" size=\"20\" maxlength=\"128\" />" +
			"&nbsp;" +
			"<input type=\"button\" value=\"dodaj opcję\" class=\"portlet-form-button\" onClick=\"addOption('" + cellId + "', this.form.elements['new_option_" + lastRow + "'], " + fieldTypeId + ")\" />";
	
		row = fieldTable.insertRow(rowIndex++);
		leftCell = row.insertCell(0);
		leftCell.innerHTML = "zdefiniowane opcje:";
		rightCell = row.insertCell(1);
		rightCell.innerHTML = "";
		rightCell.setAttribute("id", cellId);
		
		row = fieldTable.insertRow(rowIndex++);
		leftCell = row.insertCell(0);
		leftCell.innerHTML = "minimalna liczba wybranych opcji:";
		rightCell = row.insertCell(1);
		rightCell.innerHTML = "<input name=\"" + fieldMinLengthPrefix + lastRow + "\" id=\"" + fieldMinLengthPrefix + lastRow + "\" type=\"text\" size=\"3\" maxlength=\"3\" value=\"0\"/>";
		
		row = fieldTable.insertRow(rowIndex++);
		leftCell = row.insertCell(0);
		leftCell.innerHTML = "maksymalna liczba wybranych opcji:";
		rightCell = row.insertCell(1);
		rightCell.innerHTML = "<input name=\"" + fieldMaxLengthPrefix + lastRow + "\" id=\"" + fieldMaxLengthPrefix + lastRow + "\" type=\"text\" size=\"3\" maxlength=\"3\" value=\"2\"/>";
	}
	else if(fieldTypeId == 4)//lista jednokrotnego wyboru (combo)
	{
		var selectId = fieldOptionsPrefix + lastRow;
		
		row = fieldTable.insertRow(rowIndex++);
		leftCell = row.insertCell(0);
		leftCell.innerHTML = "nowa opcja:";
		rightCell = row.insertCell(1);
		rightCell.innerHTML = 
			"<input type=\"text\" id=\"new_option_" + lastRow + "\" size=\"20\" maxlength=\"128\" />" +
			"&nbsp;" +
			"<input type=\"button\" value=\"dodaj opcję\" class=\"portlet-form-button\" onClick=\"addOption('" + selectId + "', this.form.elements['new_option_" + lastRow + "'], " + fieldTypeId + ")\" />";
	
		row = fieldTable.insertRow(rowIndex++);
		leftCell = row.insertCell(0);
		leftCell.innerHTML = "zdefiniowane opcje:";
		rightCell = row.insertCell(1);
		var select = document.createElement("select");
		select.setAttribute("id", selectId);
		rightCell.appendChild(select);
	}
	else if(fieldTypeId == 5)//lista wielokrotnego wyboru
	{
		var selectId = fieldOptionsPrefix + lastRow;
		
		row = fieldTable.insertRow(rowIndex++);
		leftCell = row.insertCell(0);
		leftCell.innerHTML = "nowa opcja:";
		rightCell = row.insertCell(1);
		rightCell.innerHTML = 
			"<input type=\"text\" id=\"new_option_" + lastRow + "\" size=\"20\" maxlength=\"128\" />" +
			"&nbsp;" +
			"<input type=\"button\" value=\"dodaj opcję\" class=\"portlet-form-button\" onClick=\"addOption('" + selectId + "', this.form.elements['new_option_" + lastRow + "'], " + fieldTypeId + ")\" />";
	
		row = fieldTable.insertRow(rowIndex++);
		leftCell = row.insertCell(0);
		leftCell.innerHTML = "zdefiniowane opcje:";
		rightCell = row.insertCell(1);
		var select = document.createElement("select");
		select.setAttribute("id", selectId);
		select.setAttribute("multiple", "multiple");
		rightCell.appendChild(select);
		
		row = fieldTable.insertRow(rowIndex++);
		leftCell = row.insertCell(0);
		leftCell.innerHTML = "minimalna liczba wybranych opcji:";
		rightCell = row.insertCell(1);
		rightCell.innerHTML = "<input name=\"" + fieldMinLengthPrefix + lastRow + "\" id=\"" + fieldMinLengthPrefix + lastRow + "\" type=\"text\" size=\"3\" maxlength=\"3\" value=\"0\"/>";
		
		row = fieldTable.insertRow(rowIndex++);
		leftCell = row.insertCell(0);
		leftCell.innerHTML = "maksymalna liczba wybranych opcji:";
		rightCell = row.insertCell(1);
		rightCell.innerHTML = "<input name=\"" + fieldMaxLengthPrefix + lastRow + "\" id=\"" + fieldMaxLengthPrefix + lastRow + "\" type=\"text\" size=\"3\" maxlength=\"3\" value=\"2\"/>";
	}
}

/* odtwarza kolejnośc identyfikatorów pól po usunięciu/zmienie kolejności */
function restoreFieldRows(table)
{
	var rows = table.rows;
	for(var i = 1; i < rows.length; i++)
	{
		var cssClass = "portlet-table-alternate";
		if(i % 2 == 1)
			cssClass = "portlet-table-body";
		
		rows[i].className = cssClass;
	}
	
	var rowNumbers = document.getElementsByTagName("span");
	var fieldIndex = 1;
	for(var i = 0; i < rowNumbers.length; i++)
		if(rowNumbers[i].getAttribute("id") == rowNumber)
			rowNumbers[i].innerHTML = fieldIndex++;
	
	var removeFieldButtons = document.getElementsByName(removeFieldButton);
	for(var i = 0; i < removeFieldButtons.length; i++)
	{
		if(navigator.userAgent.toLowerCase().indexOf("msie") >= 0)
		{
			removeFieldButtons[i].setAttribute("rowid", i + 1);
			removeFieldButtons[i].onclick = function() { removeField(this.getAttribute("rowid")); };
		}
		else
			removeFieldButtons[i].setAttribute("onClick", "removeField(" + (i + 1) + ")");
	}
		
	var moveUpFieldButtons = document.getElementsByName(moveUpFieldButton);
	for(var i = 0; i < moveUpFieldButtons.length; i++)
	{
		if(navigator.userAgent.toLowerCase().indexOf("msie") >= 0)
		{
			moveUpFieldButtons[i].setAttribute("rowid", i + 1);
			moveUpFieldButtons[i].onclick = function() { moveUpField(this.getAttribute("rowid")); };
		}
		else
			moveUpFieldButtons[i].setAttribute("onClick", "moveUpField(" + (i + 1) + ")");
	}
		
	var moveDownFieldButtons = document.getElementsByName(moveDownFieldButton);
	for(var i = 0; i < moveDownFieldButtons.length; i++)
	{
		if(navigator.userAgent.toLowerCase().indexOf("msie") >= 0)
		{
			moveDownFieldButtons[i].setAttribute("rowid", i + 1);
			moveDownFieldButtons[i].onclick = function() { moveDownField(this.getAttribute("rowid")); };
		}
		else
			moveDownFieldButtons[i].setAttribute("onClick", "moveDownField(" + (i + 1) + ")");
	}
}

/* usuwa pole */
function removeField(fieldRow)
{
	if(confirm("Czy chcesz usunąć pole nr " + fieldRow + "?"))
	{
		var table = document.getElementById(tableId);
		table.deleteRow(fieldRow);
		
		restoreFieldRows(table);
	}
}

/* przesuwa pole w górę */
function moveUpField(fieldRow)
{
	var table = document.getElementById(tableId);
	if(fieldRow == 1)
	{
		alert("Pierwszego pola nie można przenieść wyżej!");
		return;
	}
	
	try
	{
		//tylko IE
		table.moveRow(fieldRow, fieldRow - 1);
	}
	catch(exc)
	{
		var rows = table.rows;
		var refRow = rows[fieldRow - 1];
		var newRow = rows[fieldRow].cloneNode(true);
		refRow.parentNode.insertBefore(newRow, refRow);
		
		table.deleteRow(fieldRow + 1);
	}
	
	restoreFieldRows(table);
}

/* przesuwa pole w dół */
function moveDownField(fieldRow)
{
	var table = document.getElementById(tableId);
	if(fieldRow == table.rows.length - 1)
	{
		alert("Ostatniego pola nie można przenieść niżej!");
		return;
	}
	
	try
	{
		//tylko IE
		table.moveRow(fieldRow, fieldRow + 1);
	}
	catch(exc)
	{
		var rows = table.rows;
		var refRow = rows[fieldRow + 1];
		var newRow = rows[fieldRow].cloneNode(true);
		refRow.parentNode.insertBefore(newRow, refRow.nextSibling);
		
		table.deleteRow(fieldRow);
	}
	
	restoreFieldRows(table);
}

/* dodaje opcję do pola */
function addOption(containerId, optionTextField, fieldTypeId)
{
	if(!checkField(optionTextField, "nazwa opcji", 1, true))
		return;
		
	var optionText = optionTextField.value;
	optionTextField.value = "";
	
	if(fieldTypeId == 2)//grupa opcji jednokrotnego wyboru (radio)
	{
		var cell = document.getElementById(containerId);
		
		var element;
		if(navigator.userAgent.toLowerCase().indexOf("msie") >= 0)
		{
			//pierdolony IE oczywiście nie działa zgodnie ze standardami...
			element = document.createElement("<input type=\"radio\" name=\"" + containerId + "\" value=\"" + optionText + "\" checked=\"checked\" />");	
		}
		else
		{
			element = document.createElement("input");
			element.type = "radio";
			element.name = containerId;
			element.value = optionText;
			element.checked = true;
		}
		cell.appendChild(element);
				
		var text = document.createTextNode(optionText);
		cell.appendChild(text);
		
		var br = document.createElement("br");
		cell.appendChild(br);
	}
	else if(fieldTypeId == 3)//grupa opcji wielkrotnego wyboru (checkbox)
	{
		var cell = document.getElementById(containerId);
		
		if(navigator.userAgent.toLowerCase().indexOf("msie") >= 0)
		{
			//pierdolony IE oczywiście nie działa zgodnie ze standardami...
			element = document.createElement("<input type=\"checkbox\" name=\"" + containerId + "\" value=\"" + optionText + "\"  />");	
		}
		else
		{
			element = document.createElement("input");
			element.type = "checkbox";
			element.name = containerId;
			element.value = optionText;
		}
		cell.appendChild(element);
				
		var text = document.createTextNode(" " + optionText);
		cell.appendChild(text);
		
		var br = document.createElement("br");
		cell.appendChild(br);
	}
	else if(fieldTypeId == 4)//lista jednokrotnego wyboru (combo)
	{
		var select = document.getElementById(containerId);
		
		var option = document.createElement('option');
		option.text = optionText;
		option.value = optionText;
		
		try
		{
			//procedura standardowa, nie działa pod IE
			select.add(option, null);
		}
		catch(exc)
		{
			//tylko IE
			select.add(option);
		}
	}
	else if(fieldTypeId == 5)//lista wielokrotnego wyboru
	{
		var select = document.getElementById(containerId);
		select.size = select.size + 1;
		
		var option = document.createElement('option');
		option.text = optionText;
		option.value = optionText;
		
		try
		{
			//procedura standardowa, nie działa pod IE
			select.add(option, null);
		}
		catch(exc)
		{
			//tylko IE
			select.add(option);
		}
	}
}

/* zbiera dane definicji pól */
function doSubmit(sourceForm)
{
	var table = document.getElementById(tableId);
	var rows = table.rows;
	
	if(rows.length <= 1)
	{
		alert("Musisz zdefiniować przynajmniej 1 pole ankiety!");
		return false;
	}
	
	var form = document.createElement("form");
	form.name = "passedForm" + Math.round(Math.random() * 1000);
	form.action = sourceForm.action;
	form.method = sourceForm.method;
	
	var element = document.createElement("input");
	element.type = "hidden";
	element.name = "a";
	element.value = sourceForm.elements["a"].value;
	form.appendChild(element);
	
	var element = document.createElement("input");
	element.type = "hidden";
	element.name = "f";
	element.value = sourceForm.elements["f"].value;
	form.appendChild(element);
	
	//pole pojawia się tylko w trybie edycji
	if(sourceForm.elements["survey_id"])
	{
		var element = document.createElement("input");
		element.type = "hidden";
		element.name = "survey_id";
		element.value = sourceForm.elements["survey_id"].value;
		form.appendChild(element);
	}
	
	if(!checkField(sourceForm.elements["survey_nazwa"], "nazwa ankiety", 5, true))
		return;
	var element = document.createElement("input");
	element.type = "hidden";
	element.name = "survey_nazwa";
	element.value = sourceForm.elements["survey_nazwa"].value;
	form.appendChild(element);
	
	if(!checkField(sourceForm.elements["survey_nazwa_opisowa"], "nazwa opisowa ankiety", 5, true))
		return;
	var element = document.createElement("input");
	element.type = "hidden";
	element.name = "survey_nazwa_opisowa";
	element.value = sourceForm.elements["survey_nazwa_opisowa"].value;
	form.appendChild(element);
	
	var element = document.createElement("input");
	element.type = "hidden";
	element.name = "survey_wymagane_logowanie";
	element.value = sourceForm.elements["survey_wymagane_logowanie"].checked;
	form.appendChild(element);
	
	if(checkDatesRelation(sourceForm.elements["survey_czas_waznosci_from_year"], sourceForm.elements["survey_czas_waznosci_from_month"], sourceForm.elements["survey_czas_waznosci_from_day"], sourceForm.elements["survey_czas_waznosci_to_year"], sourceForm.elements["survey_czas_waznosci_to_month"], sourceForm.elements["survey_czas_waznosci_to_day"], false))
	{
		var element = document.createElement("input");
		element.type = "hidden";
		element.name = "survey_czas_waznosci_from_year";
		element.value = sourceForm.elements["survey_czas_waznosci_from_year"].value;
		form.appendChild(element);
		
		var element = document.createElement("input");
		element.type = "hidden";
		element.name = "survey_czas_waznosci_from_month";
		element.value = sourceForm.elements["survey_czas_waznosci_from_month"].value;
		form.appendChild(element);
		
		var element = document.createElement("input");
		element.type = "hidden";
		element.name = "survey_czas_waznosci_from_day";
		element.value = sourceForm.elements["survey_czas_waznosci_from_day"].value;
		form.appendChild(element);
		
		var element = document.createElement("input");
		element.type = "hidden";
		element.name = "survey_czas_waznosci_to_year";
		element.value = sourceForm.elements["survey_czas_waznosci_to_year"].value;
		form.appendChild(element);
		
		var element = document.createElement("input");
		element.type = "hidden";
		element.name = "survey_czas_waznosci_to_month";
		element.value = sourceForm.elements["survey_czas_waznosci_to_month"].value;
		form.appendChild(element);
		
		var element = document.createElement("input");
		element.type = "hidden";
		element.name = "survey_czas_waznosci_to_day";
		element.value = sourceForm.elements["survey_czas_waznosci_to_day"].value;
		form.appendChild(element);
	}
	else
		return;
	
	var order = new Array();
	for(var i = 1; i < rows.length; i++)//pierwszy rząd odrzucony
		order[i - 1] = rows[i].getAttribute(fieldIndex);
		
	for(var i = 1; i <= order.length; i++)
	{
		var index = order[i - 1];
		
		if(!checkField(sourceForm.elements[fieldNamePrefix + index], "nazwa wyświetlana dla pola nr " + i, 1, true))
			return;
		if(!checkField(sourceForm.elements[fieldDescriptionPrefix + index], "treść pytania dla pola nr " + i, 0, false))
			return;
		
		var fieldTypeId = document.getElementById(fieldTypePrefix + index).value;
		var fieldName = document.getElementById(fieldNamePrefix + index).value;
		var fieldDescription = document.getElementById(fieldDescriptionPrefix + index).value;
		
		var fieldSize;
		var fieldMinLength;
		var fieldMaxLength;
		var fieldDefaultValue;
		
		var fieldRows;
		var fieldCols;
		
		var fieldMinSelected;
		var fieldMaxSelected;
		
		var fieldOptions = new Array();
		var fieldOptionsSelected = new Array();
	
		if(fieldTypeId == 0)//pole tekstowe
		{
			fieldSize = document.getElementById(fieldSizePrefix + index).value;
			fieldMinLength = document.getElementById(fieldMinLengthPrefix + index).value;
			fieldMaxLength = document.getElementById(fieldMaxLengthPrefix + index).value;
			fieldDefaultValue = document.getElementById(fieldDefaultValuePrefix + index).value;
			
			if(!isInteger(fieldSize) || fieldSize < 1)
			{
				alert("Dłogość pola nr " + i + " musi mieć wartość >= 1!");
				return;
			}
			else if(!isInteger(fieldMinLength) || fieldMinLength < 0)
			{
				alert("Minimalna długość pola nr " + i + " musi mieć wartość >= 0!");
				return;
			}
			else if(!isInteger(fieldMaxLength) || fieldMaxLength < 1)
			{
				alert("Maksymalna długość pola nr " + i + " musi mieć wartość >= 1!");
				return;
			}
			else if(fieldMinLength > fieldMaxLength)
			{
				alert("Maksymalna długość pola nr " + i + " musi być >= jego minimalnej długości!");
				return;
			}
			
			if(fieldDefaultValue.length > fieldMaxLength)
			{
				alert("Podana wartość domyślna jest dłuższa od maksymalnej długości pola!");
				return;
			}
		}
		else if(fieldTypeId == 1)//obszar tekstowy
		{
			fieldMinLength = document.getElementById(fieldMinLengthPrefix + index).value;
			fieldMaxLength = document.getElementById(fieldMaxLengthPrefix + index).value;
			fieldDefaultValue = document.getElementById(fieldDefaultValuePrefix + index).value;
		
			fieldRows = document.getElementById(fieldRowsPrefix + index).value;
			fieldCols = document.getElementById(fieldColsPrefix + index).value;
			
			if(!isInteger(fieldMinLength) || fieldMinLength < 0)
			{
				alert("Minimalna długość pola nr " + i + " musi mieć wartość >= 0!");
				return;
			}
			else if(!isInteger(fieldMaxLength) || fieldMaxLength < 1)
			{
				alert("Maksymalna długość pola nr " + i + " musi mieć wartość >= 1!");
				return;
			}
			else if(fieldMinLength > fieldMaxLength)
			{
				alert("Maksymalna długość pola nr " + i + " musi być >= jego minimalnej długości!");
				return;
			}
			
			if(fieldDefaultValue.length > fieldMaxLength)
			{
				alert("Podana wartość domyślna jest dłuższa od maksymalnej długości pola!");
				return;
			}
		}
		else if(fieldTypeId == 2)//grupa opcji jednokrotnego wyboru (radio)
		{
			var options = document.getElementsByName(fieldOptionsPrefix + index);
			var count = 0;
			var selectedCount = 0;
			for(var j = 0; j < options.length; j++)
			{
				if(options[j].type == "radio")//odrzucenie komórki przechowujacej pola
				{
					fieldOptions[count++] = options[j].value;
					if(options[j].checked)
						fieldOptionsSelected[selectedCount++] = options[j].value;
				}
			}
			
			if(fieldOptions.length < 1)
			{
				alert("Musisz zdefiniować przynajmniej 1 opcję pola '" + fieldName + "'!");
				return false;
			}
		}
		else if(fieldTypeId == 3)//grupa opcji wielkrotnego wyboru (checkbox)
		{
			fieldMinLength = document.getElementById(fieldMinLengthPrefix + index).value;
			fieldMaxLength = document.getElementById(fieldMaxLengthPrefix + index).value;
			
			if(!isInteger(fieldMinLength) || fieldMinLength < 0)
			{
				alert("Minimalna liczba wybranych opcji pola nr " + i + " musi mieć wartość >= 0!");
				return;
			}
			else if(!isInteger(fieldMaxLength) || fieldMaxLength < 1)
			{
				alert("Maksymalna liczba wybranych opcji pola nr " + i + " musi mieć wartość >= 1!");
				return;
			}
			else if(fieldMinLength > fieldMaxLength)
			{
				alert("Maksymalna liczba wybranych opcji pola nr " + i + " musi być >= jego minimalnej liczby!");
				return;
			}
		
			var options = document.getElementsByName(fieldOptionsPrefix + index);
			var count = 0;
			var selectedCount = 0;
			for(var j = 0; j < options.length; j++)
			{
				if(options[j].type == "checkbox")//odrzucenie komórki przechowujacej pola
				{
					fieldOptions[count++] = options[j].value;
					if(options[j].checked)
						fieldOptionsSelected[selectedCount++] = options[j].value;
				}
			}
			
			if(fieldOptions.length < 1)
			{
				alert("Musisz zdefiniować przynajmniej 1 opcję pola '" + fieldName + "'!");
				return false;
			}
			else if(fieldMinLength > fieldOptions.length)
			{
				alert("Minimalna liczba wybranych opcji pola nr " + i + " nie może być większa od liczby zdefiniowanych opcji!");
				return;
			}
		}
		else if(fieldTypeId == 4)//lista jednokrotnego wyboru (combo)
		{
			var select = document.getElementById(fieldOptionsPrefix + index);
			var options = select.options;
			
			if(!options || options.length == 0)
			{
				alert("Musisz zdefiniować przynajmniej 1 opcję pola '" + fieldName + "'!");
				return false;
			}
			
			var count = 0;
			var selectedCount = 0;
			for(var j = 0; j < options.length; j++)
			{
				fieldOptions[count++] = options[j].value;
				if(options[j].selected)
					fieldOptionsSelected[selectedCount++] = options[j].value;
			}
		}
		else if(fieldTypeId == 5)//lista wielokrotnego wyboru
		{
			fieldMinLength = document.getElementById(fieldMinLengthPrefix + index).value;
			fieldMaxLength = document.getElementById(fieldMaxLengthPrefix + index).value;
			
			if(!isInteger(fieldMinLength) || fieldMinLength < 0)
			{
				alert("Minimalna liczba wybranych opcji pola nr " + i + " musi mieć wartość >= 0!");
				return;
			}
			else if(!isInteger(fieldMaxLength) || fieldMaxLength < 1)
			{
				alert("Maksymalna liczba wybranych opcji pola nr " + i + " musi mieć wartość >= 1!");
				return;
			}
			else if(fieldMinLength > fieldMaxLength)
			{
				alert("Maksymalna liczba wybranych opcji pola nr " + i + " musi być >= jego minimalnej liczby!");
				return;
			}
			
			var select = document.getElementById(fieldOptionsPrefix + index);
			var options = select.options;
			
			if(!options || options.length == 0)
			{
				alert("Musisz zdefiniować przynajmniej 1 opcję pola '" + fieldName + "'!");
				return false;
			}
			else if(fieldMinLength > options.length)
			{
				alert("Minimalna liczba wybranych opcji pola nr " + i + " nie może być większa od liczby zdefiniowanych opcji!");
				return;
			}
			
			var count = 0;
			var selectedCount = 0;
			for(var j = 0; j < options.length; j++)
			{
				fieldOptions[count++] = options[j].value;
				if(options[j].selected)
					fieldOptionsSelected[selectedCount++] = options[j].value;
			}
		}
		
		var element = document.createElement("input");
		element.type = "hidden";
		element.name = fieldOrderPrefix + i;
		element.value = i;
		form.appendChild(element);
		
		var element = document.createElement("input");
		element.type = "hidden";
		element.name = fieldNamePrefix + i;
		element.value = fieldName;
		form.appendChild(element);
		
		var element = document.createElement("input");
		element.type = "hidden";
		element.name = fieldDescriptionPrefix + i;
		element.value = fieldDescription;
		form.appendChild(element);
		
		var element = document.createElement("input");
		element.type = "hidden";
		element.name = fieldTypePrefix + i;
		element.value = fieldTypeId;
		form.appendChild(element);
		
		var element = document.createElement("input");
		element.type = "hidden";
		element.name = fieldSizePrefix + i;
		element.value = fieldSize;
		form.appendChild(element);
		
		var element = document.createElement("input");
		element.type = "hidden";
		element.name = fieldMinLengthPrefix + i;
		element.value = fieldMinLength;
		form.appendChild(element);
		
		var element = document.createElement("input");
		element.type = "hidden";
		element.name = fieldMaxLengthPrefix + i;
		element.value = fieldMaxLength;
		form.appendChild(element);
		
		var element = document.createElement("input");
		element.type = "hidden";
		element.name = fieldDefaultValuePrefix + i;
		element.value = fieldDefaultValue;
		form.appendChild(element);
		
		var element = document.createElement("input");
		element.type = "hidden";
		element.name = fieldRowsPrefix + i;
		element.value = fieldRows;
		form.appendChild(element);
		
		var element = document.createElement("input");
		element.type = "hidden";
		element.name = fieldColsPrefix + i;
		element.value = fieldCols;
		form.appendChild(element);
		
		for(var j = 0; j < fieldOptions.length; j++)
		{
			var element = document.createElement("input");
			element.type = "hidden";
			element.name = fieldOptionPrefix + i + "_" + (j + 1);
			element.value = fieldOptions[j];
			form.appendChild(element);
		}
		
		for(var j = 0; j < fieldOptionsSelected.length; j++)
		{
			var element = document.createElement("input");
			element.type = "hidden";
			element.name = fieldOptionSelectedPrefix + i + "_" + (j + 1);
			element.value = fieldOptionsSelected[j];
			form.appendChild(element);
		}
	}
	
	var question = "Czy chcesz dodać nową ankietę?";	
	if(sourceForm.elements["survey_id"])
		question = "Czy chcesz zatwierdzić edycję ankiety?";	
	if(confirm(question))
	{
		document.body.appendChild(form);
		form.submit();
	}
}