var __tLib_ajax_progress_text='Loading..';

function __tLib_ajax_progress(state){
	var p=$('__tLib_ajax_progress');
	if(p){
		if(state==0){
			p.style.display='block';
			p.innerHTML=__tLib_ajax_progress_text;
		}else if(state==4){
			p.style.display='none';
			p.innerHTML=__tLib_ajax_progress_text;
		}else{
			p.innerHTML=p.innerHTML+'.';
		}
	}
}

document.open();
document.write('<div id="__tLib_ajax_progress" style="font-family:Tahoma,Verdana,Arial;background:red;position:absolute;left:0px;display:none;padding:3px 20px;font-weight:bold;color:white;border:1px solid white;-moz-opacity:0.85;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=85),progid:DXImageTransform.Microsoft.Shadow(color=\'gray\',Direction=135,Strength=4)">'+__tLib_ajax_progress_text+'</div>');
document.close();

var __tLib_ajax_http=null;
var __tLib_ajax_caller_id='';

function __tLib_HTTPGet(url,callback_function,data,headers){
	if (!__tLib_ajax_http&&window.XMLHttpRequest) {
		__tLib_ajax_http=new XMLHttpRequest();
		try{
			__tLib_ajax_http.overrideMimeType('text/html');
		}catch(e){}
	}
	if (!__tLib_ajax_http&&window.ActiveXObject){
		var msxmls=new Array('Msxml2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP','Microsoft.XMLHTTP');
		for(var i=0;i<msxmls.length;i++){
			try{
				__tLib_ajax_http=new ActiveXObject(msxmls[i]);
				break;
			}catch(e){}
		}
	}
	if(__tLib_ajax_http){
		if((__tLib_ajax_http.readyState!=0)&&(__tLib_ajax_http.readyState!=4)){
			__tLib_ajax_http.abort();
		}
		if(data){
			__tLib_ajax_http.open('POST',url,true);
			__tLib_ajax_http.setRequestHeader('Content-type','application/x-www-form-urlencoded');
		}else{
			__tLib_ajax_http.open('GET',url,true);
		}
		__tLib_ajax_http.setRequestHeader('Connection','close');
		if(headers){
			for(var q=0,m=headers.length;q<m;q++){
				__tLib_ajax_http.setRequestHeader(headers[q][0],headers[q][1]);
			}
		}
		if(window.__tLib_custom_ajax_progress){
			__tLib_custom_ajax_progress(0);
		}else{
			__tLib_ajax_progress(0);
		}
		__tLib_ajax_http.onreadystatechange = function() {
			if (__tLib_ajax_http.readyState==4){
				if(window.__tLib_custom_ajax_progress){
					__tLib_custom_ajax_progress(4);
				}else{
					__tLib_ajax_progress(4);
				}
				if(callback_function){
					if(typeof(callback_function)=='string'){
						eval(callback_function+'(__tLib_ajax_http.responseText)');
					}else{
						callback_function(__tLib_ajax_http.responseText);
					}
				}
			}
			if(window.__tLib_custom_ajax_progress){
				__tLib_custom_ajax_progress(__tLib_ajax_http.readyState);
			}else{
				__tLib_ajax_progress(__tLib_ajax_http.readyState);
			}
		}
		if(data){
			__tLib_ajax_http.send(data);
		}else{
			__tLib_ajax_http.send(null);
		}
	} else {
		if(window.__tLib_custom_ajax_progress){
			__tLib_custom_ajax_progress(0);
		}else{
			__tLib_ajax_progress(0);
		}
		var iframe=document.createElement("iframe");
		iframe.id='__tLib_temporary_iframe';
		iframe.style.display="none";
		document.body.appendChild(iframe);
		iframe.onload=function(){
			if(callback_function){
				if(typeof($('__tLib_temporary_iframe').innerHTML)!='undefined'){
					eval(callback_function+"($('__tLib_temporary_iframe').innerHTML);if(window.__tLib_custom_ajax_progress){__tLib_custom_ajax_progress(4);}else{__tLib_ajax_progress(4);}");
				}else{
					eval(callback_function+"($('__tLib_temporary_iframe').contentDocument.body.innerHTML);if(window.__tLib_custom_ajax_progress){__tLib_custom_ajax_progress(4);}else{__tLib_ajax_progress(4);}");
				}
			}
			setTimeout("document.body.removeChild($('__tLib_temporary_iframe'));",1);
		};
		iframe.src=url;
	}
	return false;
}

function __tLib_AJAXFormProcess(control) {
	form = control.parentNode;
	while ( form && form.tagName!='FORM' ) {
		form = form.parentNode;
	}

	if ( form ) {
		__tLib_ajax_caller_id = control.id;
		var dot_pos;
		if ( (dot_pos=__tLib_ajax_caller_id.indexOf('.'))!=-1 ) {
			__tLib_ajax_caller_id = __tLib_ajax_caller_id.substr(0, dot_pos);
		}
		params = '';

		for ( i=0, max_i=form.elements.length; i<max_i; i++ ) {
			try {
				if ( form.elements[i].type.toLowerCase()=='select-multiple' ) {
					name=form.elements[i].name;
					for ( q=0, max_q=form.elements[i].options.length; q<max_q; q++ ) {
						if ( form.elements[i].options[q].selected ) {
							params+='&'+name+'='+encodeURIComponent(form.elements[i].options[q].value);
						}
					}
				} else if ( form.elements[i].type.toLowerCase()=='checkbox' || form.elements[i].type.toLowerCase()=='radio' ) {
					if ( form.elements[i].checked ) {
						params+='&'+form.elements[i].name+'='+encodeURIComponent(form.elements[i].value);
					}
				} else if ( form.elements[i].type.toLowerCase()!='button' && form.elements[i].type.toLowerCase()!='submit' && form.elements[i].type.toLowerCase()!='reset' ) {
					params+='&'+form.elements[i].name+'='+encodeURIComponent(form.elements[i].value);
				} else if ( form.elements[i].type.toLowerCase()=='submit' && form.elements[i].id==__tLib_ajax_caller_id ) {
					params+='&'+form.elements[i].name+'='+encodeURIComponent(form.elements[i].value);
				}
			} catch(e) {
			}
		}

		params=params.substring(1);

		url=__tLib_webRoot+'/__tLib_AJAXRequest-'+__tLib_ajax_caller_id+document.location.pathname;
		__tLib_HTTPGet(url, '__tLib_AJAXResponseProcess', params);
	} else {
		alert('__tLib_AJAXFormProcess(): Parent form is not found.');
	}

	return false;
}

function __tLib_AJAXLinkProcess(control, params) {
	if ( typeof(control)=='string' ) {
		__tLib_ajax_caller_id = control;
	} else {
		__tLib_ajax_caller_id = control.id;
	}

	if ( params ) {
		if ( params.length && params.charAt(0)=='&' ) {
			params=params.substring(1);
		}
	} else {
		params = '';
	}

	url=__tLib_webRoot+'/__tLib_AJAXRequest-'+__tLib_ajax_caller_id+document.location.pathname+'?'+params;
	__tLib_HTTPGet(url, '__tLib_AJAXResponseProcess');

	return false;
}

function __tLib_AJAXResponseProcess(data) {
	pos=0;
	len = '';
	while ( pos<data.length && (c=data.charAt(pos++))!=' ' ) {
		len+=c;
	}
	if ( len=='go' ) {
		document.location=data.substring(3);
		return;
	}
	len=parseInt(len);
	if ( len ) {
		js=data.substr(pos, len)
		eval(js);
		pos+=len;
	}

	len = '';
	while ( pos<data.length && (c=data.charAt(pos++))!=' ' ) {
		len+=c;
	}
	len=parseInt(len);
	ejs = '';
	if ( len ) {
		ejs=data.substr(pos, len)
		pos+=len;
	}

	while ( pos<data.length ) {
		len = '';
		while ( pos<data.length && (c=data.charAt(pos++))!=' ' ) {
			len+=c;
		}
		len=parseInt(len);
		name=data.substr(pos, len)
		pos+=len;

		len = '';
		while ( pos<data.length && (c=data.charAt(pos++))!=' ' ) {
			len+=c;
		}
		len=parseInt(len);
		html=data.substr(pos, len)
		pos+=len;

		c=$('div_'+name);
		if ( !c ) {
			alert('AJAX processing failure.');
			ajax_error_w=window.open('', 'ajax_error_window', 'height=500,width=900,toolbar=no,scrollbars=yes,menubar=no')
			if ( ajax_error_w ) {
				ajax_error_w.document.write(data);
				ajax_error_w.document.close();
			}
		} else {
			c.innerHTML=html;
			try {
				$(__tLib_ajax_caller_id).focus();
			} catch(e) {
			}
		}
	}

	if ( ejs.length ) {
		eval(ejs);
	}
}

