﻿/*--
标题：当前项目常用函数封装
设计：王集鹄
博客：http://blog.csdn.net/zswang
日期：2009年1月20日
--*/

var publics = {
	/// <summary>验证信息</summary>
	passinfo: {}
	/// <summary>是否通过验证</summary>
	, passing: false
	/// <summary>执行计数器</summary>
	/// <param name="key">关键词</param>
	/// <param name="info">附加信息</param>
	, counter: function(key, info) {
		new Image(0, 0).src = "/Handler/counter.ashx?key=" + escape(key) +
			"&info=" + escape(info) +
			"&rand=" + Math.random();
	}
	/// <summary>欢迎词</summary>
	, welcome: function() {
		var self = this;
		var span_username = $("span_username");
		span_username.innerHTML = self.passing ? ubb2Html("欢迎您：" + 
			self.passinfo.flag + self.passinfo.username + " [small][b]财富：[/b]" + self.passinfo.money + "[/small]") : "";
		var a_logout = $("a_logout");
		if (a_logout) a_logout.style.display = !self.passinfo.guest && self.passing ? "" : "none";
		var a_userhome = $("a_userhome");
		if (a_userhome) a_userhome.style.display = !self.passinfo.guest && self.passing ? "" : "none";
		var a_register = $("a_register");
		if (a_register) a_register.style.display = !self.passinfo.guest && self.passing ? "none" : "";
		var a_login = $("a_login");
		if (a_login) a_login.style.display = !self.passinfo.guest && self.passing ? "none" : "";
	}
	/// <summary>注销</summary>
	, logout: function() {
		var self = this;
		if (!self.passing) return;
		requestHttp('/Handler/Logout.ashx?r=' + Math.random(), 'POST', "", function(xmlhttp) {
			try {
				var result = str2Object(xmlhttp.responseText);
				if (result.error) return;
				self.passing = false;
				self.passport();
			} catch (e) {
				alert("logout() : " + e.message);
			}
		});
	}
	/// <summary>用户验证</summary>
	, passport: function() {
		var self = this;
		if (self.passing) return;
		requestHttp('/Handler/Passport.ashx?r=' + Math.random(), 'GET', null, function(xmlhttp) {
			try {
				var result = str2Object(xmlhttp.responseText);
				if (result.error) {
					if (typeof result.ident != "undefined") {
						self.passinfo = {};
						self.passinfo.ident = result.ident;
						self.passinfo.guest = true;
					}
					return;
				}
				self.passinfo = result;
				self.passing = true;
				self.welcome();
			} catch (e) {
				alert("passport() : " + e.message);
			}
		});
	}
	/// <summary>用户注册</summary>
	/// <param name="data">注册资料</param>
	/// <param name="loaded">载入完毕触发</param>
	/// <param name="error">错误时触发</param>
	, register: function(data, loaded, error) {
		var self = this;
		requestHttp('/Handler/Register.ashx', 'POST', data, function(xmlhttp) {
			try {
				var result = str2Object(xmlhttp.responseText);
				if (result.error) {
					if (typeof error == "function") error(result);
					return;
				}
				if (typeof loaded == "function") loaded(result);
				if (result.url) location = url;
			} catch (e) {
				alert("register() : " + e.message);
			}
		});
	}
	, setOption: function(name, active) {
		//a:全部禁音 c:聊天禁音 d:分屏
		if (!name) return;
		var options = getCookie("options");
		if (!options) options = "";
		var i = options.indexOf(name);
		if (active) {
			if (i >= 0) return;
			options += name;
		} else {
			if (i < 0) return;
			options = options.substr(0, i) + options.substr(i + name.length);
		}
 		setCookie("options", options, 30);
	}
	, getOption: function(name) {
		var options = getCookie("options");
		return !!options && options.indexOf(name) >= 0;
	}
};

function localIdent() {
	return getUrlParam("?" + getCookie("passport"), "ident");
}

function Validate(parent, length) {
	var self = this;
	
	this.parent = parent ? parent : document.body;
	this.div_img = document.createElement("div");
	this.div_text = document.createElement("div");
	this.img_validate = document.createElement("img");
	this.img_validate.src = "/Images/Validate.gif";
	this.img_validate.alt = "验证码";
	this.img_validate.title = "点击刷新"
	this.img_validate.id = "img_validate";
	this.img_validate.onclick = function() {
		publics.counter("click_validate", location);
		self.update();
	};
	this.div_img.appendChild(this.img_validate);
	this.parent.appendChild(this.div_img);
	
	this.text_validate = document.createElement("input");
	this.text_validate.type = "text";
	if (length) this.text_validate.maxLength = parseInt(length);
	var span = document.createElement("span");
	span.innerHTML = "验 证 码：";
	this.div_text.appendChild(span);
	
	this.text_validate.title = "验证码";
	this.text_validate.id = "text_validate";
	this.text_validate.onfocus = function () {
		self.update();
		this.onfocus = null;
	};
	span = document.createElement("span");
	span.className = "Required";
	span.innerHTML = "* 确保我们不是在和机器对话。";
	this.div_text.appendChild(this.text_validate);
	this.div_text.appendChild(span);
	this.parent.appendChild(this.div_text);
}

Validate.prototype.getError = function() {
	if (this.text_validate.value.length != this.text_validate.maxLength)
		return '"' + this.text_validate.title + '" 长度必须为 ' + this.text_validate.maxLength + '。\n';
	else return "";
}

Validate.prototype.getValue = function() {
	return this.text_validate.value;
}

Validate.prototype.update = function() {
	this.img_validate.src = "/Handler/Validate.ashx?r=" + Math.random();
	this.text_validate.onfocus = null;
	this.text_validate.value = "";
	this.text_validate.focus();
}

Validate.prototype.reset = function() {
	this.img_validate.src = "/Images/Validate.gif";
}

function MoneyTop(options) {
	options = options || {};
	this.parent = options.parent || document.body;
	this.table_box = document.createElement("table");
	this.parent.appendChild(this.table_box);
	//this.table_box.cellPadding = "0px";
	//this.table_box.cellSpacing = "0px";
	this.tds = {};
	for (var i = 0; i < 10; i++) {
		var tr = this.table_box.insertRow(-1);
		var td = tr.insertCell(-1);
		td.innerHTML = i + 1;
		this.tds[[i, 0]] = tr.insertCell(-1);
		this.tds[[i, 1]] = tr.insertCell(-1);
	}
	this.reload();
}

MoneyTop.prototype = {
	reload: function() {
		var self = this;
		for (var i = 0; i < 10; i++) {
			this.tds[[i, 0]].innerHTML = "";
			this.tds[[i, 1]].innerHTML = "";
		}
		var data = {};
		data.action = "top10";
		requestHttp('/Handler/Money.ashx', 'POST', json2Text(data), function(xmlhttp) {
			try {
				var result = str2Object(xmlhttp.responseText);
				if (result.error) {
					if (typeof error == "function") error(result);
					return;
				}
				for(var i = 0; i < result.tops.length; i++) {
					if (!self.tds[[i, 0]]) brek;
					self.tds[[i, 1]].innerHTML = ubb2Html(jsonFormat("[url=/UserHome.aspx?id=${userid}]${username}[/url]", result.tops[i]));
					self.tds[[i, 0]].innerHTML = ubb2Html(jsonFormat("${money}", result.tops[i]));
				}
			} catch (e) {
				alert("top10() : " + e.message);
			}
		});
	}
}

addEventHandler(window, "load", function() {
	if ($("checkbox_sound_all")) {
		$("checkbox_sound_all").checked = publics.getOption("a");
		window.soundState = $("checkbox_sound_all").checked;
		$("checkbox_sound_all").onclick = function() {
			publics.setOption("a", this.checked);
			window.soundState = this.checked;
		}
	}

	if ($("checkbox_sound_chat")) {
		$("checkbox_sound_chat").checked = publics.getOption("c");
		window.soundStates['chat'] = $("checkbox_sound_chat").checked;
		$("checkbox_sound_chat").onclick = function() {
			publics.setOption("c", this.checked);
			window.soundStates['chat'] = this.checked;
		}
	}
	
	if ($("div_money_top")) {
		new MoneyTop({parent: $("div_money_top")});
	}
});