var $get = function(id){
	return (typeof(id)=='string') ? document.getElementById(id) : id;
};

String.prototype.trim = function(){
	return this.replace(/\s+$|^\s+/g,"");
};

var ii=0, drawit=null;
function setOnErr(objeid){
	var obje=$get(objeid)
	ii++;
	if (ii==1){ obje.focus(); }
	if ((ii%2)==0){ obje.style.background = '#FF0000'; }
	else{ obje.style.background = '#FFFFFF'; }
	if(drawit==null){ drawit = setInterval("setOnErr('"+objeid+"')", 100); }
	if (ii>6){
		clearInterval(drawit);
		ii=0;
		drawit = null;
	}
};

function Focus(o){
    setOnErr(o);
	return false;
};

function isUrl(s)
{
	var re = /http:\/\/\w+.\w+.\w+?/gm
	return re.test(s);
}
	
function CheckExe(myfile, sExe){
	var isOK = true;
	var fileExe = myfile.substring(myfile.lastIndexOf(".")+1).toLowerCase();
	var sLen = (sExe.toLowerCase()).split("|");
	for(var i=0; i<sLen.length; i++){
		if (sLen[i]==fileExe){
			isOK = false;
			break;
		}
	}
	return isOK;
};

function getformData(fm)
{
    var obj = $get(fm).elements;
    var dat = '';
    for (var i = 0; i < obj.length; i++)
    {
        if (obj[i].type!='submit' && obj[i].type!='button' && obj[i].type!='reset')
        {
	        dat += '&' + obj[i].id +'='+ encodeURIComponent(obj[i].value.trim());
        }
    }
    return (dat!='') ? dat.substring(1) : dat;
}

function binderdroplist(id, val)
{
    var obj = $get(id);
    for(var i=0; i<obj.options.length; i++)
    {
        if(obj.options[i].value == val)
        {
            obj.options[i].selected = true;
            break;
        }
    }
}

var SM_Ajax = function(parms){
	this.version = 'Ver 2.0';
	this.update = '2008-7-26 12:37:51';
	this.Author = 'Slam';

	if (parms)
	{
		this.method = parms.method;
		this.url = parms.url;
		this.data = parms.data;
		this.Async = parms.Async;
		this.charset = parms.charset;
		this.OnFinish = parms.OnFinish;
		this.OnFail = parms.OnFail;
		this.OnReady = parms.OnReady;
	};
	var Me = this;

	var XmlHttp = function(){
		var obj = null;
		var objStr = ["Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
		try{
			obj = new XMLHttpRequest();
		}catch(e){
			for (var i = 0; i < objStr.length; i++)
			{
				try{
					obj = new ActiveXObject(objStr[i]);
					break;
				}catch(x){}
			
			}
		}
		return obj;
	};

	this.send = function(data){
		this.runing = true;
		if (this.method==undefined) this.method = 'GET';
		if (this.Async==undefined) this.Async = true;
		if (this.OnReady==undefined) this.OnReady = function(s){};
		if (this.OnFail==undefined) this.OnFail = function(err){};
		if (this.OnFinish==undefined) this.OnFinish = function(e){};
		this.method = this.method.toUpperCase();
		this.charset = (this.charset==undefined) ? '' : ';charset='+ this.charset ;

		data = (data==undefined) ? data = '' : data;
		this.data = (this.data==undefined) ? this.data='' : this.data;
		if (data!='') data += '&';
		if (this.data=='') data = data.substring(0, data.length - 1);
		data += this.data;
		if (this.method!='POST'){
			if (data!='')
			{
				data = data.substring(0, data.length-1);
				this.url = (this.url.indexOf('?')==-1) ? this.url += '?' + data : this.url += '&'+ data;
			}
			data = null;
		}

		var obj = this.Http = XmlHttp();
		obj.open (this.method, this.url, this.Async);
		obj.setRequestHeader('Accept', 'text/javascript, text/html, application/xml, text/xml, */*');
		if (this.method=='POST')
		{
			if (data!=null) obj.setRequestHeader("Content-Length", data.length);
			obj.setRequestHeader('Content-Type','application/x-www-form-urlencoded'+ this.charset);
		}else{
			data = null
		};
		obj.onreadystatechange = function(){
			if (obj.readyState==4){
				var Result = false;
				var XmlDoc = null;
				if (obj.status==200){
					Result = obj.responseText;
					XmlDoc = obj.responseXML;
					Me.OnFinish(Result, XmlDoc);
				}else{
					Me.OnFail(obj.status, obj);
				}
			}
			Me.OnReady(obj.readyState);
		};
		obj.send(data);
	};

	this.get = function(data){
		this.method = 'GET';
		this.send(data);
	};

	this.post = function(data){
		this.method = 'POST';
		this.send(data);
	};

	this.Abort = function(){
		if (!this.running) return this;
		this.running = false;
		this.Http.abort();
		this.Http.onreadystatechange = function(){};
		delete this.Http
	}
}
