//****************************************
//		addEventListener
//****************************************
var dom = new Object;dom.event = new Object;
dom.event.addEventListener = function(elm,type,func,useCapture){
 if(! elm){return false;}
 if(! useCapture){
 useCapture = false;}
 if(elm.addEventListener){
  elm.addEventListener(type,func,false);
 }else if(elm.attachEvent){
  elm.attachEvent("on"+type,func);
 }else{
 return false;
 }
 return true;
};

dom.event.removeEventListener = function(elm,type,func,useCapture){
 if(! elm){return false;}
 if(! useCapture){
  useCapture = false();
 }
 if(elm.removeEventListener){
  elm.removeEventListener(type,func,false);
 }else if(elm.datachEvent){
  elm.datachEvent("on"+type,func);
 }else{
  return false;
 }
 return true;
};

dom.event.stopPropagation = function(evt){
 if(evt && evt.stopPropagation){
  evt.stopPropagation();
 }else if(window.event){
   window.event.cancelBubble = true;
 }
}

//****************************************
//		XMLHttpRequest
//****************************************

// 非同期でリクエスト
function sendRequest( url, callback, method, data ){
  // XMLHttpRequestオブジェクト生成
  var req = createXMLHTTP();
  if( !req ){ return; }
  // レスポンスデータ受信時に呼び出すイベントハンドラ
  req.onreadystatechange = function(){
    getResponse( req, callback );
  }
  // GETメソッドの場合はURLの後にクエリパラメータをつける
  if(method.toUpperCase() == 'GET' && data.length > 0){
    url += '?'+ data;
    data = '';
  }
  // 指定したURLに接続
  req.open( method, url, true );
  // POSTデータ用ヘッダ
  req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  // HTTPリクエストを送信
  req.send( data );
}
// XMLHttpRequestオブジェクト生成
function createXMLHTTP(){
  if( window.XMLHttpRequest ){ // IE以外
    return new XMLHttpRequest();
  }
  else if( window.ActiveXObject ){ // IE用(バージョンにより異なる)
  try {
   return new ActiveXObject("MSXML2.XMLHTTP");
  }
  catch (e) {
   try {
    return new ActiveXObject("Microsoft.XMLHTTP");
   }
   catch(e2) {
    return null;
   }
  }
 }
 return null
}
// レスポンスデータ受信
function getResponse( req, callback ){
 if( req.readyState == 4 ){ // 受信完了
  // 指定されたコールバック関数を呼ぶ
  if( req.responseText ){
    callback(req);
  }
 }
}

//****************************************
//		Cookie
//****************************************

var ctrlCookie = {};
// cookie取得
ctrlCookie.getCookie = function(name){
	if(!name) return;
	var val = "";
	var cookieName = name+"=";
	var tmpCookie = document.cookie + ";";
	var start = tmpCookie.indexOf(cookieName);
	if (start != -1) {
		var end = tmpCookie.indexOf(";", start);
		val = tmpCookie.substring(start + cookieName.length, end);
	}
	return val;
}

// cookie保存
ctrlCookie.setCookie = function (name,value){
	if(!name || !value) return;
	var cookieName = name+"=";
	var exp = new Date();
	exp.setTime(exp.getTime() + 31536000000);
	document.cookie = cookieName + value + "; path=/" + "; expires=" + exp.toGMTString();
}
// cookie削除
ctrlCookie.deleteCookie = function (name,value){
	var cookieName = name+"=";
	var deleteTime = new Date();
	deleteTime.setYear(deleteTime.getYear() - 1);
	document.cookie = cookieName + value + "; path=/" + ";expires=" + deleteTime.toGMTString();
}

//****************************************
//		Load Event
//****************************************
var ua = navigator.userAgent;

$(document).ready(function(){
	relation();
	acordion();
	accordions();
	if(ua.indexOf("iPhone") != -1 || ua.indexOf("iPod") != -1 || ua.indexOf("Android") != -1){
		if(!document.getElementById("viewport")){
			sendRequest("/css/vosegus_sm.css",forSM,"GET","");//CSSの読み込みが終わったらスタート
		}
	}else{
		totop();
		fragment();
		if(document.getElementsByTagName("kangaroonote")){
			$('#search').defaultInputText({
				text   : 'Kangaroonote を検索',
				f_color: '#000000',
				b_color: '#989898'
			});
		}
	}
});

//****************************************
//	iPhone 用 CSS
//****************************************
var forSM = function(){
	/*var link = document.getElementById("include-style");
	link.href = "/css/vosegus_sm.css";*/
	var hd = document.getElementsByTagName("head")[0];
	var meta = document.createElement("meta");
	meta.setAttribute("name","viewport");
	meta.setAttribute("content","width=device-width,user-scalable=yes");
	hd.appendChild(meta);
}

//****************************************
//		Social Relation
//****************************************
var relation = function(){
	var putText = '<article><div id="blog-post"><h1><a href="http://vosegus.org/blog/atom.xml">New post</a></h1>';
	$.ajax({
		url:'/blog/atom.xml',
  type:'GET',
		dataType:'xml',
		success:function(data){
		for(var i=0;i<2;i+=1){
			var href = $(data).find("entry link:eq("+i+")").attr("href");
			var title = $(data).find("entry title:eq("+i+")").text();
			var summary = $(data).find("entry summary:eq("+i+")").text();
			putText += '<h2><a href="'+href+'">'+title+'</a></h2><p>'+summary+'</p>';
		}
			putText += '<p class="archive"><a href="/blog/archives.html">過去の記事</a></p></div></article>';
		$("#relational").append(putText);
		
		var putRead = '<article><div id="reading"><h1>Now reading</h1>';
		putRead += "<a href='http://www.amazon.co.jp/gp/product/4873115272/ref=as_li_ss_tl?ie=UTF8&amp;tag=yagatekanashi-22&amp;linkCode=as2&amp;camp=247&amp;creative=7399&amp;creativeASIN=4873115272'><p class='thumb'><img src='/blog/img/amz_canvas.png' /></p>"
 	putRead += "<h2>HTML5 Canvas</h2></a>";
 	putRead += "<p>Canvasを使った2Dオブジェクトの描画、テキストレンダリング、画像・映像・音声処理、WebGLによる3Dアニメーション。これらすべてのトピックをインタラクティブなサンプルとともにわかりやすく解説します。</p>";
		putRead += '</div></article>';
		$("#relational").append(putRead);
		}
	});
		
	var putZoo = '<article><div id="zoo"><h1><a href="http://zootool.com/user/azumatoshimitsu/" rel="me">Zootool</a></h1>';
 $.getJSON("http://zootool.com/api/users/items/?username=AzumaToshimitsu&apikey=b40beb63f173cbf23a27e1fb1692b3c7&callback=?", function(data){
	putZoo += "<p class='thumb'><img src='"+data[0]['thumbnail']+"' /></p>"
 	putZoo += "<h2>"+data[0]['title']+"</h2>";
 	putZoo += "<p><a href='"+data[0]['tinyurl']+"'>"+data[0]['tinyurl']+"</a></p>";
		putZoo += '</div></article>';
		$("#relational").append(putZoo);
 });
		
	var putTw = '<article><div id="tweet"><h1><a href="https://twitter.com/#!/AzumaToshimitsu" rel="me">Tweet</a></h1>';
 $.getJSON("http://twitter.com/status/user_timeline/AzumaToshimitsu.json?count=5&callback=?", function(json){
		for(var j=0;j<2;j+=1){
		putTw += '<dl><dt>AzumaToshimitsu <span>東 敏満</span></dt><dd>';
 	putTw += json[j]['text'];
 	putTw += '</dd></dl>';
 }
		putTw += '</div></article>';
		$("#relational").append(putTw);
 });
		
	var putG = '<article><div id="gplus"><h1><a href="https://plus.google.com/109139153208404958693/posts" rel="me">Google+</a></h1>';
 $.getJSON("https://www.googleapis.com/plus/v1/people/109139153208404958693/activities/public?key=AIzaSyCAejwGW87U_6t_OfSx_-92_G_4snLYkpA&callback=?", function(json){
 	putG += "<p>"+json.items[0].title+"</p>";
		putG += '</div></article>';
		$("#relational").append(putG);
 });


}

//************************
//To top Navigation
//************************
var totop = function(){
	$(".to-top a").click(function(){
		var target = $(this).attr("href");
		if(target.indexOf("#") != -1 ){
			$(this).blur();
			$('html,body').animate({ scrollTop: $(target).offset().top }, 'fast');
			return false;
		}
	});
}

//************************
//Fragment Navigation
//************************
var fragment = function(){
	$("nav li a").click(function(){
		var target = $(this).attr("href");
		if(target.indexOf("#") != -1 ){
			$(this).blur();
			$('html,body').animate({ scrollTop: $(target).offset().top }, 'fast');
			return false;
		}
	});
}

//*******************
//　source code acordion
//*******************
var accordions = function(){
	$(".accordions > p").hide();
	$(".accordions > table").hide();
	$(".accordions > h2").addClass("accordions-h");
	$(".accordions > h3").addClass("accordions-h");
	$(".accordions > h4").addClass("accordions-h");	
	$(".accordions > .accordions-h").click(function(){
		$(this).next().slideToggle();
	});
}

var acordion = function(){
	$(".acordion > p").hide();
	$(".acordion > table").hide();
	$(".acordion > h2").addClass("acordion-h");
	$(".acordion > h3").addClass("acordion-h");
	$(".acordion > h4").addClass("acordion-h");
	
	$(".acordion > .acordion-h").click(function(){
		$(this).next().slideToggle();
	});
}

//*******************
// 全置換：全ての文字列 org を dest に置き換える  
//*******************
String.prototype.replaceAll = function (org, dest){  
 return this.split(org).join(dest);  
}

//*******************
//　scrollNav Styling
//*******************

var scrollNav = function(){
 $(window).scroll(function() {
   if ($(window).scrollTop() > offset.top) {
     $("#fragment-nav").stop().animate({
         marginTop: $(window).scrollTop() - offset.top + topPadding
     });
   } else {
     $("#fragment-nav").stop().animate({
         marginTop: 0
     });
   };
 });
}

//jQuery Default input text plug-in
//Copyright (c) 2009 Ryuichi Nonaka (http://blog.<span id="searchword">desired.jp</span>/)
//Creative Commons 表示 2.1 日本 License. (http://creativecommons.org/licenses/by/2.1/jp/)
//http://desired.jp/product/jquery-plugins/default-input-text-plug-in
$.fn.defaultInputText = function(options){
	// default configuration properties
	var defaults = {
		text   : 'default input', //default text
		f_color: '#333',          //focus color
		b_color: '#aaa'           //blur color
	};
	//merge
	var options = $.extend(defaults, options);  
	//get element
	var elements = this;
	//clear
	if(elements.val() == ""){
		elements.css("color",options.b_color);
		elements.val(options.text);
	}
	//focus
	this.focus(function(event){
		if(elements.val() == options.text){
			elements.css("color",options.f_color);
			elements.val("");
		}
	});
	//blur
	this.blur(function(event){
		if(elements.val() == ""){
			elements.css("color",options.b_color);
			elements.val(options.text);
		}
	});
}

