/**
 * 定义类生成器
 */
var Class = {
//创建类
	create : function () {
		return function () {
			this.initialize.apply(this, arguments);
		};
	}
};

var $A = function (a) {
//转换数组
    //alert(typeof(a)+a.length);
	return a ? Array.apply(null, a) : new Array;
};

var $ = function (id) {
//获取对象
	return document.getElementById(id);
};

var Try = {
//检测异常
	these : function () {
		var returnValue, arg = arguments, lambda, i;
	
		for (i = 0 ; i < arg.length ; i ++) {
			lambda = arg[i];
			try {
				returnValue = lambda();
				break;
			} catch (exp) {}
		}
	
		return returnValue;
	}
	
};

Object.extend = function (a, b) {
//追加方法
	for (var i in b) a[i] = b[i];
	return a;
};

Object.extend(Object, {

	addEvent : function (a, b, c, d) {
	//添加函数
		if (a.attachEvent) a.attachEvent(b[0], c);
		else a.addEventListener(b[1] || b[0].replace(/^on/, ""), c, d || false);
		return c;
	},
	
	delEvent : function (a, b, c, d) {
		if (a.detachEvent) a.detachEvent(b[0], c);
		else a.removeEventListener(b[1] || b[0].replace(/^on/, ""), c, d || false);
		return c;
	},
	
	reEvent : function () {
	//获取Event
		return window.event ? window.event : (function (o) {
			do {
				o = o.caller;
			} while (o && !/^\[object[ A-Za-z]*Event\]$/.test(o.arguments[0]));
			return o.arguments[0];
		})(this.reEvent);
	}
	
});

Function.prototype.bind = function () {
//绑定事件
	var wc = this, a = $A(arguments), o = a.shift();
	return function () {
		wc.apply(o, a.concat($A(arguments)));
	};
};

function getSubElementsByTagName(obj,tag) {
		var childNodes = obj.childNodes;
		var nodes = [];
		for ( var i=0; i<childNodes.length; i++)
		{
			if ( childNodes[i].nodeName.toLowerCase()==tag )
			{
				nodes[nodes.length] = childNodes[i];
			}
		}
		return nodes;
}

function tabShow(obj,num)
{
	var tabpage = obj.parentNode.parentNode;
	
	var tabs =  getSubElementsByTagName(obj.parentNode,"li");
	for ( var i=0; i<tabs.length; i++)
	{
		var tab = tabs[i];
		if ( i==num )
			tab.className = "tabFocus";
		else
			tab.className = "tab";
		if ( i==0 )
			tab.style.marginLeft = "0px";
		else
			tab.style.marginLeft = "-1px";
	}
	
	var pages = getSubElementsByTagName(getSubElementsByTagName(tabpage,"div")[0],"div");
	for ( var i=0; i<pages.length; i++)
	{
		var page = pages[i];
		if ( i==num )
			page.className = "pageFocus";
		else
			page.className = "page";
	}
}

function getEvent(e)
{
    if (document.layers)
        return e;
    else if (document.all)
        return event;
    else if (document.getElementById)
        return e;
    return null;
}

var Ajax = Class.create();

Object.extend(Ajax, {

	getTransport: function() {
		return Try.these(
			function () { return new ActiveXObject('Msxml2.XMLHTTP') },
			function () { return new ActiveXObject('Microsoft.XMLHTTP') },
			function () { return new XMLHttpRequest() }
		) || false;
	}
	
});

Ajax.prototype = {

	initialize : function (url) {
	//初始化
		var wc = this;
		wc.ajax = Ajax.getTransport();
	},
	
	load : function (func) {
		var wc = this, ajax = wc.ajax;
		if (ajax.readyState == 4 && ajax.status == 200)
			func(ajax.responseText);
	},
	
	send : function (url, func) {
		var wc = this, ajax = wc.ajax,
			querys = url + "&" + new Date().getTime() + (10000 + parseInt(Math.random() * 10000));

		ajax.open("get", url, true);
		
		ajax.onreadystatechange = wc.load.bind(wc, func);
		ajax.send(null);
	}
};

function getOffset(element) {
		var valueT = 0, valueL = 0;
		do {
		  valueT += element.offsetTop  || 0;
		  valueL += element.offsetLeft || 0;
		  element = element.offsetParent;
		} while (element);
		return [valueL, valueT];
}

function selectDatabase(dbname,obj)
		{
				var parentObj = obj.parentNode;
				var childNodes = parentObj.childNodes;
				for ( var i=0; i<childNodes.length; i++ )
				{
					var node = childNodes[i];
					if ( node.nodeName.toLowerCase()=="span"  )
					{
						node.style.fontWeight = "normal";
					}
				}
				obj.style.fontWeight = 700;
				document.getElementById("dbname").value = dbname;
		}