String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g, '');
};
var imagePath = '/admin/';
var AreaSpots = new Array();
function $(id) {
	if (typeof id == 'object') return id;
	return document.getElementById(id);
}
function addHandle(name, func, obj) {
	if (!obj) obj = document;
	if (obj.attachEvent)
		obj.attachEvent('on'+name, func);
	else if (obj.addEventListener)
		obj.addEventListener(name, func, true);
}
function removeHandle(name, func, obj) {
	if (!obj) obj = document;
	if (obj.detachEvent)
		obj.detachEvent('on'+name, func);
	else if (obj.removeEventListener)
		obj.removeEventListener(name, func, true);
}
function dateChanged(begins) {
	if (begins.name != 'begins') return;
	var ends = begins.form.ends;
	if (!ends) return;
	var b = begins.value.split(/[-\.\/]/);
	var bd = new Date(b[0], b[1]-1, b[2]);
	if (ends.value) {
		var e = ends.value.split(/[-\.\/]/);
		var ed = new Date(e[0], e[1]-1, e[2]);
		if (ed > bd) return;
	}
	bd.setTime(bd.getTime()+86400000);
	var day = bd.getDate();
	if (day < 10) day = '0' + day;
	var month = bd.getMonth() + 1
	if (month < 10) month = '0' + month;
	ends.value = ''+bd.getFullYear()+'-'+month+'-'+day;
}
function elementValue(obj) {
	var i=0, result;
	switch (obj.type) {
	case "text":
	case "hidden":
	case "textarea":
	case "password":
		return obj.value;
	case "select-one":
	case "select":
		if (obj.selectedIndex >= 0)
		return obj.options[obj.selectedIndex].value;
	case "radio":
		for (i=0; i<obj.form.elements.length; i++) {
			var e = obj.form.elements[i];
			if (e.type != 'radio') continue;
			if (e.name == obj.name && e.checked) return e.value;
		}break;
	case "checkbox":
		for (i=0; i<obj.form.elements.length; i++) {
			var e = obj.form.elements[i];
			if (e.type != 'checkbox') continue;
			if (e.name == obj.name && e.checked) {
				if (result) result +=',';
				result += e.value;
			}
		}
	}return result;
}
function windowSize() {
	if (typeof(window.innerWidth) == 'number')
		return {'width':window.innerWidth, 'height':window.innerHeight};
	var base = null;
	if (!document.compatMode || document.compatMode == 'BackCompat')
		base = document.body;
	else
		base = document.documentElement;
	return {'width':base.clientWidth, 'height':base.clientHeight};
}
function windowScroll() {
	if (typeof(window.pageYOffset) == 'number')
		return {'x':window.pageXOffset, 'y':window.pageYOffset};
	var base = null;
	if (!document.compatMode || document.compatMode == 'BackCompat')
		base = document.body;
	else
		base = document.documentElement;
	return {'x':base.scrollLeft, 'y':base.scrollTop};
}
function UrlBuilder(url) {
	this.href = null;
	this.host = null;
	this.protocol = null;
	this.path = null;
	this.search = null;
	this.hash = null;
	this.params = null;
	this.dirty = false;
	if (url) this.parseUrl(url);
}

UrlBuilder.prototype.parseUrl = function(url)
{
	var pos = url.indexOf("//");
	this.protocol = "";
	this.host = "";
	if (pos > 0) {
		this.protocol = url.substring(0, pos);
		var pos2 = url.indexOf("/", pos+2);
		if (pos2 > 0) {
			this.host = url.substring(pos+2, pos2);
			this.path = url.substr(pos2);
		}else
			this.path = "/";
	}else
		this.path = url;
	pos = this.path.indexOf('#');
	if (pos > 0) {
		this.hash = this.path.substr(pos+1);
		this.path = this.path.substring(0, pos);
	}else
		this.hash = "";
	pos = this.path.indexOf('?');
	this.params = {};
	if (pos > 0) {
		this.search = this.path.substr(pos+1);
		this.path = this.path.substring(0, pos);
		var parts = this.search.split('&');
		for (var i=0; i<parts.length; ++i) {
			var part = parts[i];
			var index = part.indexOf('=');
			if (index != -1)
				this.params[part.substring(0, index)] = part.substr(index+1);
			else
				this.params[part] = '';
		}
	}else
		this.search = '';
	this.dirty = false;
	this.href = url;
};
UrlBuilder.prototype.getVal = function(key)
{
	return this.params[key];
}
UrlBuilder.prototype.serVal = function(key, value)
{
	this.dirty = true;
	this.params[key] = value;
}
UrlBuilder.prototype.getUrl = function()
{
	if (this.dirty) {
		if (this.protocol && this.host)
			this.href = this.protocol + "//" + this.host + this.path;
		else
			this.href = this.path;
		if (this.params) {
			this.href += '?';
			var first = true;
			for (key in this.params) {
				if (key == 'page') continue;
				if (!first) this.href += '&';
				first = false;
				this.href += key + '=' + this.params[key];
			}
		}
		this.dirty = false;
	}
	return this.href;
}

function selectValue(id, value, defindex) {
	var obj = $(id);
	if (!obj) return;
	if (value == '' && defindex) {
		obj.options[defindex].selected = true;
		return;
	}
	for (var i=0; i<obj.options.length; i++) {
		if (obj.options[i].value == value) {
			obj.options[i].selected = true;
			return;
		}
	}
}

function getPosition(el) {
	if (el.getBoundingClientRect) {
		var box = el.getBoundingClientRect();
		var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
		var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
		return {x:box.left + scrollLeft, y:box.top + scrollTop};
	}
	var r = {'x': el.offsetLeft, 'y': el.offsetTop};
	if (el.scrollLeft)
		r.x -= el.scrollLeft;
	if (el.scrollTop)
		r.y -= el.scrollTop;
	var par = el.offsetParent;
	while (par) {
		r.x += par.offsetLeft;
		r.y += par.offsetTop;
		par = par.offsetParent;
	}
	r.x -= document.body.scrollLeft;
	r.y -= document.body.scrollTop;
	return r;
}
function createModal() {
	var modal = $('modal');
	if (modal) return;
	modal = document.createElement("div");
	modal.id = "modal";
	with (modal.style) {
		position = 'absolute';
		backgroundColor = '#333';
		backgroundImage = 'url(.png)';
		left = '0px';
		top = '0px';
		width = '100%';
		opacity = 0.1;
		MozOpacity = 0.1;
		filter = "alpha(opacity=10)";
		height = document.body.scrollHeight + 'px';
		zIndex = 9999;
	}
	document.body.appendChild(modal);
}
function destroyModal() {
	var modal = $('modal');
	if (!modal) return;
	document.body.removeChild(modal);
}
function titleDialog(title) {
	$('dlg_title').innerHTML = title;
}
function showDialog(text) {
	$('dlg_info').innerHTML = text;
	var btnOk = $('dlg_ok');
	var btnClose = $('dlg_close');
	var img = $('dlg_icon');
	if (arguments.length < 2 ||
		typeof arguments[1] == 'number') {
		img.src = imagePath + "info.gif";
		btnOk.style.display = '';
		btnClose.style.display = 'none';
		btnOk.onclick = closeDialog;
		if (arguments.length > 1)
			setTimeout('closeDialog()', arguments[1]);
	}else if (typeof arguments[1] == 'string') {
		if (arguments[1] == 'warn')
			img.src = imagePath + "warning.gif";
		else if (arguments[1] == 'error')
			img.src = imagePath + "error.gif";
		else
			img.src = imagePath + "info.gif";
		btnOk.style.display = '';
		window.reload = false;
		btnClose.style.display = 'none';
		btnOk.onclick = closeDialog;
	}else {
		img.src = imagePath + "question.gif";
		btnOk.style.display = '';
		var callback = arguments[1];
		btnOk.onclick = function() {
			callback();
			$('dialog').style.display = 'none';
			document.body.removeChild($('modal'));
		}
		btnClose.style.display = '';
		window.reload = false;
		btnClose.innerHTML = '取消(<u>C</u>)';
		btnClose.onclick = closeDialog;
	}
	if (!document.all) createModal();
	var dlg = $('dialog');
	var size = windowSize();
	dlg.style.left = (size.width-400)/2+"px";
	var value = size.height - 160;
	value = value*0.1 + windowScroll().y;
	dlg.style.top = parseInt(value) + "px";
	dlg.style.zIndex = 10001;
	dlg.style.opacity = 1;
	dlg.style.MozOpacity = 1;
	dlg.style.filter = "alpha(opacity=100)";
	dlg.style.display = 'block';
	dlg.focus();
}
function closeDialog() {
	var popup = $('dialog');
	var opacity = parseFloat(popup.style.opacity) - 0.2;
	if (opacity > 0.1) {
		popup.style.opacity = opacity;
		popup.style.MozOpacity = opacity;
		opacity = opacity * 100;
		popup.style.filter = "alpha(opacity="+opacity+")";
		setTimeout('closeDialog()', 50);
	}else if (typeof window.reload == 'function') {
		window.reload();
		window.reload = null;
	}else if (window.reload) {
		window.location = location.href;
		window.reload = false;
	}else {
		destroyModal();
		popup.style.display = 'none';
	}
}
function messageCheak(form) {
	titleDialog("发表留言...");
	if (!form.author.value){
		showDialog("请输入[您的姓名]",'warn');
	}else if (!form.mailbox.value){
		showDialog("请输入[您的联系邮箱]",'warn');
	}else if (isEmail(form.mailbox.value) == false){
		showDialog("[联系邮箱] 输入有误!",'warn');
	}else if (!form.content.value){
		showDialog("请输入您的[留言内容]",'warn');
	}else if (!form.vcode.value){
		showDialog("请输入[验证码]",'warn');
	}else if (getVcode() == 0){
		showDialog("[验证码] 输入错误",'warn');
	}
	else return true ;return false;
}
function getVcode() {
	var url = "/info.php?id=vcode";
	var ajax = new XmlHttp;	
	var vcode = $('gdimage').value;
	url += "&gdimage=" + vcode;
	var text = ajax.doGet(url);
	return text;
}
function isEmail(str){
       var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;
       return reg.test(str);
}
function on_result(succ, info) {
	if (succ)
		showDialog('<b>恭喜您，本次操作执行成功！</b>', 1000);
	else
		showDialog(info, 'error');
}
function XmlHttp() {
	if(window.XMLHttpRequest)
		this.objXmlHttp = new XMLHttpRequest();
	else if(window.ActiveXObject) {
		var success = false;
		try {
			this.objXmlHttp = new ActiveXObject('MSXML2.XMLHTTP');
			success = true;
		}catch(e) {}
		if (!success)
			this.objXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	}else {
		this.objXmlHttp = null;
		throw "XmlHttp Error!";
	}
	this.async = true;
	this.typeXml = false;
	this.onsuccess = null;
	this.doGet = function(url, callback) {
		var self = this.objXmlHttp;
		this.objXmlHttp.onreadystatechange = function() {
			if (self.readyState != 4 || !callback) return;
			var text = self.responseText;
			if (self.status != 200)
				callback(false, text);
			else if (text=='' || text.substr(0,3)=='ok:')
				callback(true, text.substr(3));
			else {
				if (text.substr(0,9) == "<!DOCTYPE")
					text = '';
				callback(false, text);
			}
		}
		this.objXmlHttp.open("GET", url, callback?true:false);
		this.objXmlHttp.setRequestHeader("If-Modified-Since","0");
		this.objXmlHttp.send("");
		return callback?"":self.responseText;
	}
	this.doPost = function(callback, url, form) {
		var self = this.objXmlHttp;
		var ajax = this;
		this.objXmlHttp.onreadystatechange = function() {
			if (self.readyState != 4) return;
			var text = self.responseText;
			if (text.indexOf('<!DOCTYPE') == 0)
				text = 'failed';
			if (self.status != 200)
				callback(false, text);
			else if (text=='') {
				callback(true, '');
				if (ajax.onsuccess)
					ajax.onsuccess('');
			}else if (text.substr(0,3)=='ok:') {
				var str = text.substr(3);
				callback(true, str);
				if (ajax.onsuccess)
					ajax.onsuccess(str);
			}else
				callback(false, text);
		}
		this.objXmlHttp.open("POST", url, this.async);
		if (this.typeXml)
			this.objXmlHttp.setRequestHeader("Content-Type", "text/xml");
		else
			this.objXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		this.objXmlHttp.setRequestHeader("If-Modified-Since","0");
		if (typeof form != 'string')
			this.objXmlHttp.send(this.strForm(form));
		else if (this.typeXml)
			this.objXmlHttp.send("<?xml version='1.0' encoding='UTF-8'?>" + form);
		else
			this.objXmlHttp.send(form);
	}
	this.postForm = function(url, str) {
		var form = document.createElement("FORM");
		form.method = "post";
		form.action = url;
		str = str.replace(/\+/g, ' ');
		var args = str.split('&');
		for (var i=0; i<args.length; i++) {
			var pair = args[i].split('=');
			if (pair.length < 2) pair[1] = '';
			var input = document.createElement("INPUT");
			input.type = 'hidden';
			input.name = pair[0];
			input.value = pair[1];
			form.appendChild(input);
		}
		document.body.appendChild(form);
		form.submit();
	}
	this.strForm = function(form) {
		var params = '';
		for (var i=0; i<form.length; i++) {
			var type = form[i].type.toLowerCase();
			if ((type=="radio"||type=="checkbox")
				&& !form[i].checked) continue;
			if (params != '') params += "&";
			params += form[i].name + "=" + encodeURIComponent(form[i].value);
		}
		return params;
	}
}