﻿// JScript 文件

function opacityFunction(){

    this.setOpacity=setOpacity;
    this.orderOpacity=orderOpacity;
    this.coupleOrderOpacity=coupleOrderOpacity;
    this.circleOrderOpacity=circleOrderOpacity;

    function setOpacity(targetOrArr,opaValue){
        if(!targetOrArr) return false;
        if(targetOrArr.length > 1){
            for(var i=0;i<targetOrArr.length;i++){
                var target=ADS.$(targetOrArr[i]);
                kindsBrower(target,opaValue);
            }
            return;
        }
        if(!ADS.$(targetOrArr)){ return false; };
        kindsBrower(ADS.$(targetOrArr),opaValue);
            
        function kindsBrower(targetB,opaB){       
            if(targetB.style.filter=='' || targetB.style.filter){
                targetB.style.filter='alpha(opacity='+opaB*100+')';
            }
            else if(targetB.style.opacity){
                targetB.style.opacity=opaB;
            }
            else if(targetB.style.KhtmlOpacity){
                targetB.style.KhtmlOpacity=opaB;
            }
            else if(targetB.style.MozOpacity=='' || targetB.style.MozOpacity){
                targetB.style.MozOpacity=opaB;
            }
        }
    }
    //顺序透明度变化需要的参数为
    //arr:需要变化透明度的对象个体或集合
    //opacityStart:透明度起始值（应在0-1之间，最多取小数点后两位）
    //opacityEnd:透明度终止值（应在0-1之间，最多取小数点后两位）
    //opacityChangeTime:对象或对象集合中的单个对象从起始值到终止值之间的变化时长
    //isCouple & acceptNum 为其他方法调用该方法时需要的参数 若只使用此方法则无需添加
    function orderOpacity(arr,opacityStart,opacityEnd,opacityChangeTime,isCouple,acceptNum){
        var opaS=opacityStart*100;
        var opaE=opacityEnd*100;
        var opaCT=opacityChangeTime/20;
        var opaPerLevel=(opaE-opaS)/opaCT;
        var arrr;
        if(isCouple) arrr=arr[acceptNum];
        else arrr=arr;
        var checkValue=true;
        var j=0;
        var opaPerLevel_in=0;
        var stParent=setInterval(function(){
            opaPerLevel_in+=opaPerLevel;
                        
            if(arrr.length){
                setOpacity(arrr[j],parseInt(opaPerLevel_in)/100);
                if(opaPerLevel_in>(opaE)){
                    j++;
                    opaPerLevel_in=0;
                    if(j>=arrr.length){
                        clearInterval(stParent);
                    }
                }
            }else if(!(!arrr)){ 
                setOpacity(arrr,parseInt(opaPerLevel_in)/100);
                if(checkValue && opaPerLevel_in>(opaE/8)){
                    checkValue=false;
                    coupleOrderOpacity(arr,opacityStart,opacityEnd,opacityChangeTime,acceptNum+1);
                }
                if(opaPerLevel_in>(opaE)){
                    clearInterval(stParent);
                }
            }else{
                setOpacity(arrr,parseInt(opaPerLevel_in)/100);
                if(opaPerLevel_in>(opaE)){
                    clearInterval(stParent);
                }
            }
            
        },20);
    }

    function coupleOrderOpacity(arr,opacityStart,opacityEnd,opacityChangeTime,arrIndex){
        if(arrIndex<arr.length)
            orderOpacity(arr,opacityStart,opacityEnd,opacityChangeTime,true,arrIndex);
    }


    function circleOrderOpacity(arr,isDisplay){
        var obj_circleOrderOpacity=new opacityFunction();
        var circle_i=0.02;
        var arr_i=0;
        var check=true;
        if(arr.length){
            var circleST=setInterval(function(){
                if(isDisplay){
                    ADS.setStyle(arr[arr_i],{'display':''});
                }
                obj_circleOrderOpacity.setOpacity(arr[arr_i],circle_i);
                if(check){
                    if(circle_i>1){
                        check=false;
                    }      
                    circle_i+=0.02;
                }else{
                    if(circle_i<=0){
                        check=true;
                        if(isDisplay) ADS.setStyle(arr[arr_i],{'display':'none'});
                        ++arr_i;
                    }
                    circle_i-=0.02;
                }
                if(arr_i>=arr.length){
                    clearInterval(circleST);
                }
                if(arr_i==(arr.length-1) && circle_i>1) clearInterval(circleST);
            },20);
        }
        else{
            var circleST=setInterval(function(){
                if(isDisplay){
                    ADS.setStyle(arr[arr_i],{'display':''});
                }
                obj_circleOrderOpacity.setOpacity(arr,circle_i);
                if(check){
                    if(circle_i>1){
                        check=false;
                    }
                    circle_i+=0.02;
                }else{
                    if(circle_i<=0){
                        check=true;
                        if(isDisplay) ADS.setStyle(arr[arr_i],{'display':'none'});
                    }
                    circle_i-=0.02;
                }
                if(circle_i<0){
                    clearInterval(circleST);
                }
            },20);
        }

    }
    
}



