﻿if(typeof DOM=="undefined"){document.write("<script src='http://www.comicspot.net/scms/js/libs.js'></script>");}
var HOSTS=["comicspot.net","acspot.com"],DOMAIN="www.comicspot.net",
IS_LOCAL=location.href.indexOf("localhost")>=0,
IS_SUBDOMAIN=location.href.indexOf(DOMAIN)<0,
BBS_URL=IS_LOCAL? "http://localhost/bbs/":"http://bbs.comicspot.net/",
hostBase="";
for(var i in HOSTS){if(location.host.indexOf(HOSTS[i])>=0){hostBase=HOSTS[i];break;}}
var COOKIE_DOMAIN=hostBase?"."+hostBase:"localhost",DOMAIN_WWW=IS_LOCAL?COOKIE_DOMAIN:"www."+hostBase;
if(hostBase){document.domain=hostBase;}
function Ad(a){
	this.args=a;
	this.show=function(e){
		var dateCur=new Date().getTime(),ad=this.args;
//过期
		if(typeof ad.timeout!="undefined"&&dateCur>=this.args.timeout){return;}
		var s="",ext=ad.media.substring(ad.media.lastIndexOf(".")+1).toLowerCase(),
			u=typeof ad.url=="string"&&ad.url.length>0?ad.url:null;
		if(ext=="swf"){
			s="<object id='Ad_"+type+"' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0' \
style='width:"+ad.width+"; height:"+ad.height+"; border:1px solid black;'>\
<param name='movie' value='"+ad.media+"'/><param name='quality' value='high'/><param name='wmode' value='transparent'/>\
<embed src='"+ad.media+"' width='"+ad.width+"' height='"+ad.height+"' quality='high' pluginspage='http://www.macromedia.com/go/getflashplayer' \
type='application/x-shockwave-flash' wmode='transparent'></embed></object>";
			if(u!=null){
				s+='<script language="JavaScript">function Ad_'+type+'_DoFSCommand(command,args){window.open(args==null||args.length==0? "'+u+'":args);}</script>';
				if(navigator.appName.indexOf("Microsoft")!=-1){
					DOM.D.write("<script language='VBScript'>On Error Resume Next\nSub Ad_"+type+"_FSCommand(ByVal command,ByVal args)\nCall Ad_"+type+"_DoFSCommand(command,args) End Sub</script>");
				}
			}
		}else if(Ad.IMAGE_EXT.indexOf(ext)>=0){
			s='<img src="'+ad.media+'" style="width:'+ad.width+';height:'+ad.height+';'+
				(typeof ad.border=="string"? "border:"+ad.border+";":"")+(ad.alt? '" alt="'+ad.alt:'')+'"/>';
			if(u!=null){s='<a href="'+u+'" target="_blank" title="'+(ad.title? ad.title:'')+'">'+s+'</a>';}
		}
		e=typeof e=="string"? DOM.E(e):e;
		if(e!=null){e.innerHTML=s;}
		else{DOM.D.write(s);}
	}
}
Ad.IMAGE_EXT="jpg gif png";
function Bookmark(pf,v){
	this.prefix=pf; this.value=v;
	this.set=function(k){
		if(k==null){k="LastPage";}
		else{alert("书签保存完毕");}
		DOM.D.cookie=this.toCookieString(k);
	}
	this.toString=function(){return this.value;}
	this.toCookieString=function(k,ex){
		if(ex==null){ex=new Date(); ex.setYear(ex.getFullYear()+1);}
		return this.prefix+(k? k:"")+"="+this.toString()+";domain="+COOKIE_DOMAIN+";path=/;expires="+ex.toGMTString();
	}
}
function AnimeBookmark(path,c,n){
	this.key=null; this.path=path; this.chapter=c; this.name=n;
	this.set=function(k){this.bm.set(k? k:this.key);}
	this.toString=function(){return this.path+" "+this.chapter+" "+escape(this.name);}
	this.bm=new Bookmark(AnimeBookmark.PREFIX,this.toString());
	this.toLinkURI=function(){return "http://www.comicspot.net/anime/"+this.path+"/"+(this.chapter? this.chapter+".html":"");}
}
AnimeBookmark.PREFIX="animeBookmark";
AnimeBookmark.loadAll=function(){
	var cs=HTML.Cs(AnimeBookmark.PREFIX),bs=[],b,s,ss,j,i;
	for(i in cs){
		s=cs[i].split(" ");
		if(s.length>=3){
			b=new AnimeBookmark(s[0],s[1]); ss="";
			for(j=2; j<s.length; j ++){ss+=(j>2? " ":"")+s[j];}
			b.key=i; b.name=unescape(ss); bs[i]=b;
		}
	}
	AnimeBookmark.all=bs;
	return bs;
}
AnimeBookmark.open=function(k){
	var cb=AnimeBookmark.all==null?null:AnimeBookmark.all[k];
	if(cb!=null){window.open(cb.toLinkURI());}
}
function ComicBookmark(bp,path,p,n){
	this.key=null; this.basepath=bp; this.path=path;
	this.page=p; this.name=n;
	this.set=function(k){this.bm.set(k?k:this.key);}
	this.toString=function(){return this.basepath+" "+this.path+" "+this.page+" "+escape(this.name);}
	this.bm=new Bookmark(ComicBookmark.PREFIX,this.toString());
	this.toLinkURI=function(){
		return "http://comic.comicspot.net/"+(window.noad?"v?path=":"")+this.basepath+"/"+
(this.path? this.path+"/":"") +
(this.page>0? "p"+Util.getZeroDigit(this.page,3)+".html":"");
	}
}
ComicBookmark.all=null;
ComicBookmark.PREFIX="comicBookmark";
ComicBookmark.loadAll=function(){
	var cs=HTML.Cs(ComicBookmark.PREFIX),cbs=[],b,s,ss,i,j;
	for(i in cs){
		s=cs[i].split(" ");
		if(s.length>=4){
			b=new ComicBookmark(s[0],s[1],s[2]);
			if(b.basepath.indexOf("/")<0){continue;}
			ss="";
			for(j=3;j<s.length;j ++){ss+=(j>3?" ":"")+s[j];}
			b.key=i;b.name=unescape(ss);cbs[i]=b;
		}
	}
	ComicBookmark.all=cbs;
	return cbs;
}
ComicBookmark.open=function(k){
	var cb=ComicBookmark.all!=null?ComicBookmark.all[k]:null;
	if(cb!=null){window.open(cb.toLinkURI());}
}
var comicStore={
	MAX_PANEL_ROW:10,page:0,content:null,accessing:false,
	urlpf:function(){return "/script/action/comic/store/?uid="+member.getUid()+"&action=";},
//加漫画至书架
	set:function(bp,path,p){
		if(member.getUid()>0){
			var sp=(path? "/"+path:"")+(p?"/p"+Util.getZeroDigit(p,3)+".html":"");
			XML.load(this.urlpf()+"set&path="+bp+"&subpath="+sp,
				{onload:this.action_onload,plain:true,data:"set"});
		}else{alert("登录后才可以将漫画添加至书架，若未注册过请先注册");}
	},
//载入书架列表
	load:function(rl){
		if(this.accessing){alert("书架数据载入中，请稍候再操作");return;}
		this.accessing=true;
		XML.load(this.urlpf()+"get"+(rl? "&tc="+new Date().getTime():""),
			{onload:this.onload,plain:true});
	},
	onload:function(doc){
		var p="p="+doc,h="",m=0,c,p,n,href,hrefInc,ns="\u3001",e,cs=comicStore,i;
		cs.accessing=false;
		try{eval(p);}catch(ex){alert(ex.message+"\n"+doc);return;}
		cs.content=[];
		for(i in p){
			c=p[i];
			if(typeof c!="object"){continue;}
			cs.content[c.id]=c;
			p=c.name.indexOf(ns);
			n=p>0? c.name.substring(0,p):c.name;
			href="http://comic.comicspot.net/"+(window.noad?"v?path=":"")+c.path;
			h+="<div class='comic'><a href='javascript:comicStore.switchNotify(" +
c.id+")' class='btn "+(c.notify? "":"un")+"notify'></a><a href='javascript:comicStore.remove(" +
c.id+")' class='btn remove'></a><a href='"+href+"/' target='_blank' onclick='comicStore.increase(" +
c.id+")' class='link'>"+n+"</a>" +
(c.subpath? " <a href='"+href+c.subpath+"' onclick='comicStore.increase("+c.id+")' target='_blank'>章节</a>":"") +
"</div>";
			m ++;
		}
		e=DOM.E("ComicStore");
		if(m>this.MAX_PANEL_ROW){e.style.height=(this.MAX_PANEL_ROW * 20)+"px";}
		DOM.setEHTML(e,h.length==0? "暂无收藏":h);
		cs.showList(true);
	},
//显示书架
	showList:function(s){
		if(this.content==null){comicStore.load();return;}
		var e=DOM.E("ComicStore");
		DOM.setDisplay(e,s||e.style.display=="none");
	},
//增加计数
	increase:function(id){if(typeof id=="number"&&id>0){XML.load(this.urlpf()+"increase&id="+id,{plain:true});}},
//删除漫画
	remove:function(id){
		if(this.accessing){alert("书架数据载入中，请稍候再操作");return;}
		else if(!confirm("确定要将漫画《"+this.content[id].name+"》从您的书架中移除吗？")){return;}
		this.accessing=false;
		XML.load(this.urlpf()+"remove&id="+id+"&tc="+new Date().getTime(),
			{onload:this.action_onload,plain:true,data:"remove"});
	},
	switchNotify:function(id){
		if(this.accessing){alert("书架数据载入中，请稍候再操作");return;}
		this.accessing=false;
		var c=this.content[id],tip="要将漫画《"+c.name+"》的订阅状态设为“"+(c.notify? "取消":"")+"订阅”吗？您将不再会收到此漫画的更新通知";
		if(!confirm(tip)){return;}
		XML.load(this.urlpf()+"setNotify&id="+id+"&notify="+(c.notify? 0:1)+"&tc="+new Date().getTime(),
			{onload:this.action_onload,plain:true,data:"switchNotify"});
	},
//添加、删除的回调函数
	action_onload:function(d,t){
		comicStore.accessing=false;
		if(d=="ok"){comicStore.load(true);}
		if(t=="set"){
			if(d.indexOf("exists")>=0){d="此漫画已经添加至您的漫画书架";}
			else if(d.indexOf("no found comic")>=0){d="没有找到指定漫画";}
			else if(d.indexOf("failed")>=0){d="很抱歉添加失败，请联系管理员\n"+doc;}
			else if(d.indexOf("ok")>=0){d="已将此漫画添加至您的漫画书架";}
		}else if(t=="remove"){
			if(d.indexOf("ok")>=0){d="已经将此漫画从您的漫画书架中删除";}
			else if(d.indexOf("failed")>=0){d="很抱歉删除失败，请联系管理员";}
		}else if(t=="switchNotify"){
			var id=parseInt(d),n=parseInt(d.substring(d.indexOf("\t")+1)),c=comicStore.content[id];
			if(d.indexOf(" ")>=0){d="改变漫画 "+c.name+" 的订阅状态失败，请联系管理员";}
			else{d="已经"+(n?"":"取消")+"订阅漫画 "+c.name;comicStore.load(true);}
		}
		alert(d);
	}
}
//访客留言
var vmsg={
	fid:"VisitorMessageForm",
	open:function(){
		var f=vmsg.f;
		if(!f){
			f=DOM._E("form");f.id=vmsg.fid;f.onsubmit=vmsg.save;
			f.innerHTML="<table style='width:100%'>\
<tr><th>留言内容</th><td><textarea name='content'></textarea></td></tr>\
<tr><th>漫点印象</th><td><input type='radio' name='point' value='100' id='VMP100'/><label for='VMP100'>极好</label>\
<input type='radio' name='point' value='75' id='VMP75'/><label for='VMP75'>不错</label>\
<input type='radio' name='point' value='50' id='VMP50' checked/><label for='VMP50'>还行</label>\
<input type='radio' name='point' value='25' id='VMP25'/><label for='VMP25'>很差</label>\
<input type='radio' name='point' value='0' id='VMP0'/><label for='VMP0'>\u6ca1\u6551\u4e86</label></td></tr>\
<tr><th>联系方式</th><td><select name='imType'><option value='QQ'>QQ</option><option value='MSN'>MSN</option><option value='Email'>邮件</option><option value=''>其它</option></select>\
<input type='text' name='contact'/>(选填)<br/>QQ、MSN、电子邮件等</td></tr>\
<tr><th colspan='2'><input type='button' value=' 发送留言 ' onclick='vmsg.save()'/><br/>\
您的留言仅作为漫点内部参考，不会对外公开</th></tr></table>";
			DOM.E("HeaderPanels").insertBefore(f,null);
			vmsg.f=f;
		}
		f.style.display=f.style.display=="block"?"none":"block";
	},
	init:function(){
		var a=DOM._E("button"),e;a.onclick=vmsg.open;a.innerHTML="留言";
		if(!DOM.IE){a.type="button";}
		e=DOM.E("SearchPanel");if(e){e.insertBefore(a,e.firstChild)};
	},
	save:function(){
		var f=DOM.E(this.fid),c=f["contact"].value,p;
		p="boardid=1&uid="+member.getUid()+"&content="+f["content"].value.replace("&","") +
"&point="+HTML.getRadioCheckedValue(f["point"])+
"&contact="+(c?f["imType"].value+"\t":"")+c+"&infos="+location.pathname;
		XML.load("/script/action/visitorMessage.php?a=setMessage",{post:p,plain:true,onload:this.onload_save});
		return false;
	},
	onload_save:function(d){
		var id=parseInt(d),m;
		if(id>0){m="您的留言已保存，感谢您对漫点的关注";vmsg.f.style.display="none";}
		else{m="保存留言时出现错误，请将此消息截图发给管理员，谢谢"+d;}
		alert(m);
	}
}
vmsg.init();
var main={
	init:function(){
//给搜索文本框添加回车监听及默认搜索
		var e=DOM.E("Keyword");
		if(e){
			if(e.value.length==0){e.value="火影";}
			e.onkeypress=function(e){if((e? e:window.event).keyCode==13){main.search();}}
		}
		e=DOM.E("SearchButton");
		if(e){e.onclick=main.search;}
		e=DOM.D.forms["animeSearchForm"];
		if(e){e.onsubmit=main.onsubmit_animeSearchForm;}
		e=DOM.D.forms["comicSearchForm"];
		if(e){e.onsubmit=main.onsubmit_comicSearchForm;}
		member.getUid();
		member.showStatus(member.isLogined());
	},
	search:function(b,k){
		k=k? k:HTML.V("Keyword");
		var f=DOM.E("SearchPanel"),url="http://";
		if(!b||typeof b!="string"){
			b=f==null? HTML.V("SearchBy"):HTML.getRadioChecked(f["searchBy"]).value;
		}
		b=b.length==0?"name":b;
		if(b=="mix"){url+=DOMAIN+"/search/g.shtml?cx=003224271078153170982:qgf0yk8ltda&cof=FORID:11&ie=UTF-8&sa=%E6%90%9C%E7%B4%A2&q="+k;}
		else{url+=(IS_LOCAL?COOKIE_DOMAIN:"comic.comicspot.net")+"/list-"+b+"-"+encodeURI(k);}
		window.open(url);
		return false;
	},
	searchAnime:function(k){
		window.open("http://"+(IS_LOCAL?COOKIE_DOMAIN:DOMAIN)+"/search/?by=anime&q="+encodeURI(k));
		return false;
	},
	onsubmit_animeSearchForm:function(){main.searchAnime(this["keywords"].value);return false;},
	onsubmit_comicSearchForm:function(){main.search(this["searchBy"].value,this["keywords"].value);return false;},
	goods:{dm:"http://mall.comicspot.net",uri:"/l",counthost:"http://shop.petfh.com/top/?a=i&iid=",
		load:function(q,s,fn){
			HTML.addScript("http://www.petfh.com/script/action/shop_data.php?a=items&cid=0&fn="+
fn+"&page_size="+s+"&q="+encodeURIComponent(q));
		},
		showItem:function(o){
			var u=this.counthost+o.iid;
			return "<li><div class='img'><a href='"+u+"' target='_blank' class='img' onclick='main.goods.onclick(this)'><img src='"+o.pic_url+
"_100x100.jpg'/></a></div><div class='name'><a href='"+u+"' target='_blank' onclick='main.goods.onclick(this)'>"+o.title+
"</a></div><div class='price'>￥"+o.price+"</div></li>";
		},
		onclick:function(a){ga.track(a.href);}
	}
};
//用户
var member={
	xml:null,uid:-1,accessing:false,
	isLogined:function(){return this.uid>0;/*HTML.C("comicspot_auth",true).length>0;*/},
	isMenualLogin:function(){return HTML.V("LoginName").length>0||HTML.V("LoginPW").length>0;},
	getUid:function(r){
		if(this.uid<0||r){
			var v=decodeURI(HTML.C("comicspot_auth",true));
			this.uid=parseInt(v);
			if(isNaN(this.uid)){ this.uid=0;}
			this.username=v.substring(v.indexOf("\t")+1);
		}
		return this.uid;
	},
	getFrame:function(s){
		var f=DOM.E("MemberFrame");
		if(f==null){
			DOM.E("HeaderPanels").innerHTML+='<iframe src="'+(s? s:"about:blank")+'" id="MemberFrame" name="memberFrame" style="width:0; height:0; visibility:hidden;"></iframe>';
			return DOM.E("MemberFrame");
		}else{f.src=s; return f;}
	},
//用户登录
	onsubmit_login:function(){
		var f=document.forms["loginForm"];
		this.login(f["username"].value,f["password"].value,f["cookietime"].value);
	},
	login:function(u,p,c){
		if(this.accessing){alert("正在登录，请稍等");return false;}
		var m=(u.length==0? "请填写会员名\n":"")+(p.length==0? "请填写密码\n":"");
		if(m.length>0){alert(m);return false;}
		DOM.setDisplay("LoginButtons",false);
		DOM.setDisplay("LoginCancel",true);
		this.req=XML.load("/script/user/?action=login&tc="+new Date().getTime(),
{onload:this.onload_login,plain:true,post:"username="+encodeURI(u) +
"&password="+encodeURI(p)+"&cookietime="+(c? c:0)});
	},
//取消登录
	loginCancel:function(){
		if(this.req&&typeof this.req.abort=="function"){ this.req.abort();}
		DOM.setDisplay("LoginButtons",true);
		DOM.setDisplay("LoginCancel",false);
	},
//登录的回调函数
	onload_login:function(d){
		var uid=parseInt(d),f,m; uid=isNaN(uid)? 0:uid;
		member.accessing=false;
		if(uid <= 0){
			m="登录失败:";
			switch(uid){
			case -1:m+="用户名不存在";break;
			case -2:m+="密码错误";break;
			default:m+="出现未知的问题，请联系管理员";
			}
			f=member.onloginFailed;
			if(typeof f=="function"){f(m);}
			else{alert(m);}
		}else{
			//un=uid==0? "":d.substring(d.indexOf("\t")+1,d.indexOf("\n"));
			member.getUid(true); member.showStatus();
			member.getFrame("/script/user/?action=sync&log=in&uid="+uid);
			f=member.onlogined;
			if(typeof f=="function"){f(uid,member.username);}
		}
	},
//监听登录表单的回车键
	onkeypress_login:function(e){e=e?e:window.event;if(e.keyCode==13){member.onsubmit_login();}},
//登出，清空 cookie
	logout:function(){
		HTML._C("comicspot_auth","",new Date().getTime(),COOKIE_DOMAIN,"/");
		this.getFrame("/script/user/?action=logout");
		this.showStatus(false);
		alert("您已成功登出");
	},
	open:function(p){
		switch(p){
		case "profile":p="memcp.php?action=profile";break;
		case "message":p="pm.php";break;
		default:return;
		}
		window.open(BBS_URL+p);
	},
//根据 cookie 判断用户登录状态
	showStatus:function(logined){
		if(arguments.length<1){logined=this.isLogined();}
		DOM.setEHTML("LoginPanel",'<form class="form" name="loginForm" method="get" \
target="_blank" action="http://www.comicspot.net/script/user/" onsubmit="member.onsubmit_login()">\
<input type="hidden" name="action" value="login"/>\
<div class="unpw">会员<input type="text" name="username" id="LoginName" tabIndex="1" class="textField" \
onkeypress="if(event.keyCode==13)member.onsubmit_login(true);"/>\
密码<input type="password" name="password" id="LoginPW" tabIndex="2" class="textField" \
onkeypress="if(event.keyCode==13)member.onsubmit_login(true);"/></div>\
<div class="field">保存<select name="cookietime" id="CookieDate" tabIndex="3">\
<option value="0">无</option><option value="86400" selected="selected">1天</option>\
<option value="2592000">1月</option><option value="315360000">1年</option></select></div>\
<div id="LoginButtons"><a onclick="member.onsubmit_login(true)">登录</a><a onclick="member.regist()">注册</a></div>\
<div id="LoginCancel">正在登录…<a onclick="member.loginCancel()">取消</a></div>\
</form>');
		DOM.setEHTML("MemberPanel",'您好 <span id="MemberName"></span>&nbsp;<a onclick="member.open(\'profile\')">资料</a><br/>\
<div id="MemberPanelLinks"><a onclick="member.open(\'message\')">消息</a> | \
<a href="http://space.comicspot.net/space.php?do=home" target="_blank">空间</a> | \
<a href="http://bbs.comicspot.net/" target="_blank">论坛</a> | \
<a onclick="member.logout()">退出</a><br/>\
<a href="http://www.comicspot.net/act-balance/">我的漫点</a> | <a href="javascript:comicStore.showList()">我的漫画书架</a><br/>\
<div id="ComicStore"></div></div>');
		DOM.setEHTML("MemberName",this.username);
		this.switchLoginPanel(logined);
	},
//切换未登录与已登录面板
	switchLoginPanel:function(logined){
		DOM.setDisplay("LoginPanel",!logined);
		DOM.setDisplay("MemberPanel",logined);
	},
	regist:function(){window.open(BBS_URL+"join.php");}
};
//淘客
var taoke={open:function(k){var u="/script/action/taobaoke.php?k="+encodeURIComponent(k);window.open(u);ga.track(u);}};
//要在页尾取得数据的名称参数及回调函数
var dataLoader={
	counters:[],names:[],url:"",
//添加计数器
	addCounter:function(c){if(!Util.isEmpty(c)){this.counters.push(c);}},
//注册导入动作
	regist:function(n,f){
		if(Util.isEmpty(n)){return;}
		var p=n.indexOf(":"),name=p>0? n.substring(0,p):n;
		this.names[name]={action:escape(n),onload:f};
	},
	load:function(){
		for(var i in this.names){this.url+=this.names[i].action+" ";}
		if(this.url.length>0){
			if(typeof this.proxy=="string"){this.proxy=DOM.E(this.proxy);}
			this.url="/script/action/data.php?names="+this.url.substring(0,this.url.length - 1);
			XML.load(this.url,{plain:true,onload:this.onload});
		}
	},
	onload:function(o){
		if(typeof o=="string"){eval("o="+o);}
		var n,a,d=dataLoader,i;
		for(i in o){
			n=o[i];a=d.names[i];
//预先指定的回调函数
			if(typeof n.f!="undefined"){eval(n.f+"(n)");}
			else if(a==null){}
//默认名称的回调函数
			else if(typeof a.onload=="function"){d.names[i].onload(n);}
		}
	}
}
main.init();
