//------------------------------------------------
// グローバル変数宣言
//------------------------------------------------
var zindexNo = 100;									// 重ね順初期値
var hani = 40;											// 吸着範囲
var setTop = 150;										// セットエリアにセットする県パネルのY座標
var over_list = new Array();				// 重ねフラグ
var pref_list = new Array();				// 県リスト
var setPrefId = "";									// セットエリアにセットされている県ID
var plnext = 0;											//  pref_listの次のカウンタ
var dbgdata = "";										// デバッグデータ
var spno_list = new Array();				// 小さい県の番号（隣接の県にかぶらないように上位表示する）
var nowId = "pref1";								// 表示中コンテンツの県ID初期化
var oldNo = 0;

var pref_array = new Array();	
pref_array[0] = "";
pref_array[1] = "北海道";
pref_array[2] = "青森";
pref_array[3] = "岩手";
pref_array[4] = "宮城";
pref_array[5] = "秋田";
pref_array[6] = "山形";
pref_array[7] = "福島";
pref_array[8] = "茨城";
pref_array[9] = "栃木";
pref_array[10] = "群馬";
pref_array[11] = "埼玉";
pref_array[12] = "千葉";
pref_array[13] = "東京";
pref_array[14] = "神奈川";
pref_array[15] = "新潟";
pref_array[16] = "富山";
pref_array[17] = "石川";
pref_array[18] = "福井";
pref_array[19] = "山梨";
pref_array[20] = "長野";
pref_array[21] = "岐阜";
pref_array[22] = "静岡";
pref_array[23] = "愛知";
pref_array[24] = "三重";
pref_array[25] = "滋賀";
pref_array[26] = "京都";
pref_array[27] = "大阪";
pref_array[28] = "兵庫";
pref_array[29] = "奈良";
pref_array[30] = "和歌山";
pref_array[31] = "鳥取";
pref_array[32] = "島根";
pref_array[33] = "岡山";
pref_array[34] = "広島";
pref_array[35] = "山口";
pref_array[36] = "徳島";
pref_array[37] = "香川";
pref_array[38] = "愛媛";
pref_array[39] = "高知";
pref_array[40] = "福岡";
pref_array[41] = "佐賀";
pref_array[42] = "長崎";
pref_array[43] = "熊本";
pref_array[44] = "大分";
pref_array[45] = "宮崎";
pref_array[46] = "鹿児島";
pref_array[47] = "沖縄";


//------------------------------------------------
// 初期化1（47都道府県並び替え）
//------------------------------------------------
function initPref0(){

	var i;
	var ctl;
	for(i=0; i<47; i++){
		
		over_list[i] = 0;								// 全県「未」重ねとする（添え字は県No-1）
		pref_list[i] = "pref" + (i+1);	// 表示する県IDを登録（添え字は表示順）
	}
	pref_list = randArray(pref_list);	// 表示する県の順番をランダムに並び替え
	
	return pref_list[0].replace("pref", "");
}

//------------------------------------------------
// 初期化2（47都道府県表示）
//------------------------------------------------
function initPref(){

	var i;
	var ctl;
	
	//initPref0();
	/*
	for(i=0; i<47; i++){
		
		over_list[i] = 0;								// 全県「未」重ねとする（添え字は県No-1）
		pref_list[i] = "pref" + (i+1);	// 表示する県IDを登録（添え字は表示順）
	}
	*/
	
	// 小さな県を登録
	spno_list[0] = 5;
	spno_list[1] = 6;
	spno_list[2] = 9;
	spno_list[3] = 11;
	spno_list[4] = 13;
	spno_list[5] = 15;
	spno_list[6] = 16;
	spno_list[7] = 19;
	spno_list[8] = 21;
	spno_list[9] = 25;
	spno_list[10] = 28;
	spno_list[11] = 26;
	spno_list[12] = 29;
	spno_list[13] = 27;
	spno_list[14] = 34;
	spno_list[15] = 38;
	spno_list[16] = 36;
	spno_list[17] = 37;
	spno_list[18] = 46;
	spno_list[19] = 43;
	spno_list[20] = 41;

	//pref_list = randArray(pref_list);	// 表示する県の順番をランダムに並び替え
	//pref_list.reverse();
	setPrefPanel();										// 表示する県パネルをセットエリアにセット
	dspContent(pref_list[0]);					// コンテンツ表示

	// デバッグトレース
	var dmsg = "setPrefId=[" + setPrefId + "]     ";
	dmsg = dmsg + "plnext=[ " + plnext + "]";
	dbgtrace(dmsg);
}

//------------------------------------------------
// 地名クリック時の関数
//------------------------------------------------
function namClick(no){
	
	if(oldNo != no){
		
		oldNo = no;
//alert(no);
	}

	var obj; 
	var el;
	var id;

	// ID算出
	id = "pref" + no;

	// ドラッグ開始
	obj = new YAHOO.util.DD(id);
	obj.no = no;
	
	// 県パネルを最前面に表示
	el = obj.getDragEl();
	YAHOO.util.Dom.setStyle(el, 'zIndex', zindexNo);	// 重なり変更
	zindexNo = zindexNo + 1;							// 重なりの最大値を更新
		
	// コンテンツ表示
	dspContent(id);
	
	// ドラッグ開始時の処理
	obj.startDrag = function(e){
		
		;
	};
	
	// ドラッグ終了時の処理
	obj.endDrag = function(e) {
		
		this.lock();												// ドラッグ不可にする
		
		// 変数初期化
		var from_id = this.id;							// 移動元ID
		var to_id = "to_" + from_id;				// 移動先ID
		var over = false;									// 重なりフラグ初期化
		
		nextPref();													// 次の県パネルをセットエリアにセットする
		
		over = isOver(from_id, to_id);			// 重なり状態を取得
	
		// 重なり判定処理
		if(over){						// 重なったか？
		
			var to = YAHOO.util.Dom.getXY(to_id);	// 移動先の座標取得
			var x = to[0];
			var y = to[1];
			var myAnim = new YAHOO.util.Motion(from_id,{ points: { to: [x,y] }},0.05);
			myAnim.animate();											// 移動（0.05秒）
			
			setOver(this.no, 1);									// 重なりON
		}
		else{								// 重なっていないか？
		
			setOver(this.no, 0);									// 重なりOFF
		}
		
		// 完了判定処理
		if(isComplete()){	// 完了か？
			
			document.getElementById("comp").style.display = "block";
			document.getElementById("comp").style.zIndex = zindexNo;
			zindexNo = zindexNo + 1;
		}
		
		// デバッグトレース
		var dmsg = "setPrefId=[" + setPrefId + "]     ";
		dmsg = dmsg + "plnext=[ " + plnext + "]";
		dbgtrace(dmsg);
	};
}

//------------------------------------------------
// 地名クリック時の関数（iPhone用）
//------------------------------------------------
function namClick2(no){
	namClick(no);
	event.preventDefault();
}

//------------------------------------------------
// 重なり部分の面積領域を取得する関数 
//------------------------------------------------
function isOver(id1,id2){
	
	var to;
	var x1, x2;
	var y1, y2;
	var w, h;
	var ret = false;
	
	to = YAHOO.util.Dom.getXY(id1);	
	x1 = to[0];
	y1 = to[1];

	to = YAHOO.util.Dom.getXY(id2);
	x2 = to[0];
	y2 = to[1];
	
	w = Math.abs(x1-x2);
	h = Math.abs(y1-y2);
	
	if(w < hani && h < hani){	// 移動先と移動元の座標は範囲以内か？
		ret = true;
	}

	return ret;
}

//------------------------------------------------
// 重なり状態セット関数
//------------------------------------------------
function setOver(no, sts){

	over_list[no-1] = sts;
}

//------------------------------------------------
// 完了チェック関数
//------------------------------------------------
function isComplete(){

	var i;
	var ret = true;
	for(i=0; i<over_list.length; i++){
		if(over_list[i] == 0){	// 重なりOFFか？
			ret = false;
			break;
		}
	}
	return ret;
}

//------------------------------------------------
// 配列をランダムに並び替え
//------------------------------------------------
function randArray(array){

	for (i=0 ; i<array.length; i++){
		var tmpA, tmpB, rnd;
		rnd = Math.floor(Math.random() * array.length);
		tmpA = array[i];
		tmpB = array[rnd];
		array[i] = tmpB;
		array[rnd] = tmpA;
	}
	return array;
}

//------------------------------------------------
// 次の県パネルをセットエリアにセットする関数
//------------------------------------------------
function nextPref(){
	
	if(setPrefId != ""){	// セットIDあり（セットエリアに県あり）か？
	
		var oj1 = getRegi(setPrefId);
		var oj2 = getRegi("set");
		var area = 0;
		var rg  = oj1.intersect(oj2);
		if(rg == null){									// セットエリアから外に出たか？
		
			setPrefPanel();									// 次の県パネルをセットエリアにセット
		}
	}
}

//------------------------------------------------
// 領域を取得する関数
//------------------------------------------------
function getRegi(id){
	
	return YAHOO.util.Dom.getRegion(id);
}

//------------------------------------------------
// セットエリアに県パネルをセットする関数
//------------------------------------------------
function setPrefPanel(){
	
	if(plnext < pref_list.length){	// セットする県は残っているか？
			
		// 次に表示する県をセットエリアに登録
		setPrefId = pref_list[plnext];
		plnext = plnext + 1;
		YAHOO.util.Dom.setY(setPrefId, setTop);	// 表示
		document.getElementById("setmsg").style.display = "block";
		
		// 次のコンテンツを表示
		dspContent(setPrefId);
	}
	else{
				
		// セットエリアにセットする県はなしとする
		setPrefId = "";
		document.getElementById("setmsg").style.display = "none";
	}
}

//------------------------------------------------
// コンテンツ表示関数
//------------------------------------------------
function dspContent(id){
	
	// リロード
	//var url = "pref/" + id + ".php";
	//icontent.location = url;
	
	// 表示・非表示制御
	var ctl;
	ctl = "msg_" + nowId;
	document.getElementById(ctl).style.display = "none";	// 非表示

	nowId = id;
	ctl = "msg_" + nowId;
	document.getElementById(ctl).style.display = "block";		// 表示
	
	//dbgtrace(id);
}

//------------------------------------------------
// 閉じる関数
//------------------------------------------------
function closeBox(id){
	
	document.getElementById(id).style.display = "none";
}

//------------------------------------------------
// 小さな県を上位に表示
//------------------------------------------------
function upPref(){
	
	var i;
	var id;
	
	for(i=0; i<spno_list.length; i++){
		
		id = "pref" + spno_list[i];
		document.getElementById(id).style.zIndex = zindexNo;
		zindexNo = zindexNo + 1;
	}
}

//------------------------------------------------
// 小さな県を上位に表示（iPhone用）
//------------------------------------------------
function upPref2(){
	
	upPref();
	event.preventDefault();
}

//------------------------------------------------
// デバッグメッセージ関数
//------------------------------------------------
function dbgtrace(data){
	
	//var dbgmsg = document.getElementById("dbgmsg");
	//dbgmsg.innerHTML = data;
}

//------------------------------------------------
// ツイッター
//------------------------------------------------
function twitter_make(thtag){
	
	var tobj = new TWTR.Widget({
  	version: 2,
	  type: 'search',
	  search: thtag,
	  interval: 10000,
	  title: '',
	  subject: thtag + 'に関するのつぶやき',
	  width: 380,
	  height: 50,
	  theme: {
	    shell: {
	      background: '#FFFFFF',
	      color: '#333333'
	    },
	    tweets: {
	      background: '#ffffff',
	      color: '#333333',
	      links: '#1985b5'
	    }
	  },
	  features: {
	    scrollbar: false,
 	   loop: true,
 	   live: true,
 	   hashtags: true,
 	   timestamp: true,
 	   avatars: true,
 	   toptweets: true,
 	   behavior: 'default'
 	 }
	});

	tobj.render();
	tobj.start();
}

