if(!Array.indexOf){
	Array.prototype.indexOf = function(object){
		for(var i = 0; i < this.length; i++){
			if(this[i] == object){ 
				return i;
			}
		}
		return -1;
	}
}
if(!Array.clone){
	Array.prototype.clone = function(){
		return Array.apply(null,this)
	}
}
Function.prototype.applyTimeout = function (ms, self, args)
{
	var f = this;
	return setTimeout(
	function () {
		f.apply(self, args);
	},
	ms);
};

Function.prototype.callTimeout = function (ms, self)
{
	return this.applyTimeout(
		ms,
		self,
		Array.prototype.slice.call(arguments, 2));
};

Function.prototype.applyInterval = function (ms, self, args)
{
	var f = this;
	return setInterval(
		function () {
			f.apply(self, args);
		},
	ms);
};

Function.prototype.callInterval = function (ms, self)
{
	return this.applyInterval(
		ms,
		self,
		Array.prototype.slice.call(arguments, 2));
};

function Ajax()
{
}
Ajax.getXmlHttp = function() 
{
    try
    {
        if(window.XMLHttpRequest) 
        {
            var req = new XMLHttpRequest();
            if(req.readyState == null) 
            {
                req.readyState = 1;
                req.addEventListener("load", 
                    function() 
                    {
                        req.readyState = 4;
                        if(typeof req.onreadystatechange == "function")
                            req.onreadystatechange();
                    },
                    false);
            }
            return req;
        }
        if(window.ActiveXObject) 
            return new ActiveXObject(Ajax.getXmlHttpProgID());
    }
    catch (ex) {}
    throw new Error("Your browser does not support XmlHttp objects");
}
Ajax.getXmlHttpProgID = function()
{
    if(Ajax.getXmlHttpProgID.progid)
        return Ajax.getXmlHttpProgID.progid;
    var progids = ["Msxml2.XMLHTTP.5.0", 
                   "Msxml2.XMLHTTP.4.0", 
                   "MSXML2.XMLHTTP.3.0", 
                   "MSXML2.XMLHTTP", 
                   "Microsoft.XMLHTTP"];
    var o;
    for(var i = 0; i < progids.length; i++)
    {
        try
        {
            o = new ActiveXObject(progids[i]);
            return Ajax.getXmlHttpProgID.progid = progids[i];
        }
        catch (ex) {};
    }
    throw new Error("Could not find an installed XML parser");
}

function SOAPClientParameters()
{
    var _pl = new Array();
    this.add = function(name, value) 
    {
        _pl[name] = value; 
        return this; 
    }
    this.toXml = function()
    {
        var xml = "";
        for(var p in _pl)
        {
            if(typeof(_pl[p]) != "function")
                xml += "<" + p + ">" + 
                       _pl[p].toString().replace(/&/g, 
                         "&").replace(/</g, 
                         "<").replace(/>/g, 
                         ">") + "</" + p + ">";
        }
        return xml;    
    }
}

function SOAPClient()
{
	this.SOAPClient_cacheWsdl = new Array();
	this._url;
	this._method;
	this._parameters;
	this._async;
	this._callback;
	this._wsdl;
	this.req;
	this._source
}
SOAPClient.prototype.invoke = function(url, method, parameters, async, callback, source)
{
	this._url = url;
	this._method = method;
	this._parameters = parameters;
	this._async = async;
	this._callback = callback;
    if(this._async)
        this._loadWsdl();
    else
        return this._loadWsdl();
	this._source = source;
}
SOAPClient.prototype._loadWsdl = function()
{
    // load from cache?
    this._wsdl = this.SOAPClient_cacheWsdl[this._url];
    if(this._wsdl + "" != "" && this._wsdl + "" != "undefined")
        return this._sendSoapRequest();
    // get wsdl
    this.req = Ajax.getXmlHttp();
    this.req.open("GET", this._url + "?wsdl", this._async);
    if(this._async)
    {
		var XmlHttp = this.req;
		var me = this;
        this.req.onreadystatechange = function()
        {
            if(XmlHttp.readyState == 4)
                me._onLoadWsdl();
        }
    }
    this.req.send(null);
    if (!this._async)
        return this._onLoadWsdl();
}
SOAPClient.prototype._onLoadWsdl = function()
{
    this._wsdl = this.req.responseXML;
    this.SOAPClient_cacheWsdl[this._url] = this._wsdl;
    return this._sendSoapRequest();
}
SOAPClient.prototype._sendSoapRequest = function()
{
    var ns = (this._wsdl.documentElement.attributes["targetNamespace"] + 
              "" == "undefined") ? 
              this._wsdl.documentElement.attributes.getNamedItem(
              "targetNamespace").nodeValue : 
              this._wsdl.documentElement.attributes["targetNamespace"].value;
    var sr = 
        "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
        "<soap:Envelope " +
        "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
        "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" " +
        "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
        "<soap:Body>" +
        "<" + this._method + " xmlns=\"" + ns + "\">" +
        this._parameters.toXml() +
        "</" + this._method + "></soap:Body></soap:Envelope>";
    this.req = Ajax.getXmlHttp();
    this.req.open("POST", this._url, this._async);
    var soapaction = ((ns.lastIndexOf("/") != ns.length - 1) ? ns + "/" : ns) + this._method;
    this.req.setRequestHeader("SOAPAction", soapaction);
    this.req.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    if(this._async) 
    {
		var XmlHttp = this.req;
		var me = this;
        this.req.onreadystatechange = function() 
        {
            if(XmlHttp.readyState == 4)
                me._onSendSoapRequest();
        }
    }
    this.req.send(sr);
    if (!this._async)
        return this._onSendSoapRequest();
}
SOAPClient.prototype._onSendSoapRequest = function()
{
    var o = null;
    var nd = this._getElementsByTagName(this._method + "Result");
    if(nd.length == 0)
    {
        if(this._getElementsByTagName("faultcode").length > 0)
            throw new Error(500, this._getElementsByTagName("faultstring")[0].childNodes[0].nodeValue);
    }
    else
        o = this._soapresult2object(nd[0]);
    if(this._callback)
        this._callback(this._source, o, this.req.responseXML);
    if(!this._async)
        return o;
}
SOAPClient.prototype._soapresult2object = function(node)
{
	var xd = new XDoc(this._wsdl);
    return xd.node2object(node);
}
SOAPClient.prototype._getElementsByTagName = function(tagName)
{
    try
    {
        return this.req.responseXML.selectNodes(".//*[local-name()=\""+ 
                                           tagName +"\"]");
    }
    catch (ex) {}
    return this.req.responseXML.getElementsByTagName(tagName);
}


function XDoc(xmldoc)
{
	this._doc = xmldoc;
}
XDoc.prototype.node2object = function(node)
{
    // null node
    if(node == null)
        return null;
    // text node
    if(node.nodeType == 3 || node.nodeType == 4)
        return this.extractValue(node);
    // leaf node
    if (node.childNodes.length == 1 && 
       (node.childNodes[0].nodeType == 3 || 
        node.childNodes[0].nodeType == 4))
          return this.node2object(node.childNodes[0]);
    var isarray = this.getTypeFromWsdl(node.nodeName).toLowerCase().indexOf("arrayof") != -1;
    // object node
    if(!isarray)
    {
        var obj = null;
        if(node.hasChildNodes())
            obj = new Object();
        for(var i = 0; i < node.childNodes.length; i++)
        {
            var p = this.node2object(node.childNodes[i]);
            obj[node.childNodes[i].nodeName] = p;
        }
        return obj;
    }
    // list node
    else
    {
        // create node ref
        var l = new Array();
        for(var i = 0; i < node.childNodes.length; i++)
            l[l.length] = this.node2object(node.childNodes[i]);
        return l;
    }
    return null;
}

XDoc.prototype.extractValue = function(node)
{
    var value = node.nodeValue;
    switch(this.getTypeFromWsdl(node.parentNode.nodeName).toLowerCase())
    {
        default:
        case "s:string":            
            return (value != null) ? value + "" : "";
        case "s:boolean":
            return value+"" == "true";
        case "s:int":
        case "s:long":
            return (value != null) ? parseInt(value + "", 10) : 0;
        case "s:double":
            return (value != null) ? parseFloat(value + "") : 0;
        case "s:datetime":
            if(value == null)
                return null;
            else
            {
                value = value + "";
                value = value.substring(0, value.lastIndexOf("."));
                value = value.replace(/T/gi," ");
                value = value.replace(/-/gi,"/");
                var d = new Date();
                d.setTime(Date.parse(value));                             
                return d;                
            }
    }
}
XDoc.prototype.getTypeFromWsdl = function(elementname)
{
    var ell = this._doc.getElementsByTagName("s:element");    // IE
    if(ell.length == 0)
        ell = this._doc.getElementsByTagName("element");    // MOZ
    for(var i = 0; i < ell.length; i++)
    {
        if(ell[i].attributes["name"] + "" == "undefined")    // IE
        {
            if(ell[i].attributes.getNamedItem("name") != null && 
               ell[i].attributes.getNamedItem("name").nodeValue == 
               elementname && ell[i].attributes.getNamedItem("type") != null) 
                return ell[i].attributes.getNamedItem("type").nodeValue;
        }    
        else // MOZ
        {
            if(ell[i].attributes["name"] != null && 
               ell[i].attributes["name"].value == 
               elementname && ell[i].attributes["type"] != null)
                return ell[i].attributes["type"].value;
        }
    }
    return "";
}


function changeContaintsWithCallBack(cname, notfndmsg, cbfunc, qry, me)
{
	var ob = Ajax.getXmlHttp();
	var cbk = function()
	{
		if(ob.readyState == 4)
		{
			if(ob.status == 200)
			{
				//document.getElementById(id).innerHTML = ob.responseXML.documentElement.firstChild.nodeValue;
				//document.getElementById(id).innerHTML = ob.responseText;
				cbfunc(ob.responseXML, me);
			}
			else
			{
				alert(ob.status + ' : ' + notfndmsg);
			}
		}
	};
	var ls = document.URL.split('/');
	var cur = '';
	for(var i = 0; i < ls.length - 1; i++)
	{
		if(ls[i].match(/\?/))break;
		cur += ls[i] + '/';
	}
	//var cur = location.protocol + '//' + location.host + '/';
	if(qry != '' && qry.substr(0, 1) != '&')
		qry = '&' + qry;
	try
	{
		ob.open('GET', cur + cname + '?t=' + new Date().getTime() + qry, true);
		ob.onreadystatechange = cbk;
		ob.send(null);
	}
	catch(ex)
	{
		alert('通信の準備が出来ていません');
	}
}

function changeContaintsXML(cname, notfndmsg, qry, me)
{
	var ob = Ajax.getXmlHttp();
	var cbk = function()
	{
		if(ob.readyState == 4)
		{
			if(ob.status == 200)
			{
				me.innerHTML = ob.responseXML.documentElement.firstChild.nodeValue;
				//document.getElementById(id).innerHTML = ob.responseText;
				//cbfunc(ob.responseXML, me);
			}
			else
			{
				if(cbfunc!=null)alert(ob.status + ' : ' + notfndmsg);
			}
		}
	};
	var ls = document.URL.split('/');
	var cur = '';
	for(var i = 0; i < ls.length - 1; i++)
	{
		if(ls[i].match(/\?/))break;
		cur += ls[i] + '/';
	}
	//var cur = location.protocol + '//' + location.host + '/';
	if(qry != '' && qry.substr(0, 1) != '&')
		qry = '&' + qry;
	try
	{
		ob.open('GET', cur + cname + '?t=' + new Date().getTime() + qry, true);
		ob.onreadystatechange = cbk;
		ob.send(null);
	}
	catch(ex)
	{
		alert('通信の準備が出来ていません');
	}
}

function changeContaints(cname, notfndmsg, qry, me)
{
	var ob = Ajax.getXmlHttp();
	var cbk = function()
	{
		if(ob.readyState == 4)
		{
			if(ob.status == 200)
			{
				//me.innerHTML = ob.responseXML.documentElement.firstChild.nodeValue;
				me.innerHTML = ob.responseText;
				//cbfunc(ob.responseXML, me);
			}
			else
			{
				if(cbfunc!=null)alert(ob.status + ' : ' + notfndmsg);
			}
		}
	};
	var ls = document.URL.split('/');
	var cur = '';
	for(var i = 0; i < ls.length - 1; i++)
	{
		if(ls[i].match(/\?/))break;
		cur += ls[i] + '/';
	}
	//var cur = location.protocol + '//' + location.host + '/';
	if(qry != '' && qry.substr(0, 1) != '&')
		qry = '&' + qry;
	try
	{
		ob.open('GET', cur + cname + '?t=' + new Date().getTime() + qry, true);
		ob.onreadystatechange = cbk;
		ob.send(null);
	}
	catch(ex)
	{
		alert('通信の準備が出来ていません');
	}
}

function getNodeJoinedValue(nd) {
	var str = '';
	var sw = '';
	if(nd.hasChildNodes() == false)
		str = '';
	else if(nd.firstChild.nodeType == 3 || nd.firstChild.nodeType == 4 || nd.firstChild.nodeType == 12)
		str = nd.firstChild.nodeValue;// + nd.innerText;
	else {
		ndlen = nd.childNodes.length;
		for(var i = 0; i < ndlen; i++) {
			if(sw == '') {
			}
			else if(sw != nd.childNodes[i].tagName){
				str += '</td><td>';
			}
			else {
				str += '<br />';
			}
			sw = nd.childNodes[i].tagName;
			str += getNodeJoinedValue(nd.childNodes[i]);
		}
	}
	if(sw != '')str = '<table style="width:100%;"><tbody><tr><td>' + str + '</td></tr></tbody></table>';
	return str;
}

function toCurr(x)
{
    var s = "" + x; // 確実に文字列型に変換する。
    var p = s.indexOf("."); // 小数点の位置を0オリジンで求める。
    if (p < 0) { // 小数点が見つからなかった時
        p = s.length; // 仮想的な小数点の位置とする
    }
    var r = s.substring(p, s.length); // 小数点の桁と小数点より右側の文字列。
    for (var i = 0; i < p; i++) { // (10 ^ i) の位について
        var c = s.substring(p - 1 - i, p - 1 - i + 1); // (10 ^ i) の位のひとつの桁の数字。
        if (c < "0" || c > "9") { // 数字以外のもの(符合など)が見つかった
            r = s.substring(0, p - i) + r; // 残りを全部付加する
            break;
        }
        if (i > 0 && i % 3 == 0) { // 3 桁ごと、ただし初回は除く
            r = "," + r; // カンマを付加する
        }
        r = c + r; // 数字を一桁追加する。
    }
    return r;
}

/*	"Function Equivalent to java.net.URLEncoder.encode(String, ""UTF-8"")"
	"Copyright (C) 2002, Cresc Corp."
	Version: 1.0
*/
function encodeURL(str){
	var s0, i, s, u;
	s0 = "";				// encoded str
	for (i = 0; i < str.length; i++){	// scan the source
		s = str.charAt(i);
		u = str.charCodeAt(i);			// get unicode of the char
		if (s == " "){s0 += "+";}		// SP should be converted to "+"
		else {
			if ( u == 0x2a || u == 0x2d || u == 0x2e || u == 0x5f || ((u >= 0x30) && (u <= 0x39)) || ((u >= 0x41) && (u <= 0x5a)) || ((u >= 0x61) && (u <= 0x7a))){		// check for escape
				s0 = s0 + s;			// don't escape	
			}
			else {					// escape
				if ((u >= 0x0) && (u <= 0x7f)){ 	// single byte format
					s = "0"+u.toString(16);
					s0 += "%"+ s.substr(s.length-2);
				}
				else if (u > 0x1fffff){		// quaternary byte format (extended)
					s0 += "%" + (oxf0 + ((u & 0x1c0000) >> 18)).toString(16);
					s0 += "%" + (0x80 + ((u & 0x3f000) >> 12)).toString(16);
					s0 += "%" + (0x80 + ((u & 0xfc0) >> 6)).toString(16);
					s0 += "%" + (0x80 + (u & 0x3f)).toString(16);
				}
				else if (u > 0x7ff){		// triple byte format
					s0 += "%" + (0xe0 + ((u & 0xf000) >> 12)).toString(16);
					s0 += "%" + (0x80 + ((u & 0xfc0) >> 6)).toString(16);
					s0 += "%" + (0x80 + (u & 0x3f)).toString(16);
				}
				else {						// double byte format
					s0 += "%" + (0xc0 + ((u & 0x7c0) >> 6)).toString(16);
					s0 += "%" + (0x80 + (u & 0x3f)).toString(16);
				}
			}
		}
	}
	return s0;
}

/*	"Function Equivalent to java.net.URLDecoder.decode(String, "UTF-8")"
	"Copyright (C) 2002, Cresc Corp."
	Version: 1.0
*/
function decodeURL(str){
	var s0, i, j, s, ss, u, n, f;
	s0 = ";"				// decoded str
	for (i = 0; i < str.length; i++){	// scan the source str
		s = str.charAt(i);
		if (s == "+"){s0 += " ";}		// "+" should be changed to SP	
		else {
			if (s != "%"){s0 += s;}		// add an unescaped char
			else{				// escape sequence decoding
				u = 0;			// unicode of the character
				f = 1;			// escape flag, zero means end of this sequence
				while (true) {
					ss = ";"		// local str to parse as int
						for (j = 0; j < 2; j++ ) {	// get two maximum hex characters for parse
							sss = str.charAt(++i);			
							if (((sss >= "0") && (sss <= "9")) || ((sss >= "a") && (sss <= "f"))  || ((sss >= "A") && (sss <= "F"))) {		
								ss += sss;		// if hex, add the hex character
							} else {--i; break;}	// not a hex char., exit the loop	
						}
					n = parseInt(ss, 16);			// parse the hex str as byte
					if (n <= 0x7f){u = n; f = 1;}	// single byte format
					if ((n >= 0xc0) && (n <= 0xdf)){u = n & 0x1f; f = 2;}	// double byte format
					if ((n >= 0xe0) && (n <= 0xef)){u = n & 0x0f; f = 3;}	// triple byte format
					if ((n >= 0xf0) && (n <= 0xf7)){u = n & 0x07; f = 4;}	// quaternary byte format (extended)
					if ((n >= 0x80) && (n <= 0xbf)){u = (u << 6) + (n & 0x3f); --f;}	// not a first, shift and add 6 lower bits			
					if (f <= 1){break;}			// end of the utf byte sequence
					if (str.charAt(i + 1) == "%"){ i++ ;}					// test for the next shift byte
					else {break;}					// abnormal, format error
				}
			s0 += String.fromCharCode(u);			// add the escaped character
			}
		}
	}
	return s0;
}

inherit = function(subClass, superClass)
{
	for (var prop in superClass.prototype)
	{
		subClass.prototype[prop] = superClass.prototype[prop];
	}
}

function documentAllCheckbox(idreg, chked) {
	var inps = document.getElementsByTagName('input');
	var ilen = inps.length;
	var regid = new RegExp('^' + idreg);
	for(var i = 0; i < ilen; i++) {
		if(inps[i].type == 'checkbox' && inps[i].id.match(regid)) {
			inps[i].checked = chked;
		}
	}
}
function windowEvent(){
	if(window.event) return window.event;
	var caller = arguments.callee.caller;
	while(caller){
		var ob = caller.arguments[0];
		if(ob && ob.constructor == MouseEvent) return ob;
		caller = caller.caller;
	}
	return null;
}
function getEventSource() {
	var ev = windowEvent();
	var obj = null;
	if(ev.fromElement != undefined && ev.fromElement != null)
		obj = ev.fromElement;
	else if(ev.srcElement != undefined && ev.srcElement != null)
		obj = ev.srcElement;
	else if(ev.target != undefined && ev.target != null)
		obj = ev.target;
	return obj;
}
function XMLNode(src) {
	this.hasChildNodes = function() {return (firstChild != null);},
	this.tagName = src.tagName,
	this.nodeType = src.nodeType,
	this.nodeValue = src.nodeValue,
	this.childNodes = new Array(),
	this.firstChild = null,
	this.getAttribute = function(attnm) {
		if(attnm == 'recordid')return this.recid;
		if(attnm == 'definesep')return this.dsep;
	},
	this.getElementsByTagName = function(tName) {
		var ret = new Array();
		var len = this.childNodes.length;
		for(var i = 0; i < len; i++) {
			if(this.childNodes[i].tagName == tName)
				ret.push(this.childNodes[i]);
		}
		return ret;
	};
	if(src.getAttribute) {
		this.recid = src.getAttribute('recordid');
		this.dsep = src.getAttribute('definesep');
	}
	if(src.hasChildNodes() == true) {
		var len = src.childNodes.length;
		for(var i = 0; i < len; i++) {
			var nob = new XMLNode(src.childNodes[i]);
			if(this.firstChild == null)this.firstChild = nob;
			this.childNodes.push(nob);
		}
	}
}
function XMLObject(xml) {
	this.getElementsByTagName = function(tName){
		if(this.documentElement == null)return null;
		return documentElement.getElementsByTagName(tName);
	},
	this.documentElement = new XMLNode(xml.documentElement);
}


var targetxml = '';
var domok = false;
if(navigator.userAgent.match(/Chrome\//))domok = true;
var isie = false;
if(navigator.userAgent.match(/MSIE [0-6]/))isie = true;
var _D = document;
var pubXml = null;
var listTable = null;
var hlen = 0;
var heads = new Array();
var tgts = new Array();
var headinps = new Array();
var sortlist = null;
var collist = null;
var coldisp = [];
var coldispdefault = [];
var onclass = 'simpleon';
var offclass = 'simpleoff';
var loaderdiv = null;
var rowIDAttribute = 'recordid';
var separatorAttribute = 'definesep';
var rowClass = 'rNOR';
var rowAltClass = 'rALT';
var noCellClass = 'no';
var boolCellClass = 'maru';
var booleanDefines = [];
var boolTrueValue = '○';
var boolFalseValue = '-';
var linkDefine = '';
var makeLinkFunc = function(xmlone, wkstr) {
	var dnm = xmlone.getElementsByTagName(linkDefine);
	var linkname = dnm[0].firstChild.nodeValue.replace(/<br \/>/g, '');
	return '<a href="' + linkname + '.html" target="_blank" >' + wkstr + '</a>';
};
function initList(xmlurl, clst, coldflt, oncls, ofcls, cntn, ld, rowid, sep, rowc, rowa, bcellc, bdefs, btv, tfv, ldef, mlf) {
	if(xmlurl != null)targetxml = xmlurl;
	if(clst != null)collist = clst;
	if(coldflt != null) {
		coldisp = coldflt.clone();
		coldispdefault = coldflt;
	}
	if(oncls != null)onclass = oncls;
	if(ofcls != null)offclass = ofcls;
	if(ld != null)loaderdiv = ld;
	if(rowid != null)rowIDAttribute = rowid;
	if(sep != null)SeparatorAttribute = sep;
	if(rowc != null)rowClass = rowc;
	if(rowa != null)rowAltClass = rowa;
	if(bcellc != null)boolCellClass = bcellc;
	if(bdefs != null)booleanDefines = bdefs;
	if(btv != null)boolTrueValue = btv;
	if(tfv != null)boolFalseValue = tfv;
	if(ldef != null)linkDefine = ldef;
	if(mlf != null)makeLinkFunc = mlf;
	
	
    arr = _D.cookie.split(";");
    for(var ii = 0; ii < arr.length; ii++) {
        index = arr[ii].indexOf("=");
        //2番目は頭がスペースのとき
        if(arr[ii].substring(0, index) == "fflist" || arr[ii].substring(0, index) == " fflist")
            coldisp = arr[ii].substring(index + 1).split(',');
    }
    
	listTable = cntn;
	wkheads = _D.getElementsByTagName('input');
	wkheadslen = wkheads.length;
	
	var cols = null;
	if(collist.firstChild != null) {
		cols = collist.firstChild;
		cols.innerHTML = '';
	}
	else {
		cols = _D.createElement('ul');
		collist.appendChild(cols);
	}
	for(var i = 0; i < wkheadslen; i++) {
		if(wkheads[i].id.match(/^head_/)!=null){
			var defid = wkheads[i].id.replace(/^head_/, '');
			tgts[hlen] = wkheads[i].getAttribute('target');
			heads.push(defid);
			headinps.push(wkheads[i]);
			hlen++;
			
			var cstyle = 'style="';
			if(coldisp[hlen-1] == 0) {
				wkheads[i].parentNode.style.display = 'none';
			}
			else {
				wkheads[i].parentNode.style.display = '';
			}
			cols.innerHTML += '<li onclick="toggleClick(' + (hlen-1) + ', this, wkheads[' + i + '].parentNode);" class="' + (coldisp[hlen-1]==1?onclass:offclass) + '">[' + wkheads[i].parentNode.getElementsByTagName('a')[0].innerHTML + ']</li>';
		}
	}

	searchData();
}
function plasticData(oxml, me) {
	if(oxml == null)return;
	if(loaderdiv!=null)loaderdiv.style.visibility = 'visible';
	clearTable();
	var prfls = oxml.getElementsByTagName(oxml.documentElement.firstChild.tagName);
	if(sortlist != null) {
		prfls = sortlist;
	}
	var plen = prfls.length;
	var alcnt = 0;
	var tbdy = me;
	var htmls = new Array();
	var filinp = {};
	for(var k = 0; k < plen; k++) {
		var litr = _D.createElement('tr');
		if(alcnt%2==1)
			litr.className = rowClass;
		else
			litr.className = rowAltClass;
		var numtd = _D.createElement('td');
		numtd.className = noCellClass;
		numtd.innerHTML = '' + (alcnt+1);
		litr.appendChild(numtd);
		var chktd = _D.createElement('td');
		chktd.innerHTML = '<input type="checkbox" id="chk_:_' + prfls[k].getAttribute(rowIDAttribute) + '" checked />';
		litr.appendChild(chktd);
		
		var sw = true;
		for(var i = 0; i < hlen; i++) {
			var deftd = _D.createElement('td');
			if(coldisp[i]==0) {
				deftd.style.display = 'none';
			}
			deftd.setAttribute('title', _D.getElementById('name_' + heads[i]).innerHTML);
			var wkstr = '';
			eles = prfls[k].getElementsByTagName(heads[i]);
			elen = eles.length;
			for(var j = 0; j < elen; j++) {
				if(tgts[i] == "" || tgts[i] == "0" || tgts[i] == eles[j].getAttribute(separatorAttribute)) {
					wkstr += getNodeJoinedValue(eles[j]) + '<br />';
				}
			}
			if(booleanDefines.indexOf(heads[i]) != -1) {
				if(wkstr.replace('<br />', '') != '')
					wkstr = boolTrueValue;
				else
					wkstr = boolFalseValue;
				deftd.className = boolCellClass;
			}
			
			var fword = '';
			if(!(('head_' + heads[i]) in filinp)) {
				var dinp = _D.getElementById('head_' + heads[i]);
				if(dinp != null) {
					fword = dinp.value;
					filinp['head_' + heads[i]] = fword;
				}
			}
			else {
				fword = filinp['head_' + heads[i]];
			}
			if(fword != '') {
				var wst = wkstr;
				var ckwk = wst.replace(/<br \/>/g, '').replace(/([　 ]|&nbsp;)/g, '');
				if(!fword.replace(/[><] ?/, '').match(/[^0-9]/g) && ckwk != '' && !ckwk.match(/[^0-9]/g)) {
					var a = '';
					var tip = fword.match(/^[<> ]*/);
					wst = wst.replace(/<br \/>.*/, '');
					fword = fword.replace(/[<> ]*/, '');
					var nlen = (wst.length > fword.length?wst.length:fword.length);
					for(var n = 0; n < nlen; n++)a+='0';
					wst = (a + wst).slice(-1 * a.length);
					fword = tip + (a + fword).slice(-1 * a.length);
				}
				if(fword.indexOf('< ')==0) {
					if(wst.replace(/<br \/>/g, '').replace(/([　 ]|&nbsp;)/g, '') != '' && fword.replace(/^< /, '').toUpperCase() < wst.replace(/<br \/>/g, '').toUpperCase()) {
						sw = false;
						break;
					}
				}
				else if(fword.indexOf('> ')==0) {
					if(wst.replace(/<br \/>/g, '').replace(/([　 ]|&nbsp;)/g, '') != '' && fword.replace(/^> /, '').toUpperCase() > wst.replace(/<br \/>/g, '').toUpperCase()) {
						sw = false;
						break;
					}
				}
				else if(fword.indexOf('<')==0) {
					if(fword.replace(/^</, '').toUpperCase() < wst.replace(/<br \/>/g, '').toUpperCase()) {
						sw = false;
						break;
					}
				}
				else if(fword.indexOf('>')==0) {
					if(fword.replace(/^>/, '').toUpperCase() > wst.replace(/<br \/>/g, '').toUpperCase()) {
						sw = false;
						break;
					}
				}
				else {
					regex = new RegExp(fword.toUpperCase().replace(/ /, '.*'));
					if(fword != '' && !wst.replace(/<br \/>/g, '').toUpperCase().match(regex)) {
						sw = false;
						break;
					}
				}
			}
			if(heads[i]==linkDefine) {
				deftd.innerHTML = makeLinkFunc(prfls[k], wkstr);
			}
			else
				deftd.innerHTML = wkstr;
			litr.appendChild(deftd);
		}
		if(sw==true){
			if(domok == true)
				tbdy.appendChild(litr);
			else
				htmls.push(litr);
			alcnt++;
		}
	}
	if(domok == false) {
		var htmllen = htmls.length;
		for(var x = 0; x < htmllen; x++) {
			tbdy.appendChild(htmls[x]);
		}
	}
	if(loaderdiv!=null)loaderdiv.style.visibility = 'hidden';
}
function redisplay() {
	var lines = listTable.getElementsByTagName('tr');
	var llen = lines.length;
	for(var i = 0; i < llen; i++) {
		var tds = lines[i].getElementsByTagName('td');
		for(var k = 2; k < hlen + 2; k++) {
			if(coldisp[k-2] == 1) {
				tds[k].style.display = '';
			}
			else {
				tds[k].style.display = 'none';
			}
		}
	}
}
function toggleClick(idx, tli, thd) {
	if(coldisp[idx] == 1) {
		thd.style.display = 'none';
		tli.className = offclass;
		coldisp[idx] = 0;
	}
	else {
		thd.style.display = '';
		tli.className = onclass;
		coldisp[idx] = 1;
	}
	var d = new Date();
	d.setTime(d.getTime() + 30*24*60*60*1000);
	_D.cookie = 'fflist=' + coldisp.join(',') + '; expires=' + d.toGMTString(); // クッキーのセット
	redisplay();
	//plasticData(pubXml, _D.getElementById('container'));
}
function clearTable() {
	while(true) {
		if(listTable.lastChild == null) {
			break;
		}
		else {
			listTable.removeChild(listTable.lastChild);
		}
	}
}
function clearFilter() {
	sortlist = null;
	for(var i = 0; i < hlen; i++) {
		var dinp = _D.getElementById('head_' + heads[i]);
		if(dinp != null)dinp.value = '';
	}
	var d = new Date();
	d.setTime(d.getTime() + 30*24*60*60*1000);
	_D.cookie = 'fflist=' + coldispdefault.join(',') + '; expires=' + d.toGMTString();
	coldisp = coldispdefault.clone();
	for(var i = 0; i < hlen; i++) {
		headinps[i].value = '';
		headinps[i].parentNode.style.display = (coldisp[i] == 1?'':'none');
		collist.firstChild.getElementsByTagName('li')[i].className = (coldisp[i] == 1?onclass:offclass);
	}
	//redisplay();
	plasticData(pubXml, _D.getElementById('container'));
}
function searchData() {
	var cbfunc = function (oxml, me) {
		pubXml = oxml;
		sortlist = null;
		plasticData(pubXml, me);
	}
	qry = '';
	changeContaintsWithCallBack(targetxml, '検索に失敗しました', cbfunc, qry, _D.getElementById('container'));
}
function filterTable(obj) {
	plasticData(pubXml, _D.getElementById('container'));
}
var nxdefid = '';
var predefid = '';
function sortTable(defid, target) {
	if(pubXml == null)return;
	if(sortlist == null) {
		sortlist = new Array();
		var xnds = pubXml.getElementsByTagName(pubXml.documentElement.firstChild.tagName);
		var xlen = xnds.length;
		for(var f = 0; f < xlen; f++)sortlist.push(xnds[f]);
	}
	nxdefid = defid + '_:_' + target;
	var asc = true;
	if(predefid != '' && predefid == nxdefid)asc = false;
	sortlist.sort(function(a, b) {
		var pre = a.getElementsByTagName(defid)[target - 1];
		var nxt = b.getElementsByTagName(defid)[target - 1];
		if(pre == null)return 1;
		if(nxt == null)return -1;
		var prend = getNodeJoinedValue(pre);
		var nxtnd = getNodeJoinedValue(nxt);
		if(isNaN(prend) == false && isNaN(nxtnd) == false) {
			prend = parseInt(prend);
			nxtnd = parseInt(nxtnd);
		}
		if(!asc)
			return (nxtnd >= prend?1:-1);
		else
			return (prend >= nxtnd?1:-1);
	});
	predefid = (!asc?'':defid + '_:_' + target);
	plasticData(pubXml, _D.getElementById('container'));
}
function thinOutAsCheck(delcheck) {
	if(pubXml == null)return;
	if(sortlist == null) {
		sortlist = new Array();
		var xnds = pubXml.getElementsByTagName(pubXml.documentElement.firstChild.tagName);
		var xlen = xnds.length;
		for(var f = 0; f < xlen; f++) {
			var tgtck = _D.getElementById('chk_:_' + xnds[f].getAttribute(rowIDAttribute));
			if(tgtck == null || tgtck.checked != delcheck)
				sortlist.push(xnds[f]);
		}
	}
	else {
		var wksortlist = sortlist;
		sortlist = new Array();
		var xlen = wksortlist.length;
		for(var f = 0; f < xlen; f++) {
			var tgtck = _D.getElementById('chk_:_' + wksortlist[f].getAttribute(rowIDAttribute));
			if(tgtck == null || tgtck.checked != delcheck)
				sortlist.push(wksortlist[f]);
		}
	}
	plasticData(pubXml, _D.getElementById('container'));
}