dom = (document.getElementById)? true : false;
ie4 = (document.all && !dom)? true : false;

function ableBtn(btnId, status) {
if (dom)document.getElementById(btnId).disabled = status;
else if (ie4) document.all[btnId].disabled = status;
}
/*
function checkAll(elemName) {
chooserForm = document.forms['chooser'];
for (i = 0; i < chooserForm.elements.length; i++) {
if (chooserForm.elements[i].name == elemName) {
if (!chooserForm.elements[i].checked) checks++;
chooserForm.elements[i].checked = true;
}
}
checkForSubmitAvail();
}

function unCheckAll(elemName) {
chooserForm = document.forms['chooser'];
for (i = 0; i < chooserForm.elements.length; i++) {
if (chooserForm.elements[i].name == elemName) {
chooserForm.elements[i].checked = false;
}
}
checks = 0;
checkForSubmitAvail();
}
*/
function field(id, name, chosen, show) {
this.id = id;
this.name = name;
this.chosen = chosen;
this.show = show;
return this;
}
chosenFields = new Array();
searchResults = false;
// chooserForm = document.forms['chooser'];

function removeChosen(num,listId,slistId) {
var tempChosen = new Array();
for (m = 0; m < chosenFields.length; m++) {
if (chosenFields[m] != num) tempChosen[tempChosen.length] = chosenFields[m];
}
// alert(value + " - " + tempChosen.length);
chosenFields.length = 0;
chosenFields = tempChosen;
selectSec(listId,slistId);
}

function selectSec(listId,slistId) {
	var frm = document.getElementById(listId);
	var frms = document.getElementById(slistId);
for (i = 0; i < frms.options.length; i++) {
	frms.options[i].selected = true;
	
	}
}

function selectField(id) {
for (k = 0; k < allFields.length; k++) {
if (allFields[k].id == id && chosenFields.length < 26) {
allFields[k].chosen = true;
chosenFields[chosenFields.length] = k;
return;
}
}
}

function deselectField(id,listId,slistId) {
for (k = 0; k < allFields.length; k++) {
if (allFields[k].id == id) {
allFields[k].chosen = false;
removeChosen(k,listId,slistId);
return;
}
}
}

function showField(id) {
for (k = 0; k < allFields.length; k++) {
if (allFields[k].id == id) {
allFields[k].show = true;
return;
}
}
}

function hideField(id) {
for (k = 0; k < allFields.length; k++) {
if (allFields[k].id == id) {
allFields[k].show = false;
return;
}
}
}

function rebuildPanes(listId,slistId) {
	var frm = document.getElementById(listId);
	var frms = document.getElementById(slistId);
	var pfield = document.getElementById('parent_'+listId);
	pfield.value = '';
if (chosenFields.length != lastChosenNo) {
if (chosenFields.length == 0) {
frms.options[0] = new Option('ничего не выбрано', '');
frms.options.length = 1;
ableBtn('removeBtn', true);
} else {
for (j = 0; j < chosenFields.length; j++) {
frms.options[j] = new Option(allFields[chosenFields[j]].name, allFields[chosenFields[j]].id);
pfield.value += allFields[chosenFields[j]].id+',';
}
frms.options.length = chosenFields.length;
ableBtn('removeBtn', false);
}
lastChosenNo = chosenFields.length;

}


frm.options.length = 1;
if (allFields.length == chosenFields.length) {
frm.options[0] = new Option('выбрано все', '');
ableBtn('addBtn', true);
} else {
var isFirst = true;
for (j = 0; j < allFields.length; j++) {
if (!allFields[j].chosen && allFields[j].show) {

if (isFirst) {
frm.options[0] = new Option(allFields[j].name, allFields[j].id);
isFirst = false;
} else {
frm.options[frm.options.length] =
new Option(allFields[j].name, allFields[j].id);
}
}
}
if (isFirst) {
frm.options[0] = new Option('нет совпадений', '');
ableBtn('addBtn', true);
} else {
if (chosenFields.length == 25) ableBtn('addBtn', true);
else ableBtn('addBtn', false);
}
}
checkForSubmitAvail(listId,slistId);
}

function addField(listId,slistId) {
	var frm = document.getElementById(listId);
for (i = 0; i < frm.options.length; i++) {
if (frm.options[i].selected) selectField(frm.options[i].value);
}
rebuildPanes(listId,slistId);
selectSec(listId,slistId);
}
function removeField(listId,slistId) {
	var frm = document.getElementById(slistId);
for (i = 0; i < frm.options.length; i++) {
if (frm.options[i].selected) deselectField(frm.options[i].value,listId,slistId);
}
rebuildPanes(listId,slistId);
selectSec(listId,slistId);
}

function searchForField(listId,slistId) {
	var lst = document.getELementById(listId);
	var srchText = "";
for (i = 0; i < allFields.length; i++) {
if (srchText != "") {
var currSecurity = allFields[i].name.toLowerCase();
if (currSecurity.indexOf(srchText.toLowerCase()) == -1) hideField(allFields[i].id);
else showField(allFields[i].id);
searchResults = true;
} else {
if (!allFields[i].chosen) showField(allFields[i].id);
searchResults = false;
}
}
rebuildPanes(listId,slistId);
}
checks = 0;
function checkClicked(checked) {
if (checked) checks++;
else checks--;
checkForSubmitAvail(listId,slistId);
}

function checkForSubmitAvail(listId,slistId) {
	/*
if ( document.getElementById(slistId).options.length > 0) {
ableBtn('submitBtn', false);
} else {
ableBtn('submitBtn', true);
}
*/
}

function buildPanes(listId,slistId)
{
	var exs = document.getElementById(slistId);
	var def = document.getElementById(listId);
	
	exs.options.length = cfFields.length;
	def.options.length = allFields.length;

	for (i = 0; i < allFields.length; i++)
	{
		def.options[i] = new Option(allFields[i].name,allFields[i].id);
		k = i;
		for (j = 0; j < cfFields.length; j++)
		{		
			if (allFields[i].id == cfFields[j].id)
			{
				def.options[i].selected = true;
				addField();
			}
		}
		i = k;	
	}
	rebuildPanes(listId,slistId);
}