﻿Listener.add(window,"load",function(){

window.ASCII = {} ;

var d = document ;
var $id = function(id){return document.getElementById(id)};
var $tag = function(tag,parent){
	if(!parent) parent = d ;
	return parent.getElementsByTagName(tag);
};

var addClass = function(node,value){
	var currentclass = node.className ;
	var regclass = new RegExp("\\b" + value + "\\b","g");
	if(!currentclass) currentclass = value ;
	else if(currentclass.search(regclass) != -1) return ;
	else currentclass += " " + value ;
	node.className = currentclass ;
};

var removeClass = function(node,value){
	var currentclass = node.className ;
	var regclass = new RegExp("\\b" + value + "\\b","g");
	var regblank = /\b\s*\s$/;
	if(currentclass == value) node.removeAttribute("class") || node.removeAttribute("className");
	else if(currentclass.search(regclass) == -1) return ;
	else {
		currentclass = currentclass.replace(regclass,"");
		currentclass = currentclass.replace(regblank,"");
		node.className = currentclass ;
	}
};

var hasClass = function(node,value){
	if(node == "body") node = d.body ;
	else if(typeof node == "string") node = $id(node);
	var currentclass = node.className ;
	var regclass = new RegExp("\\b" + value + "\\b","g");
	if(currentclass.search(regclass) == -1) return false ;
	else return true ;
};

var isSafari = function(){
	return ((window.navigator.userAgent).indexOf("Safari") != -1);
}
var isFirefox = function(){
	return ((window.navigator.userAgent).indexOf("Firefox") != -1);
}
var isMac = function(){
	return ((window.navigator.userAgent).indexOf("Macintosh") != -1);
}


//XHR Global Function
function globalErrFunc(statusText){
	//alert(statusText)
}
function globalLoadFunc(readyState){
	//alert(readyState)
}


//loadGlobalAsideLatest
(function(){
			 
	if(hasClass("body","topPage")) return ;
	
	var source = "/backnumber/latest/index.xml";

	var target = $id("globalAside");

	if(!target) return ;

	XHR().request({
		async : true,
		cache : true,
		url : source,
		method : "GET",
		errfunc : globalErrFunc,
		loadfunc : globalLoadFunc,
		compfunc : function(a,b,c){

			window.ASCII.magazines = [];

			var entries = a.getElementsByTagName("entry");
			
			for(var i = 0 ; i < entries.length ; i++){
				var e = entries[i];
				
				var entry = {
					mg_cover : e.getElementsByTagName("mg_cover")[0].firstChild.data,
					title : e.getElementsByTagName("title")[0].firstChild.data,
					mg_price : e.getElementsByTagName("mg_price")[0].firstChild.data,
					mg_release : e.getElementsByTagName("mg_release")[0].firstChild.data,
					urlamazon : e.getElementsByTagName("urlamazon")[0] ? e.getElementsByTagName("urlamazon")[0].firstChild.data : null,
					mg_urlehon : e.getElementsByTagName("mg_urlehon")[0] ? e.getElementsByTagName("mg_urlehon")[0].firstChild.data : null,
					mg_urlsevenyr : e.getElementsByTagName("mg_urlseveny")[0] ? e.getElementsByTagName("mg_urlseveny")[0].firstChild.data : null,
					mg_urlfujisan : e.getElementsByTagName("mg_urlfujisan")[0] ? e.getElementsByTagName("mg_urlfujisan")[0].firstChild.data : null,
					mg_urltachiyomi : e.getElementsByTagName("mg_urltachiyomi")[0] ? e.getElementsByTagName("mg_urltachiyomi")[0].firstChild.data : null
				};
				window.ASCII.magazines.push(entry);
			}
			
			var latest = window.ASCII.magazines[0];
			
			var div = d.createElement("div");
			div.id = "globalAsideLatest";
			addClass(div,"section");
			
			var inner = d.createElement("div");
			addClass(inner,"inner");
			
			var _inner = d.createElement("div");
			addClass(_inner,"inner");
			
			inner.appendChild(_inner);
			div.appendChild(inner);
			
			//cover
			var cover_wrap = d.createElement("div");
			addClass(cover_wrap,"cover");
			
			var cover_link = d.createElement("a");
			cover_link.href = "/backnumber/latest/";
			
			var cover = d.createElement("img");
			cover.src = latest.mg_cover;
			cover.alt = latest.title ;
			
			cover_link.appendChild(cover);
			cover_wrap.appendChild(cover_link);
			
			_inner.appendChild(cover_wrap);
			
			
			//title
			var title = d.createElement("h2");
			
			var title_em = d.createElement("em");
			title_em.appendChild(d.createTextNode(latest.title));
			
			title.appendChild(title_em);
			
			_inner.appendChild(title);
			
			
			//btn_buy
			if(latest.urlamazon){
				var btn_buy = d.createElement("div");
				btn_buy.className = "multiBtn btnBuy";
				
				var btn_buy_link = d.createElement("a");
				btn_buy_link.href = latest.urlamazon ;
				btn_buy_link.target = "_blank";
				
				var btn_buy_span = d.createElement("span");
				btn_buy_span.appendChild(d.createTextNode("ネットで購入する"));
				
				btn_buy_link.appendChild(btn_buy_span);
				btn_buy.appendChild(btn_buy_link);
				
				_inner.appendChild(btn_buy);
			}
			

			//btn_sub
			var btn_sub = d.createElement("div");
			btn_sub.className = "multiBtn btnSubscribe";
			
			var btn_sub_link = d.createElement("a");
			btn_sub_link.href = "/teiki/" ;
			
			var btn_sub_span = d.createElement("span");
			btn_sub_span.appendChild(d.createTextNode("定期購読する"));
			
			btn_sub_link.appendChild(btn_sub_span);
			btn_sub.appendChild(btn_sub_link);
			
			_inner.appendChild(btn_sub);
			
			target.insertBefore(div,target.firstChild);			
		}
	});
	

})();

//loadGlobalAsideLinks
(function(){
	
	var flag = hasClass("body","topPage");
	if($id("globalAsideLinks")) return ;
	
	var source = "/images/bnr.xml";
	var path = "/images/";

	var target = $id("globalAside");

	if(!target) return ;
	
	XHR().request({
		async : true,
		cache : true,
		url : source,
		method : "GET",
		errfunc : globalErrFunc,
		loadfunc : globalLoadFunc,
		compfunc : function(a,b,c){

			window.ASCII.bnrs = [];
			
			var bnrs = a.getElementsByTagName("bnr");
						
			for(var i = 0 ; i < bnrs.length ; i++){
				var b = bnrs[i];
				
				var bnr = {
					title : b.getElementsByTagName("title")[0].firstChild.data,
					url : b.getElementsByTagName("url")[0].firstChild.data,
					imgl : path + b.getElementsByTagName("imgl")[0].firstChild.data,
					imgs : path + b.getElementsByTagName("imgs")[0].firstChild.data
				};
				window.ASCII.bnrs.push(bnr);
			}

			var div = d.createElement("div");
			div.id = "globalAsideLinks";
			addClass(div,"section");
			
			var inner = d.createElement("div");
			addClass(inner,"inner");
			
			var _inner = d.createElement("div");
			addClass(_inner,"inner");
			
			var h2 = d.createElement("h2");
			addClass(h2,"replace");
			h2.appendChild((d.createElement("em")).appendChild(d.createTextNode("関連サイト")));
			
			_inner.appendChild(h2);
			inner.appendChild(_inner);
			div.appendChild(inner);
			
			var ul = d.createElement("ul");
			
			for(var i = 0 ; i < window.ASCII.bnrs.length; i++){

				var data = window.ASCII.bnrs[i];
								
				var li = d.createElement("li");
				
				var a = d.createElement("a");
				a.href = data.url;
				a.target = "_blank";
				
				var img = d.createElement("img");
				if(flag) img.src = data.imgl;
				else img.src = data.imgs ;
				img.alt = data.title ;
				
				a.appendChild(img);
				li.appendChild(a);
				ul.appendChild(li);

			}
			
			_inner.appendChild(ul);
						
			target.appendChild(div);
		}
	});
	
})();


//MacFonts
(function(){
	if(!isMac()) return ; 
	var CSS = d.styleSheets[0];
	if(isSafari()){
		var style = "{ margin-left : 15.5em ;}";
		CSS.insertRule(".newsPage #article #listArea .newslist dd " + style , CSS.cssRules.length);
		CSS.insertRule("#topIndex #article #topNewsArea dl dd " + style , CSS.cssRules.length);
		CSS.insertRule("#topIndex #article #topBlogArea dl dd { margin-left : 8.0em ;}" , CSS.cssRules.length);
	}
	if(isFirefox()){
		var selector01 = ".newsPage #article #listArea .newslist dt.iconCateFromEditor , .newsPage #article #listArea .newslist dt.iconCateAddEntry ,#topIndex #article #topNewsArea dl dt.iconCateFromEditor , #topIndex #article #topNewsArea dl dt.iconCateAddEntry";
		var style01 = "{ margin-left : 10.5em ;}";
		var selector02 = ".newsPage #article #listArea .newslist dd , #topIndex #article #topNewsArea dl dd ";
		var style02 = "{ margin-left : 15.3em ;}";
		CSS.insertRule(selector01 + style01 , CSS.cssRules.length);
		CSS.insertRule(selector02 + style02 , CSS.cssRules.length);
	}
})();


//listAreaPagerStyle
(function(){
	var pager = $id("pager");
	if(!pager) return ;
	
	var dds = $tag("dd",pager);
	
	var target = null ;	
	for(var i = 0 ; i < dds.length; i++){
		if(hasClass(dds[i],"pagesNumber")) {
			target = dds[i];
			break ;
		}
	}
	if(!target) return ;
	if(!target.firstChild) return ;
	
	addClass(target.firstChild,"firstChild");
	
})();


//AsideNaviAddClass
(function(){
	var asideNavi = $id("asideNavi");
	if(!asideNavi) return ;
	
	var uls = $tag("ul",asideNavi);
	
	for(var i = 0 ; i < uls.length ; i++){
		var lis = $tag("li",uls[i]);
		addClass(lis[0],"firstChild");
		addClass(lis[lis.length-1],"lastChild");
	}	
})();


//AsideNaviOnclickAddClass
(function(){
	if(d.body.id != "glossaryIndex") return ;
	
	var klass = "active";
	var onloadhash = window.location.hash ;
	
	var asideNavi = $id("asideNavi");
	if(!asideNavi) return ;
	
	var uls = $tag("ul",asideNavi);
	
	for(var i = 0 ; i < uls.length ; i++){
		var lis = $tag("li",uls[i]);
		
		for(var j = 0 ; j < lis.length ; j++){
			var li = lis[j];
			var a = lis[j].firstChild ;

			if(onloadhash == "" && j == 0) addClass(li,klass);
			if(a.hash == onloadhash) addClass(li,klass);
			
			Listener.add(a,"click",function(e){
				for(var k = 0 ; k < lis.length ; k++) removeClass(lis[k],klass)
				addClass(this.parentNode,klass);
			});
		}
	}	
})();


//DLContentsAddClass
(function(){
	var DLContents = $id("DLContents");
	if(!DLContents) return ;
	
	var dls = $tag("dl",DLContents);
	
	for(var i = 0 ; i < dls.length ; i++){
		var dds = $tag("dd",dls[i]);
		
		for(var j = 0; j < dds.length ; j++){			
			if(((j+1)%2) == 0) addClass(dds[j],"even");
		}
	}	
})();


//LatestPageTab
(function(){
	if(!hasClass("body","backnumPage")) return ;
	
	var klass = "active" ;
	var id01 = "MGContents" ;
	var id02 = "DLContents" ;
	var id03 = "relevantLinks" ;
	
	var tab = $id("articleTab");
	if(!tab) return ;
	var tabs = $tag("li",tab);
		
	var asideNavi = $id("asideNavi");
	var lis = $tag("li",asideNavi);
	
	var l = [];
	for(var i = 0 ; i < tabs.length ; i++)l.push(tabs[i]);
	if(d.body.id == "latestIndex"){
		for(var i = 0 ; i < lis.length ; i++)l.push(lis[i]);
	}
	
	var MGContents = $id(id01);
	var DLContents = $id(id02);
	
	var onloadhash = window.location.hash ;
	
	if(onloadhash == ("#" + id02) || onloadhash == ("#" + id03)) MGContents.style.display = "none" ;
	else DLContents.style.display = "none" ;
	
	for(var i = 0 ; i < l.length ; i++){
		if(onloadhash == ("#" + id02) || onloadhash == ("#" + id03)) {
			if(l[i].firstChild.hash == ("#" + id02)) addClass(l[i],klass);
		}
		else {
			if(l[i].firstChild.hash == ("#" + id01)) addClass(l[i],klass);
		}
		Listener.add(l[i],"click",ChangeTab);
	}


	function ChangeTab(e){
		var hash = this.firstChild.hash ;
		if(!hash) return ;
		
		for(var i = 0 ; i < l.length ; i++){
			if(l[i].firstChild.hash == hash) addClass(l[i],klass);
			else removeClass(l[i],klass);
		}
		if(hash == ("#" + id01)){
			MGContents.style.display = "block" ;
			DLContents.style.display = "none" ;
		}
		else if(hash == ("#" + id02)) {
			MGContents.style.display = "none" ;
			DLContents.style.display = "block" ;
		}

		e.preventDefault();
		e.stopPropagation();
	}

})();


//blogCalendarTodayCell
(function(){
	if(!hasClass("body","blogPage")) return ;
	
	var now = new Date();
	now = "date" + now.getFullYear() + toTwoDigits(now.getMonth()+1) + toTwoDigits(now.getDate());
	
	var tds = $tag("td",$id("blogCalendar"));
	
	for(var i = 0 ; i< tds.length ; i++){
		if(tds[i].id == now){
			addClass(tds[i],"cellToday");
			break;
		}
	}

	function toTwoDigits(string){
		if(!(string instanceof String)) string = string.toString();
		return ((string.length < 2 )?("0" + string) : string).toString();
	}

})();


// other popup Settings
(function(){
			 
	var a = d.links ;
	var isIE = "\v"=="v";
	var isIE6 = (typeof document.body.style.maxHeight == "undefined");

	for(var i = 0 ; i < a.length; i++){
		var reg = /popup=(.+)&(.+)$/i;
		var rel = a[i].getAttribute("rel");
		
		if(!rel) continue ;
		
		if(rel.match(reg) != null){				
			Listener.add(a[i],"click",function(e){
				var rel = this.getAttribute("rel");
				
				rel.match(reg)
				var name = RegExp.$1;
				var param = RegExp.$2;
				if(param == "full"){
					var width = window.screen.availWidth ;
					var height = window.screen.availHeight ;
					var left = 0 ;
					var top = 0 ;
					var scrl = "no";
					if(isIE6){
						width = width -10 ;
						height = height -29 ;
					}
				}
				else {
					data = param.split("+");
					var width = isIE?(parseInt(data[0])+17):(data[0]);
					var height = data[1];
					var top = (window.screen.height/2) - (height/2) ;
					var left = (window.screen.width/2) - (width/2) ;
					var scrl = "yes";
				}
				
				var popup = window.open(this.href,name,'width=' + width + ', height=' + height + ', menubar=no, toolbar=no, scrollbars=' + scrl + ' ,top=' + top + ' ,left=' + left);
				if(popup) popup.focus();
				
				e.preventDefault();
				e.stopPropagation();
			});
		}
	}
})();	


Listener.add(window,"unload",function(){
	window.ASCII = null;
});


});


// Google Ajax Feeds
(function(){
			 
	if(!window.google) return ;
				 
	google.load("feeds", "1");
	
	var d = document ;
	var $id = function(id){return d.getElementById(id)};
	var $tag = function(tag,parent){
		if(!parent) parent = d ;
		return parent.getElementsByTagName(tag);
	};
	
	function initialize(){
		
		if(!$tag("noscript")) return ;
		var feed = new google.feeds.Feed("http://index.ascii.jp/sodanshitsu/index.php?m=feed");
		feed.setNumEntries(5);
		feed.load(function(result) {
			var target = $id("topASCIIFAQ");
			if(!target) return ;
			
			try{
				
			var dl = d.createElement("dl");
			target.insertBefore(dl,$tag("ul",target)[0]);
			
			if(!result.error){
				window.ASCII.data = result ;
								
				for (var i = 0; i < result.feed.entries.length; i++) {
					var entry = result.feed.entries[i];
					var dd = d.createElement("dd");
					if(i == result.feed.entries.length-1) dd.className = "lastChild";
					var a = d.createElement("a");
					a.href = entry.link ;
					a.target = "soudan";
					a.appendChild(d.createTextNode((entry.title.length > 25)?(entry.title.substring(25,0) + "..."):entry.title));
					dd.appendChild(a);
					dl.appendChild(dd);
				}
			}
			else {
				window.ASCII.data = result ;			
				
				var dd = d.createElement("dd");
				dd.className = "loadError";
				dd.innerHTML = "サーバーからのデータの取得に失敗しました。<br />申し訳ございませんが以下のリンクより<br />直接サイトにアクセスしてご覧下さい。<br /><a href=\"http://index.ascii.jp/sodanshitsu/\" target=\"soudan\">ASCII相談室</a>";
				dl.appendChild(dd);
			}
			
			}catch(err){window.ASCII.data = err;}
		});
	}
	google.setOnLoadCallback(initialize);

})();
