/*
 * 共通 JavaScript
 *
 *
 * Copyright (c) 2003 DRECOM CO.,LTD. All rights reserved.
 * 
 * info@drecom.co.jp
 * http://www.drecom.co.jp/
 */
 
/**
 * 常に手前に表示するウィンドウを開く
 */
function openModalWindow(url, name, height, width, scrollbars, resizable, status)
{
	ModalWindow = openWindow(url, name, height, width, scrollbars, resizable, status);
	onfocus = function onFocus(){
		if (null !=ModalWindow && !ModalWindow.closed) {
			try {
				ModalWindow.focus();
			} catch(e) {
				document.onmousemove = null;
			}
		} else {
			document.onmousemove = null;
		}
	}
	
	document.onmousemove = onfocus;

	return ModalWindow;
}

/**
 * ウィンドウを開く
 */
function openWindow(url, name, height, width, scrollbars, resizable, status)
{
	var window_condition = "height=" + height + ",width=" + width + 
					",scrollbars=" + scrollbars + ",resizable=" + resizable + ",toolbar=no,status=" + status;

	subWindow = window.open(url, name, window_condition);
	subWindow.focus();
	return subWindow;
}

/**
 * ウィンドウを後ろに開く
 */
function openWindowBack(url, name, height, width, scrollbars, resizable, status)
{
	var window_condition = "height=" + height + ",width=" + width + 
					",scrollbars=" + scrollbars + ",resizable=" + resizable + ",toolbar=no,status=" + status +
					",left=" + window.screen.width;
	subWindow = window.open(url, name, window_condition);
	subWindow.blur();
	window.focus();
	subWindow.moveTo(0,0);
	return subWindow;
}
/**
 * Alert, Confirm window
 */

// 2004-06-09 Takanori Ishikawa 
// -----------------------------------------------------------
// htmlAlert(), htmlConfirm() は html をそのまま
// 出力せず、サニタイズするようにした。

// sanitize html message
function sanitize_msg(msg)
{
	msg = msg.replace(/</g, '&lt;');
	msg = msg.replace(/>/g, '&gt;');
	msg = msg.replace(/&lt;br\s*&gt;/g, '<br>');

	return msg;
}
// alert
function htmlAlert(msg, height, width)
{
	height = (null == height) ? 120: height;
	width  = (null == width) ? 300: width;
	msg = sanitize_msg(msg);
	
	if (navigator.userAgent.indexOf("Safari") ==-1 && defined(window.showModalDialog)) {
		showModalDialog("/html/message_box.html", msg, "dialogHeight: " + height + "px; dialogWidth: " + width + "px; edge: Raised; center: Yes; help: No; resizable: No; status: No;");
	} else {
		dialogArguments = msg;
		ModalWindow = open("/html/message_box.html", "sub_alert","height=" + height + ",width=" + width + 
					",scrollbars=no,resizable=no,toolbar=no,status=no,alwaysRaised=yes");
		onfocus = function onFocus(){
			if (null !=ModalWindow && !ModalWindow.closed) {
				ModalWindow.focus();
			}
		}
		document.onmousemove = onfocus;
		return ModalWindow;
	}
}
// confirm
function htmlConfirm(msg, height, width)
{
	height = (null == height) ? 120: height;
	width  = (null == width) ? 300: width;
	if (navigator.userAgent.indexOf("Safari") ==-1 && defined(window.showModalDialog)) {
		var value = showModalDialog("/html/confirm.html", sanitize_msg(msg), "dialogHeight: " + height + "px; dialogWidth: " + width + "px; edge: Raised; center: Yes; help: No; resizable: No; status: No;");
		if (typeof value == "undefined") {
			value = false;
		} 
		return value;
	} else {
		return window.confirm(msg.replace(/<br[^>]*\/?>/, '\n'));
	}
}

/**
  * 曜日を取得する関数
  * year:  年
  * month: 月
  * day:   日
  */
function getDayOfWeek(year, month, day) {

	DateOfWeek	= new Date();
	DateOfWeek.setYear(year);
	DateOfWeek.setMonth(month - 1);
	DateOfWeek.setDate(day);
	day_of_week_number	= DateOfWeek.getDay();

	days = new Array('日','月','火','水','木','金','土');
	return days[day_of_week_number];
}


// -----------------------------------------------------------
// ポータル、ヘッダ
// -----------------------------------------------------------
/**
 * INPUT FORM の背景色変更
 */
function focusForm(obj,flag){
	if (obj == null || obj.style == null) {
		return;	
	}
	obj.style.backgroundColor = flag ? '#EEEEEE' : '#FFFFFF' 
}
function Skinup(fnr){
	win = window.open('/contents/skinpop_'+fnr,'skin','width=455,height=300,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes');
	win.focus();
}
function imgSwap(name,gifPath) {
	document.images[name].src = gifPath ;
}

//メンバー選択フォーム

function selectGroup(elem) {
	var jsonUrl, args;
	var val = elem.value;
	var v = val.split(':');
	switch (v[0]) {
	case 'all':
		jsonUrl = '/sec/ProfileListJsonDownload.blog';
		args = [];
		break;
	case 'team':
		jsonUrl = '/sec/TeamMemberJsonDownload.blog';
		args = [ 'team='+v[1] ];
		break;
	case 'mygroup':
		jsonUrl = '/sec/MyGroupJsonDownload.blog';
		args = [ 'myGroupId='+v[1] ];
		break;
	default:
		return;
	}
	AjaxRequest.request(function(text) {
		replaceMembers(elem.form, text);
	}, jsonUrl, args);
}

function replaceMembers(form, text) {
	var data = eval('('+text+')');
	while (form.memberList.length != 0) {
		form.memberList[0] = null;
	}
	for (var i = 0; i < data.length; i++) {
		var p = data[i];
		var userid = p[0];
		var username = p[1];
		if (username != null && username != "") {
			var option = new Option(username, userid);
			document.getElementById('memberList')[i] = option;
			option.innerHTML = username;
		}
	}
}

/**
 * multiple な selectボックスを初期値に戻す
 */
function resetMultipleSelect(selectObject){
	if(selectObject.options != null){
		for(i = 0, len = selectObject.options.length; i < len; ++i){
			selectObject.options[i].selected = selectObject.options[i].defaultSelected;
		}
	}
}

/**
 * multiple な selectボックスをクリアする。
 */
function clearMultipleSelect(selectObject){
	if(selectObject.options != null){
		for(i = 0, len = selectObject.options.length; i < len; ++i){
			selectObject.options[i].selected = false;
		}
	}
}

/**
 * multiple な selectボックスをすべて選ぶ。
 */
function allSelectMultipleSelect(selectObject){
	if(selectObject.options != null){
		for(i = 0, len = selectObject.options.length; i < len; ++i){
			selectObject.options[i].selected = true;
		}
	}
}

/**
 * multiple な selectボックスで選択されているものを削除する
 */
function deleteSelectedMultipleSelect(selectObject) {
	if (selectObject.options != null) {
		for (var i = selectObject.options.length - 1; i >= 0; i--) {
			if (selectObject.options[i].selected) {
				selectObject.options[i] = null;
			}
		}
	}
}

/**
 * multiple な selectボックスで選択されているものを別のselectボックスへコピーする
 */
function copySelectedMultipleSelect(from, to) {
	if (from.options == null || to.options == null) return;
	var m = from.options.length;
	var n = to.options.length;
loop:
	for (var i = 0; i < m; i++) {
		var selectedItem = from.options[i];
		if (selectedItem.selected) {
			for (var j = 0; j < n; j++) {
				if (to.options[j].value == selectedItem.value) {
					continue loop;
				}
			}
			to[n] = new Option(selectedItem.text, selectedItem.value);
			n++;
		}
	}
}

/**
 * multiple な selectボックスのサイズを最小サイズから最大サイズの間で自分のサイズに合わせて表示する。
 */
function resizeMultipleSelect(selectObject, maxSize, minSize, maxWidth, minWidth){
	selectObject.maxLength = selectObject.length;
	if(maxSize != null){
		if(maxSize > selectObject.maxLength){
			selectObject.maxSize = selectObject.maxLength;
		} else {
			selectObject.maxSize = maxSize;
		}
	} else {
		selectObject.maxSize = selectObject.size;
	}
	if(minSize != null){
		if(minSize > 0){
			selectObject.minSize = minSize;
		} else {
			selectObject.minSize = selectObject.maxSize > 0? selectObject.maxSize: selectObject.maxLength;
		}
		if(selectObject.maxSize < selectObject.minSize){
			selectObject.maxSize = selectObject.minSize;
		}
	} else {
		selectObject.minSize = selectObject.maxSize;
	}
	selectObject.defaultMaxSize = selectObject.maxSize;
	selectObject.defaultMinSize = selectObject.minSize;

	if(selectObject.scrollWidth != 0){
		selectObject.maxScrollWidth = selectObject.scrollWidth > selectObject.offsetWidth? selectObject.scrollWidth: selectObject.offsetWidth;
	} else {
		selectObject.maxScrollWidth = selectObject.options.scrollWidth > selectObject.options.offsetWidth? selectObject.options.scrollWidth: selectObject.options.offsetWidth;
	}
	if(maxWidth != null){
		if(maxWidth > selectObject.maxScrollWidth){
			selectObject.maxWidth = selectObject.maxScrollWidth;
		} else {
			selectObject.maxWidth = maxWidth;
		}
	} else {
		selectObject.maxWidth = selectObject.offsetWidth != 0? selectObject.offsetWidth: selectObject.options.offsetWidth;
	}
	if(minWidth != null){
		if(minWidth > 0){
			selectObject.minWidth = minWidth;
		} else {
			selectObject.minWidth = selectObject.maxWidth > 0? selectObject.maxWidth: selectObject.maxScrollWidth;
		}
		if(selectObject.maxWidth < selectObject.minWidth){
			selectObject.maxWidth = selectObject.minWidth;
		}
	} else {
		selectObject.minWidth = selectObject.maxWidth;
	}
	selectObject.defaultMaxWidth = selectObject.maxWidth;
	selectObject.defaultMinWidth = selectObject.minWidth;
	refixMultipleSelect(selectObject);
}

/**
 * multiple な selectボックスのサイズを合わせて表示する。
 */
function refixMultipleSelect(selectObject){
	var maxSize = selectObject.maxSize;
	var minSize = selectObject.minSize;
	var maxWidth = selectObject.maxWidth;
	var minWidth = selectObject.minWidth;
	if(selectObject.options != null && selectObject.maxSize != 0){
		var size = selectObject.options.length;
		if(maxSize != null && maxSize < size){
			size = maxSize;
		} else if(minSize != null && minSize > size){
			size = minSize;
		}
		selectObject.size = size;
	}
	if(selectObject.maxWidth != 0){
		var width = selectObject.style.width;
		if(maxWidth != null && maxWidth < width){
			width = maxWidth;
		} else if(minWidth != null && minWidth > width){
			width = minWidth;
		}
		selectObject.style.width = width;
	}
}

/**
 * multiple な selectボックスのサイズを増加または縮小する。
 */
function modifyMultipleSelect(selectObject, addsize){
	if(selectObject.maxSize + addsize > selectObject.maxLength){
		selectObject.maxSize = selectObject.maxLength;
	} else if(selectObject.maxSize + addsize > 1){
		selectObject.maxSize += addsize;
	} else {
		selectObject.maxSize = 1;
	}
	if(selectObject.maxSize < selectObject.minSize){
		selectObject.minSize = selectObject.maxSize;
	}
	refixMultipleSelect(selectObject);
}


