
function FloodManager(){
	
	var target_array;
	
	var downSpeed;
	var maxDownSpeed;
	var downFrms;
	
	var upSpeed;
	var maxUpSpeed;
	
	this.constructor = function(){
	}
	
	this.initialize = function(){
		if(this.target_array != undefined){
			var array = this.target_array;
			for(var i = 0;i < array.length; i++){
				var tmp_jqo = array[i];
				clearTimeout(tmp_jqo.ID);
				tmp_jqo.removeClass(nbp_relativeClassName);
				tmp_jqo.css('top',0);
				tmp_jqo.css('left',0);
			}
		}
		if(this.target2_array != undefined){
			var array = this.target2_array;
			for(var i = 0;i < array.length; i++){
				var tmp2_jqo = array[i];
				tmp2_jqo.css('overflow','hidden');
			}
		}
	}
	
	this.run = function(){
		
		this.isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
		this.isSafari = (navigator.userAgent.toLowerCase().indexOf("safari") != -1) ? true : false;
		if(this.isIE || this.isSafari){
			upSpeed = -0.5;
			maxUpSpeed = -10;
		}else{
			upSpeed = -2;
			maxUpSpeed = -20;
		}
		
		this.pageHeight = this.getPageSize().H;
		this.swfTopY = nbp_scrollY;
		this.swfBtmY = this.swfTopY + this.pageHeight;
		nbp_overSwf.run();
	}
	
	this.findTarget = function(){	

		this.target_array = new Array();
		this.target2_array = new Array();
		var owner = this;		
		
		//header
		var tmpHEAD_jqo = j$("#head");
		tmpHEAD_jqo.each(function(){
			var tmpHEAD_jqo = j$(this);
			var tmpHeight = tmpHEAD_jqo.height();
			var offset = tmpHEAD_jqo.offset();
			if(offset.top + tmpHeight > owner.swfTopY && offset.top < owner.swfBtmY){
				tmpHEAD_jqo.offsetX = offset.left;
				tmpHEAD_jqo.offsetY = offset.top;
				owner.target_array.push(tmpHEAD_jqo);
			}
		});
		
		//div
		var tmpDiv_jqo = j$("div").not("#" + nbp_mainDivId).not("#" + nbp_overDivId).not("#head");
		tmpDiv_jqo.each(function(){
			var targetDiv_jqo = j$(this);
			if(targetDiv_jqo.find("div").length == 0){
				//if(targetDiv_jqo.find("h2").length == 0){
					if(targetDiv_jqo.find("dt").length == 0){
						if(targetDiv_jqo.find("ul").length == 0){
							if(targetDiv_jqo.find("img").length == 0){
								var tmpHeight = targetDiv_jqo.height();
								var offset = targetDiv_jqo.offset();
								if(offset.top + tmpHeight > owner.swfTopY && offset.top < owner.swfBtmY){
									targetDiv_jqo.offsetX = offset.left;
									targetDiv_jqo.offsetY = offset.top;
									owner.target_array.push(targetDiv_jqo);
								}
							}
						}
					}
				//}
			}else{
				var overflow = targetDiv_jqo.css('overflow');
				if(overflow == "hidden"){
					owner.target2_array.push(targetDiv_jqo);
					targetDiv_jqo.css('overflow','visible');
				}
			}
		});
		
		//img
		var tmpImg_jqo = j$("img");
		tmpImg_jqo.each(function(){
			var targetImg_jqo = j$(this);
			var tmpHeight = targetImg_jqo.height();
			var offset = targetImg_jqo.offset();
			if(offset.top + tmpHeight > owner.swfTopY && offset.top < owner.swfBtmY){
				targetImg_jqo.offsetX = offset.left;
				targetImg_jqo.offsetY = offset.top;
				owner.target_array.push(targetImg_jqo);
			}
		});
		
		if(this.target_array.length < 40)
		{			
			//h2
			var tmpH2_jqo = j$("h2");
			tmpH2_jqo.each(function(){
				var tmpH2_jqo = j$(this);
				if(tmpH2_jqo.find("div").length == 0){
					if(tmpH2_jqo.find("dt").length == 0){
						if(tmpH2_jqo.find("ul").length == 0){
							if(tmpH2_jqo.find("img").length == 0){
								var offset = tmpH2_jqo.offset();
								if(offset.top > owner.swfTopY && offset.top < owner.swfBtmY){
									tmpH2_jqo.offsetX = offset.left;
									tmpH2_jqo.offsetY = offset.top;
									owner.target_array.push(tmpH2_jqo);
								}
							}
						}
					}
				}		
			});
		}
		
		if(this.target_array.length < 40)
		{			
			//dt
			var tmpDT_jqo = j$("dt");
			tmpDT_jqo.each(function(){
				var tmpDT_jqo = j$(this);
				if(tmpDT_jqo.find("div").length == 0){
					if(tmpDT_jqo.find("h2").length == 0){
						if(tmpDT_jqo.find("ul").length == 0){
							if(tmpDT_jqo.find("img").length == 0){
								var offset = tmpDT_jqo.offset();
								if(offset.top > owner.swfTopY && offset.top < owner.swfBtmY){
									tmpDT_jqo.offsetX = offset.left;
									tmpDT_jqo.offsetY = offset.top;
									owner.target_array.push(tmpDT_jqo);
								}
							}
						}
					}
				}		
			});
		}
		
		if(this.target_array.length < 40)
		{			
			//ul
			var tmpUl_jqo = j$("ul");
			tmpUl_jqo.each(function(){
				var tmpUl_jqo = j$(this);
				if(tmpUl_jqo.find("h2").length == 0){
					if(tmpUl_jqo.find("img").length == 0){
						var offset = tmpUl_jqo.offset();
						if(offset.top > owner.swfTopY && offset.top < owner.swfBtmY){
							tmpUl_jqo.offsetX = offset.left;
							tmpUl_jqo.offsetY = offset.top;
							owner.target_array.push(tmpUl_jqo);
						}
					}
				}
			});
			
		}
	}
	
	this.onMovieEnd = function(mode){
		this.findTarget();
		var array = this.target_array;
		for(var i = 0;i < array.length; i++){
			var tmp_jqo = array[i];
			tmp_jqo.posX = 0;
			tmp_jqo.posY = 0;
			tmp_jqo.addClass(nbp_relativeClassName);
			var delay = Math.floor(Math.random()*2000);
			this.moveWait(tmp_jqo,delay,true);
		}
	}
	
	this.moveWait = function(_obj,delay,flg){		
		var obj = _obj;
		if(flg){
			var self = this;
			obj.ID = setTimeout(function(){self.moveWait(obj,0,false)},delay);
		}else{
			var dx = Math.round((1-Math.random()*2)*2);
			var targetY = this.swfTopY - obj.offsetY - obj.height()/2;
			this.moveUp(obj,dx,0,targetY);
		}
	}
	
	this.moveUp = function(_obj,_dx,_dy,_targetY){
		var obj     = _obj;
		var dx      = _dx;
		var dy      = _dy;
		var targetY = _targetY;

		var currentY = obj.posY;
		
		dy += upSpeed;
		
		if(dy < maxUpSpeed) dy = maxUpSpeed;
		
		obj.posX = obj.posX + dx;
		obj.posY = currentY + dy;
		obj.css('left',obj.posX);
		obj.css('top',obj.posY);
		
		if(obj.posY < targetY){
			clearTimeout(obj.ID);
			this.wave(obj,targetY,0,6);
		}else{
			var self = this;
			obj.ID = setTimeout(function(){self.moveUp(obj,dx,dy,targetY)},30);
		}
	}
	
	this.wave = function(_obj,_baseY,_rot,_haba){
		var obj   = _obj;
		var baseY = _baseY;
		var rot   = _rot;
		var haba  = _haba;
		
		rot = rot + 10;
		if(rot > 360) rot -= 360;
	   
		rad = rot * Math.PI / 180;
		
		haba -= 0.2;
		if(haba < 1) haba = 1;
		
		sin = Math.sin(rad) * haba;
		var posY = Math.floor(sin*3) + baseY;
		obj.css('top',posY);
		
		var self = this;
		obj.ID = setTimeout(function(){self.wave(obj,baseY,rot,haba)},40);
	}
	
	this.waveStop = function(){
		var array = this.target_array;
		for(var i = 0;i < array.length; i++){
			var tmpImage_jqo = array[i];
			clearTimeout(tmpImage_jqo.ID);
		}
	}
	
	this.getPageSize=function(){
		var obj = new Object();
		var de = document.documentElement;
		obj.W = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
		obj.H = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight; 
		return obj;
	}
	
	this.toString = function(){
		return "FloodManager";
	}
	
	this.constructor();
	
}
