﻿String.prototype.Format = function(){var t=this;for(var i=0,j=arguments.length;i<j;i+=1) t=t.replace(new RegExp("\\{" + i + "\\}", "g"),arguments[i]);return t;};
String.prototype.Trim = function(){ return this.replace(/(^\s*)|(\s*$)/g, "");  };
/*
  @author zhouyao<zhouyao@snda.com>
*/
if(!window.Snda)    var Snda=window.Snda={};
(function(){
    var userAgent = navigator.userAgent.toLowerCase();
    Snda.browser = {
        version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1],
        safari: /webkit/.test( userAgent ),
        opera: /opera/.test( userAgent ),
        msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
        mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )
    };
    Snda.extend = function(dest, source, replace) {//扩展
	    for(prop in source) {
		    if(replace == false && dest[prop] != null) continue;
		    dest[prop] = source[prop];
	    };
	    return dest;
    };
    Snda.Utility={//通用工具
        fadeIn:function( elem, to, speed ) {//淡进
            Snda.Utility.setOpacity( elem, 0 );
            Snda.Utility.show( elem );
            for ( var i = 0; i <= 100; i += 5 ) {
                (function(){
        		    var opacity = i;
                    setTimeout(function(){
                        Snda.Utility.setOpacity( elem, ( opacity / 100 ) * to );
                    }, ( i + 1 ) * speed );
                })();
            };
        },
        fadeOut:function ( elem, speed, remove,callBack ) {//淡出
            for ( var i = 0; i < 100; i += 2 ) {
                (function(){
        		    var opacity = i;
                    setTimeout(function(){
                        Snda.Utility.setOpacity( elem, 100 - opacity );
				        if ( opacity == 98 ){
				            if(!remove)  Snda.Utility.hide( elem );
				            else         Snda.Utility.removeNode( elem );
				            callBack();
				        };
                    }, ( i + 1 ) * speed );
                })();
            };
        },
        getStyle:function( elem, name ) {//获取样式值
            if (elem.style[name])           return elem.style[name];
            else if (elem.currentStyle)     return elem.currentStyle[name];
            else if (document.defaultView && document.defaultView.getComputedStyle) {
                name = name.replace(/([A-Z])/g,"-$1");
                name = name.toLowerCase();
                var s = document.defaultView.getComputedStyle(elem,"");
                return s && s.getPropertyValue(name);
            }else  return null;
        },
        hide:function( elem ) {//隐藏
            var curDisplay = Snda.Utility.getStyle( elem, "display" );
            if ( curDisplay != "none" ) elem.$oldDisplay = curDisplay;
            elem.style.display = "none";
            return Snda.Utility;
        },
        show:function(elem){//显示
            elem.style.display = elem.$oldDisplay || "block";
            return Snda.Utility;
        },
        removeNode:function(elem){//移除元素
            elem.parentNode && elem.parentNode.removeChild(elem);
            return Snda.Utility;
        },
        setOpacity:function( elem, level ) {//设置透明度
            if ( elem.filters ) elem.style.filter= "alpha(opacity="+level+")";
            else                elem.style.opacity = level / 100;
            return Snda.Utility;
        },
        setX:function(elem, pos) {
            elem.style.left = pos + "px";
            return Snda.Utility;
        },
        setY:function(elem, pos){
            elem.style.top = pos + "px";
            return Snda.Utility;
        },
        StopDefault:function(e){//阻止浏览器默认行为
            if(e&&e.preventDefault) e.prefentDefault();
            else                    window.event.returnValue=false;
            return false;
        },
        cancelBubble:function(evt){//取消冒泡
            evt = evt|| window.event; 
            if (window.event) evt.cancelBubble=true; 
            else              evt.stopPropagation(); 
        },
        Event:{//事件
            addEventHandler :function (oTarget, sEventType, fnHandler,bool){//事件绑定
                    if(oTarget.addEventListener)   oTarget.addEventListener(sEventType, fnHandler, bool);  //FF方法
                    else if (oTarget.attachEvent)  oTarget.attachEvent("on" + sEventType, fnHandler);       //IE方法
                    else                           oTarget["on" + sEventType] = fnHandler;                  //其他未知浏览器
            },
            removeEventHandler:function(obj,EventType,Handler,bool){
                if(obj.removeEventListener)    obj.removeEventListener(EventType,Handler,bool);
                else if(obj.detachEvent)       obj.detachEvent('on'+EventType,Handler);         
                else                           obj['on'+EventType] = null;
            },
            getCurrentElem:function(evt){//获取事件元素
                 evt = evt || window.event ;    
                 return evt.srcElement || evt.target;   
            },
            elementClick:function(e){//元素点击
                if (document.all) e.click();
                else if (document.createEvent) {
                    var ev = document.createEvent('MouseEvents');
                    ev.initEvent('click', false, true);
                    e.dispatchEvent(ev);
                };
            }
        },
        Postion:{
            scrollX:function(){//拖动条移动x轴距离
                var de=document.documentElement;
                return self.pageXOffset||(de&&de.scrollLeft)|| document.body.scrollLeft || 0;
            },
            scrollY:function(){//拖动条移动y轴距离
                var de=document.documentElement;
                return self.pageYOffset||(de&&de.scrollTop)|| document.body.scrollTop || 0;
            },
            windowWidth:function(){//屏幕宽
                var de = document.documentElement;
                return self.innerWidth ||( de && de.clientWidth ) || document.body.clientWidth;
            },
            windowHeight:function(){//屏幕高
                var de = document.documentElement;
                return self.innerHeight ||( de && de.clientHeight ) || document.body.clientHeight;
            },
            pageWidth:function() {//页面高
                return document.body.scrollHeight;
            },
            pageHeight:function() {//页面宽
                return document.body.scrollWidth;
            }
        }
    };
    Snda.Layer={
        zIndex:2009,
        Hash:{},
        Config:{
            bg:'<iframe id="pop_bg2_{0}" scrolling=0 frameborder=0 class="pop_BackGround" ></iframe>'+
               '<div id="pop_bg1_{0}" class="pop_BackGround" ></div>',
            con:'<div class="pop_Content" id="{3}{0}">'+
	                  '<h1 id="{4}{0}"><span id="pop_title_{0}" class="pop_Title">{6}</span></h1><span id="{5}{0}" class="pop_close" title="关闭"></span>'+
	                  '<div class="pop_Main"><iframe id="pop_frame_{0}" frameborder="0" scrolling="no" haslayout="-1" src="{1}"></iframe></div>'+
	            '<div class="pop_Footer" id="pop_footer_{0}">{2}</div></div>'
        },
        Show:function(config){//显示
            if(!config)  throw {msg:'请输入参数'};
            var _json={
                title:      config.title||'',                   //标题
                tid:        config.title||'pop_title_',         //标题id
                cid:        config.cid||'pop_cont_',            //主内容id
                hid:        config.hid||'pop_head_',            //拖动id
                clid:       config.clid||'pop_close_',          //关闭id
                src:        config.src||'',                     //iframe地址
                fcon:       config.fcon||'',                    //底部内容
                follow:     !!config.follow||false,             //跟随
                move:       !!config.move||false ,              //移动
                sSpeed:     config.sSpeed||5,                   //淡进
                cSpeed:     config.cSpeed||0,                   //关闭速度
                callBack:   config.callBack||  function(){},    //结束回调函数
                firstFun:   config.firstFun||  function(){}     //预先执行函数
            };
            var _temdId=Math.floor(Math.random()*10000000000);
            Snda.Layer.Hash[_temdId+'']=_json.cid+_temdId;
            var _div=document.createElement('div');
            _div.id='pop_container_'+_temdId;
            _div.style.display='none';
            _div.$sndaId=_temdId;
            _div.$cSpeed=_json.cSpeed;
            _div.$callBack=_json.callBack;
            if(_json.src.indexOf('?')>0)  _json.src=_json.src+'&rand='+_temdId;
            else _json.src=_json.src+'?rand='+_temdId;
            _div.innerHTML=Snda.Layer.Config.bg.Format(_temdId)+Snda.Layer.Config.con.Format(_temdId,_json.src,_json.fcon,_json.cid,_json.hid,_json.clid,_json.title);
            document.body.appendChild(_div);
            _json.firstFun();
            Snda.Layer.SetBackGround("pop_bg2_"+_temdId,"pop_bg1_"+_temdId);
            var _close=document.getElementById(_json.clid+_temdId);
            if(_close){//绑定关闭
                Snda.Utility.Event.addEventHandler(_close,'click',Snda.Layer.Close,false);
                _close.$sndaId=_temdId;
            };
            Snda.Layer.BeMiddle(_temdId);//设置居中
            if(_json.follow)    Snda.Layer.Follow();//设置跟随
            if(_json.move){//设置拖动
                var _m=document.getElementById(_json.cid+_temdId);
                var _h=document.getElementById(_json.hid+_temdId);
                Snda.Layer.Drag(_h,_m,0,0);
            };
            Snda.Utility.fadeIn(_div,100,_json.sSpeed);
        },
        Close:function(evt){//关闭
            var num;
            var _elem= Snda.Utility.Event.getCurrentElem(evt);
            if(!_elem.$sndaId)  return false;
            else            num=_elem.$sndaId;
            if(!Snda.Layer.Hash[num+'']) return false;
            var _o=document.getElementById('pop_container_'+num);
            var _con=document.getElementById(Snda.Layer.Hash[num+'']);
            var callBack=function(){
                Snda.Utility.removeNode(_o);
                _o.$callBack();
            };
            delete Snda.Layer.Hash[num+''];
            if(_o && _con)  Snda.Utility.fadeOut(_con,_o.$cSpeed,true,callBack);
            Snda.Utility.cancelBubble(evt)
        },
        Follow:function(){//跟随
            var scollEvent=function(){
                var _winWidth   = Snda.Utility.Postion.windowWidth();
                var _winHeight  = Snda.Utility.Postion.windowHeight();
                for(var o in Snda.Layer.Hash){ 
                    if(!o)  continue;
                    var _div=document.getElementById(Snda.Layer.Hash[o+'']);
                    (function(w,h,sX,sY){
                         _div && Snda.Utility.setX(_div,sX + (_winWidth-w)/2).setY(_div,sY +(_winHeight-h)/2);
                    })(Snda.Utility.getStyle( _div , 'width').replace('px','')>>0, 
                       Snda.Utility.getStyle( _div , 'height').replace('px','')>>0,
                       Snda.Utility.Postion.scrollX(),
                       Snda.Utility.Postion.scrollY());
                };
            };
            Snda.Utility.Event.addEventHandler(window,'scroll',scollEvent,false);
            Snda.Utility.Event.addEventHandler(window,'resize',scollEvent,false);
            Snda.Utility.Event.addEventHandler(window,'load',scollEvent,false);
        },
        BeMiddle:function(id){//居中
               var _div=document.getElementById(Snda.Layer.Hash[id+'']);
               var _width  = Snda.Utility.getStyle( _div , 'width' );
               var _height = Snda.Utility.getStyle( _div , 'height');
               _div.style.left =( Snda.Utility.Postion.windowWidth()/2  - (_width.replace('px','')>>0)/2 + Snda.Utility.Postion.scrollX()) + 'px';
               _div.style.top  =( Snda.Utility.Postion.windowHeight()/2 - (_height.replace('px','')>>0)/2 + Snda.Utility.Postion.scrollY()) + 'px';
               Snda.Layer.zIndex+=1;
               _div.style.zIndex= Snda.Layer.zIndex;
        },
        SetBackGround:function(){//设置背景宽度
            for(var i=0,j=arguments.length;i<j;i+=1) {
                (function(o,h,w){
                    if(o){ o.style.height=h;   o.style.width=w;   };
                })(document.getElementById(arguments[i]),
                   (Math.max(document.body.scrollHeight,document.body.offsetHeight)) + "px",
                   (Math.max(document.body.scrollWidth,document.body.offsetWidth)) + "px");
            };
        },
        Drag:function(o,root,minX,minY,opacity){//移动
            !o.$Root&&(o.$Root=root||o);
            opacity = opacity||0.3;
            var x,y,_cloneItem  = ['height','width','left','top'];
            var DragEvent={
                mousedown:function(evt){//拖动开始
                    evt = evt || window.event;
                    x   = evt.layerX || evt.offsetX;
                    y   = evt.layerY || evt.offsetY;
                    document.body.appendChild(_clone);
                    Snda.Utility.Event.addEventHandler(document,'mousemove',DragEvent.move,false);
                    Snda.Utility.Event.addEventHandler(document,'mouseup',DragEvent.end,false);
                    Snda.Utility.hide(root);
                    return false;
                },
                clone:function(e,opacity){//克隆对象样式
                    var _div = document.createElement('div');
                    _div.$handle = o;
                    _div.$root   = root;
                    _div.className     = 'clone';
                    _div.style.filter  = 'alpha(opacity='+(opacity * 100)+')';
                    _div.style.opacity = opacity;
                    for(var i=0;i<_cloneItem.length;i+=1)   _div.style[_cloneItem[i]]=Snda.Utility.getStyle(e,_cloneItem[i]);
                    return _div;
                },
                end:function(evt){//结束拖动
                    evt = evt || window.event;
                    _clone.$temp && Snda.Utility.setX(_clone.$root,_clone.$temp.left).setY(_clone.$root,_clone.$temp.top);
                    Snda.Utility.Event.removeEventHandler(document,'mousemove',DragEvent.move,false);
                    Snda.Utility.removeNode(_clone).show(root);
                },
                compare:function(){//比较
                    if(_clone.$minX != null)    _clone.$temp.left =   Math.max(_clone.$temp.left , _clone.$minX) + Snda.Utility.Postion.scrollX();
                    if(_clone.$minY != null)    _clone.$temp.top  =   Math.max(_clone.$temp.top  , _clone.$minY) + Snda.Utility.Postion.scrollY(); 
                },
                move:function(evt){//移动
                    evt = evt|| window.event;
                    (function(left,top){
                        _clone.$temp = {left:left,top:top};
                        DragEvent.compare();
                        Snda.Utility.setX(_clone,_clone.$temp.left).setY(_clone,_clone.$temp.top);
                    })(evt.clientX- x ,evt.clientY- y )
                },
                zIndex:function(){//多窗体样式
                }
            };
            var _clone = DragEvent.clone(o.$Root,opacity);//克隆
            _clone.$minX	= typeof minX != 'undefined' ? minX : null;
            _clone.$minY	= typeof minY != 'undefined' ? minY : null;
            Snda.Utility.Event.addEventHandler(o,'mousedown',DragEvent.mousedown,false);
        }
      };
      Snda.QiDian={
        Tools:{
            Layer:{
                GoTo:function(name){
                    var _name=_title='';
                    switch(name.toLowerCase()){
                        case 'reg':     _name='http://www.qidian.com/Pop/Login/Reg.aspx',_title='注册'; break;
                        case 'login':   _name='http://www.qidian.com/Pop/Login/Login.aspx',_title='登录'; break;
                        default:    return false;
                    };
                    for(var i in Snda.Layer.Hash){
                        document.getElementById('pop_frame_'+i).src=_name+'?rand='+i;
                        document.getElementById('pop_title_'+i).innerHTML=_title;
                    };
                },
                Close:function(){
                    location.href=location.href;
                }
            }
        }
      };
})();
function checkLoginByCookie(){
    var cookieId="AUTHTEST";
    if(window.location.href.toLowerCase().indexOf("qidian.com") > -1)   cookieId="cmfuToken";
    if((GetCookie(cookieId)!=null && GetCookie(cookieId).length > 0 ))  return true;
    else{   if(GetCookie('cmfu_al') != null && GetCookie('cmfu_al').length > 0) return true;};
    return false;
};
function GetCookie(cookieName) {
    var cookieString = document.cookie;
    var start = cookieString.indexOf(cookieName + '=');
    if (start == -1) return null; // 加上等号的原因是避免在某些 Cookie 的值里有与cookieName一样的字符串	
    start += cookieName.length + 1;
    var end = cookieString.indexOf(';', start);
    if (end == -1) return unescape(cookieString.substring(start));
    return unescape(cookieString.substring(start, end));
};
function Vote(type,id,name){
    if(!checkLoginByCookie()){
        alert('请先登入后进行投票..');
        Snda.Layer.Show({
            title:'登录',
            src:'/Pop/Login/Login.aspx',
            follow:true,move:true,cSpeed:5,
            callBack:function(){}
        });
        return false;
    };
    alert('年终盘点活动已经结束,感谢您的参与');return false;
    Snda.Layer.Show({
        title:(type=='book'?'作品投票':'作家投票')+'&nbsp;___'+name,
        src:'vote.aspx?type='+type+'&id='+id||-1,
        follow:true,move:true,cSpeed:5,
        callBack:function(){},
        firstFun:function(){
            for(var i in  Snda.Layer.Hash)
                document.getElementById('pop_cont_'+i).style.height='170px';
        }
    });
};
