// ----------------------------------------------------------------------------------
// metody pozwalające na wpisywanie do komponentu formularza
// pod warunkiem że ...

// dla text field (sprawdza checkbox)
function checkLockWithCheckbox(formName, checkBoxName, componentName) {
	checkBox = document.forms[formName][checkBoxName];
	component = document.forms[formName][componentName];
	if(!checkBox.checked) {
		component.blur();
		checkBox.focus();
	}
}

// dla text field (sprawdza combobox)
function checkLockWithCombobox1(formName, comboBoxName, accessValue, componentName) {
	comboBox = document.forms[formName][comboBoxName];
	component = document.forms[formName][componentName];
	if(!(comboBox.options[comboBox.selectedIndex].text == accessValue )) {
		component.blur();
		comboBox.focus();
	}
}

// dla text field (sprawdza combobox - wiele wartości)
function checkLockWithCombobox3(formName, comboBoxName, accessValue, componentName) {
	comboBox = document.forms[formName][comboBoxName];
	component = document.forms[formName][componentName];
	access = false;
	for (i = 0; i < accessValue.length; i++)
		if(comboBox.options[comboBox.selectedIndex].text == accessValue[i]) access = true;
	if (access == false) {
		component.blur();
		comboBox.focus();
	}
}

// dla combobox (sprawdza combobox)
function checkLockWithCombobox2(formName, comboBoxName, accessValue, componentName) {
	comboBox = document.forms[formName][comboBoxName];
	component = document.forms[formName][componentName];
	if(!(comboBox.options[comboBox.selectedIndex].text == accessValue )) {
		component.blur();
		comboBox.focus();
		for(i = 0 ;i < component.options.length; i++) component.options[i].selected = false;
		component.options.selectedIndex = -1;
	}
}

// ----------------------------------------------------------------------------------
// metody czyszczące elementy formularza pod warunkiem że ...

// czyści pole tekstowe (sprawdza checkbox)
function clearFieldWithCheck1(formName, checkBoxName, componentName) {
	checkBox = document.forms[formName][checkBoxName];
	component = document.forms[formName][componentName];
	if(!checkBox.checked) {
		component.value = "";
	}
}

// czyści pole tekstowe (sprawdza combobox)
function clearFieldWithCheck2(formName, comboBoxName, correctValue, componentName) {
	comboBox = document.forms[formName][comboBoxName];
	component = document.forms[formName][componentName];
	if(!(comboBox.options[comboBox.selectedIndex].text == correctValue )) {
		component.value = "";
	}
}

// czyści pole tekstowe (sprawdza combobox dla kilku wartości)
function clearFieldWithCheck3(formName, comboBoxName, correctValue, componentName) {
	comboBox = document.forms[formName][comboBoxName];
	component = document.forms[formName][componentName];
	clear = true;
	for (i = 0; i < correctValue.length; i++)
		if(comboBox.options[comboBox.selectedIndex].text == correctValue[i]) clear = false;
	if (clear == true) component.value = "";
}

// czyści combobox (sprawdza combobox)
function clearComboBoxWithCheck1(formName, comboBoxName, correctValue, componentName) {
	comboBox = document.forms[formName][comboBoxName];
	component = document.forms[formName][componentName];
	if(!(comboBox.options[comboBox.selectedIndex].text == correctValue )) {
		for(i = 0 ;i < component.options.length; i++) component.options[i].selected = false;
	}
}

// ----------------------------------------------------------------------------------
// metody kopiujące zawartość jednego pola do drugiego

// kopiuje zawartość pola źródło do pola przeznaczenie w zależności od ustawionego checkbox-u
function copyContentWithCheck(formName, checkBoxName, sourceComponent, destComponent) {
	source = document.forms[formName][sourceComponent];
	dest = document.forms[formName][destComponent];
	checkBox = document.forms[formName][checkBoxName];
	if(checkBox.checked) {
		dest.value = source.value;
	}
}

// kopiuje zawartość pola źródło do pola przeznaczenie
function copyContent(formName, sourceComponent, destComponent) {
	source = document.forms[formName][sourceComponent];
	dest = document.forms[formName][destComponent];
	if (dest != null) dest.value = source.value;
}

// ----------------------------------------------------------------------------------
// metody sprawdzające poprawność zawartości pól

// sprawdza pola w zależności od typu i ustawień flagi "wymagane"
function validateField(formName, fieldName, fieldLabel, fieldType, required) {
	allElements = document.forms[formName].elements;
	for(j = 0; j < allElements.length; j++) {
		oneEl = allElements[j];
		if (oneEl.name == fieldName) {
			field = oneEl;
			break;
		}
	}
	retVal = true;
	if (fieldType == "txt") {
		if( required == 1 && field.value.length == 0) {
			alert("Pole " + fieldLabel + " jest wymagane.");
			retVal = false;
		}
	}
	else if (fieldType == "numeric") {
		if( required == 1 && field.value.length == 0) {
			alert("Pole " + fieldLabel + " jest wymagane.");
			retVal = false;
		}
	}
	else if (fieldType == "date") {
		if( required == 1 && field.value.length == 0) {
			alert("Pole " + fieldLabel + " jest wymagane.");
			retVal = false;
		}
	}
	else if (fieldType == "time") {
		if( required == 1 && field.value.length == 0) {
			alert("Pole " + fieldLabel + " jest wymagane.");
			retVal = false;
		}
	}
	else if (fieldType == "list") {
		if( required == 1 && field.selectedIndex == -1) {
			alert("Należy wybrać jakiś element listy " + fieldLabel)
				retVal = false;
		}
	}
	return retVal;
}

// sprawdza pola o type w zależności od ustawień flagi "wymagane" i zawartości combobox-u
function validateFieldWithComboBoxCheck(formName, fieldName, comboBoxName, fieldLabel, fieldType, required, requiredWithValues) {
	comboBox = document.forms[formName][comboBoxName];
	retVal = true;
	requiredValue = false;
	for (i = 0; i < requiredWithValues.length; i++)
		if(comboBox.options[comboBox.selectedIndex].text == requiredWithValues[i]) requiredValue = true;
	if (requiredValue) retVal = validateField(formName, fieldName, fieldLabel, fieldType, required);
	return retVal;
}

// porównuje dwa pola liczbowe
function compareIntField(formName, fieldName1, fieldLabel1, compareSign, fieldName2, fieldLabel2) {
	field1 = document.forms[formName][fieldName1];
	field2 = document.forms[formName][fieldName2];
	if (compareSign == "<" &&
		parseInt(field1.value) < parseInt(field2.value)) return true;
	else
		alert("Wartość pola " + fieldLabel1 + " musi być mniejsza od wartości pola " + fieldLabel2);

	return false;
}

// sprawdza pole w zależności od typu, ustawień flagi "wymagane" oraz stanu checkbox-u
function conditionalValidateField(formName, fieldName, fieldLabel, fieldType, required, checkBoxName) {
	checkBox = document.forms[formName][checkBoxName];
	if (checkBox.checked) return validateField(formName, fieldName, fieldLabel, fieldType, required);
	return true;
}

// porównuje pola liczbowe w zależności od ustawionego checkbox-u
function conditionalCompareIntField(formName, fieldName1, fieldLabel1, compareSign, fieldName2, fieldLabel2,  checkBoxName) {
	checkBox = document.forms[formName][checkBoxName];
	if (checkBox.checked) return compareIntField(formName, fieldName1, fieldLabel1, compareSign, fieldName2, fieldLabel2);
	return true;
}

// sprawdza poprawność wartości pola liczbowego (całkowitego)
function checkIntField(formName, fieldName, fieldLabel, compareSign, value) {
	field = document.forms[formName][fieldName];
	if (compareSign == "<") {
		if (parseInt(field.value) < parseInt(value)) return true;
		else
			alert("Wartość pola " + fieldLabel + " musi być mniejsza niż " + value);
	}
	else if (compareSign == ">") {
		if (parseInt(field.value) > parseInt(value)) return true;
		else
			alert("Wartość pola " + fieldLabel + " musi być większa niż " + value);
	}
	else if (compareSign == ">=" || compareSign == "=>") {
		if (parseInt(field.value) >= parseInt(value)) return true;
		else
			alert("Wartość pola " + fieldLabel + " musi być większa lub równa liczbie " + value);
	}
	else if (compareSign == "<=" || compareSign == "=<") {
		if (parseInt(field.value) <= parseInt(value)) return true;
		else
			alert("Wartość pola " + fieldLabel + " musi być mniejsza lub równa liczbie " + value);
	}

	field.value = "";
	return false;
}

// sprawdza poprawność wartości pola liczbowego (zmiennoprzecikowego)
function checkDoubleField(formName, fieldName, fieldLabel, compareSign, value) {
	field = document.forms[formName][fieldName];
	if (compareSign == "<") {
		if (parseFloat(field.value) < parseDoble(value)) return true;
		else
			alert("Wartość pola " + fieldLabel + " musi być mniejsza niż " + value);
	}
	else if (compareSign == ">") {
		if (parseFloat(field.value) > parseFloat(value)) return true;
		else
			alert("Wartość pola " + fieldLabel + " musi być większa niż " + value);
	}
	else if (compareSign == ">=" || compareSign == "=>") {
		if (parseFloat(field.value) >= parseFloat(value)) return true;
		else
			alert("Wartość pola " + fieldLabel + " musi być większa lub równa liczbie " + value);
	}
	else if (compareSign == "<=" || compareSign == "=<") {
		if (parseFloat(field.value) <= parseFloat(value)) return true;
		else
			alert("Wartość pola " + fieldLabel + " musi być mniejsza lub równa liczbie " + value);
	}

	field.value = "";
	return false;
}

// sprawdza poprawność wartości pola liczbowego (całkowitego) w przedziale
function doubleCheckIntField(formName, fieldName, fieldLabel, compareSign1, value1, compareSign2, value2) {

	retVal = true;
	retVal = checkIntField(formName, fieldName, fieldLabel, compareSign1, value1);
	if (retVal == true)
		retVal = checkIntField(formName, fieldName, fieldLabel, compareSign2, value2);

	return retVal;
}

// sprawdza poprawność wartości pola liczbowego (zmiennoprzecinkowego) w przedziale
function doubleCheckDoubleField(formName, fieldName, fieldLabel, compareSign1, value1, compareSign2, value2) {

	retVal = true;
	retVal = checkDoubleField(formName, fieldName, fieldLabel, compareSign1, value1);
	if (retVal == true)
		retVal = checkDoubleField(formName, fieldName, fieldLabel, compareSign2, value2);

	return retVal;
}

// sprawdza pola w zależności od typu
function validateFieldOnLine(formName, fieldName, fieldType) {
	allElements = document.forms[formName].elements;
	for(j = 0; j < allElements.length; j++) {
		oneEl = allElements[j];
		if (oneEl.name == fieldName) {
			field = oneEl;
			break;
		}
	}
	var tableOfCorrectSign = new Array("1","2","3","4","5","6","7","8","9","0");
	if (fieldType == "price") {
		var coma = false;
		var afterComa = 0;
		var preLength = field.value.length;
		for (i = 0; i < field.value.length; i++) {
			var correct = false;
			for (j = 0; j < tableOfCorrectSign.length; j++)
				if (field.value.charAt(i) == tableOfCorrectSign[j]) correct = true;
			if (field.value.charAt(i) == "," && !coma) {
				correct = true;
				coma = true;
			}
			if (coma && correct) afterComa = afterComa + 1;
			if (!correct) {
				field.value = field.value.substring(0,i) + field.value.substring(i+1, field.value.length);
				i = i - 1;
			}
			if (afterComa == 3) {
				field.value = field.value.substring(0,i + 1);
				break;
			}
		}
		if (preLength > field.value.length)
			alert("Pole cena zostało zmodyfikowane.\nSprawdź poprawność wprowadzonej ceny.\n" +
				"Właściwy format 1234,00\nJeśli nie chcesz określić ceny wprowadź wartość 0.");
	}
	if (fieldType == "quantity") {
		var coma = false;
		var afterComa = 0;
		var preLength = field.value.length;
		for (i = 0; i < field.value.length; i++) {
			var correct = false;
			for (j = 0; j < tableOfCorrectSign.length; j++)
				if (field.value.charAt(i) == tableOfCorrectSign[j]) correct = true;
			if (field.value.charAt(i) == "," && !coma) {
				correct = true;
				coma = true;
			}
			if (coma && correct) afterComa = afterComa + 1;
			if (!correct) {
				field.value = field.value.substring(0,i) + field.value.substring(i+1, field.value.length);
				i = i - 1;
			}
			if (afterComa == 4) {
				field.value = field.value.substring(0,i + 1);
				break;
			}
		}
		if (preLength > field.value.length)
			alert("Pole ilość zostało zmodyfikowane.\nSprawdź poprawność wprowadzonej ilości.\n" +
				"Właściwy format to 1234,000\n.");
	}
}

// ----------------------------------------------------------------------------------
// inne metody

function selectAllInComboBoxWithCheck1(formName, comboBoxName, accessValue, componentName) {
	comboBox = document.forms[formName][comboBoxName];
	component = document.forms[formName][componentName];
	if(comboBox.options[comboBox.selectedIndex].text == accessValue )
		for(i = 0 ;i < component.options.length; i++) component.options[i].selected = true;
}

function setHiddenField(formName, fieldName, value) {
	field = document.forms[formName][fieldName];
	field.value = value;
}


function validateCBIfIsSelected(formName, comboBoxName, comboBoxLabel, checkedComboBox, value) {
	comboBox = document.forms[formName][checkedComboBox];
	retVal = true;
	if (comboBox) {
		if(comboBox.options[comboBox.selectedIndex].text == value )
			retVal = validateField(formName, comboBoxName, comboBoxLabel, 'list', 1) ;
	}
	else retVal = validateField(formName, comboBoxName, comboBoxLabel, 'list', 1) ;

	return retVal;
}

function validateTFIfIsSelected(formName, txtName, txtLabel, checkedComboBox, value) {
	comboBox = document.forms[formName][checkedComboBox];
	retVal = true;
	if (comboBox) {
		if(comboBox.options[comboBox.selectedIndex].text == value )
			retVal = validateField(formName, txtName, txtLabel, 'txt', 1) ;
	}
	else retVal = validateField(formName, txtName, txtLabel, 'txt', 1) ;

	return retVal;
}

/**
 * Dodane przez apl - sepecyficzna metoda potrzebna dla giełdy
 */
function getSelectedSelectCommaValue(formName, fromSelect) {
	fromObject = document.forms[formName][fromSelect];
	len        = fromObject.length;
	val        = "";
	for (i = 0; i < len; i++) {
		if (fromObject.options[i].selected == true) {
			if (val != "") val += ", ";
			val += fromObject.options[i].value;
		}
	}
	return val;
}

/**
 * Dodane przez apl - sepecyficzna metoda potrzebna dla giełdy
 */
function submitSelectedSelect(formName, fromSelect, toText) {
	toObject = document.forms[formName][toText];
	toObject.value = getSelectedSelectCommaValue(formName, fromSelect);
	return true;
}








// mla 070816
function exchangeAddRow(id, str_id, str_prov) {
	$('regions-' + id + '-add').toggle();
	var nid = parseInt(id) + 1;
	var options = '';

	var arr_id   = str_id.split("|");
	var arr_prov = str_prov.split("|");
	for (i=0; i< arr_id.length; i++) {
		options += '<option value="'+arr_id[i]+'">'+arr_prov[i]+'</option>';
	}

	var content = ''+
	'<div>'+
		'<select id="form-regions-'+nid+'" name="form[regions-'+nid+']">'+options+'</select> '+
		'miasto: <input size="16" id="form-place-'+nid+'" name="form[place-'+nid+']" value="" type="text"> '+
		'<img class="expand-close" src="/icons/spacer.gif" onclick="exchangeRemoveRow(this);"><br />'+
	'</div>'+
	'<span id="regions-'+nid+'-add" style="cursor: pointer;" onclick="exchangeAddRow('+nid+', \''+str_id+'\', \''+str_prov+'\');">dodaj kolejne miejsce</span>';
	new Insertion.After('regions-' + id + '-add', content);
}

function exchangeRemoveRow(value) {
	Element.remove(value.parentNode);
}
var exch_delivery = '';
function exchangeChangeBase(value, init, type) {
	// mla - 071130 - poprawki pod ie
	var delivery = $A($("form-delivery_type").childNodes);
	if (exch_delivery == '') exch_delivery = delivery;
	if ((delivery != exch_delivery) && (init != 1)) {
		delivery.each(function(el) {
			Element.remove(el);
		});
		var i = 0;
		exch_delivery.each(function(el) {
			var op = new Option(el.innerHTML, el.value, ((i == 0) ? true : false), false);
			$("form-delivery_type").options[i] = op;
			i++;
		});
	}

	var delivery = $A($("form-delivery_type").childNodes);
	if (value == 'franco') {
		Element.hide('loco');
		Element.show('franco');

		if (init != 1) $("form-delivery_type").value = 0;
	}
	else {
		Element.hide('franco');
		Element.show('loco');

		if (init != 1) $("form-delivery_type").value = 0;
	}
	Element.show(delivery[1]);
	Element.show(delivery[2]);
	Element.show(delivery[3]);
	Element.show(delivery[4]);
	Element.show(delivery[5]);
	Element.show(delivery[6]);
	Element.show(delivery[7]);
	Element.show(delivery[8]);
}

var exch_articles = '';
var exch_qualities = '';
function exchangeChangeCategory(value, init) {
	// mla - 071130 - poprawki pod ie
	// zapamietuje poczatkowe ustawienia artykulow
	var articles = $A($("form-article").childNodes);
	if (exch_articles == '') exch_articles = articles;
	// jezeli articles != exch_articles to kasuje articles i zastepuje je przez exch_articles
	if ((articles != exch_articles) && (init != 1)) {
		articles.each(function(article) {
			Element.remove(article);
		});
		var i = 0;
		exch_articles.each(function(article) {
			var op = new Option(article.innerHTML, article.value, ((i == 0) ? true : false), false);
			$("form-article").options[i] = op;
			$("form-article").options[i].setAttribute('parent', article.getAttribute('parent'));
			i++;
		});
	}
	// zapamietuje poczatkowe ustawienia jakosci
	var qualities = $A($("form-qualities").childNodes);
	if (exch_qualities == '') exch_qualities = qualities;
	// jezeli qualities != exch_qualities to kasuje qualities i zastepuje je przez exch_qualities
	if ((qualities != exch_qualities) && (init != 1)) {
		qualities.each(function(quality) {
			Element.remove(quality);
		});
		var i = 0;
		exch_qualities.each(function(quality) {
			var op = new Option(quality.innerHTML, quality.value, ((i == 0) ? true : false), false);
			$("form-qualities").options[i] = op;
			$("form-qualities").options[i].setAttribute('parent', quality.getAttribute('parent'));
			i++;
		});
	}

	var articles = $A($("form-article").childNodes);
	articles.each(function(article) {
		if (article.getAttribute('parent') != null) {
			if ((article.getAttribute('parent') == value) || (article.value == 0)) Element.show(article);
			else Element.remove(article);
		}
	});
	if (init != 1) $("form-article").value = 0;

	var qualities = $A($("form-qualities").childNodes);
	qualities.each(function(quality) {
		if (quality.getAttribute('parent') != null) {
			if ((quality.getAttribute('parent') == value) || (quality.value == 0)) Element.show(quality);
			else Element.remove(quality);
		}
	});
	if (init != 1) $("form-qualities").value = 0;

}

function exchangeChangeArticle(value) {
}

function exchangeChangeQuality(value) {
}

function exchangeInitForm(type) {
	if ($("form-category")) exchangeChangeCategory($("form-category").value, 1);
	exchangeChangeBase($("form-price_base").value, 1, type);
}

/* for epebk */

var exch_bk = '';
function changeDistrict(value, slave) {
	var items = $A($(slave).childNodes);

	if (exch_bk == '') exch_bk = items;

	if (items != exch_bk) {
		items.each(function(item) {
			Element.remove(item);
		});
		var i = 0;
		exch_bk.each(function(item) {
			var op = new Option(item.innerHTML, item.value, ((i == 0) ? true : false), false);
			$(slave).options[i] = op;
			$(slave).options[i].setAttribute('parent', item.getAttribute('parent'));
			i++;
		});
	}

	items = $A($(slave).childNodes);
	items.each(function(item) {
		if (item.getAttribute('parent') != null) {
			if ((item.getAttribute('parent') == value) || (item.value == 0)) Element.show(item);
			else {
				Element.remove(item);
			}
		}
	});
	$(slave).value = 0;
}

function collapseExpand(pos) {
	if (Element.hasClassName('collapse-' + pos, 'collapse-down')) {
		Element.removeClassName('collapse-' + pos, 'collapse-down');
		Element.addClassName('collapse-' + pos, 'collapse-up');
	}
	else if (Element.hasClassName('collapse-' + pos, 'collapse-up')) {
		Element.removeClassName('collapse-' + pos, 'collapse-up');
		Element.addClassName('collapse-' + pos, 'collapse-down');
	}
	collapseElement('collapse-body-' + pos);
}

function collapseElement(elem) {
	if ($(elem).visible()) {
		$(elem).style.display = "none";
	}
	else {
		$(elem).style.display = "block";
	}
}

function checkProducts(id) {
	var inputs = $('collapse-body-'+id).getElementsByTagName('input');
	if (Element.hasClassName('status-'+id, 'checked')) {
		for (var i = 0; i < inputs.length; i++) {
			inputs[i].checked = false;
		}
		Element.removeClassName('status-'+id, 'checked');
	}
	else {
		for (var i = 0; i < inputs.length; i++) {
			inputs[i].checked = true;
		}
		Element.addClassName('status-'+id, 'checked');
	}
	CheckProductsCount(id);
}

function CheckProductsCount(id) {
	var total = 0;
	var all_perm = 0;
	content = 'collapse-body-'+id;
	checkbox = $(content).childNodes;
	for (var i=0; i < checkbox.length; i++) {
		if (checkbox[i].type == 'checkbox') {
			if (eval(checkbox[i].checked) == true) {
				total += 1;
			}
			all_perm += 1;
		}
	}
	$('count-' + id).innerHTML = '(' + total + '/' + all_perm+')'; //update licznika
	if (total == all_perm) {
		Element.addClassName('status-'+id, 'checked');
	}
	else {
		Element.removeClassName('status-'+id, 'checked');
	}
}

