﻿/* 
** Summary:	JS common Library 
** author:	caotian2000
** lastModified: 2007-08-18
** copyright (c)2007 caotian2000@163.com
*/


/*
 *	basic browser property checking
 */
var browser = new function(){
	this.ua = window.navigator.userAgent.toLowerCase();
	this.dom = document.getElementById ? 1 :0;
	this.moz = this.ua.match(/gecko/i) ? 1 : 0;
	this.ie  = this.ua.match(/msie/i) ? 1 : 0;
	this.opera = !this.ie && !this.moz && this.ua.match(/opera/i) ? 1 : 0;
};

function $(s){
	return document.getElementById(s);
}

/* -------- Utility Object -------------- */
var Utility = {
	bindEvent: function( obj, event, handler ){
		if( document.all )
			obj.attachEvent( event, handler );
		else
			obj.addEventListener( event.substr(2), handler, true );
	},
	getPosition: function(e){
		l = e.offsetLeft;
		t = e.offsetTop;
		while( e=e.offsetParent )
		{
			l += e.offsetLeft;
			t += e.offsetTop;
		}
		return {left:l,top:t};
	},
	toggle: function(){
		for (var i = 0; i < arguments.length; i++) 
		{
			var e = document.getElementById(arguments[i]);
			if( document.all ) 
				d = e.currentStyle.display;
			else
				d = document.defaultView.getComputedStyle(e,null).getPropertyValue("display");
			
			e.style.display = (d == 'none' ? this.getDefaultDisplay(e) : 'none');
		}
	},
	display: function(els, action)
	{
		var attr,value;
		switch(action)
		{
			case 'block':
				attr = 'display';
				value= 'block';
				break;
			case 'inline':
				attr = 'display';
				value= 'inline';
				break;
			case 'none':
				attr = 'display';
				value= 'none';
				break;
			case 'visible':
				attr = 'visibility';
				value= 'visible';
				break;
			case 'hidden':
				attr = 'visibility';
				value= 'hidden';
				break;
		}
		for(var i=0;i<els.length;i++)
		{
			e = els[i];
			if( typeof(e) == "string" )
				e = document.getElementById(els[i]);
			e.style[attr] = value;
		}
	},

	/* 隐藏 */
	hide: function(){this.display(arguments,'none');},

	/* 显示 */
	show: function(){this.display(arguments,'block');},

	showInline: function(){this.display(arguments, 'inline');},

	/* 可见 */
	visible: function(){this.display(arguments,'visible');},

	/* 不可见 */
	hidden: function (e){this.display(arguments,'hidden');},

	//居中
	center: function (e,fixtop){
		if( typeof(e) == "string" )	e = document.getElementById(e);
		e.style.position="absolute";
		e.style.zIndex = "6" ;
		fixtop = fixtop || 0;
		var scrollx = top.document.documentElement.scrollLeft;
		var scrolly = top.document.documentElement.scrollTop;
		var ttop = ((top.document.documentElement.clientHeight - e.offsetHeight)/2 + scrolly + fixtop);
		//范围超出判断
		//ttop = Math.min(ttop,e.ownerDocument.documentElement.scrollHeight - e.offsetHeight);
		ttop = Math.max(0, ttop);
		e.style.top  = ttop + "px";
		e.style.left = ((top.document.documentElement.clientWidth - e.offsetWidth)/2 + scrollx) + "px";
	},

	getDefaultDisplay: function(e){
		if( document.all ) return 'block';
		switch( e.tagName.toUpperCase() )
		{
			case "TABLE":
				def = "table";
				break;
			case "TR":
				def = "table-row";
				break;
			case "TD":
			case "TH":
				def = "table-cell";
				break;
			case "INPUT":
			case "SELECT":
				def = "inline-block";
				break;
			case "LI":
				def = "list-item";
				break;
			default:
				def = "block";
		}
		return def;
	},
	checkAll: function( radio, refobj ) {
		var rads =	document.getElementsByName(radio);
		for(var i=0; i<rads.length; i++)
		{
			rads[i].checked = refobj.checked;
		}
	},
	checkRadio: function( name, value ) {
		var rs = document.getElementsByName( name );
		for(var i=0; i<rs.length; i++)
		{
			if( rs[i].value == value )
			{
				rs[i].checked = true;
				return;
			}
		}
	},
	disableButton: function(bool){
		if(typeof(bool) == "undefined") bool = true;
		var inp = document.getElementsByTagName("input");
		for(i=0;i<inp.length;i++)
			if(inp[i].type.toLowerCase() == "submit" || inp[i].type.toLowerCase() == "button")
				inp[i].disabled = bool;
	}
};

/*-----------xmlHttp object for ajax model------------*/

var Ajax = {
	CreateXMLHttpRequest:function(){
		if (window.ActiveXObject) {
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		} 
		else if (window.XMLHttpRequest) {
			xmlHttp = new XMLHttpRequest();                
		}
		return xmlHttp;		
	},
	Request : function(url,method,success){
		var xmlHttp = this.CreateXMLHttpRequest();
		xmlHttp.open( method , url , true);
		xmlHttp.onreadystatechange = function(){
			if (xmlHttp.readyState == 4) {
				if (xmlHttp.status == 200) {
						success(xmlHttp);
					}
				}
		}
		xmlHttp.send(null);	
	}
}
