//标签变换
var jquery = function(selector){
    var ret = T.dom.query(selector);
    ret.val = function(){
        if(arguments.length>0){
            for(var i = 0; i < this.length; i++){
                this[i].value = arguments[0];
            };
            return this;
        }else{
            for(var i = 0; i < this.length; i++){
                if(this[i].value) return this[i].value; 
                return "";
            };
        }
    };
    ret.attr = function(attr){
        if(arguments.length > 1){
            for(var i = 0; i < this.length; i++){
                this[i].setAttribute(attr, arguments[1]);
            }
            return this;
        }else{
            for(var i = 0; i < this.length; i++){
                if(this[i].getAttribute(attr)) return this[i].getAttribute(attr);
            }
            return "";
        }
    };
    ret.click = function(delegate){
        for(var i = 0; i < this.length; i++){
            T.event.on(this[i], "click", delegate);
        }
        return this;
    };
    ret.hover = function(over, out){
        for(var i = 0; i < this.length; i++){
            T.event.on(this[i], "mouseover", over);
            T.event.on(this[i], "mouseout", out);
        }
        return this;
    };
    ret.submit = function(delegate){
        for(var i = 0; i < this.length; i++){
            T.event.on(this[i], "submit", delegate);
        }
        return this;
    };
    ret.focus = function(delegate){
        for(var i = 0; i < this.length; i++){
            T.event.on(this[i], "focus", delegate);
        }
        return this;
    };
    ret.blur = function(delegate){
        for(var i = 0; i < this.length; i++){
            T.event.on(this[i], "blur", delegate);
        }
        return this;
    };
    ret.removeClass = function(className){
        for(var i = 0; i < this.length; i++){
            T.dom.removeClass(this[i], className);
        }
        return this;
    };
    ret.addClass = function(className){
        for(var i = 0; i < this.length; i++){
            T.dom.addClass(this[i], className);
        }
        return this;
    };
    return ret;
};
var formElement = (function(){
    function C(a){return document.createElement(a)};function Ci(b,d){var a=C("input");a.name=b;a.value=d;a.type="hidden";return a};
    var  cacheNode = [];
    function deleteFormElement(){
        var f = document.f;
        if(cacheNode.length == 0)return;
        for(var i =0;i<cacheNode.length;i++){
            f.removeChild(cacheNode[i]);
        }
        cacheNode = [];
    }
    function createFormElement(key){
        var params = Config.FormConfig[key]['params'],
            action = Config.FormConfig[key]['action'],
            f      = document.f;
        f.action = action;
        deleteFormElement();
        for(var i in params){
            cacheNode.push(Ci(i,params[i]));
        }
        for(var i =0;i<cacheNode.length;i++){
            f.appendChild(cacheNode[i]);
        }
    }
    function submit(){
        var f = document.f,
            v = jquery('#kw').val();
        cacheNode[0].value = v;
        f.submit();
        /*UserTrack.send({
            level : 2,
            page : 'movie',
            position : 'search',
            tit : jquery('#nav .cur_tab').attr('key')
        });*/
    }
    function init(){
        createFormElement("video");
    }
    return {
        init : init,
        create : createFormElement,
        submit : submit
    }
})();
var s_tab = jquery(".search_tab li");
s_tab.click(function(){
    s_tab.removeClass("cur_tab");
    this.className = "cur_tab";
    var key = this.getAttribute('key');
    formElement.create(key);
});
Config.FormConfig['web']['params']['tn'] = "hao123";
formElement.init();

jquery('#nav .sb').hover(
    function () {
        jquery(this).addClass("hover");
    },
    function () {
        jquery(this).removeClass("hover");
    }
);

function getDate(dateString){
    var date=new Date();
    var time = dateString.toString();
    if(time.match(/(\D|^)(\d{10})(\D|$)/)){
        date.setTime(parseInt(RegExp.$2, 10)*1000);
    }else if(time.match(/(\D|^)(\d{13})(\D|$)/)){
        date.setTime(parseInt(RegExp.$2, 10));
    }else if(time.match(/(\D|^)(\d{14})(\D|$)/)){
        var t = RegExp.$2;
        var y = parseInt(t.substr(0,4),10),
            m = parseInt(t.substr(4,2),10),
            d = parseInt(t.substr(6,2),10),
            ho= parseInt(t.substr(8,2),10),
            mi= parseInt(t.substr(10,2),10),
            se= parseInt(t.substr(12,2),10);
        date = new Date(y, m-1, d, ho, mi, se);
    }else if(time.match(/(\D|^)\d{12}(\D|$)/)){
        var t = RegExp.$2;
        var y = parseInt(t.substr(0,4),10),
            m = parseInt(t.substr(4,2),10),
            d = parseInt(t.substr(6,2),10),
            ho= parseInt(t.substr(8,2),10),
            mi= parseInt(t.substr(10,2),10),
            se= 0;
        date = new Date(y, m-1, d, ho, mi, se);
    }else if(time.match(/(\d{4})[-\/](\d{1,2})[-\/](\d{1,2})\s+(\d{1,2}):(\d{1,2})(?::(\d{1,2}))?/)){
        var y = parseInt(RegExp.$1,10);
        var m = parseInt(RegExp.$2,10);
        var d = parseInt(RegExp.$3,10);
        var ho= parseInt(RegExp.$4,10);
        var mi= parseInt(RegExp.$5,10);
        var se= parseInt(RegExp.$6,10)||0;
        date = new Date(y, m-1, d, ho, mi, se);
    }else{
        date = new Date(time);
    }
    return date;
}
                        
function paddingString(str, width, fillchar, cut) {
    fillchar = fillchar || " ";
    cut = cut || false;
    width = width || 0;
    var posit = (width < 0);
    str = str.toString();
    width = Math.abs(width);
    while(str.length < width){
        if(posit) str += fillchar;
        else str = fillchar + str;
    }
    if(cut){
        if(posit) str = str.substr(0, width);
        else str = str.substr(str.length - width);
    }
    return str;
}
    
function formatDate(date, format, cut){
    var MMM_arr = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
    var MC_arr = ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二"];
    var DC_arr = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十", "二十一", "二十二", "二十三", "二十四", "二十五", "二十六", "二十七", "二十八", "二十九", "三十", "三十一"];
    var WDC_arr = ["日", "一", "二", "三", "四", "五", "六"];
    var WD_arr = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
    var res = format;
    res = res.replace(/\$\{yyyy\}/g, paddingString(date.getFullYear(), 4, '0', cut));
    res = res.replace(/\$\{y\}/g, date.getFullYear());
    res = res.replace(/\$\{MMM\}/g, MMM_arr[date.getMonth()]);
    res = res.replace(/\$\{MM\}/g, paddingString(date.getMonth() + 1, 2, '0', cut));
    res = res.replace(/\$\{MC\}/g, MC_arr[date.getMonth()]);
    res = res.replace(/\$\{M\}/g, date.getMonth() + 1);
    res = res.replace(/\$\{dd\}/g, paddingString(date.getDate(), 2, '0', cut));
    res = res.replace(/\$\{dc\}/g, DC_arr[date.getDate()]);
    res = res.replace(/\$\{d\}/g, date.getDate());
    res = res.replace(/\$\{WDC\}/g, WDC_arr[date.getDay()]);
    res = res.replace(/\$\{WD\}/g, WD_arr[date.getDay()]);

    res = res.replace(/\$\{HH\}/g, paddingString(date.getHours(), 2, '0', cut));
    res = res.replace(/\$\{H\}/g, date.getHours());
    res = res.replace(/\$\{hh\}/g, paddingString((date.getHours() - 1) % 12 + 1, 2, '0', cut));
    res = res.replace(/\$\{mm\}/g, paddingString(date.getMinutes(), 2, '0', cut));
    res = res.replace(/\$\{m\}/g, date.getMinutes());
    res = res.replace(/\$\{ss\}/g, paddingString(date.getSeconds(), 2, '0', cut));
    res = res.replace(/\$\{s\}/g, date.getSeconds());
    res = res.replace(/\$\{msms\}/g, paddingString(date.getMilliseconds(), 4, '0', cut));
    res = res.replace(/\$\{ms\}/g, date.getMilliseconds());

    return res;
}
var setInnerText = function(el, innerText) {
    if (document.body && "textContent" in document.body) el.textContent = innerText;
    else el.innerText = innerText;
};


/* for pplive player */
var cur_tv_stations = [];
var cur_tv_stations_map = {};
var cur_playing_station_id = "";
var getMaxBeforeNow = function(arr){
    var maxi = -1;
    var max = new Date(0);
    var now = new Date();
    for(var i = 0; i < arr.length; i ++){
        var d = getDate(arr[i].time);
        arr[i].index = i;
        if(d < now && max < d){
            maxi = i;
            max = d;
        }
    }
    if(maxi){
        return arr[maxi];
    }else{
        return {name:"没有数据", time:"", index:-1};
    }
};
function playStation(id){
    if(id == cur_playing_station_id){
        return;
    }else{
        cur_playing_station_id = id;
    }
    var li_elems = T.dom.query("#stations li[key=" + id + "]");
    for(var lii = 0; lii < li_elems.length; lii++){
        (function(li_elem){
            var last = T.cookie.get("LAST_LIVE");
            live.pptv.play(last = id);
            T.cookie.set("LAST_LIVE", last, cookie_option);
            T.array.each(T.dom.query("li.cur", li_elem.parentNode.parentNode), function(item, i){
                if(item.getAttribute("key") == id) return;
                T.dom.removeClass(item, "cur");
            });
            T.dom.addClass(li_elem, "cur");
            if(T.dom.query("dl.programs", li_elem).length <= 0){
                var tvs = cur_tv_stations_map[id];
                var dl = document.createElement("dl");
                dl.className = "programs";
                li_elem.appendChild(dl);
                var ub = document.createElement("dd");
                dl.appendChild(ub);
                ub.className = "upbutton";
                for(var i = 0; i < 5; i ++){
                    var dt = document.createElement("dt");
                    var dd = document.createElement("dd");
                    var dd_spl = document.createElement("dd");
                    if(i == 0) setInnerText(dd, "正在加载节目");
                    dt.className = "time";
                    dd.className = "title";
                    dd_spl.className = "split";
                    dl.appendChild(dt);
                    dl.appendChild(dd);
                    dl.appendChild(dd_spl);
                }
                var db = document.createElement("dd");
                dl.appendChild(db);
                db.className = "downbutton";
                tvs.getPrograms(function(arr){
                    var refreshList = function(offset){
                        var cur = getMaxBeforeNow(arr);
                        var curidx = parseInt(cur.index, 10);
                        var beginidx = curidx - 2;
                        if(typeof offset != "undefined"){
                            beginidx = offset;
                        }
                        (beginidx > arr.length - 5) && (beginidx = arr.length - 5);
                        (beginidx < 0) && (beginidx = 0);
                        if(beginidx <=0) T.dom.addClass(ub,"hidden"); else T.dom.removeClass(ub, "hidden");
                        if(beginidx >= arr.length-5) T.dom.addClass(db,"hidden"); else T.dom.removeClass(db, "hidden");
                        dl.setAttribute("offset", beginidx);
                        var dts = T.dom.query("dt.time", dl);
                        var dds = T.dom.query("dd.title", dl);
                        for(var i = 0; i < 5; i++){
                            T.dom.removeClass(dts[i],"cur");
                            T.dom.removeClass(dds[i],"cur");
                            if(beginidx + i < arr.length){
                                if(curidx == beginidx + i){
                                    T.dom.addClass(dts[i],"cur");
                                    T.dom.addClass(dds[i],"cur");
                                }
                                setInnerText(dts[i], formatDate(getDate(arr[beginidx+i].time), "${HH}:${mm}"));
                                setInnerText(dds[i], arr[beginidx+i].name);
                            }else{
                                setInnerText(dts[i], "");
                                setInnerText(dds[i], "");
                            }
                        }
                    };
                    refreshList();
                    setInterval(function(){refreshList();}, 60000);
                    T.event.on(ub,"click",function(){
                        var offset = parseInt(dl.getAttribute("offset"), 10);
                        offset -= 1;
                        if(offset < 0) offset = 0;
                        refreshList(offset);
                    });
                    T.event.on(db,"click",function(){
                        var offset = parseInt(dl.getAttribute("offset"), 10);
                        offset += 1;
                        if(offset > arr.length - 5)  offset = arr.length - 5;
                        refreshList(offset);
                    });
                });
            }
        })(li_elems[lii]);
    }
};
function switchTab(tabId, tabs_query, lists_query){
    var station_lists = T.dom.query(lists_query);
    T.array.each(station_lists, function(sl){T.dom.addClass(sl, "hide")});
    T.dom.removeClass(T.g(tabId), "hide");
    var tabs = T.dom.query(tabs_query);
    T.array.each(tabs, function(t){T.dom.removeClass(t, "cur")});
    T.dom.addClass(T.dom.query(tabs_query+"[forkey="+tabId+"]")[0], "cur");
    var last = tabId+","+tabs_query+","+lists_query;
    T.cookie.set("LAST_TAB_LIVE", last, cookie_option);
};
var myfav = T.cookie.get("LIVE_MY_FAV");
myfav = myfav?myfav.split(/,/g):[];
function toggleFav(id){
    var is_delete = false;
    var sl_fav = T.g("sl_fav");
    var fav_lis = sl_fav.children;
    var n = T.array.indexOf(myfav, id);
    if(n > -1){
        myfav.splice(n,1);
        is_delete = true;
    }else{
        myfav.push(id);
    }
    T.cookie.set("LIVE_MY_FAV", myfav.join(","), cookie_option);
    var lis = T.dom.query("#stations li[key=" + id + "] icon.fav");
    for(var i = 0; i < lis.length; i++){
        T.dom.toggleClass(lis[i], "ok");
        if(is_delete && T.dom.contains(sl_fav,lis[i])){
            T.dom.remove(lis[i].parentNode);
        }else{
            if(is_delete){
                lis[i].title = "收藏";
            }else{
                lis[i].title = "已收藏";
            }
        }
    }
    if(!is_delete){
        sl_fav.appendChild(createLi(lis[0].parentNode.getAttribute("key")));
    }
    if(fav_lis.length > 1){
        T.dom.addClass(fav_lis[0], "hide");
    }else{
        T.dom.removeClass(fav_lis[0], "hide");
    }
}
function createLi(key){
    for(var i = 0; i < cur_tv_stations.length; i++){
        if(cur_tv_stations[i].id == key){
            var li = document.createElement("li");
            var icon = document.createElement("icon");
            icon.className = "fav";
            icon.title="收藏";
            if(T.array.contains(myfav, key)){
                T.dom.addClass(icon, "ok");
                icon.title="已收藏";
            }
            T.event.on(icon, "click", function(e){
                toggleFav(T.dom.getAncestorByTag(this, "li").getAttribute("key"));
                T.event.stopPropagation(e);
            });
            li.appendChild(icon);
            T.event.on(li, "click", function(e){
                playStation(this.getAttribute("key"));
            });
            li.appendChild(document.createTextNode(cur_tv_stations[i].name));
            li.setAttribute("key", cur_tv_stations[i].id);
            var span = document.createElement("span");
            span.setAttribute("value", "正在读取，请稍候...");
            (function(span, tvs){
                tvs.getPrograms(function(arr){
                    setInterval(function(){
                        getMaxBeforeNow(arr).name && span.setAttribute("value", getMaxBeforeNow(arr).name);
                    }, 60000);
                    getMaxBeforeNow(arr).name && span.setAttribute("value", getMaxBeforeNow(arr).name);
                });
            })(span, cur_tv_stations[i]);
            li.appendChild(span);
            span.className = "title";
            (function(){
                var intval = 0;
                T.event.on(li, "mouseenter", function(e){
                    if(e.target == this || e.srcElement == this || (window.event && window.event.target == this)){
                        var span = T.dom.query("span.title", this)[0];
                        setInnerText(span, span.getAttribute("value"));
                        var tick = 0;
                        intval = setInterval(function(){
                            var val = span.getAttribute("value");
                            setInnerText(span, val.substr(tick++));
                            if(tick >= val.length) tick = 0;
                        }, 1000);
                        if(T.browser.ie < 7){
                            T.dom.addClass(this, "hover");
                        }
                    }
                });
                T.event.on(li, "mouseleave", function(e){
                    if(e.target == this || e.srcElement == this || (window.event && window.event.target == this)){
                        var span = T.dom.query("span.title", this)[0];
                        clearInterval(intval);
                        intval = 0;
                        setInnerText(span, span.getAttribute("value"));
                        if(T.browser.ie < 7){
                            T.dom.removeClass(this, "hover");
                        }
                    }
                });
            })();
            return li;
        }
    }
}
G.placeholder.bind("station_search", "搜索电视台", "search_holder");
var cookie_option = {};
cookie_option.expires = new Date(9999, 11, 31, 0,0,0);
if(location.href.match(/\.hao123\.com/)) cookie_option.domain = "hao123.com";
live.pptv.create(T.g("play_window"), function(){
    live.pptv.getStations(function(arr){
        for(var i = 0; i < arr.length; i ++){
            if(!window.source_filter || window.source_filter["pptv_map"][arr[i].id]){
                arr[i].filter = window.source_filter ? window.source_filter["pptv_map"][arr[i].id] : null;
                var types = arr[i].filter.type.split(",");
                for(var t = 0; t < types.length; t++){
                    var tobj = T.object.clone(arr[i]);
                    tobj.filter.type = types[t];
                    cur_tv_stations.push(tobj);
                }
                cur_tv_stations_map[arr[i].id]=arr[i];
            }
        }
        if(cur_tv_stations.length){
            var sl_stv = T.g("sl_stv");
            var sl_df = T.g("sl_df");
            T.dom.empty(sl_stv);
            T.dom.empty(sl_df);
            for(var i = 0; i < cur_tv_stations.length; i ++){
                var li = createLi(cur_tv_stations[i].id);
                if(cur_tv_stations[i].filter){
                    if(cur_tv_stations[i].filter.type == "stv")
                        li && sl_stv.appendChild(li);
                    else if(cur_tv_stations[i].filter.type == "df")
                        li && sl_df.appendChild(li);
                }else{
                    li && sl_stv.appendChild(li);
                }
                
            }
            if(myfav){
                for(var i = 0; i < myfav.length; i++){
                    if(myfav[i]){
                        var cl = createLi(myfav[i]);
                        if(cl) T.g("sl_fav").appendChild(cl);
                    }
                }
                if(T.g("sl_fav").children.length>1){
                    T.dom.addClass(T.g("sl_fav").children[0], "hide");
                }
            }
            var last = T.cookie.get("LAST_LIVE");
            if(last){
                playStation(last);
            }else if(window._DEFAULT_LIVE_STATION_){
                playStation(window._DEFAULT_LIVE_STATION_);
            }
            var last_tab = T.cookie.get("LAST_TAB_LIVE");
            if(last_tab){
                last_tab = last_tab.split(/,/g);
                switchTab(last_tab[0], last_tab[1], last_tab[2]);
            }else{
                switchTab("sl_stv", '#stations nav span','#stations .station_list');
            }
        }

        for(var i = 0; i < cur_tv_stations.length; i ++){
            cur_tv_stations[i].getPrograms(function(){});
        }
    });
});
/*end for pplive player*/
/* for hot list */
function refreshHotList(rebuild){
    var today_hot_list = window.hot_list[new Date().getDay()] || [];
    var th = T.g("today_hot");
    if(rebuild){
        T.array.each(T.dom.query("dd", th), function(e){T.dom.remove(e);});
        for(var i = 0; i < today_hot_list.length && i < 14; i++){
            if(window.source_filter["pptv_map"][today_hot_list[i].station]){
                var dd = document.createElement("dd");
                th.appendChild(dd);
                dd.innerHTML = today_hot_list[i].name + ' <span class="sta">' + 
                    window.source_filter["pptv_map"][today_hot_list[i].station]["name"] +
                    '</span><span class="time">' + today_hot_list[i].begin + '</span>';
                dd.setAttribute("name", today_hot_list[i].name);
                dd.setAttribute("station",  window.source_filter["pptv_map"][today_hot_list[i].station]["pptvid"]);
                dd.setAttribute("begin", today_hot_list[i].begin);
                dd.setAttribute("end", today_hot_list[i].end);
                dd.title = today_hot_list[i].begin + " [" + window.source_filter["pptv_map"][today_hot_list[i].station]["name"] + "]" + today_hot_list[i].name
            }
        }
    }
    var dds = T.dom.query("#today_hot dd");
    for(var i = 0; i < dds.length; i++){
        var begin = paddingString(dds[i].getAttribute("begin"), 5, '0');
        var end = paddingString(dds[i].getAttribute("end"), 5, '0');
        var now = formatDate(new Date(), "${HH}:${mm}");
        if(now >= begin && now <= end) T.dom.addClass(dds[i], "cur"); 
        else T.dom.removeClass(dds[i], "cur");
    }
}
refreshHotList(true);
setInterval(function(){refreshHotList(false)}, 60000);
T.event.on(T.g("today_hot"), "click", function(e){
    e = T.event.get(e);
    var target = T.event.getTarget(e);
    for(var t = target; t && t!=document.body; t = t.parentNode){
        if(T.dom.query.matchesSelector(t, "#today_hot dd.cur")){
            playStation(t.getAttribute("station"));
        }
    }
});
/*end for hot list*/
(function(){
    var station_search = T.g("station_search");
    var sug = T.dom.query("#stations suggest")[0];
    var ul = T.dom.query("ul", sug)[0];
    var intval = 0;
    var lis = [];
    for(var i in window.source_filter["pptv_map"]){
        var li = document.createElement("li");
        ul.appendChild(li);
        li.className = "hide";
        li.setAttribute("s_key", i);
        setInnerText(li, window.source_filter["pptv_map"][i].name);
        lis.push(li);
        li.style.cursor = "pointer";
        T.event.on(li, "mousedown", function(){
            playStation(this.getAttribute("s_key"));
        });
    }
    T.event.on(station_search, "focus", function(){
        T.dom.removeClass(sug, "hide");
        var last = "-";
        intval = setInterval(function(){
            var v = station_search.value;
            var hideall = (v == "");
            if(v == last) return;
            last = v;
            for(var i = 0, cnt = 0; i < lis.length; i++){
                var filter = window.source_filter["pptv_map"][lis[i].getAttribute("s_key")];
                if(cnt < 10 && !hideall && (filter.name.indexOf(v) > -1 || filter.spell.toLowerCase().indexOf(v.toLowerCase()) > -1)){
                    cnt++;
                    T.dom.removeClass(lis[i], "hide");
                }else{
                    T.dom.addClass(lis[i], "hide");
                }
            }
        }, 100);
    });
    T.event.on(station_search, "blur", function(){
        T.dom.addClass(sug, "hide");
        clearInterval(intval);
        intval = 0;
    });
})();

setInterval(function(){T.g("now_time").innerHTML = formatDate(new Date(), "${yyyy}-${M}-${d} 星期${WDC} ${H}:${mm}:${ss}");}, 200);


/* for program list */
var plids = window.source_filter["tvsou"].join(",");
var l_stv = T.dom.query(".dropdown .tab li[forkey=dl_stv]")[0];
var l_df = T.dom.query(".dropdown .tab li[forkey=dl_df]")[0];
var pl1 = T.g("pl1");
var pl2 = T.g("pl2");
var cur_today_pl = [];
var curEpgId = "";
var epgList = {};
var epgObj = {};
var _DEFAULT_EPG_="46";
function refreshPlayState(){
    var tablis = T.dom.query("#daytab li.cur.today");
    var l = T.dom.query("#daytab li.cur");
    if(tablis && tablis.length){
        var ret = getMaxBeforeNow(cur_today_pl);
        var lis = T.dom.query("#program_list .programs li");
        var last = T.dom.query("#program_list .programs li.cur");
        for(var i = 0; i < last.length; i++){
            last[i].className = "";
        }
        lis[ret.index].className = "cur";
        for(var i = ret.index; i--;){
            lis[i].className = "played";
        }
    }else if (l[0] && l[0].getAttribute("dt")<formatDate(new Date(), "${yyyy}${MM}${dd}")){
        var lis = T.dom.query("#program_list .programs li");
        for(var i = 0; i < lis.length; i++){
            lis[i].className = "played";
        }
    }
}

T.event.on(T.g("daytab"), "click", function(e){
    var dt = T.event.getTarget(e);
    while(dt!=document.body && dt.tagName.toLowerCase() != "li"){
        dt = dt.parentNode;
    }
    if(dt.tagName.toLowerCase() != "li"){
        return;
    }
    try{
        T.dom.removeClass(T.dom.query("#daytab li.cur")[0], "cur");
    }catch(err){}
    T.dom.addClass(dt, "cur");
    refreshPL();
});
setInterval(refreshPlayState, 60000);
/*刷新每天列表（点击切换天的时候，先改变cur所在位置，然后执行此函数）*/
function refreshPL(){
    var lis = T.dom.query("#daytab li");
    for(var i = 0; i < lis.length; i++){
        if(T.dom.hasClass(lis[i],"cur")){
            T.dom.empty(pl1);
            T.dom.empty(pl2);
            var date = getDate(lis[i].getAttribute("dt")+"000000");
            var ndate = new Date(date.getTime() + 24 * 3600 * 1000);
            /*window.epgList保存每一个电视台ID的对应的电视节目表*/
            var cl = window.epgList[window.curEpgId];
            cur_today_pl = [];
            for(var j = 0; j < cl.length; j++){
                var ct = getDate(cl[j].time);
                if(ct >= date && ct < ndate){
                    cur_today_pl.push(cl[j]);
                    var li = document.createElement("li");
                    pl2.appendChild(li);
                    if(pl2.children.length > pl1.children.length){
                        pl1.appendChild(pl2.firstChild);
                    }
                    setInnerText(li, formatDate(ct, "${HH}:${mm} " + cl[j].name));
                }
            }
            refreshPlayState();
        }
    }
    var ct = T.dom.query("#daytab li.today.cur");
    if(ct.length){
        for(var i = 0; i < ct.length; i++){
            T.dom.addClass(ct[i], "today_cur");
        }
    }else{
        var tc = T.dom.query("#daytab li.today_cur");
        for(var i = 0; i < tc.length; i++){
            T.dom.removeClass(tc[i], "today_cur");
        }
    }

}
function stvTab(){
    T.dom.addClass(l_stv, "cur");
    T.dom.removeClass(l_df, "cur");
    T.dom.addClass(T.g("dl_df"), "hide");
    T.dom.removeClass(T.g("dl_stv"), "hide");
}
function dfTab(){
    T.dom.addClass(l_df, "cur");
    T.dom.removeClass(l_stv, "cur");
    T.dom.addClass(T.g("dl_stv"), "hide");
    T.dom.removeClass(T.g("dl_df"), "hide");
}
stvTab();
/*获取电视台列表的回调函数*/
function updateEpg(obj){
    window.epgObj = obj;
    var pg = T.g("page");
    for(var id in obj){
        if(window.source_filter.tvsou_map[id].type.match(/\bstv\b/)){
            var li = document.createElement("li");
            setInnerText(li, window.source_filter.tvsou_map[id].name);
            li.setAttribute("key", id);
            T.g("dl_stv").appendChild(li);
        }
        if(window.source_filter.tvsou_map[id].type.match(/\bdf\b/)){
            var li = document.createElement("li");
            setInnerText(li, window.source_filter.tvsou_map[id].name);
            li.setAttribute("key", id);
            T.g("dl_df").appendChild(li);
        }
    }
    var pl = T.g("program_list");
    var last = T.cookie.get("LAST_EPG");
    if(last){
        T.sio.callByBrowser(obj[last].epgurl + "&d=" + new Date().getTime());
    }else if(window._DEFAULT_EPG_){
        T.sio.callByBrowser(obj[window._DEFAULT_EPG_].epgurl + "&d=" + new Date().getTime());
    }
}
T.sio.callByBrowser("http://hz.tvsou.com/jm/hao123/getlist_b.asp?ids=" + plids + "&d=" + new Date().getTime());

T.event.on(T.dom.query(".dropdown_button")[0], "click", function(e){
    T.event.stopPropagation(e);
    var div = T.dom.query(".dropdown")[0];
    if(T.dom.hasClass(div, "hide")){
        T.dom.removeClass(div, "hide");
        T.dom.addClass(T.dom.query(".dropdown_button")[0], "down");
        var bpos = T.dom.getPosition(T.dom.query(".dropdown_button")[0]);
        var cpos = T.dom.getPosition(T.g("program_list"));
        T.dom.setPosition(div, {left:bpos.left - cpos.left, top:bpos.top-cpos.top+20});
        T.dom.addClass(T.g("program_list"), "expand_stations");
    }else{
        T.dom.addClass(div, "hide");
        T.dom.removeClass(T.dom.query(".dropdown_button")[0], "down");
        T.dom.removeClass(T.g("program_list"), "expand_stations");
    }
});
T.event.on(T.dom.query(".dropdown")[0], "click", function(e){
    var obj = T.event.getTarget(e);
    var key = obj.getAttribute("key");
    if(key){
        T.cookie.set("LAST_EPG", key, cookie_option);
        
        if(window.epgList[key]){
            updateProgram({id:key, list:window.epgList[key]});
        } else{
            T.sio.callByBrowser(window.epgObj[key].epgurl + "&d=" + new Date().getTime());
        }
    }else{
        T.event.stopPropagation(e);
    }
});
T.event.on(document.body, "click", function(){
    T.dom.addClass(T.dom.query(".dropdown")[0], "hide");
    T.dom.removeClass(T.dom.query(".dropdown_button")[0], "down");
    T.dom.removeClass(T.g("program_list"), "expand_stations");
});
/*节目单点击当前直播*/
T.event.on(T.dom.query(".programs")[0], "click", function(e){
    if(T.dom.hasClass(T.event.getTarget(e), "cur")){
        playStation(window.source_filter.tvsou_map[curEpgId].pptvid);
    }
});

/*获取单个电视台节目的回调函数*/
function updateProgram(obj){
    if(window.source_filter.tvsou_map[obj.id]){
        window.curEpgId = obj.id;
        window.epgList = window.epgList || {};
        window.epgList[obj.id] = obj.list;
        var daytab = T.g("daytab");
        T.dom.empty(daytab);
        setInnerText(T.dom.query("#program_list .dropdown_button .title")[0], window.source_filter.tvsou_map[obj.id].name);
        var bd = new Date();
        var li;
        for(var last = "", i = 0, dc = 0; i < obj.list.length && dc < 14; i++){
            var d = getDate(obj.list[i].time);
            var dt = formatDate(d, "${M}月${d}日");
            if(last != dt){
                dc++;
                li = document.createElement("li");
                if(dt == formatDate(bd, "${M}月${d}日")){
                    li.className = "today cur";
                    if(T.browser.ie<7)T.dom.addClass(li,"today_cur");
                }
                daytab.appendChild(li);
                var pw = document.createElement("p");
                pw.className = "wd";
                var p = document.createElement("p");
                pw.className = "dt";
                setInnerText(pw, formatDate(d, "周${WDC}"))
                setInnerText(p, dt);
                li.setAttribute("dt", formatDate(d,"${yyyy}${MM}${dd}"));
                li.appendChild(pw);
                li.appendChild(p);
                last = dt;
            }
        }
        refreshPL();
    }
};

if(T.browser.ie < 7){
    /*suggest hover*/
    jquery("#stations suggest").hover(function(e){
        e = T.event.get(e);
        var target = T.event.getTarget(e);
        for(var t = target; t && t!=document.body; t = t.parentNode){
            if(T.dom.query.matchesSelector(t, "#stations suggest li")){
                T.dom.addClass(t, "cur");
                break;
            }
        }
    }, function(e){
        T.dom.removeClass(T.event.getTarget(T.event.get(e)), "cur");
    });
    /*programlist hover*/
    jquery("#daytab").hover(function(e){
        e = T.event.get(e);
        var target = T.event.getTarget(e);
        for(var t = target; t && t!=document.body; t = t.parentNode){
            if(T.dom.query.matchesSelector(t, "#daytab li")){
                T.dom.addClass(t, "hover");
                break;
            }
        }
        var ht = T.dom.query("#daytab li.today.hover");
        if(ht.length){
            for(var i = 0; i < ht.length; i++){
                T.dom.addClass(ht[i], "today_hover");
            }
        }else{
            var th = T.dom.query("#daytab li.today_hover");
            for(var i = 0; i < th.length; i++){
                T.dom.removeClass(th[i], "today_hover");
            }
        }
    }, function(e){
        e = T.event.get(e);
        var target = T.event.getTarget(e);
        for(var t = target; t && t!=document.body; t = t.parentNode){
            if(T.dom.query.matchesSelector(t, "#daytab li")){
                T.dom.removeClass(t, "hover");
                break;
            }
        }
        var ht = T.dom.query("#daytab li.today.hover");
        if(ht.length){
            for(var i = 0; i < ht.length; i++){
                T.dom.addClass(ht[i], "today_hover");
            }
        }else{
            var th = T.dom.query("#daytab li.today_hover");
            for(var i = 0; i < th.length; i++){
                T.dom.removeClass(th[i], "today_hover");
            }
        }
    });
}
/* end for program list */
if (navigator.userAgent.match(/\sSE\s/)){
    T.dom.addClass(document.body, "sogou");
}

