/*
* function Name:
* ListData_chk
*
* Description:
* 두 SELECT Element (dblist_all & dblist_dir)의 item을 교환할 수 있는 스크립트
* Parameter:
* mode: add와 del을 주어서 두 SELECT Element간의 이동 방향을 명시함.
* add: ←로 데이터 이동
* del: →로 데이터 이동
*
* Event:
* onClick = "ListData_chk('add')" & onClick = "ListData_chk('del')"
*
* Useful:
* 리스트박스(SELECT Element)는 2개이며 둘 다 다중선택(multiple)을 지원한다.
* 따라서 HTML소스는 다음의 형태를 취한다.
* <tr>
* <td><select name="dblist_all" size="10" multiple>...</select></td>
* <td><a href=# onClick = "ListData_chk('add')">←</a><br>
* <a href=# onClick = "ListData_chk('del')">→</a></td>
* <td><select name="dblist_dir" size="10" multiple>...</select></td>
* </tr>
*
* Bug report:
* 2005.08.30:
* 새로운 노드의 생성까지 만들어놓았으나 현재 병합하지 않음.
* (블로그 포스트 http://blog.naver.com/jujac/20015976816 참고)
*/
function ListData_chk(mode) {
var total = MM_findObj('lbl_totaldb_all');
var aryTempSourceOptions = new Array();
var aryTempRecOptions = new Array();
var x=0, y=0;
if(mode=="add") {
var odb = document.oform2['dblist_all'];
var viewdb = document.oform2['dblist_dir'];
} else {
var odb = document.oform2['dblist_dir'];
var viewdb = document.oform2['dblist_all'];
}
if(odb.selectedIndex == -1) {
alert("DB를 선택하지 않았습니다.");
return false;
}
for(var i = 0; i < odb.length; i++) {
var objTargetValues = new Object();
objTargetValues.text = odb.options[i].text;
objTargetValues.value = odb.options[i].value;
if(odb.options[i].selected) {
aryTempSourceOptions[x++] = objTargetValues;
} else {
aryTempRecOptions[y++] = objTargetValues;
}
}
if(x) {
if(viewdb.length) vsize = (viewdb.options[0].text)? viewdb.length : 0;
else vsize = viewdb.length;
asize = aryTempSourceOptions.length;
viewdb.length = vsize + aryTempSourceOptions.length;
for (var i=0; i<vsize; i++) {
viewdb.options[i].selected = false;
}
for (var i=vsize, j=0; i<viewdb.length; i++, j++) {
viewdb.options[i].text = aryTempSourceOptions[j].text;
viewdb.options[i].value = aryTempSourceOptions[j].value;
viewdb.options[i].selected = false;
}
odb.length = aryTempRecOptions.length;
for (var i = 0; i <odb.length; i++) {
odb.options[i].text = aryTempRecOptions[i].text;
odb.options[i].value = aryTempRecOptions[i].value;
odb.options[i].selected = false;
}
total.innerHTML = "Total: " + viewdb.length;
}
viewdb.options[viewdb.length-1].selected = true;
}