
/*

imageviewer

*/
var IMG_DEFWIDTH = 640; //640; // 731
var IMG_DEFHEIGHT = 427; //480; // 548

var MAG_WHEEL = 50;
var MAG_CLICK = 100;
var MAG_LIMIT_LOW = 50;
var MAG_LIMIT_HIGH = 6000;

var org_width = null;
var org_height = null;
var image_width = IMG_DEFWIDTH;  // 画像サイズ（幅）
var image_height = IMG_DEFHEIGHT;  // 画像サイズ（高さ）

// 初期化
function setInitImage(img_src) {

  var img = getLayerObject('img');

  if( org_width != null && org_height != null) {
    img.width = org_width;
    img.height = org_height;
  }
  inframe.style.left = (IMG_DEFWIDTH/2) - (img.width/2) + 'px';
  inframe.style.top  = (IMG_DEFHEIGHT/2) - (img.height/2) + 'px';
}

// 画面ロード時の画像ロード
function setDeafultImage(img_src) {

  inframe = getLayerObject('inframe');
  var img = getLayerObject('img');
  if( img ) {
  	inframe.removeChild(img);
  }
  img = document.createElement('img');
  img.id = 'img';

  var date = new Date();
  img.src = img_src +  "?" + date.getTime();

  if( org_width != null && org_height != null) {
    img.width = org_width;
    img.height = org_height;
  }

  img.onload = function() { 

  var w = img.width;
  var h = img.height;

  // アスペクト比（縦横比）を求める
  if( img.width > IMG_DEFWIDTH || img.height > IMG_DEFHEIGHT ) {
  asp = w / h 
  if(asp < 0 ){
      // 縦長
      img.width = 1 * IMG_DEFWIDTH;
      img.height = Math.ceil(asp * IMG_DEFWIDTH);
      
      w = img.width;
      h = img.height;
      if( img.height > IMG_DEFHEIGHT ) {
          asp = w / h;
          img.width = Math.ceil(asp * IMG_DEFHEIGHT);
          img.height = 1 * IMG_DEFHEIGHT;
      } 
  } else {
      // 横長
      img.width = Math.ceil(asp * IMG_DEFHEIGHT);
      img.height = 1 * IMG_DEFHEIGHT;

      w = img.width;
      h = img.height;
      if( img.width > IMG_DEFWIDTH ) {
          asp = h / w;
          img.width = 1 * IMG_DEFWIDTH ;
          img.height = Math.ceil(asp * IMG_DEFWIDTH);
      } 
  }

  }

  org_width = img.width;
  org_height = img.height;

  var difWidth = image_width - img.width;
  var difHeight = image_height - img.height;

  inframe.style.left = (IMG_DEFWIDTH/2) - (img.width/2) + 'px';
  inframe.style.top  = (IMG_DEFHEIGHT/2) - (img.height/2) + 'px';

  inframe.appendChild(img);
  } 
}

function setListeners(e) {
    
    outframe = getLayerObject('outframe');
    // 画像初期表示
    //setDeafultImage();
    
    
    // イベントハンドリング - ドラッグによる画像移動
    addListener(outframe, 'mousedown', dragStart, false);
    
    // イベントハンドリング - コンテキストメニュー表示禁止
    addListener(outframe, 'contextmenu', unenableMenu, false);
    addListener(outframe, 'mouseout', enableMenu, false);
    
    // イベントハンドリング - ダブルクリックによる画像移動
    addListener(outframe, 'dblclick', moveImage, false);
    
    // イベントハンドリング - マウスホイールを使用した画像拡大、縮小
    addMouseWheelListener(outframe, resizeImage, false);
    
}

// 画像表示用スクリプト開始
//グローバル変数の定義
var top_dif;
var left_dif;
var outframe_pos;

var inframe;
var outframe;

var image_left_offset = 0;  // 最初に表示する画像の位置オフセット
var image_top_offset  = 0;  // 最初に表示する画像の位置オフセット

function resizeImage(e) {
    
    var delta;
    if(window.event && window.event.wheelDelta) {
        delta = window.event.wheelDelta;
    } else if(e.wheelDalta) {
        delta = e.wheelDelta;
    } else {
        delta = e.detail;
        delta = delta * -1;
    }
    
    var img = getLayerObject('img');
    var w = img.width;
    var h = img.height;
    var wa;
    var ha;
    
    // アスペクト比（縦横比）を求める
    var asp = w / h ;
    if(asp < 0 ){
    	wa = 1;
    	ha = asp;
    } else {
    	wa = asp;
    	ha = 1;
    }
    
    // 倍率による拡大、縮小
    var re_w;
    var re_h;
    if ( delta < 0 ) {
    	re_w = w + (wa * 1 * MAG_WHEEL);
    	re_h = h + (ha * 1 * MAG_WHEEL);
    } else {
    	re_w = w + (wa * -1 * MAG_WHEEL);
    	re_h = h + (ha * -1 * MAG_WHEEL);
    }
    if ( re_w < MAG_LIMIT_LOW || re_h < MAG_LIMIT_LOW || re_w > MAG_LIMIT_HIGH || re_h > MAG_LIMIT_HIGH ) {
    	stopDefaultAndPropagation(e);
    	return false;
    }
    
    outframe_pos = getElemPos(outframe);
    var inframe_pos = getElemPos(inframe);
    var mouse_x;
    var mouse_y;
    if(e.wheelDalta && e.clientX && e.clientY) {
        mouse_x = e.clientX;
        mouse_y = e.clientY;
    } else {
        mouse_x = outframe_pos.x + Math.round( outframe.offsetWidth / 2 );
        mouse_y = outframe_pos.y + Math.round( outframe.offsetHeight / 2 );
    }
    var x_rate = Math.abs(mouse_x - inframe_pos.x) / w;
    var y_rate = Math.abs(mouse_y - inframe_pos.y) / h;
    var left_diff = mouse_x - Math.round( inframe_pos.x + ( re_w * x_rate ) );
    var top_diff  = mouse_y - Math.round( inframe_pos.y + ( re_h * y_rate ) );
    var now_left = parseInt(inframe.style.left);
    var now_top  = parseInt(inframe.style.top);

    inframe.style.left = (now_left + left_diff) + 'px';
    inframe.style.top  = (now_top  + top_diff)  + 'px';
    
    img.width = re_w;
    img.height = re_h;
    
    
    stopDefaultAndPropagation(e);
    return false;
}


function stopDefaultAndPropagation(e) {
    
    if(e.stopPropagation) {
        e.stopPropagation();
    }
    if(window.event) {
        window.event.cancelBubble = true;
    }
    
    if(e.preventDefault) {
        e.preventDefault();
    }
    if(window.event) {
        window.event.returnValue = false;
    }
}


function dragStart(e) {
    
    if ( !rightClickEvent(e) ) {
    	return false;
    }
    
    outframe_pos = getElemPos(outframe);
    
    var pos = getElemPos(inframe);
    
    left_dif = e.clientX - pos.x;
    top_dif = e.clientY - pos.y;
    
    addListener(document, 'mousemove', moveElem, false);
    addListener(document, 'mouseup', dragEnd, false);
    
    stopDefaultAndPropagation(e);
    return false;
}


function dragEnd(e) {

    if(e.preventDefault) e.preventDefault();
    
    removeListener(document, 'mousemove', moveElem, false);
    removeListener(document, 'mouseup', dragEnd, false);
    
    stopDefaultAndPropagation(e);
    
    return false;
}

  function getLEFT(layName){
    if(document.all)                     //e4,e5,e6,o6用
      return document.all(layName).style.pixelLeft
    else if(document.getElementById)     //n6,m1用
      return (document.getElementById(layName).style.left!="")
       ?parseInt(document.getElementById(layName).style.left):""
    else if(document.layers)             //n4用
      return document.layers[layName].left 
    else return ""
  }
  
  function getTOP(layName){
    if(document.all)                          //e4,e5,e6,o6用
      return document.all(layName).style.pixelTop
    else if(document.getElementById){          //n6,m1用
      return (document.getElementById(layName).style.top!="")
       ?parseInt(document.getElementById(layName).style.top):""
    } else if(document.layers)                  //n4用
      return document.layers[layName].top 
    else return ""
  }
  function getMouseX(e){
    if(navigator.userAgent.search(
             "Opera(\ |\/)6") != -1 )   //o6用
        return e.clientX
    else if(document.all)               //e4,e5,e6用
        return document.body.scrollLeft+e.clientX
    else if(document.layers ||
            document.getElementById)    //n4,n6,n7,m1,o7,s1用
        return e.pageX
  }
  function getMouseY(e){

    if(navigator.userAgent.search(
             "Opera(\ |\/)6") != -1 ) {   //o6用
        return e.clientY
    } else if(document.all) {              //e4,e5,e6用
        return document.body.scrollTop+e.clientY;
    } else if(document.layers ||
            document.getElementById) {   //n4,n6,n7,m1,o7,s1用
        return e.pageY
    }
  }
function moveImage(e) {
	var clientX = getMouseX(e);
	var clientY = getMouseY(e);
	
	outframe_pos = getElemPos(outframe);
	inframe_pos = getElemPos(inframe);
	
    var now_left = getLEFT("inframe");
    var now_top  = getTOP("inframe");
    
    if ( IMG_DEFWIDTH / 2 > clientX - outframe_pos.x){
    	inframe.style.left = (now_left + ( IMG_DEFWIDTH / 2 - clientX + outframe_pos.x) + 'px');
    } else {
    	inframe.style.left = (now_left - ( clientX - outframe_pos.x - IMG_DEFWIDTH / 2) + 'px');
    }
    
    if ( IMG_DEFHEIGHT / 2 < clientY - outframe_pos.y) {
    	inframe.style.top = (now_top + ( IMG_DEFHEIGHT / 2 - clientY + outframe_pos.y) + 'px');
    } else {
    	inframe.style.top = (now_top - ( clientY - outframe_pos.y - IMG_DEFHEIGHT / 2) + 'px');
    }
    
}

function moveElem(e) {
    
    if(
        (navigator.appName == 'Netscape' && navigator.userAgent.indexOf("Safari") < 0 ) ||
        navigator.userAgent.indexOf("Opera") >= 0
    ) {
    	
        if(
            e.clientX >= window.innerWidth - 20 || e.clientX <= 10 ||
            e.clientY >= window.innerHeight - 30 || e.clientY <= 10
        ) {
            dragEnd(e);
            return false;
        }
    }
    
    inframe.style.left = (e.clientX - outframe_pos.x - left_dif) + 'px';
    inframe.style.top  = (e.clientY - outframe_pos.y - top_dif)  + 'px';
    
    stopDefaultAndPropagation(e);
    return false;
}

function rightClickEvent(e){
	if(document.all || document.getElementById){
		if(e.button == 2){
			return false;
		}
	}else if(document.layers){
		if(e.which == 3){
			return false;
		}
	}
	
	return true;
}

function getElemPos(elem) {
    var obj = new Object();
    obj.x = elem.offsetLeft;
    obj.y = elem.offsetTop;
    obj.width = elem.offsetWidth;
    obj.height = elem.offsetHeight;
    
    while(elem.offsetParent) {
       elem = elem.offsetParent;
       obj.x += elem.offsetLeft;
       obj.y += elem.offsetTop;
       obj.width += elem.offsetWidth;
       obj.height += elem.offsetHeight;
    }
    
    return obj;
}

function getTargetNode(e) {
    
    var target_node;
    if(e.target) {
      target_node = e.target;
    } else {
      target_node = e.srcElement;
    }
    // Safari用
    if (target_node.nodeType == 3) {
        target_node = target_node.parentNode;
    }
    return target_node;
}
function removeListeners(e) {
    outframe = getLayerObject('outframe');

    // イベントハンドリング - ドラッグによる画像移動
    removeListener(outframe, 'mousedown', dragStart, false);

    // イベントハンドリング - コンテキストメニュー表示禁止
    removeListener(outframe, 'contextmenu', unenableMenu, false);
    removeListener(outframe, 'mouseout', enableMenu, false);

    // イベントハンドリング - ダブルクリックによる画像移動
    removeListener(outframe, 'dblclick', moveImage, false);

    // イベントハンドリング - マウスホイールを使用した画像拡大、縮小
    removeMouseWheelListener(outframe, resizeImage, false);
}

function removeListener(elem, eventType, func, cap) {
    if(elem.removeEventListener) {
        elem.removeEventListener(eventType, func, cap);
    } else if(elem.detachEvent) {
        elem.detachEvent('on' + eventType, func);
    }
}

function alertMenu(e) {

	//資料種別によりメニュー表示判断を行う
	if(document.getElementById('downLoadFlg').value == 'true'){
		return true;
	}else{
		return false;
	}
}

function dispMenu(e) {
	return true;
}

function unenableMenu(e) {
	document.oncontextmenu = alertMenu;
}

function enableMenu(e) {
	document.oncontextmenu = dispMenu;
}

function removeMouseWheelListener(elem, func, cap) {
    if(elem.removeEventListener) {
        elem.removeEventListener('DOMMouseScroll', func, cap); 
        elem.removeEventListener('mousewheel', func, cap);
    } else if(elem.detachEvent) {
        elem.detachEvent("onmousewheel", func);
    }
}

function addMouseWheelListener(elem, func, cap) {
    if(elem.addEventListener) {
        elem.addEventListener('DOMMouseScroll', func, cap); 
        elem.addEventListener('mousewheel', func, cap);
    } else if(elem.attachEvent) {
        elem.attachEvent("onmousewheel", func);
    }
}

function addListener(elem, eventType, func, cap) {
    if(elem.addEventListener) {
        elem.addEventListener(eventType, func, cap);
    } else if(elem.attachEvent) {
        elem.attachEvent('on' + eventType, func);
    } else {
        alert('ご利用のブラウザーはサポートされていません。');
        return false;
    }
}

// 拡大-縮小アクション
function resize(setFlg) {
    
    var img = getLayerObject('img');
    var w = img.width;
    var h = img.height;
    var wa;
    var ha;
    
    // 縦横比を求める
    var asp = w / h ;
    if(asp < 0 ){
    	wa = 1;
    	ha = asp;
    } else {
    	wa = asp;
    	ha = 1;
    }
    
    // 倍率による拡大、縮小
    var re_w = w + (wa * setFlg * MAG_CLICK);
    var re_h = h + (ha * setFlg * MAG_CLICK);
    if ( re_w < MAG_LIMIT_LOW || re_h < MAG_LIMIT_LOW || re_w > MAG_LIMIT_HIGH || re_h > MAG_LIMIT_HIGH ) {
    	return;
    }
    
    outframe_pos = getElemPos(outframe);
    var inframe_pos = getElemPos(inframe);

    mouse_x = outframe_pos.x + Math.round( outframe.offsetWidth / 2 );
    mouse_y = outframe_pos.y + Math.round( outframe.offsetHeight / 2 );
    
    var x_rate = Math.abs(mouse_x - inframe_pos.x) / w;
    var y_rate = Math.abs(mouse_y - inframe_pos.y) / h;
    var left_diff = mouse_x - Math.round( inframe_pos.x + ( re_w * x_rate ) );
    var top_diff  = mouse_y - Math.round( inframe_pos.y + ( re_h * y_rate ) );
    
    var now_left = parseInt(inframe.style.left);
    var now_top  = parseInt(inframe.style.top);
    
    inframe.style.left = (now_left + left_diff) + 'px';
    inframe.style.top  = (now_top  + top_diff)  + 'px';
    
    img.width = re_w;
    img.height = re_h;
}



function getLayerObject(id) {
	if(document.getElementById)         //e5,e6,n6,n7,m1,o6,o7,s1用
      return document.getElementById(id);
    else if(document.all)               //e4用
      return document.all(id);
    else if(document.layers)            //n4用
      return document.layers[id];
}

function BeforeAppear(_xid){
	//if($(_xid)) {new Effect.Appear(_xid,{duration:0.2});}else {}
	if($(_xid)) $(_xid).style.display = 'block';
}
function BeforeHide(_xid) {
                //if($(_xid)) {new Effect.Fade(_xid,{duration:0.1});}else {}
                if($(_xid)) $(_xid).style.display = 'none';
        }

///////////////////////////////////////////////////////////////////////////////
//read cookie value
///////////////////////////////////////////////////////////////////////////////
function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return -1;
}

///////////////////////////////////////////////////////////////////////////////
//write cookie value
///////////////////////////////////////////////////////////////////////////////
function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function listOpenStatus(id,xstatus) {
	// 全体リスト
	// id//on/off スペース区切り 

	var xset_str = id + '//'+xstatus;

	var xkikanlist = readCookie('KIKAN_LIST_SEL');

	var set_xkikanlist = '';

	if(xkikanlist == -1) {
		set_xkikanlist = xset_str;
	} else {
		tmp_id_on = id+'//on' ;
		tmp_id_off = id+'//off' ;

		if(xkikanlist.indexOf(tmp_id_on) != -1 ) {
			set_xkikanlist = xkikanlist.sub(tmp_id_on,xset_str);
		} else if(xkikanlist.indexOf(tmp_id_off) != -1 ) {
			set_xkikanlist = xkikanlist.sub(tmp_id_off,xset_str);
		} else {
			set_xkikanlist = xkikanlist + ' ' + xset_str;
		}
	}

	createCookie('KIKAN_LIST_SEL',set_xkikanlist);
}

function read_KIKAN_LIST_SEL() {
	var xkikanlist = readCookie('KIKAN_LIST_SEL');
	//var _tmp_tmp = xkikanlist.strip();
	xkikanlist_w = $w(xkikanlist);
	var tmp_value = '';

	xkikanlist_w.each(function(value,index){
		tmp_value = value.split('//');
	if(tmp_value.size() == 2){
		var xid = tmp_value[0];
		if($(xid)) {
			if(tmp_value[1] == 'on') {
				$(xid).style.display = '';
				if($('check_view_field')){
					if($('check_view_field').style.display == 'none'){
						$('check_view_field').style.display = '';
					}
				}
			} else {
				$(xid).style.display = 'none';
			}
			
		}
	}

	}); 

}

//年代範囲チェック
function YearCheck( year ){
	if( year.match(/[^０-１^２-９^0-9]/)!=null ) {
        	return false;
	}
	// 全角数字を半角数字に変換する。
	        outstr = year.replace(/０/g,"0");
                outstr = outstr.replace(/１/g,"1");
                outstr = outstr.replace(/２/g,"2");
                outstr = outstr.replace(/３/g,"3");
                outstr = outstr.replace(/４/g,"4");
                outstr = outstr.replace(/５/g,"5");
                outstr = outstr.replace(/６/g,"6");
                outstr = outstr.replace(/７/g,"7");
                outstr = outstr.replace(/８/g,"8");
                outstr = outstr.replace(/９/g,"9");

	year = outstr;
	//桁数が足りない場合、0を付与
	year = setstr(year,4,"0");

	return year;
}
//桁数を埋める
function setstr( str, len, padval ){
                ret = "";
                if( str != null ) {
                set = len - str.length;
                if( set > 0 ){
                        for( i=0; i < set; i++ ) ret += padval;
                }

                ret += str;
                }
                return ret;
        }

