﻿/*==================================================
* SWT Web Toolkit
* (c) 2008
*
* this toolkit is a js framework based on Prototype
* ==================================================
*/

var swt = {
	version: "8.1.4",
	copyright: "SPLife.com &copy; 2008",
	gradualOverlay: true,
	showAjaxWorking: true
};

String.prototype.trim = function () {
	return this.replace(/(^\s*)|(\s*$)/g, "");
};
String.prototype.ltrim = function () {
	return this.replace(/(^\s*)/g,"");
};
String.prototype.rtrim = function () {
	return this.replace(/(\s*$)/g,"");
};

swt.addLoadEvent = function (_f) {
    var _l = window.onload;
    if (typeof window.onload != "function") {
        window.onload = _f;
    } else {
        window.onload = function () {
            _l();
            _f();
        }
    }
};

swt.cnLen = "中".length;

swt.appendChild = function (ob, _p) {
	var p = _p ? ((typeof _p == "object") ? _p : $(_p)) : document.getElementsByTagName("body")[0];
	p.appendChild(ob);
};

swt._initialize = function () {
	swt._qsInitialize();
	//if (Ajax.Request.Events) Ajax.Request.Events.push("Abort");
};

swt.createFunction = function (obj, strFunc) {
	var args = [];
	if (!obj) obj = window;
	for (var i = 2; i < arguments.length; i ++) args.push(arguments[i]);
	return function () {
		obj[strFunc].apply(obj, args);
	};
};

swt.require = function (src, path, im) {
	var _f = function () {
		var p = (path ? "" : "swt/lib/") + src + ".js",
			ss = document.getElementsByTagName("script");
		for (var i = 0; i < ss.length; i ++)
			if (ss[i].src && ss[i].src.indexOf(p) != -1) return;
		var js = document.createElement("script");
		js.type = "text/javascript";
		js.src = p + "?r=" + Math.random();
		swt.appendChild(js);
	};
	if (im)	//execute immediately
		_f();
	else
		swt.addLoadEvent(_f);
};

swt.checkCreate = function (tagName, tagId, parent) {
	if ($(tagId)) return $(tagId);
	var ob = document.createElement(tagName);
	ob.id = tagId;
	if (parent) {
		if (typeof parent == "string") parent = $(parent);
		parent.appendChild(ob);
	} else {
		document.getElementsByTagName("body")[0].appendChild(ob);
	}
	return ob;
};
swt.checkDel = function (tagId) {
	if ($(tagId)) $(tagId).parentNode.removeChild($(tagId));
};

swt.checkValid = function (chkType, v) {
	var r;
	switch (chkType.toLowerCase()) {
		case "email" : r = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;
						break;
		case "url" : r = /(http:\/\/([\w-]+\.)+[\w-]+(:\d{0,5})?(\/[\w\d- .\/?%&=\[\]]*)?)/ig;
						break;
	}
	if (v.match(r)) return true;
	return false;
};

swt.showTags = function (tagName, v) {
	$A(document.getElementsByTagName(tagName)).each(function (s) {s.style.visibility = (v ? "visible" : "hidden");});
};

swt.rollDiv = function (ob, _style, val) {
	if (!ob.id) {
		ob.id = "swt_" + swt.rndn(32);
	}
	setTimeout("swt._rollDiv('" + ob.id + "', '" + _style + "', " + val + ")", 50);
};
swt._rollDiv = function (obId, _style, val) {
	var ob = $(obId);
	var vn = (_style == "height") ? ob.offsetHeight : ob.offsetWidth;
	var vt = parseInt(ob.style[_style]);
	if (vn == val || vt == val) {
		return;
	}
	var vs = val - vn;
	var vm = Math.floor(vs / 3);
	if (vm == 0) vm = 1;
	ob.style[_style] = vt + vm + "px";
	setTimeout("swt._rollDiv('" + ob.id + "', '" + _style + "', " + val + ")", 50);
};

//cookie
swt.setCookie = function (name, value, days) {
	if (!days) var days = 30;
	var exp = new Date();
	exp.setTime(exp.getTime() + days*24*60*60*1000);
	document.cookie = name + "=" + escape(value) + ";path=/;expires=" + exp.toGMTString();
};
swt.getCookie = function (name) {
	var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
	if(arr = document.cookie.match(reg)) return unescape(arr[2]);
	else return null;
};
swt.delCookie = function (name) {
	var exp = new Date();
	exp.setTime(exp.getTime() - 1);
	var cval = getCookie(name);
	if(cval != null) document.cookie = name + "=" + cval + ";path=/;expires=" + exp.toGMTString();
};

swt.makeUnselectable = function (e, us) {
	e.unselectable = us;
	for (var c = e.firstChild; c; c = c.nextSibling)
		if (c.nodeType == 1) swt.makeUnselectable(c, us);
}

swt.eventX = function (event) {
	return (event.x || event.pageX || 0);
};
swt.eventY = function (event) {
	return (event.y || event.pageY || 0);
};

//msgbox
swt.msg = function (text, ob) {
	swt.overLay(1, swt.gradualOverlay);
	swt.checkCreate("div", "swt_msgBox");
	if (!ob) ob = {};
	
	$("swt_msgBox").style.marginTop = -100 + document.documentElement.scrollTop + "px";
	$("swt_msgBox").style.display = "block";
		
	var s = "<div id=\"swt_msgBox_box\">";
	s += "<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\"><tr><td id=\"swt_msgBox_left\">";
	s += "<img src=\"/swt/img/inform.jpg\" alt=\"inform\" /><br />" + swt.copyright + "";
	s += "</td><td id=\"swt_msgBox_right\"><div id=\"swt_msgBox_info\">";
	s += text;
	s += "</div><div id=\"swt_msgBox_btn\">";
	s += "<input type=\"button\" value=\" 确定 \" onclick=\"swt.msgClose('" + ob + "');\" />";
	s += "</div></td></tr></table></div>";
	$("swt_msgBox").innerHTML = s;
};
swt.msgClose = function (ob) {
	swt.overLay(0, swt.gradualOverlay);
	$("swt_msgBox").style.display = "none";
	if (ob.onclose) ob.onclose();
	if (ob.go) {
		if (typeof ob.go == "number")
			history.go(ob.go);
		else
			location.href = ob.go;
	}
};
swt.overLay = function (show, gradual) {
	if (show) {
		var ob = swt.checkCreate("div", "swt_overlay");
		swt.showTags("select", 0);
		var h = Math.max(document.documentElement.clientHeight, document.documentElement.scrollHeight);
		ob.style.height = h + "px";
		if (gradual) {
			swt.overLayGradual(0, 0.1, 0.5);
		} else {
			Element.setOpacity("swt_overlay", 0.5);
		}
		ob.style.display = "block";
		//ob.focus();
	} else {
		if (gradual) {
			swt.overLayGradual(0.5, -0.1, 0);
		} else {
			$("swt_overlay").style.display = "none";
		}
		swt.showTags("select", 1);
	}
};

swt.overLayGradual = function (o, d, p) {
	if (d < 0 && o <= p) $("swt_overlay").style.display = "none";
	if ((d > 0 && o >= p) || (d < 0 && o <= p)) return;
	o += d;
	Element.setOpacity("swt_overlay", o);
	setTimeout("swt.overLayGradual(" + o + ", " + d + ", " + p + ")", 50);
};

swt.removeChildrenByTag = function (o, t) {
	if (typeof o == "string") o = $(o);
	$A(o.getElementsByTagName(t)).each(function (s) {
		o.removeChild(s);
	});
};

swt.rndn = function (l) {
	var r = "", l2 = l ? l : 32;
	while (r.length < l2) {
		r += Math.random().toString();
		r = r.replace(/0\./g, "").replace(/\./g, "");
	}
	return r.substring(0, l2);
};

//querystring
swt._qs = {};
swt.qs = function (k) {return (swt._qs[k] || "");};
swt.qs2 = "";
swt._qsInitialize = function () {
	var qs = window.location.search;
	if (qs == "") return;
	qs = qs.substring(1);
	var s, qs2 = qs.split("&"), k, v;
	for (var i = 0, l = qs2.length; i < l; i ++) {
		s = qs2[i].indexOf("=");
		if (s == -1) continue;
		k = qs2[i].substring(0, s);
		v = qs2[i].substring(s + 1);
		swt._qs[k] = v;
	}
	swt.qs2 = $H(swt._qs).toQueryString();
};

swt.globalHandlers = {
	onCreate: function () {
		if (swt.showAjaxWorking) {
			var ob;
			if (!$("swt_ajaxWorking")) {
				ob = swt.checkCreate("div","swt_ajaxWorking")
				ob.appendChild(document.createTextNode("正在加载..."));
			} else {
				ob = $("swt_ajaxWorking");
			}
			ob.style.marginTop = document.documentElement.scrollTop + "px";
			ob.style.display = "block";
			ob.style.marginLeft = (document.documentElement.scrollWidth - ob.offsetWidth) + "px";
		}
		swt.showAjaxWorking = true;
	},
	onComplete: function () {
		if (Ajax.activeRequestCount == 0) {
			$("swt_ajaxWorking").style.display = "none";
		}
	}
};
Ajax.Responders.register(swt.globalHandlers);

//add load events
swt.addLoadEvent(swt._initialize);
