var agent = navigator.userAgent.toLowerCase(); //get user agent
var ie = (navigator.appName.toLowerCase().indexOf('internet explorer')+1?1:0);
var gecko = ((agent.indexOf('gecko')!=-1) && (agent.indexOf('spoofer')==-1)
                && (agent.indexOf('khtml') == -1) && (agent.indexOf('netscape/7.0')==-1));
var safari = ((agent.indexOf('applewebkit')!=-1) && (agent.indexOf('spoofer')==-1));
var khtml = (navigator.vendor == 'KDE' || ( document.childNodes && !document.all && !navigator.taintEnabled ));
var firefox = (agent.indexOf('firefox/2')!=-1 ||agent.indexOf('minefield/3')!=-1) ;
if (agent.indexOf('opera') != -1) {
	var opera = true;
}

function cngColor(obj,color) {
 var pri="$F["; 
 var end ="," + color + "]";
  inserttag( obj ,pri,end );
 return false;
}
function cngColorAno(obj,color,win) {
 var pri="$F["; 
 var end ="," + color + "]";
  inserttagAno( obj ,pri,end,win);
 return false;
}

function inputlink(obj){
  var link  = window.prompt("Link先を入力してください" );
  cngLink(obj,link)
 return false;
}

function cngLink(obj,link) {
 var pri="$A(" + link + ","; 
 var end = ")";
  inserttag( obj ,pri,end );
}
function cngHead(obj,level) {
 var pri="$H"+level + "[" ; 
 var end = "]";
  inserttag( obj ,pri,end );
}
function cngULine(obj) {
 var pri="$U(" ; 
 var end = ")";
  inserttag( obj ,pri,end );
}
function cngBold(obj) {
 var pri="$B{" ; 
 var end = "}";
  inserttag( obj ,pri,end );
 return false;
}

 function getAreaRange(obj) {
 var pos = new Object();
  
 if (ie) {
 obj.focus();
 var range = document.selection.createRange();
 var clone = range.duplicate();
  
 clone.moveToElementText(obj);
 clone.setEndPoint( 'EndToEnd', range );
  
 pos.start = clone.text.length - range.text.length;
 pos.end = clone.text.length - range.text.length + range.text.length;
 }
  
 else if(document.getSelection()) {
 pos.start = obj.selectionStart;
 pos.end = obj.selectionEnd;
 }
  
 else if(window.getSelection()) {
 pos.start = obj.selectionStart;
 pos.end = obj.selectionEnd;
 }
  
 return pos;
 }
 function getAreaRangeAno(obj,win) {
 var pos = new Object();
  
 if (ie) {
 obj.focus();
 var range = win.document.selection.createRange();
 var clone = range.duplicate();
  
 clone.moveToElementText(obj);
 clone.setEndPoint( 'EndToEnd', range );
  
 pos.start = clone.text.length - range.text.length;
 pos.end = clone.text.length - range.text.length + range.text.length;
 } else if(document.getSelection()) {
 pos.start = obj.selectionStart;
 pos.end = obj.selectionEnd;
 } else if(window.getSelection()) {
 pos.start = obj.selectionStart;
 pos.end = obj.selectionEnd;
 }
  
 return pos;
 }
 function inserttag( obj ,pri ,end ) {
 var target = document.getElementById(obj);
 var pos = getAreaRange(target);
  
 var val = target.value;
 var range = val.slice(pos.start, pos.end);
 var beforeNode = val.slice(0, pos.start);
 var afterNode = val.slice(pos.end);
 var insertNode;
  
 if (range || pos.start != pos.end) {
 insertNode = pri + range + end;
 target.value = beforeNode + insertNode + afterNode;
 }
  
 else if (pos.start == pos.end) {
 insertNode = pri + end;
 target.value = beforeNode + insertNode + afterNode;
 }
 }
 function inserttagAno( obj ,pri ,end ,win) {
 var target = win.document.getElementById(obj);
 var pos = getAreaRangeAno(target,win);
  
 var val = target.value;
 var range = val.slice(pos.start, pos.end);
 var beforeNode = val.slice(0, pos.start);
 var afterNode = val.slice(pos.end);
 var insertNode;
  
 if (range || pos.start != pos.end) {
 insertNode = pri + range + end;
 target.value = beforeNode + insertNode + afterNode;
 }
  
 else if (pos.start == pos.end) {
 insertNode = pri + end;
 target.value = beforeNode + insertNode + afterNode;
 }
 }
var myfunc ="var ie="+ie + "\n" + putClrAno + "\n" + clsclrAno  + "\n" + inserttagAno + "\n" + getAreaRangeAno + "\n" + cngColorAno;
function crtplt(name){
	var iCnt1 =0;
	var iCnt2 =0;
	var iCnt3 =0;
	//var sClr = new Array("FF","EE","DD","CC","BB","AA","99","88","77","66","55","44","33","22","11","00");
	var sClr = new Array("FF","CC","99","66","33","00");
	var sData = "<table id=\"clrplt\" >";
	for (iCnt1 = 0 ; iCnt1 < sClr.length ; iCnt1 ++ ) {
		sData += "<tr>";
		for (iCnt2 = 0 ; iCnt2 < sClr.length ; iCnt2 ++ ) {
			for (iCnt3 = 0 ; iCnt3 < sClr.length ; iCnt3 ++ ) {
			
				sData += "<td style=\"background-color:#" +sClr[iCnt1]+sClr[iCnt2]+sClr[iCnt3]+";\" onclick=\"return putClrAno('"+ name + "','#" +sClr[iCnt1]+sClr[iCnt2]+sClr[iCnt3]+"',window.opener)\">&nbsp;</td>";
			}
		}
		sData += "</tr>";
	}
	sData += "</table>";
	var clr = window.open("","_blank","dependent=yes,directories=no,location=no,menubar=no,personalbar=no,resizable=no,scrollbars=no,status=no,titlebar=no,toolbar=no,width=350,height=180");
	clr.document.open();
	clr.document.write("<sc" + "ript >\n" +myfunc+ "\n</sc" + "ript>");
	clr.document.write(sData);
	clr.document.close();
//	document.getElementById("cplt").innerHTML = sData;
//	document.getElementById("cplt").style.display = 'inline';
	return false;
}
function putClr(name ,color) {
clsclr();
return cngColor(name ,color);
}
function putClrAno(name ,color,win) {
cngColorAno(name ,color,win);
clsclrAno();
return false;
}
function clsclr() {
	document.getElementById("cplt").style.display = 'none';
}
function clsclrAno() {
window.close();
}

// 2008/06/17 元からあるデータを持ってくるように仕様変更 by kazuki ohshiro
function createctrl(name) {
	document.write('<button onclick="return inputlink(\'' +name+ '\')">アンカー</button>&nbsp;');
	document.write('<button onclick="return cngHead(\'' +name+ '\',3)">見出し</button>&nbsp;');
	document.write('<button onclick="return cngULine(\'' +name+ '\')">下線</button>&nbsp;');
	document.write('<button onclick="return cngBold(\'' +name+ '\')">強調</button>&nbsp;');
	document.write('<button onclick="return crtplt(\'' +name+ '\')">色替え</button>&nbsp;<br />');
}

function dataRoad(name, url){
	var dateObj = new Date();

	url = url + "&date=" + dateObj.getTime();
//	readcnt(name,url,"");

	var xmlhttp = createXMLHttp();
	if(xmlhttp){
    	if (xmlhttp.overrideMimeType) {
        	xmlhttp.overrideMimeType('text/xml');
    	}
		xmlhttp.abort();
		xmlhttp.open('GET', url, true);
		xmlhttp.setRequestHeader("If-Modified-Since", "Thu, 01 Jun 1970 00:00:00 GMT");
		xmlhttp.send(null);
		xmlhttp.onreadystatechange = function () {
			if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
				if (document.getElementById(name) != null) {
					document.getElementById(name).value = decodeJp(encodeJp(xmlhttp.responseText));
//					document.getElementById(name).style.display = 'inline';
				}
			} 
		}
	}
}

function frmsubmit(type, frm) {
	if (type=='reg') {
		frm.ps.value="";
		frm.method="post";
		regsubmit('testarea',frm)
//		frm.submit();
	}else if (type=='del') {
		frm.ps.value="delete";
		frm.method="post";
		regsubmit('testarea',frm)
//		frm.submit();
	}else {
		frm.ps.value="";
		frm.method="get";
		regsubmit('wikimemo',frm)
///		frm.submit();
	}
	return false;
}

function dspctrl(name, obj, url) {

	if (document.getElementById(name).style.display == 'none') {
		document.getElementById(name).style.display = 'inline';
		obj.innerHTML="終了";
	}else {
		document.getElementById(name).style.display = 'none';
		obj.innerHTML="編集";
	}	
	return false;
}

function regsubmit(name,obj) {

var dateObj = new Date();

var blnScs = true;
	if (blnScs) {
		var data = 'filename=' + obj.filename.value + '&ps=' + encodeJp((obj.ps.value=="delete"?obj.ps.value:"javascript")) + '&memo=' + encodeJp(obj.memo.value) ;
		if (obj.method=='post' || obj.method=='POST') {
			readcntpost(name,obj.action + "?date=" + dateObj.getTime(),data );	
		}else {
			readcntreload(name,obj.action + "?date=" + dateObj.getTime() + "&" + data + "&type=edit","" );	
		}
	}
	return false;
}

