var msxmlid = null;
var xmlHeader = '<'+'?xml version="1.0" encoding="Shift_JIS" ?'+'>\n';
var urlLoadedXmls = new Array();
function cvXml宣言(strXml宣言)
{
	return strXml宣言.replace('<'+'?xml version="1.0"?>','<'+'?xml version="1.0" encoding="Shift_JIS" ?>');
}
function xmlLoadProc(src, isUrl)
{
	var xml = null;
	if(msxmlid==null) {
		//var suffix = "6.0;4.0;3.0".split(";");
		//MSXML 6.0はセキュリティの設定を変更しないと、XSLTでスクリプトを使えないので、使用しない。
		//MSXML 5.0は未入手のため、非サポート。
		//MSXML 4.0はMSXML 3.0より桁違いに早いので、MSXML 4.0を推奨。
		var suffix = "4.0;3.0".split(";");
		for(i in suffix) {
			try {
				msxmlid = "Msxml2.DOMDocument."+suffix[i];
				xml = new ActiveXObject(msxmlid);
				break;
			}
			catch(e) {
				continue;
			}
		}
	}
	else {
		xml = new ActiveXObject(msxmlid);
	}
	if(xml==null) stop
	xml.async = false;
	xml.setProperty("SelectionLanguage", "XPath");
	if(isUrl) {
		xml.load(src);
		urlLoadedXmls[src.replace(/^.*[\\\/]/,"")] = xml;
	}
	else {
		xml.loadXML(src);
	}
	return xml;
}
function xmlLoad(src)
{
	return xmlLoadProc(src, true)
}
function xmlLoadStr(str)
{
	return xmlLoadProc(str, false)
}

var tblCvMetaChar = new Array();
	tblCvMetaChar["&"] = "&amp;";
	tblCvMetaChar["<"] = "&lt;";
	tblCvMetaChar[">"] = "&gt;";
	tblCvMetaChar["\n"] = "<BR>";
	tblCvMetaChar[" "] = "&nbsp;";
function cvMetaChars(str)
{
	if(!str) return "";
	return str.replace(/[ <&>\n]/g, function (char) {return tblCvMetaChar[char];});
}
var tblRecovMetaChar = new Array();
	tblRecovMetaChar["&amp;"] = "&";
	tblRecovMetaChar["&lt;"] = "<";
	tblRecovMetaChar["&gt;"] = ">";
	tblRecovMetaChar["&nbsp;"] = " ";
function recovMetaChars(str)
{
	if(!str) return "";
	return str.replace(/&(amp|lt|gt|nbsp);/g, function (char) {return tblRecovMetaChar[char];});
}

function cvmetachar(str)
{
	var cnv = unescape(str);
	return cnv.replace(/[&<>]/g, function(char) {
		switch(char) {
		case "<": return "&lt;";
		case ">": return "&gt;";
		case "&": return "&amp;";
		}
		return "";
	}) + (cnv==str? "":"<hr>"+str);
}

// 与謝野晶子訳で使われる第3水準漢字はUniCodeでは使えるが、Shift_JISでは使えないので、&#xxxx;形式に変換する。
function cvUniCodeChars(str)
{
	if(!str) return "";
	return str.replace(/[\u6365\u7c36\u7e11\u81fe\u98c8\u9e9e]/g, function(char) { return "&#"+char.charCodeAt(0)+";";});
}

