var IE = 0,NN = 0,N6 = 0;
var xxx=0 , yyy=0 ; 
if(document.all) IE = true;
else if(document.layers) NN = true;
else if(document.getElementById) N6 = true;

/*
 *
 */
function addStr(formId, elementId, str) {
//	obj = document.FORM.context ;
	frm = findForm(formId);
	obj = findElement(frm, elementId);
	if (document.selection) {
		obj.focus();
		sel = document.selection.createRange();
		sel.text = str;
	}
	else if (obj.selectionStart || obj.selectionStart == '0') {
		var startPos = obj.selectionStart;
		var endPos   = obj.selectionEnd;
		obj.value = obj.value.substring(0, startPos)
			+ str
			+ obj.value.substring(endPos, obj.value.length);
	} else {
		obj.value += str;
	}
}

/*
 * テキストエリアに入力された文字数をカウントします。
 */
function invoke_count( frm, inputAreaId, displayAreaId ) {
	var inputArea = findElement(frm, inputAreaId);
	var displayArea = findElement(frm, displayAreaId);
//	displayArea.value = Math.round( getBytes( inputArea.value ) / 2 );
	displayArea.value = getLength(inputArea.value);
}

function getLength(text) {
        var count = 0;
        while( text ) {
            count += 1;
            text = text.substring( 1 );
        }
        return count;
}

/*
 *
 */
function getBytes( text ) {
        var count = 0;
        text = escape( text );
        while( text ) {
                if( text.charAt( 0 ) == '%' ) {
                        if( text.charAt( 1 ).toLowerCase() == 'u' ) {
                                count += 2;
                                text = text.substring( 6 );
                        } else {
                                if( text.charAt( 1 ).toLowerCase() == '0' && ( text.charAt( 2 ).toLowerCase() == 'a' || text.charAt( 2 ).toLowerCase() == 'd' ) ) {
                                } else {
                                count += 1;
                                }
                                text = text.substring( 3 );
                        }
                } else {
                        count += 1;
                        text = text.substring( 1 );
                }
        }
        return count;
}

/**
 * @see #openWindow(formId, itemId)
 */
function insert_img(formId, itemId) {
//	w = window.open(
//		"/peace/other/image/image_file_reg.html?formId=" + formId + "&itemId=" + itemId,
//		"insert_img_window",
//		"width=580,height=650,scrollbars=no,resizable=no,status=no"
//	); 
//	w.focus();
	return openWindow.apply(this, arguments);
}

function test(num) {
	alert('test' + num);
}

/*
 * start_tagとend_tagで選択されている文字列を挟みます。
 * 
 * 
 * 
 */
function insertTag (start_tag, end_tag, fromId, elementId) {
//	frm = findForm('FORM');
//	obj = findElement(frm, 'content');
	
	frm = findForm(fromId);
	obj = findElement(frm, elementId);
	
	if (document.selection) {
		obj.focus();
		sel = document.selection.createRange();
		sel.text = start_tag + sel.text + end_tag ;
	}else if (obj.selectionStart || obj.selectionStart == '0') {
		
		var scrollTopTemp = obj.scrollTop;
		
		var startPos = obj.selectionStart ;
		var endPos   = obj.selectionEnd ;
		obj.value = obj.value.substring(0, startPos)
		+ start_tag
		+ obj.value.substring(startPos , endPos)
		+ end_tag
		+ obj.value.substring(endPos, obj.value.length);
		
		obj.scrollTop = scrollTopTemp;
		
	}else{
		obj.value = obj.value + start_tag + end_tag;
	}
	
	obj.focus();
}
function tagButton_self (tab_name, formId, elementId) {
	insertTag('[' + tab_name + ']', '', formId, elementId);
}
function tagButton_effect (tab_name, formId, elementId) {
	insertTag('[' + tab_name + ']', '[/' + tab_name + ']', formId, elementId);
}
function tagButton_align (tab_name, formId, elementId) {
	insertTag('[' + tab_name + ']', '[/' + tab_name + ']', formId, elementId);
}
function tagButton_size (tab_name, formId, elementId) {
	insertTag('[' + tab_name + ']', '[/' + tab_name + ']', formId, elementId);
}
function tagButton_color (tab_name, formId, elementId) {
	insertTag('[色:' + tab_name + ']', '[/色]', formId, elementId);
}
function tagButton_url(formId, elementId) {
	frm = findForm(formId);
	ob = findElement(frm, elementId);
	
	var sP = ob.selectionStart ;
	var eP = ob.selectionEnd ;

	default_url = 'http://';
	if(document.all){
		regex = "^s?https?://[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+$";
		var cbText = clipboardData.getData("Text");
		if(cbText && cbText.match(regex)){
			default_url = cbText;
		}
	}
	var input_link = prompt('URL: ', default_url);
	if(input_link != null){
		if(confirm('リンク先を別ウインドウで開きますか？')){
			if(N6){ ob.setSelectionRange( sP, eP ); }
			insertTag('[別窓:(' + input_link + ')]', '[/別窓]', formId, elementId);
		}else{
			if(N6){ ob.setSelectionRange( sP, eP ); }
			insertTag('[リンク:(' + input_link + ')]', '[/リンク]', formId, elementId);
		}
	}
}
function show_win(offset_x,offset_y,w,msg,eventobj){
	if (navigator.userAgent.match(/Mac/i) && navigator.userAgent.match(/MSIE\s+(\d+)\.?(\d+)?/i) ) {
		return;
	}
	if(N6){
		pop_obj = document.getElementById("pop");
		xxx = eventobj.pageX;
		yyy = eventobj.pageY;
	}else if(IE){
		pop_obj = document.all("pop");
		xxx = eventobj.x + document.body.scrollLeft;
		yyy = eventobj.y + document.body.scrollTop;
	}else if(NN){
		pop_obj = document.layers["pop"];
		xxx = eventobj.pageX;
		yyy = eventobj.pageY;
	}
	xxx += offset_x;
	yyy += offset_y;

	pop_obj.innerHTML = msg;
	pop_obj.style.position = 'absolute';

	if (!navigator.userAgent.match(/Mac/i) || !navigator.userAgent.match(/MSIE\s+(\d+)\.?(\d+)?/i) ) {
		pop_obj.style.width = w + "px";
	}
	if(document.getElementById){        //Moz,NN6,IE5用
		pop_obj.style.left = xxx + "px";
		pop_obj.style.top = yyy + "px";
	}else if(document.all){
		pop_obj.style.pixelLeft = xxx; //IE4用
		pop_obj.style.pixeltop = yyy;
	}else if(document.layers){
		pop_obj.moveTo(xxx,yyy)    //NN4用
	}
	pop_obj.style.display='';
}
function hide_win(){
	if(document.getElementById){
		pop_obj=document.getElementById("pop");
	}else if(document.all){
		pop_obj=document.all("pop");
	}else if(document.layers){
		pop_obj = document.layers["pop"];
	}
	pop_obj.style.display='none';
}
function set_color(src, formId, elementId, colorPalletId){
	tagButton_color("#" + src, formId, elementId);
	if(document.getElementById){
		obj=document.getElementById(colorPalletId);
	}else if(document.all){
		obj=document.all(colorPalletId);
	}else if(document.layers){
		obj = document.layers[colorPalletId];
	}
	obj.style.display='none';
}

function set_color_input(formId, elementId, targetId, colorPalletId){
//	src=document.color_form.color_no.value;
	frm = findForm(formId);
	src = findElement(frm, elementId).value;
	tagButton_color("#" + src, formId, targetId);
	if(document.getElementById){
		obj=document.getElementById(colorPalletId);
	}else if(document.all){
		obj=document.all(colorPalletId);
	}else if(document.layers){
		obj = document.layers[colorPalletId];
	}
	obj.style.display='none';
	
	return false;
}
function show_text(src, textId){

	obj=$(textId);
	obj.innerHTML = src;
}
function hide_text(textId){
	obj=$(textId);
	obj.innerHTML = "　";
}
function view_color(src, formId, elementId, textId){
//	document.color_form.color_no.value=src;
	frm = findForm(formId);
	findElement(frm, elementId).value = src;
	if(document.getElementById){
		obj=document.getElementById(textId);
	}else if(document.all){
		obj=document.all(textId);
	}else if(document.layers){
		obj = document.layers[textId];
	}
	
	obj.style.color = "#" + src;
}
function hide_pallet(colorPalletId){
	if(document.getElementById){
		obj=document.getElementById(colorPalletId);
	}else if(document.all){
		obj=document.all(colorPalletId);
	}else if(document.layers){
		obj = document.layers[colorPalletId];
	}
	obj.style.display='none';
}

function show_hide_pallet(colorPalletId){

	xx_pallet = xxx - 30;
	yy_pallet = yyy + 20;
	if(document.getElementById){
		obj=document.getElementById(colorPalletId);
		obj.style.left = xx_pallet + "px";  //Moz,NN6,IE5用
		obj.style.top = yy_pallet + "px";
	}else if(document.all){
		obj=document.all(colorPalletId);
		obj.style.pixelLeft = xx_pallet; //IE4用
		obj.style.pixeltop = yy_pallet;
	}else if(document.layers){
		obj = document.layers[colorPalletId];
		obj.moveTo(xx_pallet,yy_pallet)    //NN4用
	}
	if(obj.style.display==''){
		obj.style.display='none';
	}else{
		obj.style.display='';
	}
}

function show_hide_pallet2(colorPalletId , eventobj){

	if(N6){
		xxx = eventobj.pageX;
		yyy = eventobj.pageY;
	}else if(IE){
		xxx = eventobj.x + document.body.scrollLeft;
		yyy = eventobj.y + document.body.scrollTop;
	}else if(NN){
		xxx = eventobj.pageX;
		yyy = eventobj.pageY;
	}

	xx_pallet = xxx - 30;
	yy_pallet = yyy + 20;
	if(document.getElementById){
		obj=document.getElementById(colorPalletId);
		obj.style.left = xx_pallet + "px";  //Moz,NN6,IE5用
		obj.style.top = yy_pallet + "px";
	}else if(document.all){
		obj=document.all(colorPalletId);
		obj.style.pixelLeft = xx_pallet; //IE4用
		obj.style.pixeltop = yy_pallet;
	}else if(document.layers){
		obj = document.layers[colorPalletId];
		obj.moveTo(xx_pallet,yy_pallet)    //NN4用
	}
	if(obj.style.display==''){
		obj.style.display='none';
	}else{
		obj.style.display='';
	}
}

/*
 * formName の中の要素 inputName のvalueを、
 * formName の中のループ forEachName の中の要素 targetName に貼り付けます。
 * 
 * @param formName					フォーム名
 * @param inputName					貼り付けするフォーム部品名
 * @param targetForEachName			ループのID
 * @param targetName				貼り付けされるフォーム部品名
 * @param targetForEachLength		貼り付けされるforEachの行数
 */
function pasteTextAll(formName, inputName, targetForEachName, targetName, targetForEachLength) {
	
	var formElement = document.forms[formName];
	var inputElement = formElement[formName + ":" + inputName];
	
	for (var i = 0; i < targetForEachLength; i++) {
		formElement[formName + ":" + targetForEachName + "_" + i + ":" + targetName].value = inputElement.value;
	}
	
}

/*
 * @param inputFormName				貼り付けするフォーム名
 * @param inputName					貼り付けするフォーム部品名
 * @param targetFormName			貼り付けされるフォーム名
 * @param targetForEachRowName		貼り付けされるforEachの行名
 * @param targetForEachColumnName	貼り付けされるforEachの列名
 * @param targetName				貼り付けされるフォーム部品名
 * @param targetForEachLength		貼り付けされるforEachの行数
 * @param targetColumnIndex			貼り付けされるforEachの列番号
 * @param validationMessage			バリデーションメッセージ
 */
function checkRadioAll(
	inputFormName,
	inputName,
	targetFormName,
	targetForEachRowName,
	targetForEachColumnName,
	targetName,
	targetForEachLength,
	targetColumnIndex,
	validationMessage
) {
	
	var inputFormElement = document.forms[inputFormName];
	var targetFormElement = document.forms[targetFormName];
	
	var inputRadioElement = inputFormElement[inputFormName + ":" + inputName];
	var inputRadioIndex = -1;
	for (var i = 0; i < inputRadioElement.length; i++) {
		if (inputRadioElement[i].checked) {
			inputRadioIndex = i;
		}
	}
	if (inputRadioIndex < 0) {
		alert(validationMessage || "入力内容が正しいか確認してください。");
	} else {
		for (var i = 0; i < targetForEachLength; i++) {
			targetFormElement[targetFormName + ":" + targetForEachRowName + "_" + i + ":" + targetForEachColumnName + "_" + targetColumnIndex + ":" + targetName][inputRadioIndex].click();
		}
	}
	
}

/*
 * 引数 selectElement で渡されたSELECT要素のvalue属性の値を、
 * 引数 delimiter で渡された区切り文字で区切った文字列として、
 * 引数 inputElement で渡された入力部品のvalue属性の値に詰めます。
 * 
 * @param selectElement
 * @param inputElement
 * @param delimiter 区切り文字（省略可）
 */
function setSelectValueToInputValue(selectElement, inputElement, delimiter) {
	
	var selectLen = selectElement.length - 1;
	var inputValue = "";
	
	if (selectLen >= 0) {
		for (var i = 0; i < selectLen; i++) {
			inputValue += (
				selectElement[i].value + (delimiter || ",")
			);
		}
		inputValue += selectElement[selectLen].value;
	}
	
	inputElement.value = inputValue;
	
}

/*
 * アンカーで同一ホスト名であるリンク先のプロトコルを、
 * 現在使っているプロトコルに合わせるための関数を
 * onload時のイベントに追加します。
 * 
 * @param rootElementId アンカーの取得を開始するルートの要素のID名（省略可）
 */
function maybeTruncateLinksProtocol(reqId, rootElementId) {
	var onloadEvent = window.onload;
	
	window.onload = function () {
		
		var anchors = (document.getElementById(rootElementId) || document).getElementsByTagName('a');
		
		var anchorLength = anchors.length;
		for (var i = 0; i < anchorLength; i++) {
			if (anchors[i] != "" && anchors[i].hostname == location.hostname) {
				var anchorHref = new String(anchors[i].href);
				var anchorInnerHTML = anchors[i].innerHTML;
				anchors[i].href = location.protocol + anchorHref.substring(anchorHref.indexOf(':') + 1, anchorHref.length);
				
				if (anchors[i].href.indexOf('#') > 0) {
				   	var href_temp = anchors[i].href.substring(0,anchors[i].href.indexOf('#'));
        			var href_innr = anchors[i].href.substring(anchors[i].href.indexOf('#'));

					if (href_temp.indexOf('?') > 0 && href_temp.indexOf("reqId") <= 0) {
						anchors[i].href = href_temp + "&reqId=" + reqId + href_innr;
					} else if (anchors[i].href.indexOf("reqId") <= 0){
						anchors[i].href = href_temp + "?reqId=" + reqId + href_innr;
					}
				} else {
					if (anchors[i].href.indexOf('?') > 0 && anchors[i].href.indexOf("reqId") <= 0) {
						anchors[i].href = anchors[i].href + "&reqId=" + reqId;
					} else if (anchors[i].href.indexOf("reqId") <= 0){
						anchors[i].href = anchors[i].href + "?reqId=" + reqId;
					}
				}
				//IEのバグでhrefを書き換えるとInnerHTMLが壊れるので再設定
				anchors[i].innerHTML = anchorInnerHTML;
			}
		}
		
		
		if (onloadEvent != null) return onloadEvent.apply(this, arguments);
		
	}
}
