/**********************************************************************
*
* Jacek Smyda (C) 2001-2006
*
* First item of select is '--------'
*
***********************************************************************/

function getFormObj(formName, fieldName) {
	return document.forms[formName]["form["+fieldName+"]"];
}

function check_selection(formName,checkName,itemName) {
	checkObj = document.forms[formName][checkName];
	for (var i = 0; i < document.forms[formName].elements.length; i++) {
		obj = document.forms[formName].elements[i];
		if ((obj.type == 'checkbox') && (obj.name.indexOf(itemName, 0) > 0)) {
			obj.checked = checkObj.checked;
		}
	}
}

function moveSelectItems(formName, fromSelect, toSelect) {
	if (!(fromObject = getFormObj(formName, fromSelect)) || !(toObject = getFormObj(formName, toSelect))) return;
	len = fromObject.length;
	if (len > 1) {
		remArray = new Array();
		idxArray = 0;
		for (i = 1; i < len; i++) {
			optionObject = fromObject.options[i];
			if (optionObject.selected) {
				oText  = optionObject.text;
				oValue = optionObject.value;
				max    = toObject.length;
				toObject.options[max] = new Option(oText, oValue, 0, 0);
				remArray[idxArray++]  = i;
			}
		}
		for (i = 0; i < remArray.length; i++) {
			idxItem = remArray[i] - i;
			fromObject.options[idxItem] = null;
		}
		fromObject.selectedIndex = -1;
	}
}

function moveSelectAll(formName, fromSelect, toSelect) {
	if (!(fromObject = getFormObj(formName, fromSelect)) || !(toObject = getFormObj(formName, toSelect))) return;
	len = fromObject.length;
	if (len > 1) {
		for (i = 1; i < len; i++) {
			oText  = fromObject.options[1].text;
			oValue = fromObject.options[1].value;
			fromObject.options[1] = null;
			toObject.options[toObject.length] = new Option(oText, oValue, 0, 0);
		}
		fromObject.selectedIndex = -1;
	}
}

function moveInputToSelect(formName, fromInput, toSelect) {
	if (!(fromObject = getFormObj(formName, fromInput)) || !(toObject = getFormObj(formName, toSelect))) return;
	len    = toObject.length;
	oValue = fromObject.value;
	toObject.options[len] = new Option(oValue, oValue, 0, 0);
}

function moveSelectUp(formName, selectName) {
	if (!(fromObject = getFormObj(formName, selectName))) return;
	len = fromObject.length;
	if (len > 2) {
		for (i = 2; i < len; i++) {
			optionObject = fromObject.options[i];
			if (optionObject.selected) {
				oText     = optionObject.text;
				oValue    = optionObject.value;
				fromObject.options[i].text     = fromObject.options[i - 1].text;
				fromObject.options[i].value    = fromObject.options[i - 1].value;
				fromObject.options[i].selected = false;
				fromObject.options[i - 1].text     = oText;
				fromObject.options[i - 1].value    = oValue;
				fromObject.options[i - 1].selected = true;
			}
		}
	}	
}

function moveSelectDown(formName, selectName) {
	if (!(fromObject = getFormObj(formName, selectName))) return;
	len = fromObject.length;
	if (len > 2) {
		for (i = (len - 2); i > 0 ; i--) {
			optionObject = fromObject.options[i];
			if (optionObject.selected) {
				oText     = optionObject.text;
				oValue    = optionObject.value;
				fromObject.options[i].text     = fromObject.options[i + 1].text;
				fromObject.options[i].value    = fromObject.options[i + 1].value;
				fromObject.options[i].selected = false;
				fromObject.options[i + 1].text     = oText;
				fromObject.options[i + 1].value    = oValue;
				fromObject.options[i + 1].selected = true;
			}
		}
	}	
}

function removeSelectItems(formName, fromSelect) {
	if (!(fromObject = getFormObj(formName, fromSelect))) return;
	len = fromObject.length;
	if (len > 1) {
		remArray = new Array();
		idxArray = 0;
		for (i = 1; i < len; i++) {
			optionObject = fromObject.options[i];
			if (optionObject.selected) {
				remArray[idxArray++]  = i;
			}
		}
		for (i = 0; i < remArray.length; i++) {
			idxItem = remArray[i] - i;
			fromObject.options[idxItem] = null;
		}
		fromObject.selectedIndex = -1;
	}
}

function clearSelect(formName, fromSelect) {
	if (!(fromObject = getFormObj(formName, fromSelect))) return;
	len = fromObject.length;
	for (i = 1; i < len; i++) {
		fromObject.options[1] = null;
		fromObject.selectedIndex = -1;
	}
}

function getSelectCommaValue(formName, fromSelect) {
	if (!(fromObject = getFormObj(formName, fromSelect))) return;
	len = fromObject.length;
	val = "";
	for (i = 1; i < len; i++) {
		if (i != 1) { val += ","; }
		val += fromObject.options[i].value;
	}
	return val;
}

function submitSelect(formName, fromSelect, toText) {
	if (obj = getFormObj(formName, toText)) {
		obj.value = getSelectCommaValue(formName, fromSelect);
	}
	return true;
}

function insertValueToSelect(formName, toSelect, itemId, itemValue) {
	if (this.forms.length > 0) {
		toObject = this.forms[formName]["form[" + toSelect + "]"];
		if (toObject) {
			max = toObject.length;
			toObject.options[max] = new Option(itemValue, itemId, 0, 0);
		}
	}
}

function insertValueToHidden(formName, toInput, itemValue) {
	if (this.forms.length > 0) {
		toObject = this.forms[formName]["form[" + toInput + "]"];
		if (toObject) {
			toObject.value = itemValue;
		}
	}
}

function hiddenOptionsByText(srchText, nodeId, beginSearch) {
	var nodes = $A($(nodeId).getElementsByTagName('option'));
	var selected = false;
	nodes.each(
		function(node) {
			var style = 'block';
			if (srchText.length > 0) {
				inner = node.innerHTML.toLowerCase();
				inner = inner.substr(inner.indexOf('- ') + 2);
				if (beginSearch) {
					if (inner.indexOf(srchText.toLowerCase()) != 0) {
						style = 'none';
					}
				}
				else {
					if (inner.indexOf(srchText.toLowerCase()) < 0) {
						style = 'none';
					}
				}
				if (style == 'block' && !selected) {
					node.selected = true;
					selected = true;
				}
			}
			node.style.display = style;
		}
	);
}

function autocompleteSelectInit(sE, tE, cE, I) {
	sE.op = [];
	sE.tE = tE;
	tE.sE = sE;
	tE.cE = cE;
	for (var i = 0; i < sE.options.length; i++) {
		sE.op[sE.op.length] = { t: sE.options[i].text, v: sE.options[i].value };
	}
	tE.onkeyup = function() {
		var o, r = new RegExp((this.cE.checked ? '^' : '') + this.value, 'i');
		with (o = this.sE.options) {
			length = 0;
			for (var i = 0; i < this.sE.op.length; i++) {
				inner = this.sE.op[i].t;
				inner = inner.substr(inner.indexOf('- ') + 2);
				if (r.test(inner)) {
					with (o[length++]) {
						text  = this.sE.op[i].t;
						value = this.sE.op[i].v;
					}
				}
			}
		}
	}
	tE.onfocus = function() { this.sE.style.display = 'inline'; }
	sE.onchange = function() {
		var inner = this.options[this.selectedIndex].text;
		this.tE.value = inner.substr(inner.indexOf('- ') + 2);
		I.value = this.options[this.selectedIndex].value;
		this.style.display = 'none';
	}
}

function clearField(formName, fieldName) {
	getFormObj(formName, fieldName + "_name").value = "";
}

function clearChooseField(formName, fieldName) {
	getFormObj(formName, fieldName).value = 0;
	getFormObj(formName, fieldName + "_name").value = "";
}

function openRemote(params) {
    window.open(params, 'popup', 'directories=no,location=no,menubar=no,resizable=yes,scrollbars=yes,status=no,toolbar=no,width=400,height=400');
}

function openRemoteCheck(formName, fieldName, params, alertText) {
    checkObj = getFormObj(formName, fieldName);
    if (checkObj.value && checkObj.value > 0) {
        openRemote(params + "&depfld=" + checkObj.value);
    } else {
        alert(alertText);
        getFormObj(formName, fieldName + "_name").focus();
    }
}

/*
** Wybrane funkcje są dodane do obiektu document
*/
document.insertToSelect = insertValueToSelect;
document.insertToHidden = insertValueToHidden;

