function getXmlHttpRequest(){
	var xmlhttp = false;
	// IE
	if (window.ActiveXObject) {
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	// Mozilla/Safari
	else if (XMLHttpRequest) {
		xmlhttp = new XMLHttpRequest();
	}
	return xmlhttp;
}

function ajaxPost(url) {
	var ax = getXmlHttpRequest();
	ax.open("POST",url,false);
	ax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8;');
	return ax;
}

function ajaxGet(url) {
	var ax = getXmlHttpRequest();
	ax.open("GET",url,false);
	return ax;
}

function parseExcelPaste(addrValue) {
	var lines = addrValue.split(/\r?\n/g);
	var addrs = [];
	for(var i=0;i<lines.length;i++) {
		var adds = lines[i].split("\t",2);
		var name = adds[0].indexOf("@")==-1 ? adds[0] : adds[1];
		var mail = adds[0].indexOf("@")==-1 ? adds[1] : adds[0];
		name = name.replace( /,/g,"&#44;" );
		mail = mail.replace( /,/g,"&#44;" );
		var addr = name + "<" + mail + ">";
		addrs[addrs.length] = addr;
	}
	return addrs.join(", ");
}

function encodeValue(value) {
	var va = value.replace(/[%]/g,"%25").replace(/&/g,"%26").replace(/\?/g,"%3F");
	va = va.replace(/\+/g,"%2B").replace(/-/g,"%2D").replace(/=/g,"%3D");
	return va;
}

function postString(name,items) {
	if(items) items = ","+items+",";
	var data = new Array();
	var chks = new Array();
	var inps = document.forms[name].getElementsByTagName("INPUT");
	for(var i=0;i<inps.length;i++) {
		var elem = inps[i];
		if(!elem.name) continue;
		if(elem.disabled) continue;
		if(items && items.indexOf(","+elem.name+",")==-1) continue;
		if(elem.type.toLowerCase()=="radio" && !elem.checked ) continue;
		if(elem.type.toLowerCase()=="checkbox") {
			if(elem.checked) {
				chks[elem.name] = chks[elem.name]?(chks[elem.name]+","):"";
				chks[elem.name] += elem.value;
			}
			continue;
		}
		data[data.length] = elem.name+"="+encodeValue(elem.value);
	}
	for(var s in chks) data[data.length] = s+"="+chks[s];

	inps = document.forms[name].getElementsByTagName("TEXTAREA");
	for(var i=0;i<inps.length;i++) {
		var elem = inps[i];
		if(!elem.name) continue;
		if(elem.disabled) continue;
		if(items && items.indexOf(","+elem.name+",")==-1) continue;
		data[data.length] = elem.name+"="+encodeValue(elem.value);
	}

	inps = document.forms[name].getElementsByTagName("SELECT");
	for(var i=0;i<inps.length;i++) {
		var elem = inps[i];
		if(!elem.name) continue;
		if(elem.disabled) continue;
		if(items && items.indexOf(","+elem.name+",")==-1) continue;
		data[data.length] = elem.name+"="+encodeValue(elem.value);
	}

	return data.join("&");
}

function loadScript(text) {
	var ifs,ife;
	while( (ifs=text.search(/<SCRIPT/i))!=-1 ) {
		ifs = text.indexOf(">",ifs+1);
		ife = text.search(/<\/SCRIPT>/i,ifs+1);
		var sc = text.substr( ifs+1,ife-ifs-1 );
		if( sc ) try {
			if( window.execScript ) {
				window.execScript(sc);
			} else {
				eval(sc);
			}
		} catch(e) { alert( ["loadScript",e.message,sc].join("\n\n") ); break; }
		text = text.substr( ife+1 );
	}
}

function goMemo(si,ci,tt) {
	if (alertLogin()) return false;
	
	var qry = memoHandler.context("/tool").params(true).view(null,si,ci);
	var ax = ajaxGet( qry,false );
	ax.send(null);
	if( ax.status==200 )
		eval(ax.responseText);
}

function MultiAsyncs(ax,szfn) {
	if( !szfn ) szfn = "eval.apply(window,[this.ax.responseText]);";
	this.szfn = szfn;
	this.ax = ax;

	this.attach = function() {
		if( !window.MultiAsyncs_insts ) MultiAsyncs_insts = [];
		this.id = MultiAsyncs_insts.length;
		for(var i=0;i < MultiAsyncs_insts.length;i++)
			if( ! MultiAsyncs_insts[i] ) { this.id = i; break; }
		MultiAsyncs_insts[this.id] = this;
		this.ax.onreadystatechange = new Function("e",this.qName()+".onStatus(e)");
		return this.ax;
	}

	this.release = function() {
		MultiAsyncs_insts[this.id] = null;
		this.id = null;
	}

	this.qName = function() { return "MultiAsyncs_insts["+this.id+"]"; }

	this.onStatus = function() {
		if( this.ax.readyState==4 ) {
			try { eval(this.szfn); }
			catch(e) { window.status = ["MultiAsyncs.onStatus",e.message]; }
			this.release();
		}
	}
}
