// creater:kenit
// ver 0.006
function $(id){
	return document.getElementById(id);
}
function deleteAllChild(obj){ //delete all children of obj
	if(obj && obj.hasChildNodes){
		var tmp=obj.childNodes.length;
		for(var i=0;i<tmp;i++)
			obj.removeChild(obj.childNodes.item(0));
	}
}

function form_value_maker(form,dataname,value){ //build a hidden type form element with specific value and append it to the given form obj.
	var input=document.createElement('input');
	input.setAttribute('type','hidden');
	input.setAttribute('name',dataname);
	input.setAttribute('value',value);
	form.appendChild(input);
}
var ajax={
	pool:new Array(),
	request:function(_url,_method,_sync,_xml){

		var index=this.getIdelthread();
		this.pool[index].url=_url;
		this.pool[index].method=_method;
		this.pool[index].sync=_sync;
		this.pool[index].xml=_xml;
		this.pool[index].submit();

	},
	getIdelthread:function(){
		for(var i=0;i<this.pool.length;i++){
			if(this.pool[i].http_request.readyState==4 && this.pool[i].http_request.status == 200)
				return i;
		}
		var newrepuest=new ajax_request();
		this.pool.push(newrepuest);
		return this.pool.length-1;
	}
}
function ajax_request(_url,_method,_sync,_xml){
	this.url=_url;
	this.method=_method;
	this.sync=_sync;
	this.xml=_xml;
	this.newhttprequest=function (){
		var http_request=false;
		if (window.XMLHttpRequest) {
			http_request = new XMLHttpRequest();

		} else if (window.ActiveXObject) { // IE
			try {
				http_request = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					http_request = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e2) {}
			}
		}
		return http_request;
	}
	var parent=this;
	this.http_request = this.newhttprequest();
	this.submit=function(){
		this.http_request.abort();
		if (this.http_request.overrideMimeType && this.xml) {
			this.http_request.overrideMimeType('text/xml');
		}		
		this.http_request.onreadystatechange = function(){
			if (parent.http_request.readyState == 4) {
				if (parent.http_request.status == 200) {
					if(parent.xml)
						parent.response = parent.http_request.responseXML;
					else
						parent.response = parent.http_request.responseText;

					parent.method(parent.response);
				}
			}
		};
		this.http_request.open('GET', this.url, this.sync);
		this.http_request.send(null);
	}
}
function option_gen(value,innertext,slted){
	var option = document.createElement('option');
	option.setAttribute('value',value);
	option.innerHTML=innertext;
	if(slted)
		option.selected=true;
	return option;
}

function Obj2Source(obj,fun){ //convert object to JS declare script.
	 if(obj==null) return 'null';
	 if(obj.toGMTString) return '(new Date('+obj.valueOf()+'))'; //Date object
	 switch (typeof(obj)){
		case 'string':
		    var tmp=obj;
		    tmp=obj.replace(String.fromCharCode(10),'');
		    tmp=tmp.replace(/"/g,"'");
			return '"'+tmp+'"';
			break;
		case 'object':
			var source='';
			for(var i in obj){
				if(obj.concat)
					source+=','+Obj2Source(obj[i],fun);
				else
					source+=',"'+i+'":'+Obj2Source(obj[i],fun);
			}
			if(obj.concat)
				return '['+source.slice(1)+']'; //array
			else
				return '{'+source.slice(1)+'}'; //object
			break;
		case 'function':
			if(fun)
				return obj;
			else return '';
			break;
		default:
			return obj;
	 }
}

function tdmaker(innerdata,tr,css){
	var tmp=document.createElement('td');
	if(typeof(innerdata)=='string' || typeof(innerdata)=='number')
		tmp.innerHTML=innerdata;
	else tmp.appendChild(innerdata);
	if(css) tmp.className=css;
	tr.appendChild(tmp);
	return tmp;
}

function isFF(){
	var obj={a:'a',b:'b'};
	if(obj.toSource)
		return true;
	else return false;
}

function addCSS(obj,classname){
	if(typeof(obj)!='undefined' && classname!=''){
		obj.className+=' '+classname;
	}
}
function removeCSS(obj,classname){
	if(typeof(obj)!='undefined' && classname!=''){
		var patt=new RegExp(classname,'g');
		if(obj.className.search(patt) > -1)
			obj.className=obj.className.replace(patt,'');
	}
}
function period_day(preday,period){
	if(preday=='') return false;
	var year=parseInt(preday.split('-')[0],10);
	var mon=parseInt(preday.split('-')[1],10);
	var day=parseInt(preday.split('-')[2],10);
	var afterday = new Date();
	afterday.setFullYear(year);
	afterday.setMonth(mon-1);
	//afterday.setDate(day);
	afterday.setDate(day+period);
	return afterday.getFullYear()+'-'+(afterday.getMonth()+1)+'-'+afterday.getDate();
}
function xmlstrtoDOM(txt){
	try{
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async="false";
		xmlDoc.loadXML(txt);
	}
	catch(e){
		parser=new DOMParser();
		xmlDoc=parser.parseFromString(txt,"text/xml");
	}
	return xmlDoc;
}
function xmltodom(xslt,xml){
	if(typeof(XSLTProcessor)!='undefined'){ //FF
		var processor = new XSLTProcessor();
		processor.importStylesheet(xslt);
		var fragment = processor.transformToFragment(xml,document);
		var div=document.createElement('div');
		div.appendChild(fragment);
		return div.innerHTML;
	}else if(typeof(xml.transformNode)!='undefined'){ //IE
		return xml.transformNode(xslt);
	}else
		return false;	//unknown browser
}
function htmlspecialchars(str){
	str=str.replace(/&/g,'&amp;');
	str=str.replace(/</g,'&lt;');
	str=str.replace(/>/g,'&gt;');
	str=str.replace(/"/g,'&quot;');
	str=str.replace(/'/g,'&#039;');
	return str;
}
function htmlspecialchars_decode(str){
	str=str.replace(/&amp;/g,'&');
	str=str.replace(/&lt;/g,'<');
	str=str.replace(/&gt;/g,'>');
	str=str.replace(/&quot;/g,'"');
	str=str.replace(/&#039;/g,"'");
	return str;
}
function setobjvisible(obj){
	if(typeof(obj)=='undefined' || obj.nodeType!=1) return false;
	var property='';
	switch(obj.nodeName.toUpperCase()){
		case 'TD':
			property='table-cell';
			break;
		case 'TR':
			property='table-row';
			break;
		case 'TABLE':
			property='table';
			break;
		default:
			property='block';
			break;
	}
	try{
		obj.style.display=property;
	}catch(e){
		obj.style.display='block';
	}
}