/*  
   last modified 2009/01/09
*/
function ajaxRequest(method,url,option){
	var ajax = new Object();
	ajax.url=url;
	if(!option)ajax.option='';
	else
	ajax.option=option;
	var _defaultOption={'postForm':'','target':'','sendStr':'','readyFunc':'','overlay':''};
    for (var key in _defaultOption){
	  if(!ajax.option.key)
	   ajax.option.key='';
    }
	ajax.target = ajax.option.target ? document.getElementById(ajax.option.target) : null
	ajax.readyFunc=(ajax.option.readyFunc)?ajax.option.readyFunc:null;
	if(ajax.option.overlay)ajax.overlay = document.createElement('div');
	ajax.createXMLHttpRequest = function() {
		var request = false;
		if(window.XMLHttpRequest) {
			request = new XMLHttpRequest();
			if(request.overrideMimeType) {
				request.overrideMimeType('text/xml');
			}
		} else if(window.ActiveXObject) {
			var versions = ['Microsoft.XMLHTTP', 'MSXML.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.7.0', 'Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];
			for(var i=0; i<versions.length; i++) {
				try {
					request = new ActiveXObject(versions[i]);
					if(request) {
						return request;
					}
				} catch(e) {
					//alert(e.message);
				}
			}
		}
		return request;
	};
    ajax.XMLHttpRequest = ajax.createXMLHttpRequest();
	ajax.processHandle = function() {
		if(ajax.target) {
			if(ajax.option.overlay){
			  if(!ajax.Otarget){
				ajax.overlay.className ='overlay';
			    var size=new ajax.getPageSize();
				ajax.overlay.style.width=size.pageWidth+'px';
				ajax.overlay.style.height=size.pageHeight+'px';
				ajax.Otarget=document.body.appendChild(ajax.overlay);
			    if(/MSIE 6\.0/.test(window.navigator.userAgent)){
				  var allEL=document.getElementsByTagName('SELECT');
				  for(var i in allEL)allEL[i].disabled=true;
				}
			  }
			}
			var mTop=(ajax.target.style.height)?'margin-top:'+(parseInt(ajax.target.style.height)/2)+'px;':'';

		}
		if(ajax.XMLHttpRequest.readyState == 4) {
		    if(ajax.XMLHttpRequest.status == 200) {
				if(ajax.Otarget){
				   document.body.removeChild(ajax.Otarget);
				   if(/MSIE 6\.0/.test(window.navigator.userAgent)){
				      var allEL=document.getElementsByTagName('SELECT');
				      for(var i in allEL)allEL[i].disabled=false;
				   }
				}
				if(ajax.target)ajax.target.innerHTML = ajax.XMLHttpRequest.responseText;
	            if(ajax.readyFunc)ajax.readyFunc();
			} else {
				if(ajax.target) {
					ajax.target.innerHTML = 'fail';
				}
			}
		}
	};
	ajax.get=function(){
		ajax.url+=(ajax.url.indexOf('?')!='-1')?'&parm='+new Date().getTime():'?parm='+new Date().getTime();
        ajax.XMLHttpRequest.onreadystatechange = ajax.processHandle;
		ajax.XMLHttpRequest.open('GET',ajax.url,true);
        ajax.XMLHttpRequest.send(null);
		
	};
	ajax.getPageSize=function(){
		var xScroll, yScroll;
		if (window.innerHeight && window.scrollMaxY) { 
		   xScroll = document.body.scrollWidth;yScroll = window.innerHeight + window.scrollMaxY;
		} else if (document.body.scrollHeight > document.body.offsetHeight){
		   xScroll = document.body.scrollWidth;yScroll = document.body.scrollHeight;
		} else if (document.documentElement && document.documentElement.scrollHeight > document.documentElement.offsetHeight){
		   xScroll = document.documentElement.scrollWidth;yScroll = document.documentElement.scrollHeight;
		} else { 
		  xScroll = document.body.offsetWidth;yScroll = document.body.offsetHeight;
		}
		if (self.innerHeight) {	
			this.windowWidth = self.innerWidth;this.windowHeight = self.innerHeight;
		} else if (document.documentElement && document.documentElement.clientHeight) {
			this.windowWidth = document.documentElement.clientWidth;this.windowHeight = document.documentElement.clientHeight;
		} else if (document.body) { // other Explorers
			this.windowWidth = document.body.clientWidth;this.windowHeight = document.body.clientHeight;
		}	
		if(yScroll < this.windowHeight)this.pageHeight = this.windowHeight;
		else this.pageHeight = yScroll;
		if(xScroll < this.windowWidth)this.pageWidth = this.windowWidth;
		else this.pageWidth = xScroll;
	};
	ajax.post=function(){
		var val='';
        if(ajax.option.postForm){
	       var formEL=document[ajax.option.postForm].elements;
	       for(var i=0,j=formEL.length;i<j;i++){
			  switch(formEL[i].type){
				case'radio':
				  if(formEL[i].checked==true)val += encodeURIComponent(formEL[i].name)+"="+encodeURIComponent(formEL[i].value)+"&";
				break;
				case'checkbox':
				  if(formEL[i].checked==true)val += encodeURIComponent(formEL[i].name)+"="+encodeURIComponent(formEL[i].value)+"&";
				break;
				case'select-one':
				   val += encodeURIComponent(formEL[i].name)+"="+encodeURIComponent(formEL[i].value)+"&";
				break;
				case'select-multiple':
				  for(var k=0,l=formEL[i].length;k<l;k++){
				   if(formEL[i].options[k].selected==true)val += encodeURIComponent(formEL[i].name)+"="+encodeURIComponent(formobj[i].options[k].value)+"&";
				  }
				break;
				default:
				  val += encodeURIComponent(formEL[i].name)+"="+encodeURIComponent(formEL[i].value)+"&";
				break;
			  }
	      }
	      if(val.substr(val.length-1,1))
             val = val.substr(0,val.length-1);
        }
        if(ajax.option.sendStr)
	       val+=ajax.option.sendStr;
		ajax.XMLHttpRequest.onreadystatechange = ajax.processHandle;
        ajax.XMLHttpRequest.open('POST',ajax.url,true);
        ajax.XMLHttpRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");
        ajax.XMLHttpRequest.send(val);
	};
	if(method.toLowerCase()=='post')ajax.post();
	else if(method.toLowerCase()=='get')ajax.get();
}