/*  common.js
 *
 *--------------------------------------------------------------------------*/
function getScroll(div){
	var wScroll = document.viewport.getScrollOffsets();
	var Scroll = new Array(2);
	Scroll["Y"] = wScroll.top;
	Scroll["X"] = wScroll.left;
	if(div == "Y") return wScroll.top;
	if(div == "X") return wScroll.left;
	return Scroll;
}

function chCssName(className,element){
	if(className == null || element == null) return;
	element.className=className;
}

function pageJump(url){
	window.location.href=url;
}

//===================================
//背景色変更
//===================================
function chBgColor(element, arg){
	if(arg == 1){
		if(element.length){
			var i;
			for(i = 0; i < element.length; i ++){
				element[i].style.backgroundColor="#CCFFEE";
			}
		}else{
			element.style.backgroundColor="#CCFFEE";
		}
	}else{
		if(element.length){
			var i;
			for(i = 0; i < element.length; i ++){
				element[i].style.backgroundColor="";
			}
		}else{
			element.style.backgroundColor="";
		}
	}
}

//===================================
//エレメントをREADONLYに変更
//===================================

function chReadOnly(element,mode){
	if(mode == -1){
		element.readOnly=true;
		//element.style.backgroundColor='#EEEEEE';
		//element.borderCollapse='collapse';
		//element.style.border='none';
	}else{
		element.readOnly=false;
		//element.style.backgroundColor='';
		//element.style.border='';
	}
}

//===================================
//カンマ追加
//===================================
function addComma(arg, zero){
	if(arg.readOnly) return;
	var retVal;
	if(arg.type=='text'){
		retVal = arg.value;
	}else{
		retVal = arg;
	}
	
	retVal = delComma(retVal,'1')+"";
	if(!isNaN(retVal*1) && retVal != "" && retVal*1 != 0){
		var sign= "";
		if(retVal < 0){
			retVal = retVal * -1
			sign = "-"
		}
		str = "" + delComma(retVal+"");
		cnt = 0;
		n   = "";
		for (commaI=str.length-1; commaI>=0; commaI--){
			n = str.charAt(commaI) + n;
			cnt++;
			if(((cnt % 3) == 0) && (commaI != 0)) n = ","+n;
		}
		retVal = sign + n;
	}else{
		if(zero){
			retVal = 0;
		}else{
			retVal = '';
		}
	}
	
	if(arg.type=='text'){
		arg.value = retVal;
		return;
	}else{
		return retVal;
	}
}

//===================================
//カンマ削除
//===================================
function delComma(arg, zero){
	if(arg.readOnly) return;
	var retVal;
	if(arg.type=='text'){
		retVal = arg.value;
	}else{
		retVal = arg;
	}
	
	retVal = ""+Trim(retVal);
	if(retVal){
		while(retVal.indexOf(',', 0) != -1){
			retVal = retVal.replace(',', '');
		}
	}
	if(!isNaN(retVal*1) && retVal*1 != 0){
		retVal = retVal*1;
	}else{
		if(zero){
			retVal = 0;
		}else{
			retVal = '';
		}
	}
	if(arg.type=='text'){
		arg.value = retVal;
		return;
	}else{
		return retVal;
	}
	
}

//=================================================
//Trim
//=================================================
function Trim(arg){
	arg = arg+"";
	return Lrim(Rrim(arg));
}

//=================================================
//Lrim
//=================================================
function Lrim(vInStr){
	if(vInStr == "") return vInStr;
	var vlen = vInStr.length;
	while ((vInStr.charAt(0) == " ") || (vInStr.charAt(0) == "　") || (vInStr.charAt(0) == "\t") || (vInStr.charAt(0) == "\n") || (vInStr.charAt(0) == "\r")) {
		vInStr = vInStr.substring(1,vlen);
		vlen = vInStr.length;
	}
	return vInStr;
}

//=================================================
//Rrim
//=================================================
function Rrim(vInStr){
	if(vInStr == "") return vInStr;
	var vlen = vInStr.length;
	while ((vInStr.charAt(vlen-1) == " ") || (vInStr.charAt(vlen-1) == "　") || (vInStr.charAt(vlen-1) == "\t") || (vInStr.charAt(vlen-1) == "\n") || (vInStr.charAt(vlen-1) == "\r")) {
		vInStr = vInStr.substring(0,vlen-1);
		vlen = vInStr.length;
	}
	return vInStr;
}

//=================================================
//AddStrL
//=================================================
function AddStrL(str, len, str2){
	str = str+"";
	var addStr = "";
	if(len - str.length < 1) return str;
	for(AddStrLi = 0; AddStrLi < len - str.length; AddStrLi ++){
		addStr = ""+str2 + addStr;
	}
	return addStr + str;
}

//===================================
//最小化
//===================================
function minimize(id, element, name){
	var mini_name = 'MINIMIZE';
	if(name) mini_name = name;
	if($(id).style.display != "none"){
		$(id).style.display = "none";
		element.src = "/images/minimize1.gif";
		$(mini_name).value = "1";
	}else{
		$(id).style.display = "";
		element.src = "/images/minimize.gif";
		$(mini_name).value = "";
	}
}

//======================================
//並び替え
//======================================
function forder(arg){
	if($('ORDER').value == arg){
		if($('DESC').value == ""){
			$('DESC').value = "DESC";
		}else{
			$('DESC').value = "";
		}
	}else{
		$('ORDER').value = arg;
		$('DESC').value = "";
	}
	$('OFFSET').value = '';
	$('f').submit();
}

//===================================
//検索用カナ値セット
//===================================
function setSearchKana(val, targetId){
	if($(targetId)){
		$(targetId).value = val;
	}else{
		alert(targetId+" が見つかりません。");
	}
	
	if($(targetId+"_TABLE")){
		$(targetId+"_TABLE").style.display = "none";
	}else{
		alert(targetId+"_TABLE が見つかりません。");
	}
	if($(targetId+"_CLR")){
		$(targetId+"_CLR").style.display = "";
	}
}

//===================================
//検索用カナ値クリア
//===================================
function clearSearchKana(targetId){
	$(targetId).value = '';
	if($(targetId+"_CLR")){
		$(targetId+"_CLR").style.display = "none";
	}else{
		alert(targetId+"_CLR が見つかりません。");
	}
}

//===================================
//クリアイメージクリック
//===================================
function clickClearImage(element,img){
	var i;
	for(i = 0; i < element.length; i ++){
		if(element[i].type=='text' || element[i].type=='hidden'){
			element[i].value = '';
		}else if(element[i].tagName == 'DIV' || element[i].tagName == 'SPAN'){
			element[i].innerHTML = '';
		}
	}
	if(img){
		img.style.display = 'none';
	}
}

//===================================
//ラジオのチェックされている値をリターン
//引数1：対象ラジオボタンNAME
//===================================
function getCheckVal(name){
	var radios = document.getElementsByName(name);
	var i;
	for(i = 0; i < radios.length; i ++){
		if(radios[i].checked){
			return radios[i].value;
		}
	}
	return;
}

//===================================
//チェックボックス変更
//===================================
function checkAll(checked, elements){
	for(i = 0; i < elements.length; i ++){
		elements[i].checked = checked;
	}
}

//===================================
//ダミー
//===================================
function href(){}

//======================================
//マウスマスク設定
//======================================
var mouseMask;
function setMouseMask(){
	mouseMask = document.createElement("div");
	mouseMask.className = 'mouseMask';
	mouseMask.id = 'mouseMask';
	document.body.appendChild(mouseMask);
	Event.observe(window.document, "mousedown", displayXY, false);
	Event.observe(window.document, "mousemove", displayXY, false);
}
function displayXY(event){
	mouseMask.style.left = (Event.pointerX(event)-5)+'px';
	mouseMask.style.top = (Event.pointerY(event)-5)+'px';
}

//======================================
//エレメント表示
//======================================
var dropAreaCh_Element;
var dropAreaCh_Timer;
function dropAreaCh(mode, idName){
	//対象エレメント表示
	if(mode == 0 || mode == 1){
		if(dropAreaCh_Element && dropAreaCh_Element != document.getElementById(idName)){
			dropAreaCh_Element.style.display='none';
		}
		dropAreaCh_Element = null;
		clearTimeout(dropAreaCh_Timer);
		if(mode == 1){
			document.getElementById(idName).style.display='';
		}
		return;
	//対象エレメント非表示
	}else if(mode == 2){
		if(dropAreaCh_Element) return;
		dropAreaCh_Element = document.getElementById(idName);
		dropAreaCh_Timer = setTimeout(function(){
			if(dropAreaCh_Element){
				dropAreaCh_Element.style.display='none';
			}
		}
		,400);
	}
}

//======================================
//月のセレクト作成
//引数1:yyyy
//引数2:セットするエレメントID
//引数3:連動してセットする日にちエレメント
//======================================
var LIMIT_DATE_S;
var LIMIT_DATE_E;
function getMonthSelect(yy, element, ddElement, limit_date){
	//alert(yy+","+element+","+ddElement+","+limit_date);
	var limit_date_s = LIMIT_DATE_S;
	var limit_date_e = LIMIT_DATE_E;
	if(limit_date){
		limit_date_s = limit_date[0];
		limit_date_e = limit_date[1];
	}
	if(!yy || !element) return;
	var mmIndex = element.value;
	var limitYYYYMM_S = limit_date_s+'';
	limitYYYYMM_S = limitYYYYMM_S.substr(0,6);
	var limitYYYYMM_E = limit_date_e+'';
	limitYYYYMM_E = limitYYYYMM_E.substr(0,6);
	var C = 0;
	var selVal;
	for(i = 0; i < 12; i ++) element.options[0] = null;//初期化
	for(i = 0; i < 12; i ++){
		selVal = String(yy)+AddStrL((i+1),2,'0');
		if(selVal >= limitYYYYMM_S && selVal <= limitYYYYMM_E){
			element.options[C] = new Option((i+1),(i+1));
			if(mmIndex==(i+1)) element.selectedIndex = C;
			C++;
		}
	}
	if(ddElement){
		getDaySelect(yy, element.value, ddElement, limit_date);
	}
}

//======================================
//日にちのセレクト作成
//引数1:yyyy
//引数2:mm
//引数3:セットするエレメント
//======================================
function getDaySelect(yy, mm, element, limit_date){
	var limit_date_s = LIMIT_DATE_S;
	var limit_date_e = LIMIT_DATE_E;
	if(limit_date){
		limit_date_s = limit_date[0];
		limit_date_e = limit_date[1];
	}
	
	if(!yy || !mm || !element) return;
	var ddIndex = element.value;
	var ddCount = getDayCount(yy,mm);
	var limitYYYYMM_S = limit_date_s+'';
	var limitYYYYMM_E = limit_date_e+'';
	var C = 0;
	for(i = 0; i < 31; i ++) element.options[0] = null;//初期化
	for(i = 0; i < ddCount; i ++){
		selVal = String(yy)+AddStrL(mm,2,'0')+AddStrL((i+1),2,'0');
		if(selVal >= limitYYYYMM_S && selVal <= limitYYYYMM_E){
			element.options[C] = new Option((i+1),(i+1));
			if(ddIndex==(i+1)) element.selectedIndex = C;
			C++;
		}
	}
	if(element.options[0]){
		var weekC = new Date(yy,mm-1,element.options[0].value).getDay();
		for(i = 0; i < element.options.length; i ++){
			if(weekC == 0){
				element.options[i].className='selSunday';
				weekC ++;
			}else if(weekC == 6){
				element.options[i].className='selSaturday';
				weekC = 0;
			}else{
				weekC ++;
			}
		}
	}
}

//======================================
//引数の年、月から日付数をリターン
//======================================
function getDayCount(year,month){
	month = month -1;
	dCountArray = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	dCount = dCountArray[month];
	//閏年判定
	if(month == 1){
		if(((year%4==0) && (year%100!=0)) || year%400==0){
			dCount = dCount+1;
		}
	}
	return dCount;
}

//======================================
//セレクトボックス作成
//======================================
function setSelect(id,val,opt,css){
	if($(id)){
		var element = $(id);
//		var oldVal = element.options[element.selectedIndex].value;
		var i;
		if(element.type == "select-one"){
			var C = element.options.length;
			for(i = 0; i < C; i ++) element.options[0] = null;	//初期化
			
			C = opt.length;
			for(i = 0; i < C; i ++){
				element.options[i] = new Option(opt[i],val[i]);
				if(css) element.options[i].className=css[i];
//				if(val[i] == oldVal) element.selectedIndex = i;
			}
			
		}else{
			alert("function setSelect(id,value,option,class)\n\n["+id+"] type is not [select-one]");
		}
	}else{
		alert("function setSelect(id,value,option,class)\n\n["+id+"] is not available...");
	}
	return;
}

//======================================
//値のコピー
//element1の値がNULLの時element2の値をコピー
//======================================
function setCopy(fromElement, toElement){
	if(!fromElement || !toElement) return;
	
	if(fromElement.type == "checkbox"){
		toElement.checked = fromElement.checked;
	}else if(fromElement.type == "text"){
		toElement.value = fromElement.value;
	}
	return;
}


//======================================
//フォーカス時値コピー
//element1の値がNULLの時element2の値をコピー
//======================================
function setFocusCopy(element1, element2){
	if(!element1.value){
		var length = element1.maxLength;
		if(length){
			element1.value = element2.value.substr(0,length);
		}else{
			element1.value = element2.value;
		}
	}
	return;
}

var AppHistoryId=null;
function showAppHistory(id){
	hideAppHistory();
	if($(id)){
		AppHistoryId = $(id);
		if(AppHistoryId.innerHTML){
			AppHistoryId.style.display='';
			if(!AppHistoryId.style.left){
				var ret = Element.getDimensions(AppHistoryId); // エレメントのサイズを持つオブジェクトをretに入れる 
				AppHistoryId.style.left = (ret.width*-1)+30+'px';
			}
		}
	}
}
