$(function(){ search_targets(); });

var TanemaruJump = {
	TARGET_TAGS: ['span','img'],
	visit_targets: [],
	footer_swf_id:'externalFooter',
	walking_swf_id:'externalTanemaru',
	before_select:undefined,
	RATIO:0.006,
	tanemaru_fly:false,
	footer_top:0,
	footer_left:0,
	footer_width:0,
	tanemaru:undefined,
	tanemaru_width:0,
	tanemaru_height:0

};

$(window).load( function() {
	var top_flash = document.getElementById('top_fla');
	var footer = undefined;
	var offset = undefined;
	if( top_flash ) {
		footer = $('#wrapp');
		offset = footer.offset();
		TanemaruJump.footer_top = offset.top + footer.height();
	}
	else {
		footer = $('#flaBox');
		offset = footer.offset();
		TanemaruJump.footer_top = offset.top;
		if(offset.top < 250) {
			footer = $('#externalFooter');
			offset = footer.offset();
			TanemaruJump.footer_top = offset.top;
		}
	}

	//global variable.
//	TanemaruJump.footer_top = offset.top + footer.height();
	TanemaruJump.footer_left = offset.left;
	TanemaruJump.footer_width = footer.width();
	TanemaruJump.tanemaru = $('#float_tanemaru');
	TanemaruJump.tanemaru_width = TanemaruJump.tanemaru.width();
	TanemaruJump.tanemaru_height = TanemaruJump.tanemaru.height();

});

function search_targets() {
	var TARGET_TAGS = TanemaruJump.TARGET_TAGS;
	for(var s=0,len_s=TARGET_TAGS.length;s<len_s;s++) {
		var elements = document.getElementsByTagName( TARGET_TAGS[s] );
		filter_tanemaru_vists(elements);
	}
}

function filter_tanemaru_vists(elements) {
	var visit_targets = TanemaruJump.visit_targets;
	for(var i=0,len=elements.length;i<len;i++) {
		var target = elements[i];
		var visit = target.getAttribute('tanemaruvisit');
		if( visit ) {
			if( visit == 'true' ) {
				visit_targets.push( target );
			}
		}
	}
	TanemaruJump.visit_targets = visit_targets;
}

function get_target() {
	var random;
	var visit_targets = TanemaruJump.visit_targets;
	var before_select = TanemaruJump.before_select;
	if(!visit_targets.length) return false;
	if(visit_targets.length == 0) return false;
	//前回と同じ目的地には行かない。
	do{
		random = Math.floor(Math.random() * visit_targets.length);
	}while( random == before_select );
	TanemaruJump.before_select = random;
	
	return visit_targets[ random ];
}

//flashとの連携関数
function startMove(x,y) {

	var target = get_target();
	if( !target ) {
		var nonstop = true;
		if(jQuery.browser.opera){
			nonstop = false;
		}
		document[TanemaruJump.walking_swf_id].stopMove(nonstop);
	}
	if( TanemaruJump.tanemaru_fly) return;
	TanemaruJump.tanemaru_fly = true;
	target = $(target);

	var RATIO = TanemaruJump.RATIO;
	var footer_top = TanemaruJump.footer_top;
	var footer_left = TanemaruJump.footer_left;
	var footer_width = TanemaruJump.footer_width;
	var tanemaru = TanemaruJump.tanemaru;
	var tanemaru_width = TanemaruJump.tanemaru_width;
	var tanemaru_height = TanemaruJump.tanemaru_height;

	var target_offset = target.offset();
	var target_top = target_offset.top - Math.floor(tanemaru_height / 3) * 2;
	var target_left = target_offset.left - Math.floor(tanemaru_width / 3) * 2;


	//距離から時間を導き移動速度を一定にする。
	var x_pos = x + footer_left;
	var y_pos = footer_top + y;

	var diff_v = y_pos - target_top;
	var diff_h = Math.abs(x_pos - target_left);
	var time = (diff_v * RATIO) + (diff_h * RATIO);

	tanemaru.css({
		top:y_pos,
		left:x_pos
//		zIndex:100
	});

	//move.
	var style = tanemaru[0].style;
	style.position = 'absolute';
	JSTweener.addTween(tanemaru[0].style,{
		time:time,
		transition:'linear',
		top: target_top,
		left: target_left,
		suffix:{
			top:'px',
			left:'px'
		},
		onUpdate:function($) {
			var win = jQuery(window);
			var scroll_top = win.scrollTop();
			var scroll_left = win.scrollLeft();
			var client_width = win.width();
			var offset = $.offset();
			var top = offset.top;
			if( top < (scroll_top + 20) ) {
				win.scrollTop(top - 20);
			}
			var left = offset.left;
			var to_left = true;
			if( target_left > left ) 
				to_left = false;
			if( left < (scroll_left + 20) && (to_left)) {
				win.scrollLeft(left - 20);
			}
			var right = left + tanemaru_width;
			if( right > (client_width - 30 ) && (!to_left)) {
				win.scrollLeft(right - client_width + 30)
			}
		},
		onUpdateParams:[tanemaru],
		onComplete:function() {
			var nonstop = true;
			if(jQuery.browser.opera){
				nonstop = false;
			}
//			document[walking_swf_id].stopMove(nonstop);
			document[TanemaruJump.walking_swf_id].stopMove(nonstop);
		}
	});
}
function deleteMe() {
	TanemaruJump.tanemaru_fly = false;
	var tanemaru = TanemaruJump.tanemaru;
	tanemaru.css({
		top:-80,
		left:-80
	});
}


