var words = new Array(
	
	'恋情|恋の悩み|初恋|はかない恋|理想の恋|恋|は',
	
	'博愛|愛情|家族愛|愛着|愛嬌|愛',
	'優美|美徳|美',
	'葉|草|ハ',
	
	'変化|自慢|嫉妬|満足|新鮮',
	'おしゃれ|やさしさ|誇り|魅力',
	'仮装|約束|気取り|平静',//アサガオ
	'思い出',//エーデルワイス
	'熱心|純粋|情熱|競争相手|感動|若い娘|欲望|傷心',//カーネーション
	'前進|希望|悲しみ|我慢強さ',//ガーベラ
	'感謝|親切|無意識|感激',//カスミソウ
	'喜び|元気|望み',
	'すべてよし|知恵|尊敬',
	'官能的|素直|無邪気|温和|清純',
	'別離|青春|デリケート|門出',
	'片思い|自尊心|欲|うぬぼれ|神秘',
	'思わせぶり|軽率|歌声|田舎',
	'軽さ|自由|声明|気まぐれ|浮気',
	'名誉|名声|慈悲|敏感|正直|告白|誘惑',
	
	//'鋭敏|勇敢|伊達男|丁寧|器用',
	
	'悲哀|勝負|競技|運動',
	'区別|化粧|情熱|夢中|熱狂|包容力|几帳面',
	'時間|度胸|勇気|哀借|悲嘆|哀歌',
	'沈黙|疑惑|不信|豊富|承認|期待',
	'予言|真実|誠実',
	'栄華|華麗|優雅|威厳|移り気|不安定|気紛れ'

);

var safari;
if (navigator.userAgent.indexOf("Safari") > -1){
	safari=true;
}

parseCSS();

var time= (new Date()).getTime();

var blogpartURL="http://www.kotobana.jp/blog/blogpart.swf?noCash="+time;

var blogpart='<div id="flowerWrap">'
	blogpart+='<object id="flowerBanner" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" '
	blogpart+='codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="160" height="275" ALIGN="">'
	blogpart+='<param name="movie" value="'+blogpartURL+'">'
	blogpart+='<param name="quality" value="high">'
	blogpart+='<param name="allowScriptAccess" value="always">'
	blogpart+='<param name="wmode" value="transparent">'
	blogpart+='<param name="flashvars" value="">'
	blogpart+='<embed name="flowerBanner" src="'+blogpartURL+'" quality="high" bgcolor="#ffffff" width="160" height="275" '
	blogpart+='type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" allowScriptAccess="always" wmode="transparent" flashvars="">'
	blogpart+='</embed></object></div>'

document.write(blogpart);

var myURL="http://www.kotobana.jp/blog/index.swf?noCash="+time;

var sorce='<object classid="clsid:D27CDB6E-AE6D-11CF-96B8-444553540000" id="kotobana" '
	sorce+='codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,19,0" border="0" width="100%" height="100%">'
	sorce+='<param name="movie" value="' + myURL+'" />'
	sorce+='<param name="quality" value="High">'
	sorce+='<param name="allowScriptAccess" value="always" />'
	sorce+='<param name="wmode" value="transparent">'
	sorce+='<embed src="' + myURL + '" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" '
	sorce+='name="kotobana" width="100%" height="100%" allowScriptAccess="always" quality="High" wmode="transparent"></embed>'	
	sorce+='</object>';

/*
*
*	flashとjavascriptの通信
*
*/

var jsReady = false;
var flashReady = false;

function isReady(){return jsReady;}

function isflashReady(){flashReady=true;}

function thisMovie(movieName) {
	if (navigator.appName.indexOf("Microsoft") != -1) {
		return window[movieName];
	} else {
		return document[movieName];
	}
}


function bottomScroll() {
	
	if(flashReady){
		clearInterval(myID);
		thisMovie("kotobana").bottomScroll(flaArr,document.body.clientHeight);
	}

}



function sendToJavaScript(value) {scrollTo(0,Math.floor(value));}




function animationEnd(){
	
	hogeArr=[];
	flaArr=[];
	debug.innerHTML="animationEnd";
	
}


var oldPos=0;
var newPos=0;

function enterframe(){

	if(safari){
		newPos=document.body.scrollTop;
	}else{
		newPos=document.documentElement.scrollTop;
	}
	
	if(newPos!=oldPos){
		
		thisMovie("kotobana").posYChange(newPos);

	}
	
	oldPos=newPos;
}

var y = 0;           // 移動距離初期値
  // 移動距離限界値 (スクロールするページの縦幅)
var timerID;// タイマ変数初期化
var timerID2;
var move = 6;      // 移動量 (値が小さいほど滑らかにスクロールします)
var speed = 30;    // 移動スピード (小さい値ほど早くなります)

// ページスクロールする関数

function scrollTop() {
	
	clearTimeout(timerID);
	
	enterframe();

  	if (limit > 0) {
		
		if(newPos>6){
			scrollTo(0, limit-=move);
		}else{
			scrollTo(0, limit-=newPos);
		}
		
		timerID = setInterval("scrollTop()", speed);
	
	}else{
		//alert("ue");
		timerID2 = setInterval("enterframe()", speed);
	}

}

function closeFlower() {
	document.body.removeChild(hanakotobaDiv);
}

/*
*
*	ここからブログ解析
*
*/ 

/*
*	HTMLの全要素をぶち込む
*/

var posST;

function checkStartPos(){
	if(safari){
		posST=document.body.scrollTop;
	}else{
		posST=document.documentElement.scrollTop;
	}
	
	return posST;
}


function getAllNodes( parent ){
	var depth = 1;
	var a = new Array();
	while(parent && depth>0){
		a.push(parent);
		if(parent.hasChildNodes()){
			parent = parent.childNodes[0];
			depth++;
			continue;
		}else if(parent.nextSibling){
			parent = parent.nextSibling;
		}else{
			while(depth > 0){
				parent = parent.parentNode;
				depth--;
				if (parent && parent.nextSibling){
					parent = parent.nextSibling;
					break;
				}
			}
		}
	}
	
	return a;
	
}

/*
*	CSS作成
*/

function parseCSS(){
	if(!document.all){
		//firefox
		var css = document.createElement('style');
		css.type = "text/css";
		css.appendChild(document.createTextNode("#hanakotoba{position:fixed;top:0px;left:0px;width:100%;height:100%;z-index:400;}"));
		css.appendChild(document.createTextNode("#flowerWrap{position:relative;z-index:300;text-align:center;}"));
		css.appendChild(document.createTextNode(".hackspan{background:#e1f6b2;color:#719524;line-height:1.2;}"));
		var head = document.getElementsByTagName("head");
		head[0].appendChild(css);
		
	}else{
		//ie
		var h=document.documentElement.clientHeight;
		var st = document.styleSheets[0];
		
		
		st.addRule("#hanakotoba","{position:fixed;_position:absolute;top:0px;_top:expression(documentElement.scrollTop  +'px');left:0;width:100%;height:100%;_height:"+h+"px;"+"z-index:400;}");
		st.addRule("#flowerWrap","{position:relative;z-index:300;text-align:center;}");
		st.addRule(".hackspan","{background:#e1f6b2;color:#719524;line-height:1.2;}");
	}
}

var hogeArr=[];
var flaArr=[];

function analysisHTML(){
	
	var bo = document.getElementsByTagName('body')[0].childNodes[0];
	
	var nodeArr=getAllNodes(bo);
	
	var regText=words.join("|");
	
	for(var i=0;i<nodeArr.length;i++){
		
		var node=nodeArr[i];
		if(node.hasChildNodes()){
			
			if(node.childNodes[0].nodeType==3){

				var str=node.innerHTML;
				
				var str2=str;
				
				var pattern = new RegExp(regText, "g");
				var result;
				
				var objArr=[];
				
				while((result=pattern.exec(str2))!=null){
					
					var obj=new Object();
					obj.index=result.index;
					obj.lastIndex=result.index+result[0].length;
					objArr.push(obj);
					
				}

				var num=0;
				var str3=str;
				var re_str="";
				var oldlast=0;
				
				while(num<objArr.length){
					
					var index=objArr[num].index;
					var lastIndex=objArr[num].lastIndex;
					
					if(num==0){
						if(index!=0){
							re_str+=str3.substring(0,index);
							re_str+='<span class="hackspan">'+str3.substring(index,lastIndex)+'</span>';
						}else{
							re_str+='<span class="hackspan">'+str3.substring(index,lastIndex)+'</span>';
						}
						if(num==objArr.length-1){							
							if(lastIndex!=str3.length){
								re_str+=str3.substring(lastIndex,str3.length);
							}	
						}
					}else if(num==objArr.length-1){
						re_str+=str3.substring(oldlast,index);
						re_str+='<span class="hackspan">'+str3.substring(index,lastIndex)+'</span>';		
						
						if(lastIndex!=str3.length){
							re_str+=str3.substring(lastIndex,str3.length);
						}
					}else{
						re_str+=str3.substring(oldlast,index);
						re_str+='<span class="hackspan">'+str3.substring(index,lastIndex)+'</span>';
					}
					
					num++;
					oldlast=lastIndex;
				}
				
				if(objArr.length>0){
					node.innerHTML=re_str;
				}
			}
		}
	}
	
	var spanArr=document.getElementsByTagName("SPAN");
	
	var id=0;
	
	for(var i=0;i<spanArr.length;i++){
		
		var span=spanArr[i];
		
		if(span.className=="hackspan"){
			
			span.id="hogehoge_"+id;
			
			hogeArr.push(span);
			
			var pos=getPos(span);
			
			flaArr.push({id:id,type:span.innerHTML,posX:pos.x,posY:pos.y});
			id++;

		}
	}	
}

function getPos(elem){
	
	var hoge;
	var _x=0;
	var _y=0;
	
	hoge=elem;
	
	
	while(hoge){
		
		_x+=hoge.offsetLeft;
		_y+=hoge.offsetTop;
		
		if(String(hoge.parentNode.tagName)=="BODY"){
			break;
		}
		hoge=hoge.offsetParent;
	
	}
	
	return{ x:_x , y:_y }
	
}

function allDataToAS(){
	if(flashReady){
		clearInterval(myID);
		
		url=String(window.location);
		
		thisMovie("kotobana").allDataToAS(url,flaArr,document.body.clientHeight,checkStartPos());
	}
}

var myID;
var debug;

var limit; 

var url;

var hanakotobaDiv;

function startHanakotoba(){
	
	jsReady = true;
	
	if (typeof document.documentElement.style.maxHeight== "undefined") {
		var html = document.getElementsByTagName('HTML')[0];
		html.style.background="url(null) fixed";
	}
	
	debug=document.getElementById('debug');
	
	analysisHTML();
	

	hanakotobaDiv = document.createElement("DIV");
	hanakotobaDiv.id="hanakotoba";
	document.body.appendChild(hanakotobaDiv);
	
	hanakotobaDiv.innerHTML=sorce;
		
	limit=Number(document.body.clientHeight)-Number(document.documentElement.clientHeight);
	
	myID=setInterval("allDataToAS()", 10);
		
}