﻿
//查找父ID
var isParent = new Array();
for (var key in cats)
{
	var cats_1;
	cats_1 =  cats[key][1];
	if (cats[cats_1])
	{
		if (!isParent[cats_1])
		{
			isParent[cats_1] = new Array();
		}
	}
}


//开始时运行
first_Run(first_Run_ID);

function first_Run(ID)
{
	var relating = getRelating(new Array(), ID);
	//alert(relating);
	Option_add2(relating.reverse());

	if (eval(formName).ss1)
	{
		selectID = ['ss1','ss2','ss3'];
		Option_add2([0]);
	}
}

function selectChange(obj)
{
	if (!(/ss/.test(obj.name)))
		selectID = ['s1','s2','s3'];
	else
		selectID = ['ss1','ss2','ss3'];
	Option_add(obj);
}

//得到某个ID分类的层数，如果ID本身非父ID，则返回0
var n = 0; //临时变量。记录某个ID层数，若到底层则对比nn，将最大值寄存在nn。
var nn = 0;
function getLevel(ID)
{
	n = 0;
	nn = 0;
	getLevel2(ID);
	return nn;
}
function getLevel2(ID)
{
	if (isParent[ID])
	{
		//父层，累加
		n += 1;
		if (n > nn) nn = n;
		for (var key in cats)
		{
			var cats_1 = cats[key][1];
			if (cats_1 == ID)
			{
				getLevel2(key);
			}
		}
	}
	else
	{
		n=0;
	}
}



//列出某个ID的所有父ID
function getRelating(newArray, defaultID)
{
	if (cats[defaultID])
	{
		newArray[newArray.length] = defaultID;
		
		if (isParent[cats[defaultID][1]])
		{
			getRelating(newArray, cats[defaultID][1]);
		}
	}
	else
	{
		newArray[newArray.length] = 0;
	}
	return newArray;
}


function Option_add2(relating)
{
	var ParentID;
	for(var i=0;i<relating.length;i++)
	{
		if (i==0)
			ParentID = 0;
		else
			ParentID = relating[i-1];

		var obj_tmp = eval(formName+"."+selectID[i]);
		obj_tmp.options[obj_tmp.options.length] = new Option('','');
		for (var key in cats)
		{
			if (cats[key][1] == ParentID)
			{
				if (isParent[key])
				{
					obj_tmp.options[obj_tmp.options.length] = new Option(cats[key][0] + " -->", key);
				}
				else
				{
					obj_tmp.options[obj_tmp.options.length] = new Option(cats[key][0], key);
				}
				if (relating[i]==key)
				{
					obj_tmp.options[obj_tmp.options.length-1].selected = true;
					if (i==relating.length-1)
					{
						Option_add(obj_tmp);
					}
				}
			}
		}
	}
}

function Option_add(obj)
{
	//找查select位置
	var formSelectIndex;
	for(var i=0;i<selectID.length;i++)
	{
		if (selectID[i] == obj.name)
		{
			formSelectIndex = i;
			break;
		}
	}

	//若select在末位则跳出函数
	if (formSelectIndex == selectID.length) return;
	
	//清除选项
	for(var i=formSelectIndex+1;i<selectID.length;i++)
	{
		var obj_tmp = eval(formName+"."+selectID[i]);
		//方法1
		//obj_tmp.options.length = 0; 
		//方法2
		obj_tmp.outerHTML = '<select name="' + selectID[i] + '" onChange="selectChange(this);"></select>';
	}
	
	//select当前值
	option_value = obj.options[obj.selectedIndex].value;

	
	//如果当前select选择项为父项，那么输出它的子项到下一个select
	if (isParent[option_value])
	{
		var nextObj;
		nextObj = eval(formName+"."+selectID[formSelectIndex+1]);
		nextObj.options[nextObj.options.length] = new Option('','');
		for (var key in cats)
		{
			if (cats[key][1] == option_value)
			{
				if (isParent[key])
				{
					nextObj.options[nextObj.options.length] = new Option(cats[key][0] + " -->", key);
				}
				else
				{
					nextObj.options[nextObj.options.length] = new Option(cats[key][0], key);
				}
			}
		}
	}
}