﻿////////////////////////////////////////////////////////////////////////////////
// CountryComboBox DoubleComboxBox.js
////////////////////////////////////////////////////////////////////////////////

function DoubleComboBox(masterId, slaveId, url, options)
{
    this.master = document.getElementById(masterId); // 첫번째 콤보박스
    this.slave = document.getElementById(slaveId); // 두번째 콤보박스
    this.options = options; // 옵션으로 들어갈 추가 사항들을 가지고 있는 객체이다.
    this.ajaxHelper = new AjaxHelper.ContentLoader(this, url, "POST", options.requestParameters || []);   
    
    // 컴보박스의 onchange 이벤트시 호출될 함수를 셋팅한다.
    //var oThis = this;
    //oThis.master.onchange = function(){oThis.masterComboChanged();};
    
    
}

// DoubleComboBox 의 함수들을 정의한다
DoubleComboBox.prototype = {
    
       
    masterComboChanged: function()
    {
        var query = this.master.options[this.master.selectedIndex].value;
        this.ajaxHelper.sendRequest('selval=' + query);
    },
    
    ajaxUpdate: function(request) // AjaxHelper를 사용하는 모든 Component는 필히 이 함수를 가진다 
    {
        var slaveOptions = this.createOptions(request.responseXML.documentElement);
        this.slave.length = 0;
        var optionsObj = this.slave.options;
        for( var i = 0; i < slaveOptions.length; i++)
        {
            optionsObj.add(slaveOptions[i]);
        }
    },
    
    createOptions: function(ajaxResponse)
    {
        var newOptions = [];
        var entries = ajaxResponse.getElementsByTagName('entry');
       
        for(var i = 0; i < entries.length; i++)
        {
            var text = this.getElementContent(entries[i],'optionText');
            var value = this.getElementContent(entries[i],'optionValue');
            newOptions.push(new Option(text,value));
        }
        
        return newOptions;
    },
    
    handleError: function(request) // AjaxHelper를 사용하는 모든 Component는 필히 이 함수를 가진다
    {
        if(this.options.errorHandler)
        {
            this.options.errorHandler(request);
        }
    },
    
    getElementContent: function(element,tagName)
    {
        var childElement = element.getElementsByTagName(tagName)[0];
        
        return (childElement.text != undefined ? childElement.text : childElement.textContent);
    }
};

function receiveXMLDataFromServer(masterControl, childControl, ajaxHostURL, method)
{
    var loadingOptions = new Object();
    var methodOption = "method=" + method;
    
    loadingOptions.requestParamaters = [methodOption];
    
    var dblComboBox = new DoubleComboBox(masterControl, childControl, ajaxHostURL, methodOption);
    dblComboBox.masterComboChanged();
}
// 선택된 값은 Form["selval"] 로 넘어간다








