/*
 * Thickbox - One box to rule them all.
 * By Cody Lindley (http://www.codylindley.com)
 * Under an Attribution, Share Alike License
 * Thickbox is built on top of the very light weight jquery library.
 */
 
 //ビデオ情報を一時的に格納
document.videoInfo;
//ポップアップが開いているかのフラグ
document.isOpen = false;

//add thickbox to href elements that have a class of .thickbox
$(document).ready(function(){//when the document is loaded   
	//hashがあったら復元します
	var hash = location.hash;
	hash = hash.replace("#","");
	var objPair = hash.split("&");
	var param = {}
	//hashからオブジェとキーのペアを作る
	for(var i in objPair){
		var dat = objPair[i].split("=");
		var val = unescape(dat[1]);
		param[ dat[0] ] = protect(val);
	}
	
	if(param["v"]){
		TB_clicked(param["title"]||"no title", param["v"]);
	}
});

function protect(str){
	str = str.replace("'", "");
	str = str.replace('"', "");
	str = str.replace('&', "");
	str = str.replace('<', "");
	str = str.replace('>', "");
	str = str.replace('javascript:', "");
	return str;
}

function TB_clicked(videoTitle, videoId){
	document.videoInfo = {title:videoTitle, videoId:videoId}
	TB_show();
	location.hash = "v="+videoId + "&title="+escape(videoTitle);
	document.title = "HATENA-TUBE 2.0 | Mashed up youtube with social bookmarks";
}

function TB_show() {//function called when the user clicks on a thickbox link
	try {
		document.isOpen = true;
		/*
		背景を暗転フェードインさせる
		*/
		var nd = document.createElement("div");
		nd.id="TB_overlay"
		document.body.appendChild(nd);
		
		$("#TB_overlay").click(TB_remove);
		$(window).resize(TB_position);
  
		$("#TB_overlay").show();
			

		TB_position();
		$("#popup").fadeIn("fast", onFadeIn);
		
	} catch(e) {
		alert( e );
	}
}
/*
function TB_loadVideo(){
}
//helper functions below
*/

function TB_remove() {
	document.isOpen = false;
	
	//IEだとこのタイミングで画面がフラッシュする
	//var ifNode = document.getElementById("popupVideo");
	//ifNode.innerHTML = ""
	
	
	var callBack = function(){
		$('#TB_overlay').remove();
		$("#popup").css({left:"-1000px"})
		$("#popupVideo").html("");
		$("#flashAd").html(" ");
	}
	$("#popup").fadeOut("fast",callBack);
}


/*
------------------------------------------------------------
イベントハンドラ系
------------------------------------------------------------
*/
function fadeInPopup(){
}

function fadeOutPopup(){
}

//fadeIn終了
function onFadeIn(){
	$("#popup").css({display:"block"})

	var vId = document.videoInfo.videoId
	var vTitle = document.videoInfo.title;
	
	
	var videoHTML = ''
	videoHTML += ('<embed src="http://www.youtube.com/v/' + vId + '" ')
	videoHTML += 'type="application/x-shockwave-flash" width="425" height="350"></embed>'
	/*
	var flashHTML = '';
	flashHTML += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="110" height="350">'
    flashHTML += '<param name="movie" value="hatenatube_ad.swf">'
    flashHTML += '<param name="quality" value="high">'
    flashHTML += '<embed src="hatenatube_ad.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="110" height="350"></embed>'
	flashHTML += '</object>'*/
	
	//タイトル変更
	$("#popupHeader").find("h2").html(vTitle);
	//$("#popupVideo").html(videoHTML);
	
	var pop = document.getElementById("popupVideo");
	pop.innerHTML = videoHTML;
	
	/*
	var flaDiv = document.getElementById("flashAd");
	flaDiv.innerHTML = flashHTML;*/
	
	//SITE
	var youtubeUrl = "http://www.youtube.com/watch?v=" + vId;
	var a_youtube = document.getElementById("a_youtube");
	a_youtube.href = youtubeUrl;
	
	//HATENA BOOKMARK
	var hatenaUrl = "http://b.hatena.ne.jp/append?" + youtubeUrl;
	var a_hatena = document.getElementById("a_hatena");
	a_hatena.href = hatenaUrl;
	//DELICIOUS
	var deliciousUrl = "http://del.icio.us/1?url=" + youtubeUrl;
	var a_delicious = document.getElementById("a_delicious");
	a_delicious.href = deliciousUrl
	//DOWNLOAD
	var a_download = document.getElementById("a_download");
	a_download.href = "http://youtubech.com/test/read.cgi?dl=" + vId;
	
	var input_url = document.getElementById("input_url");
	input_url.value = youtubeUrl;
	
	var embedUrl = '<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/' + vId + '"></param><embed src="http://www.youtube.com/v/' + vId + '" type="application/x-shockwave-flash" width="425" height="350"></embed></object>'
	var input_embed = document.getElementById("input_embed");
	input_embed.value = embedUrl;
}

//fadeOut終了
function onFadeOut(){
}


/*
------------------------------------------------------------
位置更新系
------------------------------------------------------------
*/


function TB_position() {
	updatePopupPosition();
	updateOverlay();
}

function updatePopupPosition(){
	//$("#popup").css({display:"none"})
	var w = 550;
	var h = 500;
	var de = document.documentElement;
	var screenW = self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
	var screenH = self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
	var scrollY = getScrollPosY();
	
	if(document.isOpen){
		$("#popup").css({left: ((screenW - w)/2)+"px", top: ((screenH - h)/2+scrollY)+"px" });
	}else{
		$("#popup").css({top: ((screenH - h)/2+scrollY)+"px" });
	}
}

function updateOverlay(){
	var pageH = getPageH();
	$("#TB_overlay").css("height",pageH +"px");
}



/*
-----------------------------------------------------------
雑用関数
-----------------------------------------------------------
*/


function parseQuery ( query ) {
   var Params = new Object ();
   if ( ! query ) return Params; // return empty object
   var Pairs = query.split(/[;&]/);
   for ( var i = 0; i < Pairs.length; i++ ) {
      var KeyVal = Pairs[i].split('=');
      if ( ! KeyVal || KeyVal.length != 2 ) continue;
      var key = unescape( KeyVal[0] );
      var val = unescape( KeyVal[1] );
      val = val.replace(/\+/g, ' ');
      Params[key] = val;
   }
   return Params;
}


function getPageH(){
	//画面の高さ？
  	if (window.innerHeight && window.scrollMaxY) {	
		return window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		return document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		return document.body.offsetHeight;
  	}
	return 1000;
}


function getScrollPosY() {
    if (typeof window.pageYOffset != 'undefined') {
        return window.pageYOffset;
    }
    else if (typeof document.documentElement.scrollTop != 'undefined' && document.documentElement.scrollTop > 0) {
        return document.documentElement.scrollTop;
    }
    else if (typeof document.body.scrollTop != 'undefined') {
        return document.body.scrollTop;
    }
    return 0;
}

