//########################//
//## トピックスチェッカ ##//
//########################//
var TopicsCheker = {
	'init' : function() {
		var that = this;
		
		var parent = document.getElementById("topics");
		var dlTags = parent.getElementsByTagName("DL");
		
		var tempNode;
		for(var i = 0, max = dlTags.length; i < max; i++) {
			if(GET.className(dlTags[i])) {
				if(GET.className(dlTags[i]).match(/^del_\d\d\d\d-\d\d-\d\d/)) {
					var parts = GET.className(dlTags[i]).split(" ");
					
					parts[0] = parts[0].replace("del_", "");
					var YMD = parts[0].split("-");
					if(typeof parts[1] != 'undefined') {
						if(parts[1].match(/^\d\d:\d\d:\d\d$/)) {
							var HMS = parts[1].split(":");
							var d = new Date(YMD[0], YMD[1]-1, YMD[2], HMS[0], HMS[1], HMS[2]);
						} else {
							var d = new Date(YMD[0], YMD[1]-1, YMD[2]);
						}
					} else {
						var d = new Date(YMD[0], YMD[1]-1, YMD[2]);
					}
					
					if(serverTime > d.getTime()) {
						dlTags[i].parentNode.removeChild(dlTags[i]);
						i--;
						max--;
						continue;
					}
				}
			}
		}
	}
};

//########################//
//## ジャケット取得関数 ##//
//########################//
var GetReleaseItem = {
	'init' : function() {
		var parent =  document.getElementById("release");
		var target = document.getElementById("insertPointRelease");
		var div = document.createElement("div");
		div.setAttribute("id", "wrapper");
		
		
		parent.insertBefore(div, target);
		
		if(window.XMLHttpRequest) {
			var message = new XMLHttpRequest;
			
		} else if(window.ActiveXObject) {
			try {
				var message = new ActiveXObject("Msxml2.XMLHTTP");
			} catch(e) {
				var message = new ActiveXObject("Microsoft.XMLHTTP");
			}
		} else {
			return null;
		}
		
		message.onreadystatechange = function() {
			if(message.readyState == 4) {
				if(message.status == 200) {
					div.innerHTML = message.responseText;
					Scroller.init();
					if(YAHOO.env.ua.webkit == 0 || YAHOO.env.ua.webkit >= 522) Nifty("#release dl", "transparent");
				} else {
					div.innerHTML = '<p class="note">最新リリースタイトル一覧の読み込みに失敗しました。</p>';
				}
				
				if(typeof Popup == "object") Popup.init();
			} else {
				div.innerHTML = '<p class="note">最新リリースタイトル一覧 読み込み中...</p>';
			}
		}
		
		try {
			var d = new Date();
			message.open('GET', "./script/original/get_release_item.php?t=" + d.getTime(), true);
			message.send(null);
		} catch(e) {
			div.innerHTML = '<p class="note">最新リリースタイトル一覧の読み込みに失敗しました。</p>';
		}
	}
};

//##################################//
//## リリースタイトルスクローラー ##//
//##################################//
var Scroller = {
    'init' : function() {
        var parent = document.getElementById("release");
        var dlTags = parent.getElementsByTagName("DL");
        
        for(var i = 0, max = dlTags.length; i < max; i++) {
        	var title = dlTags[i].getElementsByTagName("DT").item(0);
        	var artist = dlTags[i].getElementsByTagName("DD").item(0);
       		
       		this.setFunc(title);
       		this.setFunc(artist);
		}
	},
   	
   	'setFunc' : function(target) {
   		var that = this;
   		
   		target.intervalID = setTimeout("", 40);
   		target.timeoutID = setTimeout("", 20);
   		target.indent = 0;
   		target.style.indent = 0;
   		
		target.onmouseover = function() {
			clearTimeout(target.timeoutID);
			
			var charSize = that.getCharLen(target);
			
			if(charSize > 130) {
				target.intervalID = that.overMove(target, charSize);
			}
		}
		target.onmouseout = function() {
			clearTimeout(this.intervalID);
			
			target.timeoutID = setTimeout(function() {
				target.indent = 0;
				target.style.textIndent = "0";
			}, 20);
		}
   	},
   	
   	'overMove': function(obj, charLen) {
   		var that = this;
   		
   		obj.indent = obj.indent - 3;
		obj.style.textIndent = obj.indent + "px";
		
		if(obj.indent < -charLen - 10) {
			obj.indent = obj.offsetWidth + 5;
		}
		
		return setTimeout(function() {
			obj.intervalID = that.overMove(obj, charLen);
		}, 40);
   	},
   	
   	'getCharLen': function(obj) {
   		var charSize = 0;
   		
   		var span = document.createElement("span");
		var text = document.createTextNode(obj.innerHTML.replace(/<!--.*-->|<\/?[^>]+>/gi, ""));
		span.appendChild(text);
		
		obj.appendChild(span);
		charSize = span.offsetWidth + 20;
		obj.removeChild(span);
		
		return charSize;
   	}
}

//#####################################//
//## リリースタイトル一覧 リンク生成 ##//
//#####################################//
var GetCalendar = {
	'init' : function() {
		
		var parent = document.getElementById("insertPointRelease");
		
		if(window.XMLHttpRequest) {
			var message = new XMLHttpRequest;
			
		} else if(window.ActiveXObject) {
			try {
				var message = new ActiveXObject("Msxml2.XMLHTTP");
			} catch(e) {
				var message = new ActiveXObject("Microsoft.XMLHTTP");
			}
		} else {
			return null;
		}
		
		message.onreadystatechange = function() {
			if(message.readyState == 4) {
				if(message.status == 200) {
					parent.innerHTML = message.responseText;
				} else {
					parent.innerHTML = '<p>リリースタイトル一覧 リンク生成に失敗しました。</p>';
				}
			} else {
				parent.innerHTML = '<p>リリースタイトル一覧 リンク生成中...</p>';
			}
		}
		
		try {
			var d = new Date();
			message.open('GET', "./script/original/get_calendar.php?t=" + d.getTime(), true);
			message.send(null);
		} catch(e) {
			parent.innerHTML = '<p>リリースタイトル一覧 リンク生成に失敗しました。</p>';
		}
	}
};

//####################//
//## イニシャライズ ##//
//####################//
YAHOO.util.Event.onDOMReady(function() {
	TopicsCheker.init();
	//GetCalendar.init();
	GetReleaseItem.init();
});
