var loadingUri='';
var loadingTag=null;
var tagList=null;
var tagDescript=null;
var tagMenu=['summary',['term','arguments'],'samples'];
function EI(id, o){if(!o)return document.getElementById(id);if(!o.getElementById)return null;o.getElementById(id);}
/* ---------------- */
var htmlDescript={
	menu:function(s){
	 	return '<div id="tagmenu">'+
		'<p class="button_left"><img src="close.gif" alt="close" title="close" onclick="EI(\'tagdescript\').style.display=\'none\';"></p>'+
		'<p class="button_right"><a href="'+s+'.html"><img src="perma.gif" alt="perma" title="permalink"></a></p>'+
		'<h1 id="tagname">'+s+'</h1>'+
		'<ul style="clear:both;">'+
			'<li><a href="javascript:show(0);"onmouseover="show(0);">概要</a></li>'+
			'<li><a href="javascript:show(1);" onmouseover="show(1);">用法</a></li>'+
			'<li><a href="javascript:show(2);" onmouseover="show(2);">用例</a></li></ul>'+
		'</div>';
	}
	,noSummary:'<h2>概要</h2><p class="summary">概要はありません</p>'
	,noTermOfUse:'<h2>用法</h2><p class="summary">用法はありません</p>'
	,noArguments:'<h2>引数</h2><p class="summary">引数はありません</p>'
	,noSamples:'<h2>Samples</h2><p class="summary">コードサンプルはありません</p>'
};

function init(){
var sm,els;
	if(!IsSupportAjax()) return;
	sm=document.getElementById('descript');
	els=sm.getElementsByTagName('a');
	for(var i=0;i<els.length;i++){
		els[i].onclick=LoadCategory;
	}
}
function show(id){
	var co=EI('tagdescript');
	if(!co){return;}
	for(var i=0;i<tagMenu.length;i++){
		if(typeof tagMenu[i] !='string'){
			for(var j=0;j<tagMenu[i].length;j++){
				var o=EI(tagMenu[i][j]);
				if(!!o)o.style.display='none';
			}
		}else{
			var o=EI(tagMenu[i]);
			if(!!o)o.style.display='none';
		}
	}
	if(typeof tagMenu[id]!='string'){
		for(var j=0;j<tagMenu[id].length;j++){
			var o=EI(tagMenu[id][j]);
			if(!!o)o.style.display='block';
		}
	}else{
		var o=EI(tagMenu[id]);
		if(!!o)o.style.display='block';
	}
}
function Pos(el){
var pos={x:0,y:0};
var platform=(!this.platform)?navigator.platform.toLowerCase():this.platform;
if(el.getBoundingClientRect){
var rect=el.getBoundingClientRect();
var top=document.body.scrollTop||document.documentElement.scrollTop||window.scrollY;
var left=document.body.scrollLeft||document.documentElement.scrollLeft||window.scrollX;
pos={x:left+rect.left,y:top+rect.top};
}else if(document.getBoxObjectFor){
var rect=document.getBoxObjectFor(el);
var top=getStyle(el, "borderTopWidth");
var left=getStyle(el, "borderLeftWidth");
top=(top=='auto')?0:((top=parseInt(top))=='NaN')?0:top;
left=(left=='auto')?0:((left=parseInt(left))=='NaN')?0:left;
pos={x:rect.x-left,y:rect.y-top};
}else{
while (el) {
pos.x += parseInt(el.offsetLeft);
pos.y += parseInt(el.offsetTop);
el = el.offsetParent;
}
pos.x-=document.body.offsetLeft; // -1* html margin-left
pos.y-=document.body.offsetTop; // -1* html margin-top
if (platform.indexOf("mac")!=-1){
pos.x+=document.body.offsetLeft;
pos.y+=document.body.offsetTop;
}
}
return pos;
}//
function getStyle(el, prop){
if(el.style[prop]){
return el.style[prop];
}else if(document.defaultView && document.defaultView.getComputedStyle){
prop=prop.replace(/([A-Z])/g, "-$1");
prop=prop.toLowerCase();
return document.defaultView.getComputedStyle(el,"").getPropertyValue(prop);
}else if(el.currentStyle){
return el.currentStyle[prop];
}else{
return null;
}
}//
function createUri(query){
//return query+'.xml';
return 'xml.cgi?'+query;
	if(document.all && !window.opera){
		return 'xml.cgi?'+query;
	}else{
		return query+'.xml';
	}
}
function LoadCategory(e){
	e=e||event;
	var tar=e.target||e.srcElement;
	if(e.preventDefault){e.preventDefault();e.stopPropagation();}
	e.returnValue=false;e.cancelBubble=true;
	if(!tar || !tar.href){return false;}
	var doc=EI('descript');
	var pa=tar.parentNode;
	while(!!pa && pa.nodeName.toLowerCase()!='div' && pa!=doc){
		pa=pa.parentNode;
	}
	if(pa.className=='table_left'){
		pa=pa.nextSibling;
	}
	while(!!pa && pa.className!='table_left'){
		pa=pa.nextSibling;
	}
	if(!tagList){
		tagList=document.createElement('dl');
		tagList.id='taglist';
		doc.insertBefore(tagList, pa);
	}else if(tagList.nextSibling!=pa){
		tagList.innerHTML='';
		tagList.style.display='none';
		tagList=doc.removeChild(tagList);
		doc.insertBefore(tagList, pa);
	}else{
		tagList.innerHTML='';
		tagList.style.display='none';
	}
	var f=loadingUri=tar.href;
	f=f.replace(/^.*\//,'').replace(/\.html/,'');
	f=createUri(f);

	if(!!tagDescript){
		tagDescript.innerHTML='';
		tagDescript.style.display='none';
	}
	ajCallback=LoadCategory200;
	ajCallback404=Load404;
	ajCallbackError=LoadError;
	loadAjax(f);
	return false;
}

function LoadRedirect(){location.href=loadingUri;}
function LoadError(re){alert(loadingUri+'\n'+'Something Error Occured'+'\nstatus: '+re.status+' '+re.statusText);}
function Load404(re){alert(loadingUri+'\n404 File Not Found');}

function LoadCategory200(re){
var xml=re.responseXML;
	if(!xml || !xml.getElementById || !xml.getElementsByTagName){
		var rtext=re.responseText.substring(0, 30);
//		var rxml=' rexml:'+typeof(xml)+' , getid:'+typeof(xml.getElementById)+' gettag:'+typeof(xml.getElementsByTagName);
//		rxml+=xml.innerHTML;
//		var rxml='';for(var i in xml)rxml+=''+i+' : '+xml[i]+'\n';
//		LoadError({status:re.status,statusText:re.statusText+', no-responseXML\n XML : '+rxml+'\ntext:'+rtext+'...'});return;
		LoadRedirect();
	}
	var des=xml.getElementById('descript');
	if(!des || !des.getElementsByTagName){
		//LoadError({status:'200',statusText:'no-descript'});return;
		LoadRedirect();
	}
	var dts=des.getElementsByTagName('dt');
//	var dts=xml.getElementsByTagName('dt');
	for(var i=0;i<dts.length;i++){
		var dtsa=dts[i].getElementsByTagName('a')[0];
		var dt=document.createElement('dt');
		var a=document.createElement('a');
		var t=dtsa.nodeValue||dtsa.innerHTML;
		var txt=document.createTextNode(t);
		a.href=dtsa.href;
		if(a.addEventListener){
			a.addEventListener('click',LoadDescript, false);
		}else if(a.attachEvent){
			a.attachEvent('onclick', LoadDescript);
		}
		a.appendChild(txt);
		dt.appendChild(a);
		tagList.appendChild(dt);
	}
	tagList.style.display='block';
}

function LoadDescript(e){
	e=e||event;
	var tar=e.target||e.srcElement;
	if(e.preventDefault){e.preventDefault();e.stopPropagation();}
	e.returnValue=false;e.cancelBubble=true;
	if(!tar || !tar.href){return false;}
	var doc=document.body;
	if(!tagDescript){
		tagDescript=document.createElement('div');
		tagDescript.id='tagdescript';
		doc.insertBefore(tagDescript, null);
	}else{
	}
	tagDescript.style.display='none';
	var f=loadingUri=tar.href;
	f=f.replace(/^.*\//,'').replace(/\.html/,'');

	if(!!tagDescript){
		tagDescript.innerHTML='';
		tagDescript.style.display='none';
	}
	f=createUri(f);
	ajCallback=LoadDescript200;
	ajCallback404=Load404;
	ajCallbackError=LoadError;
//alert('start 10'+f);
	loadAjax(f);
	return false;
}
function LoadDescript200(re){
var xml=re.responseXML;
var des;
	if(!xml || !xml.getElementById){
		//LoadError({status:'200',statusText:'no-responseXML'});return;
		LoadRedirect();
	}
	var tagName=loadingUri.replace(/^.*\//,'').replace(/\.html/,'');

	tagDescript.innerHTML='';
	var div=document.createElement('div');
	div.id='tagmenu';
	var p=document.createElement('p');
	tagDescript.innerHTML=htmlDescript.menu(tagName);
	des=xml.getElementById('summary');
	if(!des){
		des=document.createElement('div');
		des.id='summary';
		des.innerHTML=htmlDescript.noSummary;
	}
	tagDescript.appendChild(des);
	des=xml.getElementById('term');
	if(!des){
		des=document.createElement('div');
		des.id='term';
		des.innerHTML=htmlDescript.noTermOfUse;
	}
	tagDescript.appendChild(des);
	des=xml.getElementById('arguments');
	if(!des){
		des=document.createElement('div');
		des.id='arguments';
		des.innerHTML=htmlDescript.noArguments;
	}
	tagDescript.appendChild(des);
	des=xml.getElementById('samples');
	if(!des){
		des=document.createElement('div');
		des.id='samples';
		des.innerHTML=htmlDescript.noSamples;
	}
	tagDescript.appendChild(des);

	var xy=Pos(tagList);
	tagDescript.style.top=xy.y+'px';
	tagDescript.style.left=(30+xy.x)+'px';
	tagDescript.style.display='block';
}

document.write('<link href="jsstyle.css" rel="stylesheet" type="text/css" />');
//onload=init;
//init();