var d = document;

function clistSelectViewHide(id) {
var div = $('div_clist_select_'+id);
div.style.display = div.style.display=='none'?'block':'none';
}

function initItems(id) {
	var data = trim($('clist'+id).value.split('-')[1]);
	var sel = $('Select_'+id+'_2');
	for(i=0;i<sel.options.length;i++) {
		if(data == trim(sel.options[i].value)) {
			sel.options[i].defaultSelected = true;
			sel.options[i].selected = true;
		}
	}
}

function initCats(id) {
	var data = $('clist'+id).value.split('-');
	var sel = $('Select_'+id+'_1');
	for(i=0;i<sel.options.length;i++) {
		if(trim(data[0]) == trim(sel.options[i].value)) {
			sel.options[i].defaultSelected = true;
			sel.options[i].selected = true;
		}
	}
}

function changeItems(sel,id) {
	var data = $('clist'+id).value.split('-');
	$('clist'+id).value = trim(data[0]) + ' - ' + trim(sel.value);
}

function changeCat(sel,id){
	var data = $('clist'+id).value.split('-');
	if(data.length > 1) {
		$('clist'+id).value = trim(sel.value) + ' - ' + trim(data[1]);
	} else {
		$('clist'+id).value = trim(sel.value) + ' - ';
	}
}

function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
	if(!str) return '';
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
	if(!str) return '';
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function viewCListEditor(id) {
	id = parseInt(id);
	var title = $('itemName'+id).value;
	if(title.length == 0) {
		alert('Необходимо указать название для связанного списка.');
		$('itemName'+id).focus();
		return false;
	}
	var rDiv = d.createElement('DIV');
	rDiv.innerHTML = $('hiddenspace').innerHTML;
	$('hiddenspace').innerHTML = $('workspace').innerHTML;
	$('workspace').innerHTML = rDiv.innerHTML;
	$('curCListEditorTitle').value = title;
	$('editorCListTitle').innerHTML = "Связанный список <b>\""+title+"\"</b><br/>";
	$('curCListEditor').value = id;
	$('editorCListTree').innerHTML = '';
	var clist = $('clist'+id).value;
	if(clist.length == 0) {

	} else {
		parseCListEditorFromStr(clist);
	}
}

function parseCListEditorFromStr(str) {
	str = str.substring(1,str.length-1);
	var items = null;
	var items_vals = null;
	var cats = str.split('],[');
	var out = '';
	for(i=1;i<=cats.length;i++) {
		items = cats[i-1].split(':');
		out += "<div id='treeCListCat_"+i+"'><input type='button' value='-' onclick='delCatCListEditor("+i+");return false;'/>";
		out += "&nbsp;<b>"+i+"</b>.&nbsp;<input type='text' value='"+items[0]+"' size='25' id='treeCListCatName_"+i+"'/>&nbsp;";
		out += "<input type='button' value='+' onclick='addItemCListEditor("+i+");return false;'/>&nbsp;&nbsp;";
		out += "<a href='javascript:void(0);' onclick='viewCListEditorItems("+i+");return false;'>Развернуть/Свернуть</a>";
		out += "<br/><br/><div id='treeCListCatItems_"+i+"' style='display:none;'>";
		items_vals = items[1].split(',');
		for(j=0;j<items_vals.length;j++){
			if(items_vals[j].length) {
				out += "<div id='treeCListCatItems_"+i+"_"+(j+1)+"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
				out += "<b>"+i+"."+(j+1)+".</b>&nbsp;<input type='text' size='25' id='treeCListItemsName_"+i+"_"+(j+1)+"' value='"+items_vals[j]+"'/>&nbsp;";
				out += "<input type='button' value='-' onclick='delItemCListEditor("+i+","+(j+1)+");return false;'/><br/><br/>";
				out += "</div>";
			}
		}
		out += "</div></div>";
	}
	$('editorCListTree').innerHTML = out;
}

function cancelCListEditor() {
	var rDiv = d.createElement('DIV');
	rDiv.innerHTML = $('hiddenspace').innerHTML;
	$('hiddenspace').innerHTML = $('workspace').innerHTML;
	$('workspace').innerHTML = rDiv.innerHTML;
	$('selectDataType_'+$('curCListEditor').value).value = 'txt_clist';
	$('itemName'+$('curCListEditor').value).value = $('curCListEditorTitle').value;
}

function viewCListEditorItems(id) {
var div = $('treeCListCatItems_'+id);
div.style.display = div.style.display=='none'?'block':'none';
}

function addCatCListEditor() {
	var treeCList = $('editorCListTree');
	var lastCat = treeCList.lastChild;
	var nextCatId = null;
	if(lastCat) {
		var myRegExp = new RegExp(/treeCListCat_(\d+)$/);
		nextCatId = 1 + parseInt(myRegExp.exec(lastCat.getAttribute('id'))[1]);
	} else {
		nextCatId = 1;
	}
	var nextCat = d.createElement('DIV');
	nextCat.setAttribute('id','treeCListCat_'+nextCatId);
	nextCat.innerHTML = "<input type='button' value='-' onclick='delCatCListEditor("+nextCatId+");return false;'/>&nbsp;";
	nextCat.innerHTML += "<b>"+nextCatId+".</b>&nbsp;";
	nextCat.innerHTML += "<input type='text' size='25' id='treeCListCatName_"+nextCatId+"' value =''/>&nbsp;";
	nextCat.innerHTML += "<input type='button' value='+' onclick='addItemCListEditor("+nextCatId+");return false;'/>&nbsp;&nbsp;";
	nextCat.innerHTML += "<a href='javascript:void(0);' onclick='viewCListEditorItems("+nextCatId+");return false;'>Развернуть/Свернуть</a>";
	nextCat.innerHTML += "<br/><br/><div id='treeCListCatItems_"+nextCatId+"' style='display:none;'></div>";
	treeCList.appendChild(nextCat);
}

function delCatCListEditor(id) {
	id = parseInt(id);
	var treeCList = $('editorCListTree');
	var delCat = $('treeCListCat_'+id);
	treeCList.removeChild(delCat);
}

function addItemCListEditor(id) {
	id = parseInt(id);
	var treeCListCatItems = $('treeCListCatItems_'+id);
	var lastItem = treeCListCatItems.lastChild;
	var nextItemId = null;
	if(lastItem) {
		var myRegExp = new RegExp(/treeCListCatItems_\d+_(\d+)$/);
		nextItemId = 1 + parseInt(myRegExp.exec(lastItem.getAttribute('id'))[1]);
	} else {
		nextItemId = 1;
	}
	var nextItem = d.createElement('DIV');
	nextItem.setAttribute('id','treeCListCatItems_'+id+'_'+nextItemId);
	nextItem.innerHTML = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>"+id+"."+nextItemId+".</b>&nbsp;";
	nextItem.innerHTML += "<input type='text' size='25' id='treeCListItemsName_"+id+"_"+nextItemId+"' value=''/>&nbsp;";
	nextItem.innerHTML += "<input type='button' value='-' onclick='delItemCListEditor("+id+","+nextItemId+");return false;'/>";
	nextItem.innerHTML += "<br/><br/>";
	treeCListCatItems.appendChild(nextItem);
}

function delItemCListEditor(catId,id) {
	catId = parseInt(catId);
	id = parseInt(id);
	var treeCListCat = $('treeCListCatItems_'+catId);
	var delItem = $('treeCListCatItems_'+catId+'_'+id);
	treeCListCat.removeChild(delItem);
}

function saveCListEditor() {
	var curCListId = $('curCListEditor').value;
	var treeCList = $('editorCListTree');
	var treeCListCatItems=null, catId=null, itemId=null;
	var out='', cat='', item='';
	var myCatRegExp = new RegExp(/treeCListCat\_(\d+)$/);
	var myItemsRegExp = new RegExp(/treeCListCatItems\_\d+\_(\d+)$/);
	if(treeCList) {
		var treeCListCats = treeCList.childNodes;
		if(treeCListCats && treeCListCats.length) {
			for(i=0;i<treeCListCats.length;i++) {
				catId = parseInt(myCatRegExp.exec(treeCListCats[i].id)[1]);
				cat = $('treeCListCatName_'+catId).value;
				if(cat.length > 0){
					out += '['+cat+':';
						treeCListCatItems = $('treeCListCatItems_'+catId).childNodes;
						if(treeCListCatItems && treeCListCatItems.length > 0) {
							for(j=0;j<treeCListCatItems.length;j++) {
								itemId = parseInt(myItemsRegExp.exec(treeCListCatItems[j].id)[1]);
								item = $('treeCListItemsName_'+catId+'_'+itemId).value;
								if(item.length > 0) {
									out += item+',';
								}
							}
						}
						if(out.substring(out.length-1)==',') {
							out = out.substring(0,out.length-1);
						}
					out += '],';
				}
			}
		}
	}
	out = out.substring(0,out.length-1);
	$('clist'+curCListId).value = out;
	var rDiv = d.createElement('DIV');
	rDiv.innerHTML = $('hiddenspace').innerHTML;
	$('hiddenspace').innerHTML = $('workspace').innerHTML;
	$('workspace').innerHTML = rDiv.innerHTML;
	$('selectDataType_'+curCListId).value = 'txt_clist';
	$('itemName'+curCListId).value = $('curCListEditorTitle').value;
}