﻿// JScript 文件


var ChrClassConnect="@";


/*================================================================
*	初始化　最顶级的 下拉框
*	
*	参数
*    		ClassObj		存放下拉数据的对象
*			SelObjThis		要初始化的 下拉框控件
*           Layer           最多显示的层数，0开始代表顶层
*           FirstRowText    第一行，(选择全部的)，  要显示的　文本文字
*			DefaultValue	默认值
*
*	实例  initSel_Top(ProvinceClass_0 , $("SelProvince") ,1, "");
*   2009-4-18   欧阳辉明        
=================================================================*/
function initSel_Top(ClassObj , SelObjThis , Layer ,FirstRowText,  DefaultValue)
{
	if(SelObjThis == null) return;
	
	SelObjThis.length=0;
	
	SelObjThis.options[0] = new Option();
	SelObjThis.options[0].text = FirstRowText;
	SelObjThis.options[0].value = "";
	
	if(typeof(ClassObj) != 'object' ) return;
	if(typeof(ClassObj['Text'])=='undefined') return;
	
	var j=1;
	for(var i=0; i< ClassObj['Text'].length ;i++)
	{
	    if(GetLayer_ByMid(ClassObj['Value'][i]) <= Layer)
	    {
		    SelObjThis.options[j] = new Option();
		    SelObjThis.options[j].text=ClassObj['Text'][i  ];
		    SelObjThis.options[j].value=ClassObj['Value'][i  ];
		    j++;
		}
	}
	
	SelObjThis.value=DefaultValue;
	
	if(SelObjThis.onchange != null)   return SelObjThis.onchange();
}




/*============================================
*	选择下拉框，改变时
*
*	参数
*    		ClassObj		存放下拉数据的对象
*			SelObjThis		单击下拉框的控件
*			SelObjNext		关联下级的　下拉框
*           FirstRowText    第一行，(选择全部的)，  要显示的　文本文字
*			DefaultValue	默认值
*           DefaultIndex    默认索引值，如果上面参数　DefaultValue　为空则该值起效
*
*	实例  onchange="return Sel_Change(ProvinceClass_1,this,$('SelCities'),'第一行文本','默认值',1)"
=============================================*/
function Sel_Change(ClassObj , SelObjThis , SelObjNext ,FirstRowText, DefaultValue, DefaultIndex)
{

	if(SelObjThis == null || SelObjNext == null) return;
	
	var SelObjThisValue = SelObjThis.value;

	SelObjNext.length=0;
	
	SelObjNext.options[0] = new Option();
	SelObjNext.options[0].text = FirstRowText;
	SelObjNext.options[0].value = "";


	if(SelObjThisValue == "" && SelObjThis.selectedIndex == 0 )
	{
		//如果这级选择了　在第一行的　空行 则在下级 下拉框 添加空行，并连发　

		if(SelObjNext.onchange != null)   return SelObjNext.onchange();
	}
	
	//if(typeof(ClassObj) != 'object' ) return;
	//if(typeof(ClassObj[SelObjThisValue + '|Text'])=='undefined') return;
	
	if(typeof(ClassObj) != 'object' || typeof(ClassObj[SelObjThisValue + '|Text'])=='undefined')
	{
        //如果这级下面没有子类了　则在下级  空行，并连发　

		if(SelObjNext.onchange != null)   return SelObjNext.onchange();
		
		return;
	}

	
	for(var i=0; i<ClassObj[SelObjThisValue + '|Text'].length ;i++)
	{
		SelObjNext.options[i +1 ] = new Option();
		SelObjNext.options[i +1 ].text=ClassObj[SelObjThisValue + '|Text'][i];
		SelObjNext.options[i +1 ].value=ClassObj[SelObjThisValue + '|Value'][i];
	}
	
	if(DefaultValue != null && DefaultValue != "" )
	{
		SelObjNext.value = DefaultValue;
		
		if(SelObjNext.value == null || SelObjNext.value == "")
		{
			SelObjNext.selectedIndex=0;
		}
	}
	
	if(SelObjNext.selectedIndex == 0 && DefaultIndex != 0 && SelObjNext.length > DefaultIndex )
	{
	    SelObjNext.selectedIndex = DefaultIndex;
	}
	
	if(SelObjNext.onchange != null)   return SelObjNext.onchange();
}


/*================================================
*
*移动目录 验证
*
*================================================*/
function Validate_Move_Rule(MoveMid , MoveToMid ,Type)
{
    var err="";

    if(MoveMid == MoveToMid)
    {
        err = "请选择移动目录";
        return err;
    }
    
    var MoveLayer = GetLayer_ByMid(MoveMid);
    var MoveToLayer = GetLayer_ByMid(MoveToMid);
    
    if(MoveLayer < MoveToLayer)
    {
        err="不能往下级移动";
        return err;
    }
    
    if(MoveMid.indexOf(MoveToMid) == 0)
    {
        err="不能往自身的上级移动";
        return err;
    }
    
    if(Type == "MoveClass")
    {
        if(MoveLayer - MoveToLayer >1 || MoveLayer == MoveToLayer)
        {
            err="只能移动到 跟上级 同一级别的";
            return err;
        }
    }
    else if(Type == "MoveData")
    {
        if(MoveLayer != MoveToLayer )
        {
            err="只能 同一级别的移动";
            return err;
        }
    }
    
    return err;
}


// 根据自己的Mid,判断获取自己的Layer
/// <summary>
/// 根据自己的Mid,判断获取自己的Layer
/// </summary>
/// <param name="strMid">Mid</param>
/// <returns></returns>
function GetLayer_ByMid(strMid)
{
    var arrStr = strMid.split(ChrClassConnect);
    var intLayer = 0;

    if (arrStr.length < 2)
    {
        return intLayer;
    }
    
    for(var i=0; i< arrStr.length;i++)
    {
        if(arrStr[i] != null && arrStr[i]!= "")
        {
            intLayer++;
        }
    }

    return --intLayer;
}


// 从Mid中找到 哪一层的 Pid
/// <summary>
/// 从Mid中找到 哪一层的 Pid
/// </summary>
/// <param name="intLayer"></param>
/// <param name="strMid"></param>
/// <returns></returns>
function GetPid_ByMid(intLayer, strMid)
{
    if(strMid == "")
    {
        return "";
    }
    
    var k = 0;
    for (var i = 0; i < intLayer; i++)
    {
        k = strMid.indexOf(ChrClassConnect, k) + 1;
    }

    if (k >= strMid.length)
    {
        return "";
    }

    return strMid.substring(0, strMid.indexOf(ChrClassConnect, k) + 1);
}