/* Script by: www.jtricks.com
 * Version: 20060303
 * Latest version:
 * www.jtricks.com/javascript/navigation/floating.html
 */

var fm_id='sideMenu';
wrapperH=document.getElementById("main").offsetHeight;
floatDivH=document.getElementById(fm_id).offsetHeight;

var footerH=200;
if(wrapperH-footerH>floatDivH){
document.getElementById(fm_id).style.position='absolute';
}

var fm_h=floatDivH+footerH;
var target_y = document.getElementById(fm_id).offsetTop;
var default_y=document.getElementById(fm_id).offsetTop;
var margin_y =0;
//---------------------------------------------

var has_inner = typeof(window.innerWidth) == 'number';
var has_element = document.documentElement && document.documentElement.clientWidth;


var floating_menu =
    document.getElementById
    ? document.getElementById(fm_id)
    : document.all
      ? document.all[fm_id]
      : document.layers[fm_id];

var fm_shift_x, fm_shift_y, fm_next_x, fm_next_y;

function move_menu(){
    if (document.layers){
       // floating_menu.left = fm_next_x;
        floating_menu.top = fm_next_y;
    }
    else{
       // floating_menu.style.left = fm_next_x + 'px';

		floating_menu.style.top = fm_next_y + 'px';
		
    }
}

function compute_shifts(){


    fm_shift_y = has_inner
        ? pageYOffset
        : has_element
          ? document.documentElement.scrollTop
          : document.body.scrollTop;
    if (target_y < 0)
        fm_shift_y += has_inner
            ? window.innerHeight
            : has_element
              ? document.documentElement.clientHeight
              : document.body.clientHeight;
}

function float_menu(){
    var step_x, step_y;
prev_fm_shift_y=fm_shift_y;
    compute_shifts();


    step_y = (fm_shift_y + target_y - fm_next_y-65) * .05;
		
    if (Math.abs(step_y) < .05)
       step_y = fm_shift_y + target_y - fm_next_y-65;

    if (Math.abs(step_y) > 0){//down
        //fm_next_x += step_x;
		
        fm_next_y += step_y;
		
		if(step_y&&fm_next_y>default_y){
				
				if(step_y>0){
					
					//document.getElementById("test").innerHTML=fm_shift_y+"&"+(wrapperH-floatDivH);
					if(fm_shift_y>(wrapperH-floatDivH)){//フッタより下に行かないように調整
						target_y=margin_y-fm_h;
						}else{
							target_y=margin_y;
							
							}
					}
				/*if(fm_shift_y<fm_h){//スライドする必要がない場合は初期位置に固定
					fm_next_y=default_y;
					}*/
				move_menu();
				
			}else{//上端まできたとき
					//document.documentElement.scrollTop=0;
					fm_next_y=default_y-margin_y;
//					target_y=default_y;
					target_y=0;
					
					}
				
    }

    setTimeout('float_menu()', 30);
};

compute_shifts();
if (document.layers){
    // Netscape 4 cannot perform init move
    // when the page loads.
    //fm_next_x = 0;
    fm_next_y = 0;
}
else{
   // fm_next_x = fm_shift_x + target_x;
    fm_next_y = fm_shift_y + target_y;
    move_menu();
}


float_menu();
