<!--  Place Associate List script written entirely in JavaScript  -->
<!--  Written by WenWei, 2001-2004. E-mail: wenwei(AT)blueidea.com  -->
// 地区选项列表
var ALOptions = new Array()

// 城市选项列表
var CLOptions = new Array()

GeneratePlaceList()

// 生成地区和城市选项列表
function GeneratePlaceList()
{
    var ii = 0
    var jj = 0
	
    ALOptions[ii++] = "宁波-|宁波市"   
    ALOptions[ii++] = "杭州-|杭州市"
    ALOptions[ii++] = "温州-|温州市"
    ALOptions[ii++] = "台州-|台州市"
    ALOptions[ii++] = "绍兴-|绍兴市"
    ALOptions[ii++] = "嘉兴-|嘉兴市"
    ALOptions[ii++] = "湖州-|湖州市"
    ALOptions[ii++] = "金华-|金华市"
    ALOptions[ii++] = "舟山-|舟山市"
    ALOptions[ii++] = "丽水-|丽水市"
    ALOptions[ii++] = "衢州-|衢州市"
    
    jj = 0
    ii = 0
    CLOptions[ii] = new Array()
    CLOptions[ii][jj++] = "宁波-海曙|├-海曙区"
    CLOptions[ii][jj++] = "宁波-江东|├-江东区"
    CLOptions[ii][jj++] = "宁波-江北|├-江北区"
    CLOptions[ii][jj++] = "宁波-镇海|├-镇海区"
    CLOptions[ii][jj++] = "宁波-北仑|├-北仑区"
    CLOptions[ii][jj++] = "宁波-余姚|├-余姚市"
    CLOptions[ii][jj++] = "宁波-慈溪|├-慈溪市"
    CLOptions[ii][jj++] = "宁波-奉化|├-奉化市"
    CLOptions[ii][jj++] = "宁波-象山|├-象山县"
    CLOptions[ii][jj++] = "宁波-宁海|├-宁海县"
    CLOptions[ii++][jj++] = "宁波-鄞州|└-鄞州区"
    
    jj = 0
    // ii = 2
    CLOptions[ii] = new Array()
    CLOptions[ii][jj++] = "杭州-上城|├-上城区"
    CLOptions[ii][jj++] = "杭州-下城|├-下城区"
    CLOptions[ii][jj++] = "杭州-江干|├-江干区"
    CLOptions[ii][jj++] = "杭州-拱墅|├-拱墅区"
    CLOptions[ii][jj++] = "杭州-西湖|├-西湖区"
    CLOptions[ii][jj++] = "杭州-滨江|├-滨江区"
    CLOptions[ii][jj++] = "杭州-萧山|├-萧山区"
    CLOptions[ii][jj++] = "杭州-余杭|├-余杭区"
    CLOptions[ii][jj++] = "杭州-建德|├-建德市"
    CLOptions[ii][jj++] = "杭州-富阳|├-富阳市"
    CLOptions[ii][jj++] = "杭州-临安|├-临安市"
    CLOptions[ii][jj++] = "杭州-桐庐|├-桐庐县"
    CLOptions[ii++][jj++] = "杭州-淳安|└-淳安县"
	
	    jj = 0
    // ii = 3
    CLOptions[ii] = new Array()
    CLOptions[ii][jj++] = "温州-鹿城|├-鹿城区"
    CLOptions[ii][jj++] = "温州-龙湾|├-龙湾区"
    CLOptions[ii][jj++] = "温州-瓯海|├-瓯海区"
    CLOptions[ii][jj++] = "温州-瑞安|├-瑞安市"
    CLOptions[ii][jj++] = "温州-乐清|├-乐清市"
    CLOptions[ii][jj++] = "温州-洞头|├-洞头县"
    CLOptions[ii][jj++] = "温州-永嘉|├-永嘉县"
    CLOptions[ii][jj++] = "温州-平阳|├-平阳县"
    CLOptions[ii][jj++] = "温州-苍南|├-苍南县"
    CLOptions[ii][jj++] = "温州-文城|├-文城县"
    CLOptions[ii++][jj++] = "温州-泰顺|└-泰顺县"	
	
	    jj = 0
    // ii = 4
    CLOptions[ii] = new Array()
    CLOptions[ii][jj++] = "台州-椒江|├-椒江区"
    CLOptions[ii][jj++] = "台州-黄岩|├-黄岩区"
    CLOptions[ii][jj++] = "台州-路桥|├-路桥区"
    CLOptions[ii][jj++] = "台州-温岭|├-温岭市"
    CLOptions[ii][jj++] = "台州-临海|├-临海市"
    CLOptions[ii][jj++] = "台州-玉怀|├-玉怀县"
    CLOptions[ii][jj++] = "台州-三门|├-三门县"
    CLOptions[ii][jj++] = "台州-天台|├-天台县"
    CLOptions[ii++][jj++] = "台州-仙居|└-仙居县"	
	
	jj = 0
    // ii = 5
    CLOptions[ii] = new Array()
    CLOptions[ii][jj++] = "绍兴-越城|├-越城区"
    CLOptions[ii][jj++] = "绍兴-诸暨|├-诸暨市"
    CLOptions[ii][jj++] = "绍兴-上虞|├-上虞市"
    CLOptions[ii][jj++] = "绍兴-嵊州|├-嵊州市"
    CLOptions[ii][jj++] = "绍兴-绍兴|├-绍兴县"
    CLOptions[ii++][jj++] = "绍兴-新昌|└-新昌县"	
	
	jj = 0
    // ii = 6
    CLOptions[ii] = new Array()
    CLOptions[ii][jj++] = "嘉兴-南湖|├-南湖区"
    CLOptions[ii][jj++] = "嘉兴-秀州|├-秀州区"
    CLOptions[ii][jj++] = "嘉兴-海宁|├-海宁市"
    CLOptions[ii][jj++] = "嘉兴-平湖|├-平湖市"
    CLOptions[ii][jj++] = "嘉兴-桐乡|├-桐乡市"
    CLOptions[ii][jj++] = "嘉兴-嘉善|├-嘉善县"
    CLOptions[ii++][jj++] = "嘉兴-海盐|└-海盐县"
	   
	jj = 0
    // ii = 7
    CLOptions[ii] = new Array()
    CLOptions[ii][jj++] = "湖州-吴兴|├-吴兴区"
    CLOptions[ii][jj++] = "湖州-南浔|├-南浔区"
    CLOptions[ii][jj++] = "湖州-德清|├-德清县"
    CLOptions[ii][jj++] = "湖州-长兴|├-长兴县"
    CLOptions[ii++][jj++] = "湖州-安吉|└-安吉县"

	jj = 0
    // ii = 8
    CLOptions[ii] = new Array()
    CLOptions[ii][jj++] = "金华-婺城|├-婺城区"
    CLOptions[ii][jj++] = "金华-金东|├-金东区"
    CLOptions[ii][jj++] = "金华-兰溪|├-兰溪市"
    CLOptions[ii][jj++] = "金华-义乌|├-义乌市"
	CLOptions[ii][jj++] = "金华-东阳|├-东阳市"
    CLOptions[ii][jj++] = "金华-永康|├-永康市"
    CLOptions[ii][jj++] = "金华-武义|├-武义县"
	CLOptions[ii][jj++] = "金华-浦江|├-浦江区"
    CLOptions[ii++][jj++] = "金华-磐安|└-磐安县"
	
	jj = 0
    // ii = 9
    CLOptions[ii] = new Array()
    CLOptions[ii][jj++] = "舟山-定海|├-定海区"
    CLOptions[ii][jj++] = "舟山-普陀|├-普陀区"
    CLOptions[ii][jj++] = "舟山-岱山|├-岱山县"
    CLOptions[ii++][jj++] = "舟山-嵊泗|└-嵊泗县"
	
	jj = 0
    // ii = 10
    CLOptions[ii] = new Array()
    CLOptions[ii][jj++] = "丽水-莲都|├-莲都区"
    CLOptions[ii][jj++] = "丽水-龙泉|├-龙泉市"
    CLOptions[ii][jj++] = "丽水-青田|├-青田县"
    CLOptions[ii][jj++] = "丽水-缙云|├-缙云县"
    CLOptions[ii][jj++] = "丽水-遂昌|├-遂昌县"
    CLOptions[ii][jj++] = "丽水-松阳|├-松阳县"
    CLOptions[ii][jj++] = "丽水-云和|├-云和县"
    CLOptions[ii][jj++] = "丽水-庆元|├-庆元县"	
    CLOptions[ii++][jj++] = "丽水-景宁|└-景宁县"	
	jj = 0
    // ii = 11
    CLOptions[ii] = new Array()
    CLOptions[ii][jj++] = "衢州-柯城|├-柯城区"
    CLOptions[ii][jj++] = "衢州-衢江|├-衢江区"
    CLOptions[ii][jj++] = "衢州-江山|├-德清市"
    CLOptions[ii][jj++] = "衢州-常山|├-常山县"	
	CLOptions[ii][jj++] = "衢州-开化|├-开化县"
    CLOptions[ii][jj++] = "衢州-龙游|└-龙游县"	
    ii = 0
    jj = 0
}

// Place Associate List Object
function PlaceAssociateList(instance, parent, child, optionList)
{
    this.parent          = parent;              // 父选择框
    this.child           = child;               // 子选择框

    this.instance        = instance;            // 与对象关联的选择框实例

    this.optionList      = optionList;          // 选择框选项列表
    this.initValue       = null;                // 选择框初始值
    
    this.addedOptions    = null;                // 附加选项

    this.incPValue       = false;               // 包含父值
    this.incPValueFormat = "%PText%";           // 包含父值的选项的文本格式

    this.allowEmpty      = false;               // 允许空选项列表

    this.init            = InitPlaceSelector;   // 初始化方法
    this.SetSelectedValue = SetSelectedValue;          // 设置选中值方法

    this.instance.associateObject = this;       // 关联对象与选择框
}

// 选择列表初始化方法
function InitPlaceSelector()
{
    if( this.instance )                                         // 实例存在
    {
        var i, aIndex, aLength, aValueText;
        if( this.child || this.parent == null )                 // 子选择框存在, 则实例为父选择框;
        {
            this.instance.length = 0;                           // 清空实例
            if( this.addedOptions != null )                     // 附加选项
            {
                for( i = 0; i<this.addedOptions.length; i++ )
                {
                    aValueText = this.addedOptions[i].split("|");
                    if( aValueText.length > 0 )                 // 添加选项
                    {
                        this.instance.options[this.instance.length] = new Option(aValueText[1], aValueText[0]);
                        if( aValueText[0] == this.initValue )   // 选中初始值
                            this.instance.options[this.instance.length-1].selected = true;
                    }
                }
            }
            for( i = 0; i<this.optionList.length; i++ )
            {
                aValueText = this.optionList[i].split("|");
                if( aValueText.length > 0 )                     // 添加选项
                {
                    this.instance.options[this.instance.length] = new Option(aValueText[1], aValueText[0]);
                    if( aValueText[0] == this.initValue )       // 选中初始值
                        this.instance.options[this.instance.length-1].selected = true;
                }
            }
            if( this.child ) this.instance.onchange = areaChanged
        }
        else if( this.parent )                                  // 父选择框存在, 则实例为子选择框
        {
            this.parent.onchange();
        }
    }
}

// 父选择列表值改变事件方法
function areaChanged()
{
    if( this.associateObject )
    {
        var i, aLength, aObject, aChildObject, aIndex, aValueText;
        var aParentValue, aParentText;

        aObject = this.associateObject;
        aChildObject = aObject.child.associateObject;
        aParentValue = this.options[this.selectedIndex].value;
        aParentText  = this.options[this.selectedIndex].text;
        aLength = 0;

        aObject.child.length = 0;                               // 清空实例

        if( aObject.addedOptions )                              // 父选择框附加选项数
            aLength = aObject.addedOptions.length;

        if( this.selectedIndex >= aLength )                     // 父选择框选中项不在附加选项中
        {
            aIndex = this.selectedIndex - aLength;
            if( aChildObject.incPValue )                            // 包含父值
            {
                aObject.child.options[aObject.child.length] = new Option(
                    aChildObject.incPValueFormat.replace("%PText%", this.options[this.selectedIndex].text),
                    aParentValue);
                if( aParentValue == aChildObject.initValue )       // 选中初始值
                    aObject.child.options[aObject.child.length-1].selected = true;
            }

            for( i=0; i<aChildObject.optionList[aIndex].length; i++ )
            {
                aValueText = aChildObject.optionList[aIndex][i].split("|");
                if( aValueText.length > 0 && aValueText[0] != aParentValue)       // 添加选项
                {
                    aObject.child.options[aObject.child.length] = new Option(aValueText[1], aValueText[0]);
                    if( aValueText[0] == aChildObject.initValue )       // 选中初始值
                        aObject.child.options[aObject.child.length-1].selected = true;
                }
            }
            if( !aChildObject.allowEmpty && aObject.child.length == 0)
            {
                aObject.child.options[aObject.child.length] = new Option(aParentText, aParentValue);
            }
        }
        else
        {
            if( aChildObject.addedOptions != null )                  // 附加选项
            {
                for( i = 0;i<aChildObject.addedOptions.length; i++ )
                {
                    aValueText = aChildObject.addedOptions[i].split("|");
                    if( aValueText.length > 0 )                 // 添加选项
                    {
                        aObject.child.options[aObject.child.length] = new Option(aValueText[1], aValueText[0]);
                        if( aValueText[0] == aChildObject.initValue )   // 选中初始值
                            aObject.child.options[aObject.child.length-1].selected = true;
                    }
                }
            }
        }
    }
}

function SetSelectedValue(aValue, aWantProcessed)
{
    if( this.instance )
    {
        var optionValue = aValue;
        if( aWantProcessed )
        {
            var optionValues = optionValue.split("-");
            if( optionValues.length > 0 )
                optionValue = optionValues[0] + "-";
        }
       for( i = 0;i<this.instance.options.length; i++ )
        {
           if( this.instance.options[i].value == optionValue )
            {
                this.instance.options[i].selected = true;
                if( this.child )
                {
					this.instance.onchange();
                    this.child.associateObject.SetSelectedValue(aValue, false);
                }
                break;
            }
        }
    }
}



