﻿var HOSTS = ["comicspot.net", "acspot.com"],
	DOMAIN = "www.comicspot.net",
	IS_LOCAL = location.href.indexOf("localhost") >= 0,
	hostBase = "";
var IS_SUBDOMAIN = location.href.indexOf(DOMAIN) < 0,
	BBS_URL = IS_LOCAL? "http://localhost/bbs/" : "http://bbs.comicspot.net/";
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;}
if(typeof DOM == "undefined"){document.write("<script src='http://www.comicspot.net/scms/js/libs.js'></script>");}
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){
					document.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(typeof e == "object"){e.innerHTML = s;}
		else{document.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("书签保存完毕");}
		document.cookie = this.toCookieString(k);
	}
	this.toString = function(){return this.value;}
	this.toCookieString = function(k, ex){
		k = k? k : "";
		if(ex == null){ex = new Date(); ex.setYear(ex.getFullYear() + 1);}
		return this.prefix + 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), cbs = [], cb, s, ss;
	for(var i in cs){
		s = cs[i].split(" ");
		if(s.length >= 3){
			cb = new AnimeBookmark(s[0], s[1]);
			ss = "";
			for(var j = 3; j < s.length; j ++){ss += (j > 3? " " : "") + s[j];}
			cb.key = i;
			cb.name = unescape(ss);
			cbs[i] = cb;
		}
	}
	AnimeBookmark.all = cbs;
	return cbs;
}
AnimeBookmark.open = function(k){
	var cb = AnimeBookmark.all != null? AnimeBookmark.all[k] : null;
	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/" + 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 = [], cb, s, ss;
	for(var i in cs){
		s = cs[i].split(" ");
		if(s.length >= 4){
			cb = new ComicBookmark(s[0], s[1], s[2]);
			if(cb.basepath.indexOf("/") < 0){continue;}
			ss = "";
			for(var j = 3; j < s.length; j ++){ss += (j > 3? " " : "") + s[j];}
			cb.key = i;
			cb.name = unescape(ss);
			cbs[i] = cb;
		}
	}
	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,
	getURLPrefix:function(){return "/script/action/comic/store.php?uid=" + member.uid + "&action=";},
	//添加漫画至书架
	set:function(bp, path, p){
		if(typeof member.uid == "number" && member.uid > 0){
			var sp = (path? "/" + path : "") + (p? "/p" + Util.getZeroDigit(p, 3) + ".html" : "");
			XML.load(this.getURLPrefix() + "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.getURLPrefix() + "get" + (rl? "&tc=" + new Date().getTime(): ""),
			{onload:this.onload, plain:true});
	},
	onload:function(doc){
		comicStore.accessing = false;
		var p = "p=" + doc;
		try{eval(p);}
		catch(ex){alert(ex.message + "\n" + doc);return;}
		comicStore.content = [];
		var h = "", m = 0, c, p, n, href, hrefInc, ns = "\u3001";
		for(var i in p){
			c = p[i];
			if(typeof c != "object"){continue;}
			comicStore.content[c.id] = c;
			p = c.name.indexOf(ns);
			n = p > 0? c.name.substring(0, p) : c.name;
			href = "http://comic.comicspot.net/" + 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 ++;
		}
		var 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);
		comicStore.showList(true);
	},
	//显示书架
	showList:function(show){
		if(this.content == null){comicStore.load();return;}
		var e = DOM.E("ComicStore");
		DOM.setDisplay(e, show || e.style.display == "none");
	},
	//增加计数
	increase:function(id){
		if(typeof id == "number" && id > 0){
			XML.load(this.getURLPrefix() + "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.getURLPrefix() + "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];
		var tip = "要将漫画 " + c.name + " 的订阅状态设为 " + (c.notify? "取消" : "") + "订阅 吗？您将不再会收到此漫画的更新通知";
		if(!confirm(tip)){return;}
		XML.load(this.getURLPrefix() + "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);
			var n = parseInt(d.substring(d.indexOf("\t") + 1));
			var 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");a.onclick = vmsg.open; a.innerHTML = "留言";
		if(!DOM.IE){a.type = "button";}
		var e = DOM.E("SearchPanel"); e.insertBefore(a, e.firstChild);
	},
	save:function(){
		var f = DOM.E(this.fid), c = f["contact"].value;
		var p = "boardid=1&uid=" + member.uid + "&content=" + f["content"].value.replace("&", "") +
"&point=" + HTML.getRadioCheckedValue(f["point"]) +
"&contact=" + (c? f["imType"].value + "\t" : "") + c + "&info=" + location.url;
		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 = {
	search:function(b, k){
		k = k? k : HTML.V("Keyword");
		var f = DOM.E("SearchPanel");
		if(!b || typeof by != "string"){
			b = f == null? HTML.V("SearchBy") : HTML.getRadioChecked(f["searchBy"]).value;
		}
		b = b.length == 0? "name" : b;
		var url = "http://";
		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;}
};
//用户
var member = {
	xml:null,
	accessing:false,
	isLogined:function(){return HTML.C("comicspot_auth", true).length > 0;},
	isMenualLogin:function(){return HTML.V("LoginName").length > 0 || HTML.V("LoginPW").length > 0;},
	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(){
		if(this.accessing){alert("正在登录，请稍等");return false;}
		var f = document.forms["loginForm"];
		var m = "", un = f["username"].value, pw = f["password"].value;
		m += (un.length == 0? "请填写会员名\n" : "") + (pw.length == 0? "请填写密码\n" : "");
		if(m.length > 0){alert(m);return false;}
		XML.load("/script/user/?action=login&tc=" + new Date().getTime(),
			{onload:this.onload_login, plain:true, post:
"username=" + encodeURI(un) + "&password=" + encodeURI(pw) + "&cookietime=" + f["cookietime"].value}) + "&cookiedomain=" + location.host;
	},
	//登录的回调函数
	onload_login:function(d){
		var uid = parseInt(d);
		uid = isNaN(uid)? 0 : uid;
		var un = uid == 0? "" : d.substring(d.indexOf("\t") + 1, d.indexOf("\n"));
		member.accessing = false;
		if(uid <= 0){
			var m = "登录失败: ";
			switch(username){
			case "username": m += "用户名不存在"; break;
			case "password": m += "密码错误"; break;
			default: m += "出现未知的问题，请联系管理员";
			}
			alert(m);
		}else{
			member.uid = uid;
			member.username = un;
			member.showStatus();
			member.getFrame("/script/user/?action=sync&log=in&uid=" + uid);
		}
	},
	//监听登录表单的回车键
	onkeypress_login:function(e){
		e = e? e : window.event;
		if(e.keyCode == 13){member.checkLogin();}
	},
	//登出，清空 cookie
	logout:function(){
		HTML._C("comicspot_auth", "", -1, 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();}
		var v = decodeURI(HTML.C("comicspot_auth", true));
		if(typeof this.uid == "undefined"){
			this.uid = parseInt(v);
			this.username = v.substring(v.indexOf("\t") + 1);
		}
		var s = '<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">30</option><option value="315360000">365</option></select></div>\
<div class="buttons"><a onclick="member.onsubmit_login(true)">登录</a><a onclick="member.regist()">注册</a></div>\
</form>';
		DOM.setEHTML("LoginPanel", s);
		s = '会员 <span id="MemberName"></span> 已登录 <a onclick="member.logout()">退出</a><br/>\
<div id="MemberPanelLinks"><a onclick="member.open(\'profile\')">资料</a> | \
<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><br/>\
<a href="javascript:comicStore.showList()">我的漫画书架</a><br/>\
<div id="ComicStore"></div></div>';
		DOM.setEHTML("MemberPanel", s);
		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 + "register.php");}
};
//要在页尾取得数据的名称参数及回调函数
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(":");
		var name = p > 0? n.substring(0, p) : n;
		this.names[name] = {action:escape(n), onload:f};
	},
	load: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.showStatus();
		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;
		for(var i in o){
			n = o[i];
			a = dataLoader.names[i];
			if(typeof n.f != "undefined"){
				//执行预先指定的回调函数
				eval(n.f + "(n)");
			}else if(a == null){
			}else if(typeof a.onload == "function"){
				//执行默认名称的回调函数
				dataLoader.names[i].onload(n);
			}
		}
	}
}
