opCard = function()
    {
    this.bind = new Array();
    this.index = 0;//默认显示哪个选项卡，从0开始
    
    this.style = new Array();//["","",""]
    this.overStyle = false;//选项是否有over, out变换样式事件，样式为this.style[2]
    this.overChange = false;//内容是否用over, out直接激活
    this.menu = false;    //菜单类型
    this.nesting = [false,false,"",""];//是否嵌套，后面2个参数是指定menu,info的子集深度所用id
    
    this.auto = [false, 1000];//自动滚动[true,2000]
    this.timerID = null;//自动播放的
    this.menutimerID = null;//菜单延时的
    
    this.creat = function(func)
    {
    var _arrMenu = document.getElementById(this.bind[0]).getElementsByTagName(this.bind[1]);
    var _arrInfo = document.getElementById(this.bind[2]).getElementsByTagName(this.bind[3]);
    var my = this, i;
    var argLen = arguments.length;
    var arrM = new Array();
    
    if(this.nesting[0] || this.nesting[1])// 有选项卡嵌套
    {// 过滤出需要的数据
    var arrMenu = this.nesting[0]?getChilds(_arrMenu,this.bind[0],2):_arrMenu;
    var arrInfo = this.nesting[1]?getChilds(_arrInfo,this.bind[2],3):_arrInfo;
    }
    else
    {
    var arrMenu = _arrMenu;
    var arrInfo = _arrInfo;
    }
    
    var l = arrMenu.length;
    if(l!=arrInfo.length){alert("菜单和内容必须拥有相同的数量\n如果需要，你可以放一个空的在那占位。")}
    
    // 修正
    if(this.menu){this.auto=false;this.overChange=true;} //如果是菜单，则没有自动运行，有over, out直接激活
    
    // 循环添加各个事件等
    for(i=0;i<l;i++)
    {
    arrMenu[i].cName = arrMenu[i].className;
    arrMenu[i].className = (i!=this.index || this.menu)?getClass(arrMenu[i],this.style[0]):getClass(arrMenu[i],this.style[1]);//加载样式，菜单的话统一样式
    
    if(arrMenu[i].getAttribute("skip")) // 需要跳过的容器
    {
        if(this.overStyle || this.overChange)// 有over, out 改变样式 或者 激活
        {
        arrMenu[i].onmouseover = function(){changeTitle(this, 2);autoStop(this, 0);}
        arrMenu[i].onmouseout = function(){changeTitle(this, 0);autoStop(this, 1);}
        }
        arrMenu[i].onclick = function(){if(argLen==1){func()}}
        arrInfo[i].style.display = "none";
        continue;
    }
    
    if(i!=this.index || this.menu){arrInfo[i].style.display="none"};//隐藏初始化，菜单的话全部隐藏
    arrMenu[i].index = i;//记录自己激活值[序号]
    arrInfo[i].index = i;
    
    
    if(this.overChange)//有鼠标over, out事件
    {
        arrMenu[i].onmouseover = function(){changeOption(this);my.menu?changeMenu(1):autoStop(this, 0);}
        arrMenu[i].onmouseout = function(){changeOption(this);my.menu?changeMenu(0):autoStop(this, 1);}
    }
    else//onclick触发
    {
        arrMenu[i].onclick = function(){changeOption(this);autoStop(this, 0);if(argLen==1){func()}}
        if(this.overStyle)// 有over, out 改变样式
        {
        arrMenu[i].onmouseover = function(){changeTitle(this, 2);autoStop(this, 0);}
        arrMenu[i].onmouseout = function(){changeTitle(this, 0);autoStop(this, 1);}
        }
        else// 没有over, out 改变样式
        {
        if(this.auto[0])// 有自动运行
        {
        arrMenu[i].onmouseover = function(){autoStop(this, 0);}
        arrMenu[i].onmouseout = function(){autoStop(this, 1);}
        }
        }
    }
    
    if(this.auto[0] || this.menu)//arrinfo 控制自动播放
    {
        arrInfo[i].onmouseover = function(){my.menu?changeMenu(1):autoStop(this, 0);}
        arrInfo[i].onmouseout = function(){my.menu?changeMenu(0):autoStop(this, 1);}
    }
    }//for结束
    
    if(this.auto[0])
    {
    this.timerID = setTimeout(autoMove,this.auto[1])
    }
    
    // 自动播放
    function autoMove()
    {
    var n;
    n = my.index + 1;
    if(n==l){n=0};
    while(arrMenu[n].getAttribute("skip"))// 需要跳过的容器
    {
        n += 1;
        if(n==l){n=0};
    }
    changeOption(arrMenu[n]);
    my.timerID = setTimeout(autoMove,my.auto[1]);
    }
    
    // onmouseover时，自动播放停止。num：0为over，1为out。 obj暂时无用。 -_-!!
    function autoStop(obj, num)
    {
    if(!my.auto[0]){return;}
    //if(obj.index==my.index)
    num == 0 ? clearTimeout(my.timerID) : my.timerID = setTimeout(autoMove,my.auto[1]);
    }
    
    // 改变选项卡
    function changeOption(obj)
    {
    arrMenu[my.index].className = getClass(arrMenu[my.index],my.style[0]);//修改旧内容
    arrInfo[my.index].style.display = "none";//隐藏旧内容
    
    obj.className = getClass(obj,my.style[1]);//修改为新样式
    arrInfo[obj.index].style.display = "";//显示新内容
    
    my.index = obj.index;//更新当前选择的index
    }
    
    /*
    只有onclick时，overStyle的onmouseover,onmouseout事件。用来预激活
    obj：目标对象。num：1为over，0为out
    */
    function changeTitle(obj, num)
    {
    if(!my.overStyle){return;};
    if(obj.index!=my.index){obj.className = getClass(obj,my.style[num])}
    }
    
    /*
    菜单类型时用
    obj：目标对象。num：1为over，0为out
    */
    function changeMenu(num)
    {
    if(!my.menu){return;}
    num==0?my.menutimerID = setTimeout(menuClose,1000):clearTimeout(my.menutimerID)
    }
    
    //关闭菜单
    function menuClose()
    {
    arrInfo[my.index].style.display = "none";
    arrMenu[my.index].className = getClass(arrMenu[my.index],my.style[0]);
    }
    
    // 得到className（防止将原有样式覆盖）
    function getClass(o, s)
    {
    if(o.cName==""){return s}
    else{return o.cName + " " + s}
    }
    
    //嵌套情况下得到真正的子集
    function getChilds(arrObj, id, num)
    {
    var depth = 0;
    var firstObj = my.nesting[num]==""?arrObj[0]:document.getElementById(my.nesting[num]);//得到第一个子集
    do//计算深度
    {
        if(firstObj.parentNode.getAttribute("id")==id){break}else{depth+=1}
        firstObj = firstObj.parentNode;
    }
    while(firstObj.tagName.toLowerCase()!="body")// body强制退出。
    
    var t;
    var arr = new Array();
    for(i=0;i<arrObj.length;i++)//过滤出需要的数据
    {
        t = arrObj[i], d = 0;
        do
        {
        if(t.parentNode.getAttribute("id")==id && d == depth)
        {
        arr.push(arrObj[i]);break;//得到数据
        }
        else
        {
        if(d==depth){break};d+=1;
        }
        t = t.parentNode;
        }
        while(t.tagName.toLowerCase()!="body")// body强制退出
    }
    return arr;
    }
    }
    }
