// ========================================================================
// bh_ror.js
// 勢いで作ったのでお見せできるようなソースではありませんorz
// 
// 2007/04/03	bluehawk作成
// 2007/05/31	bluehawk(updatePeriod,sortOrderの>のゴミを除去)
// Copyright Bluehawk@Team.InfinityBird(Project IDGATE(R)).All rights reserved.
// 
// ========================================================================
if(!document.getElementById){	//DOMに対応？
	document.write("<em>大変申し訳ありませんが「サイトマップ生成ツール」ではブラウザのDOM（ドキュメントオブジェクトモデル）を使用しているためDOMが使えるブラウザでのみの動作となります。ご了承ください。<\/em><br />");
}

function searchurl(listname,formdata){
	var tarea1=formdata.area1Data.value;
	var baseurl=formdata.domain.value;
	var domainopt=formdata.domainopt;

	if( baseurl.match(/^http:\/\/$/i) ){
		//未指定
		baseurl="";
	}
	if( baseurl!=""){
		//指定あり
		if( !baseurl.match(/\/$/i) ){
			//Lastがスラッシュではない
			baseurl+='/';
			divappend(listname,baseurl);
		}
	}

	tmp_ary = new Array();
	tmp_ary=tarea1.match(/href=["'](.*?)["'>]/img);

	if(tmp_ary){

		for(var i=0; i<tmp_ary.length; i++){
			tmp_ary[i].match(/href=["'](.*?)["'>]/i);

			var linkurl=RegExp.$1;

			if( !baseurl==""){

				if(domainopt.selectedIndex==0){
					var objRegExp = new RegExp("^http:\/\/","i");
					if(linkurl.search(objRegExp)!=0){
						var objRegExp = new RegExp("^\.?\/");
						var linkurlrep=linkurl.replace(objRegExp,"");
						divappend(listname,baseurl+linkurlrep);
					}else{
						var objRegExp = new RegExp(baseurl,"i");
						if(linkurl.search(objRegExp)==0)
							divappend(listname,linkurl);
					}

				}else if(domainopt.selectedIndex==1){
					var objRegExp = new RegExp(baseurl,"i");
					if(linkurl.search(objRegExp)==0)
						divappend(listname,linkurl);

				}else if(domainopt.selectedIndex==2){
				}else{
				}
			}else{
				if( /^(\/|\.\/)$/.exec(linkurl)==null)
					divappend(listname,linkurl);
			}

		}
		location.href="#after_search";
	}
}

function makexml(listname,areaname,selectPeriod){
	var sitemap_header=
		 '<?xml version="1.0" encoding="UTF-8"?>'+"\n"
		+'<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'+"\n"
		;
	var sitemap_footer=
		'</urlset>'+"\n"
		;

	var listbox=document.getElementById(listname);
	var period=document.getElementById(selectPeriod);

	var updPeriod = "";
	if( period.value.match(/week/i)){
		updPeriod = "weekly";
	}else if( period.value.match(/month/i)){
		updPeriod = "monthly";
	}else if( period.value.match(/day/i)){
		updPeriod = "daily";
	}

	write_text(sitemap_header,areaname);

	for(var i=0; i<listbox.childNodes.length; i++){
		var oValue = listbox.childNodes.item(i);
		if(
			(oValue.nodeType==1) &&		//ELEMENTか？
			( oValue.getAttribute("type")=="text" ) &&	//textか？
			( oValue.getAttribute("value") ) &&	//値があるか？
			( oValue.value!="" )	//値があるか？
			){
			var urlloc=" <url>\n";
			urlloc+="  <loc>"+oValue.value+"</loc>\n";
			urlloc+="  <changefreq>"+updPeriod+"</changefreq>\n";
			urlloc+="  <priority>"+"0.5"+"</priority>\n";
			urlloc+=" </url>\n";
			write_text(urlloc,areaname);
		}
	}
	write_text(sitemap_footer,areaname);
}
function makeror(listname,areaname,selectPeriod){
	var sitemap_header=
		 '<?xml version="1.0" encoding="UTF-8"?>'+"\n"
		+'<!--  This file is a ROR Sitemap for describing this website to the search engines. For details about the ROR format, go to www.rorweb.com.   -->'+"\n"
		+'<rss version="2.0" xmlns:ror="http://rorweb.com/0.1/" >'+"\n"
		+'  <channel>'+"\n"
		;
	var sitemap_footer=
		'  </channel>'+"\n"
		+'</rss>'+"\n"
		;

	var listbox=document.getElementById(listname);
	var period=document.getElementById(selectPeriod);

	var urlListArray = new Array();

	for(var i=0; i<listbox.childNodes.length; i++){
		var oValue = listbox.childNodes.item(i);
		if(
			(oValue.nodeType==1) &&		//ELEMENTか？
			( oValue.getAttribute("type")=="text" ) &&	//textか？
			( oValue.getAttribute("value") ) &&	//値があるか？
			( oValue.value!="" )	//値があるか？
			){
			urlListArray.push(oValue.value);
		}
	}
	for(var i=0; i<urlListArray.length; i++){
		if( i==0 ){
			write_text(sitemap_header,areaname);
			write_text(
				 "    <title>ROR Sitemap for "+urlListArray[i]+"</title>\n"
				+"    <link>"+urlListArray[i]+"</link>\n"
				+"    <item>\n"
				+"      <title>ROR Sitemap for "+urlListArray[i]+"</title>\n"
				+"      <link>"+urlListArray[i]+"</link>\n"
				+"      <ror:about>sitemap</ror:about>\n"
				+"      <ror:type>SiteMap</ror:type>\n"
				+"    </item>\n",areaname );
		}else if( i==(urlListArray.length-1) ){
			write_text(sitemap_footer,areaname);
		}else{
			write_text(
				 "    <item>\n"
				+"      <link>"+urlListArray[i]+"</link>\n"
				+"      <ror:updatePeriod>"+period.value+"</ror:updatePeriod>\n"
				+"      <ror:sortOrder>0</ror:sortOrder>\n"
				+"      <ror:resourceOf>sitemap</ror:resourceOf>\n"
				+"    </item>\n",areaname );
		}
	}
}

function divappend(parentname,str){
	var deny_narrowopt=document.getElementById("deny_narrowopt");

	var chkstr=document.getElementById("deny_narrow").value;
	if( document.getElementById("deny_narrow2").value!="" )
		chkstr+=","+document.getElementById("deny_narrow2").value;

	if( chkstr!=""){
		//除外・絞込み指定あり
		var chkitem=chkstr.split(",");
		
		var matchcheck=null;
		for(var i=0; i<chkitem.length; i++){
			if( chkitem[i]!="" ){	//チェックアイテムがある場合のみ実行
				chkitem[i]=chkitem[i].rep(".","\\.")
				var objRegExp = new RegExp(chkitem[i],"i");
				if( objRegExp.exec(str)!=null ){
					matchcheck=1;
					continue;
				}
			}
		}

		if(deny_narrowopt.selectedIndex==0){	//除外指定
			if(!matchcheck)	//存在しない
				_divappend(parentname,str);

		}else{	//絞り込み指定
			if(matchcheck)	//存在する
				_divappend(parentname,str);
		}

	}else{
		//除外・絞込み指定なし
		_divappend(parentname,str);
	}
}
function _divappend(parentname,str){
	if( (str==undefined) || (str==null) ) return;
	var idstr = escape(str);
	if( str=="_d_m_y_" ) {
		idstr=String(randnum(100000,999999));
	}
	if( document.getElementById("_dmy_"+idstr ) ) return;	//重複排除

	var oInput = document.createElement('input');
	oInput.setAttribute("type","text");
	oInput.setAttribute("size","80");
	oInput.setAttribute("name","_dmy_"+idstr);
	oInput.setAttribute("id","_dmy_"+idstr);
	oInput.setAttribute("value",str);
	if( str=="_d_m_y_" ) oInput.value="";
	var oTest = document.createElement('input');
	oTest.setAttribute("type","button");
	oTest.setAttribute("name","_dmybtn_"+idstr);
	oTest.setAttribute("id","_dmybtn_"+idstr);
	oTest.setAttribute("value","delete");

	addEvent("onClick",oTest,url_delete,idstr );
	var oBr = document.createElement('br');
	oBr.setAttribute("name","_dmybr_"+idstr);
	oBr.setAttribute("id","_dmybr_"+idstr);

	document.getElementById(parentname).appendChild(oInput);
	document.getElementById(parentname).appendChild(oTest);
	document.getElementById(parentname).appendChild(oBr);
}
function addEvent(event,obj,func) { //左記+関数の引数...
	var param = new Array();
	for(var ii=3;ii<arguments.length;ii++) param.push(arguments[ii]);
	event = event.replace(/^on/,'').toLowerCase();
	if(obj.addEventListener){
		obj.addEventListener(event, function(){func.apply(this,param)},false);
	}else if(obj.attachEvent){
		obj.attachEvent('on'+event, function(){func.apply(this,param)});
	}else{
	}
}
function _debug(str){
	alert(str);
}
function url_delete(str){
	document.getElementById("_dmy_"+str).value="";
}
function debug(debug_str){
	var oDebug=document.getElementById("tarea-output");
//	oDebug.innerHTML="---"+new Date()+"---\n"+debug_str+"\n"+oDebug.innerHTML;
	oDebug.value="-a--"+new Date()+"---\n"+debug_str+"\n"+oDebug.value;
}
function write_text(str,areaname){
	var oStr=document.getElementById(areaname);
	oStr.value+=str;
}
function boxreset(areaname){
	var oArea=document.getElementById(areaname);
	oArea.value="";
}
function divdelete(parentname){
	var oParent=document.getElementById(parentname);
	while(1){
		if(oParent.childNodes.length>0){
			for(var i=0; i<oParent.childNodes.length; i++){
				oParent.removeChild( oParent.childNodes.item(i) );
			}
		}else{
			break;
		}
	}
//oParent.innerHTML = "";
}

function formclear(formdata,formLabel) {
	formdata[formLabel].value="";
}

String.prototype.x = function(n){
	if(n<1) return "";
	for(var i=0,tmp=[];i<n;tmp[i++]=this);
	return tmp.join("");
}
String.prototype.rep = function(regStr,newStr){
	var tmp = this.split(regStr);
	return tmp.join(newStr);
}
function randnum(from,to){
	if(from>to) return 0;
	var range = to - from + 1;
	return Math.floor( Math.random() * range ) + from;
}
