function getFieldValue(fieldId) {
	var field = document.getElementById(fieldId);
	if (field.nodeName.toLowerCase() == "input") {
		return field.value;
	}
	else if (field.nodeName.toLowerCase() == "select") {
		return field.options[field.selectedIndex].value;
	}
	return "";
}

function min(x, y) {
	if (x < y) {
		return x;
	}
	return y;
}

function max(x, y) {
	if (x > y) {
		return x;
	}
	return y;
}

function getMinAndMax(array) {
	var result = new Array();
	result[0] = Number.MAX_VALUE; // min
	result[1] = Number.MIN_VALUE; // max
	for (var i = 0; i < array.length; i++) {
		if (!isNaN(array[i])) {
			if (array[i] < result[0]) {
				result[0] = array[i];
			}
			if (array[i] > result[1]) {
				result[1] = array[i];
			}
		}
	}
	return result;
}

function enableFormFields(formId) {
	var form = document.getElementById(formId);
	for (var i = 0; i < form.elements.length; i++) {
		if (form.elements[i].type != 'submit') {
			form.elements[i].disabled = false;
		}
	}
}

function disableFormFields(formId) {
	var form = document.getElementById(formId);
	for (var i = 0; i < form.elements.length; i++) {
		if (form.elements[i].type != 'submit') {
			form.elements[i].disabled = true;
		}
	}
}

function isSet(value) {
	return value != undefined && value != 0 && value != '' && Boolean(value);
}

function showHiddenField(thisField, hideField) {
	$(hideField).show();
	$(thisField).hide();
	$(hideField).focus();
}

function hideHiddenField(thisField, hideField) {
	$(hideField).show();
	$(thisField).hide();
}

function ajaxSetFieldValue(fieldId, url) { 
	var req = getRequestObject();
	if(req) {
		req.open("GET", url, false);
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		req.send(null);

		if (req.readyState == 4 && req.status == 200) {
			var responseText = req.responseText;
			$('#'+fieldId).val($('<div>' + responseText + '</div>').html());
		}
	}
}

/**
 * Ajax - pobiera wartości z pliku
 */
function ajaxSetSelectOptions2(fieldId, url, recordId){
	var newurl = url.replace("-id-", encodeURIComponent(recordId));
	ajaxSetSelectOptions(fieldId, newurl);
}

/**
 * Ajax - pobiera wartości z pliku
 */
function ajaxSetSelectOptions(fieldId, url) { 
	var req = getRequestObject();
	if(req) {
		req.open("GET", url, false);
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		req.send(null);
		if (req.readyState == 4 && req.status == 200) {
			var tmptab = new Array();
			tmptab = splitText(req.responseText);
			var value = tmptab.pop();
			value = value.replace("\n", "");
			value = value.replace("\s", "");
			createOptions(tmptab, fieldId);
			setSelectedOption(fieldId, value);
		}
	}
}

function setSelectedOption(fieldId, value) {
	var option = document.getElementById(fieldId + "_" + value);
	if (option != null) {
		option.selected = true;
	}
}

function getSelectFieldValue(fieldId) {
	var field = document.getElementById(fieldId);
	if (field.selectedIndex != -1) {

//alert(fieldId + ' :CIEKAWE: '+field.selectedIndex + ' : ' + field.options[field.selectedIndex].value);

		return field.options[field.selectedIndex].value;
	}
	return 0;
}

var XMLHttpFactories = [
	function () {return new XMLHttpRequest()},
	function () {return new ActiveXObject("Msxml2.XMLHTTP")},
	function () {return new ActiveXObject("Msxml3.XMLHTTP")},
	function () {return new ActiveXObject("Microsoft.XMLHTTP")}
];

function getRequestObject() {
	var xmlhttp = false;
	for (var i = 0; i < XMLHttpFactories.length; i++) {
		try {
			xmlhttp = XMLHttpFactories[i]();
		}
		catch (e) {
			continue;
		}
		break;
	}
	return xmlhttp;
}

/**
 * Rozkłada  tekst z postaci: '1,"jakisTekst"'
 * na tablicę
 *
 * xxx[0] == '1';
 * xxx[1] == 'jakisTekst';
 */
function splitText(jtext) {
	var nameTab = new Array();
	var tmp;

	nameTab = jtext.split("\"");
	//nameTab.pop();
	for (var i = 0; i< nameTab.length; i++) {
		if (i % 2 == 0) {
			tmp = nameTab[i];
			tmp = tmp.replace(",","");
			tmp = tmp.replace("\n", "");
			nameTab[i] = tmp;
		}
	}

	return nameTab;	 
}

/**
 * Dodaje pozycję do selecta
 */
function insertOption(fieldId, value, nam){
	var opt = document.createElement('option');
	opt.text = nam;
	opt.value = value;
	opt.id = fieldId + '_' + value;
	var selectField = document.getElementById(fieldId);
	try {
		selectField.add(opt, null);
	}
	catch (ex) {		
		selectField.add(opt);
	}
}

/**
 * Usuwa wszystkie pozycje ze wskazanego selecta
 */
function removeOptions(fieldId){
	var f = document.getElementById(fieldId);
	var x = f.length;
	for (var i = x; i >= 0; i--) {
		f.remove(i);
	}
}

function selectOption(fieldId, value) {
	var f = document.getElementById(fieldId);
	for (var i = 0; i < f.length; i++) {
		if (f.options[i].value == value) {
			f.selectedIndex = i;
			return;
		}
	}
}

/**
 * Tworzy pozycje selecta na podstawie tabeli optionsTable 
 */
function createOptions(optionsTable, fieldId) {
	removeOptions(fieldId);
	var j;
	for (var i = 0; i <= optionsTable.length - 1; i += 2) {
		j = i + 1;
		insertOption(fieldId, optionsTable[i], optionsTable[j]);
	}
}

function setValuesForSecondarySelectField(
	primaryFieldId,
	secondaryFieldId,
	secondaryFieldURLTemplate,
	secondaryValue // optional
) {
	if (!secondaryValue) {
		secondaryValue = getSelectFieldValue(secondaryFieldId);
	}
	var primaryValue = getSelectFieldValue(primaryFieldId);
	ajaxSetSelectOptions2(secondaryFieldId, secondaryFieldURLTemplate, primaryValue);
	setSelectedOption(secondaryFieldId, secondaryValue);
}

