if(typeof(_sysAjax)=="undefined")alert("_sysAjax is not defined!!");
function ETSOOAddress(sBaseCountry,sBaseProvice,sBaseCity,sBaseDistrict,sLanguage)
{
    if(sLanguage==null)sLanguage=_sysAjax.language;
    
    this.country=sBaseCountry||"";
    this.province=sBaseProvice||"";
    this.city=sBaseCity||"";
    this.district=sBaseDistrict||"";
    this.language=sLanguage;
    this.valueField="Name";
    this.namePart="";
    this.seperator="-";
}
ETSOOAddress.prototype.setupSimple=function(oContainer,sField)
{
    oContainer.innerHTML='<select name="'+sField+this.namePart+'" size="1"></select>';
    var oS=oContainer.firstChild;
    var sPath=_sysDom.getPath("/Address.js",null,self);
    var sXml=sPath+"/AddressList.asp?Field="+sField;
    if(sField=="Country")sXml+="&OrderField="+(this.language=="zh-cn"?"CNName":"ENName");
    else if(sField=="Province")sXml+="&SearchValue="+_sysDom.escape(this.country);
    else if(sField=="City")sXml+="&SearchValue="+_sysDom.escape(this.province);
    else if(sField=="District")sXml+="&SearchValue="+_sysDom.escape(this.city);
    
    var oDSObject=new ETSOODSObject(oS,sXml);
    if(this.valueField)oDSObject.valueField=this.valueField;
    var o=this;
    oDSObject.myUpdate=function()
    {
        var sValue;
        if(sField=="Country")sValue=o.country;
        else if(sField=="Province")sValue=o.province;
        else if(sField=="City")sValue=o.city;
        else sValue=o.district;
        
        if(_sysDom.setDefault(oS,sValue)&&oS.onchange)oS.onchange();
    }
    oDSObject.update();
}
ETSOOAddress.prototype._createSelect=function(sName)
{
    return _sysDom.createObject(document,"select",["name",sName+this.namePart]);
}
ETSOOAddress.prototype._createSeperator=function(oContainer)
{
    oContainer.appendChild(document.createTextNode(this.seperator));   
}
ETSOOAddress.prototype._removeChild=function(oContainer,numType)
{
    var iLen=oContainer.childNodes.length;
    for(var i=iLen-1;i>0;i--)
    {
        var oOne=oContainer.childNodes[i];
        oContainer.removeChild(oOne);
    }
    this._createSeperator(oContainer);
    if(numType==0)
    {
        var oS=this._createSelect("Province");
        oContainer.appendChild(oS);
        this._createSeperator(oContainer);
        oS=this._createSelect("City");
        oContainer.appendChild(oS);
        this._createSeperator(oContainer);
        oS=this._createSelect("District");
        oContainer.appendChild(oS);
    }
    else
    {
        var oI=_sysDom.createInput(document,"text","Province"+this.namePart);
        oI.setAttribute("size",16);
		oI.title="State";
        oContainer.appendChild(oI);
        this._createSeperator(oContainer);
        oI=_sysDom.createInput(document,"text","City"+this.namePart);
        oI.setAttribute("size",16);
		oI.title="City";
        oContainer.appendChild(oI);
        this._createSeperator(oContainer);
        oI=_sysDom.createInput(document,"text","District"+this.namePart);
		oI.title="District";
        oI.setAttribute("size",16);
        oContainer.appendChild(oI);
    }
}
ETSOOAddress.prototype._getValue=function(oS)
{
    return oS.options[oS.selectedIndex].getAttribute("id");
}
ETSOOAddress.prototype.setup=function(oContainer)
{
    if(oContainer)
    {
        var o=this;
        var sPath=_sysDom.getPath("/Address.js",null,self);
        var sXml=sPath+"/AddressList.asp";
        
        var oCountry=o._createSelect("Country");
        oContainer.appendChild(oCountry);
        oCountry.onchange=function()
        {
            var sCountryValue=this.value;
            if(sCountryValue=="CN")
            {
                if(oContainer.getElementsByTagName("select").length==1)o._removeChild(oContainer,0);
                var aSelects=oContainer.getElementsByTagName("select");
                var oProvince=aSelects[1];
                var oCity=aSelects[2];
                var oDistrict=aSelects[3];

                oProvince.onchange=function()
                {
                    var sProvinceValue=o._getValue(this);
					if(sProvinceValue==null)return;
                    oCity.onchange=function()
                    {
                        var sCityValue=o._getValue(this);
						if(sCityValue==null)return;
                        var sDistrictXml=sXml+"?Field=District&SearchValue="+sCityValue;
                        var oDSDistrict=new ETSOODSObject(oDistrict,sDistrictXml,o.district);
                        oDSDistrict.valueField=o.valueField;
                        oDSDistrict.update();
                    }
                    var sCityXml=sXml+"?Field=City&SearchValue="+sProvinceValue;
                    var oDSCity=new ETSOODSObject(oCity,sCityXml,o.city);
                    oDSCity.valueField=o.valueField;
                    oDSCity.update();
                }
                var sProvinceXml=sXml+"?Field=Province&SearchValue="+sCountryValue;
                var oDSProvince=new ETSOODSObject(oProvince,sProvinceXml,o.province);
                oDSProvince.valueField=o.valueField;
                oDSProvince.update();
            }
            else
            {
                if(oContainer.getElementsByTagName("input").length==0)o._removeChild(oContainer,1);
                var aInputs=oContainer.getElementsByTagName("input");
                aInputs[0].value=o.province;
                aInputs[1].value=o.city;
                aInputs[2].value=o.district;
            }
        } 
        o._removeChild(oContainer,0);     
        var sCountryXml=sXml+"?Field=Country";
        sCountryXml+="&OrderField="+(this.language=="zh-cn"?"CNName":"ENName");
        var oDSCountry=new ETSOODSObject(oCountry,sCountryXml,o.country);
        oDSCountry.update();
    }
}
