function Ajax (scriptName,container,userFunc,format,write_meth) {
	this.loadingHTML="<div class=\"loading\"><img src=\"http://"+location.host+"/pix/loading.gif\" /></div>";
	this.method='GET';
	if(!(scriptName && container && userFunc && format)) {
		alert('You are looser!');
		return;
	}
	var write_meth= (write_meth) ? write_meth : 1;
	var scriptName='http://'+location.host+'/'+scriptName;
	var container=container;
	var userFunc=userFunc;
	var format=format;
	var request=getRequest();
	if (request==null) {
		alert ('Browser does not support HTTP Request');
		return;
	}
	request.onreadystatechange=statechanged;
	
	function getRequest() {
		var obj=null;
		try {
			obj=new XMLHttpRequest();
		}
		catch (e) {
			try {
				obj=new ActiveXObject('Msxml2.XMLHTTP');
			}
			catch (e) {
				obj=new ActiveXObject('Microsoft.XMLHTTP');
			}
		}
		return obj;
	}
	function statechanged() {
		if(request.readyState==4 || request.readyState=='complete') {
			if(userFunc) {
				switch(format) {
					case 'xml':
						eval('var output='+userFunc+"(request.responseXML)");
						break;
					case 'html':
						eval('var output='+userFunc+"(request.responseText)");
	//					var output=_request.responseText;
						break;
					default:
						return;
				}
				if(write_meth==1) {
					container.innerHTML='';
					container.innerHTML=output;
				} else {
					container.write(output);
				}
			} else {
				return;
			}
		} else {
			return;
		}
	}
	this.execute = function() {
		container.innerHTML=this.loadingHTML;
		var parameters=new Array();
	
		for(var i=0;i<this.execute.arguments.length;i++) {
			if(this.execute.arguments[i]==null) { continue; }
			parameters[parameters.length]=this.execute.arguments[i].join('=');
		}
	
		switch(this.method) {
			case 'GET':
				parameters[parameters.length]='sid='+Math.random();
				var url=scriptName+'?'+parameters.join('&');
				var query=null;
				break;
			case 'POST':
				var url=scriptName;
				var query=parameters.join('&');
				break;
		}
		request.open(this.method,url,true);
		if(this.method=='POST') {
			request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			request.setRequestHeader("Content-length", parameters.length);
			request.setRequestHeader("Connection", "close");
		}
		request.send(query);
	
	}
}

function getElemText(node) {
	switch(true) {
		case node.text:
			return node.text;
		case node.textContent:
			return node.text;
	}
    return node.text || node.textContent || (function(node){
        var _result = "";
        if (node == null) {
            return _result;
        }
        var childrens = node.childNodes;
        var i = 0;
        while (i < childrens.length) {
            var child = childrens.item(i);
            switch (child.nodeType) {
                case 1: // ELEMENT_NODE
                case 5: // ENTITY_REFERENCE_NODE
                    _result += arguments.callee(child);
                    break;
                case 3: // TEXT_NODE
                case 2: // ATTRIBUTE_NODE
                case 4: // CDATA_SECTION_NODE
                    _result += child.nodeValue;
                    break;
                case 6: // ENTITY_NODE
                case 7: // PROCESSING_INSTRUCTION_NODE
                case 8: // COMMENT_NODE
                case 9: // DOCUMENT_NODE
                case 10: // DOCUMENT_TYPE_NODE
                case 11: // DOCUMENT_FRAGMENT_NODE
                case 12: // NOTATION_NODE
                // skip
                break;
            }
            i++;
        }
        return _result;
    }(node));
}
function getHtmlOutput(html) {
	return html;
}
function replace_row(span_container,tbody_id) {
	var span_obj=document.getElementById(span_container);
	var tbody_obj=document.getElementById(tbody_id);
	set_tr_opacity(tbody_obj,0.5);
	var interval_id=setInterval(function() {
		if(span_obj.getElementsByTagName('TABLE').length) {
			clearInterval(interval_id);
			var tr_obj_new=document.getElementById(span_container).getElementsByTagName('TR')[0];
			var tr_obj_old=tbody_obj.getElementsByTagName('TR')[0];
			tbody_obj.removeChild(tr_obj_old);
			tbody_obj.appendChild(tr_obj_new);
			span_obj.innerHTML='';
			set_tr_opacity(tbody_obj,1);
		}
	
	},500);
	return;
}
function set_tr_opacity(tr_obj,opacity_val) {
	var tds=tr_obj.getElementsByTagName('TD');
	for(var i=0;i<tds.length;i++) {
		setElementOpacity(tds[i],opacity_val);
	}
	var ths=tr_obj.getElementsByTagName('TH');
	for(var i=0;i<ths.length;i++) {
		setElementOpacity(ths[i],opacity_val);
	}
	return;
}
function setElementOpacity(elem, nOpacity)
{
  var opacityProp = getOpacityProperty();

  if (!elem || !opacityProp) return;
  if (opacityProp=="filter")
  {
    nOpacity *= 100;
    var oAlpha = elem.filters['DXImageTransform.Microsoft.alpha'] || elem.filters.alpha;
    if (oAlpha) oAlpha.opacity = nOpacity;
    else elem.style.filter += "progid:DXImageTransform.Microsoft.Alpha(opacity="+nOpacity+")";
  }
  else
    elem.style[opacityProp] = nOpacity;
}

function getOpacityProperty()
{
  if (typeof document.body.style.opacity == 'string')
    return 'opacity';
  else if (typeof document.body.style.MozOpacity == 'string')
    return 'MozOpacity';
  else if (typeof document.body.style.KhtmlOpacity == 'string')
    return 'KhtmlOpacity';
  else if (document.body.filters && navigator.appVersion.match(/MSIE ([\d.]+);/)[1]>=5.5)
    return 'filter';
  return false;
}
