﻿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));
};
