var win = (navigator.userAgent.indexOf("Windows") != -1) || false;
var mac = (navigator.userAgent.indexOf("PPC Mac") != -1 || navigator.userAgent.indexOf("PowerPC") != -1 ) || false;
var intelMac = (navigator.userAgent.indexOf("Intel Mac") != -1) || false;
var firefox = (navigator.userAgent.indexOf("Firefox") != -1) || false;
var opera9 = (navigator.userAgent.indexOf("Opera/9") != -1) || false;
var opera = (navigator.userAgent.indexOf("Opera") != -1 && !opera9) || false;
var ie = (document.all && win && !opera && !opera9) || false;
var ie7 =(navigator.userAgent.indexOf("MSIE 7") != -1) || false;
var macIE = (navigator.userAgent.indexOf("MSIE") != -1 && mac) || false;
var safari = (navigator.userAgent.indexOf("Safari") != -1) || false;
var camino = (navigator.userAgent.indexOf("Camino") != -1) || false;
var omniweb = (navigator.userAgent.indexOf("OmniWeb") != -1) || false;
var netscape = (navigator.userAgent.indexOf("Netscape") != -1) || false;

//####################//
//## イニシャライズ ##//
//####################//

function initTop() {
    ddClose();
    initAnchor();
	//initLightbox();
    return;
}
function initProfile() {
	//initLightbox();
    initAnchor();
    return;
}

function initDisco(target) {
    if(target != null) {
	    fixedItem(target);
	}
    initAnchor();
    return;
}
function initRelease(target) {
    if(target != null) {
	    fixedItem(target);
	}
    initAnchor();
    delMark();
    xpIE6();
    return;
}
function initSche(target) {
    if(target != null) {
	    fixedItem(target);
	}
    initAnchor();
    autoClick();
    return;
}
function initMail() {
    initAnchor();
    return;
}

//##########################//
//## アンカーコントロール ##//
//##########################//
function initAnchor() {
    var imageTags = document.getElementsByTagName("IMG");
    var exp = new RegExp("icon_back", "i");
    
    for(var i = 0; i < imageTags.length; i++) {
        if(imageTags[i].src.search(exp) != -1) {
            imageTags[i].parentNode.onclick = function() {
                pageScroll();
                return false;
            }
        }
    }
}

//########################//
//## 広告Flashタグ挿入 ##//
//########################//
var CtrlADFlash = {
	'init' : function(id, days, finish, cookie, swfname, setTime, imgPath, jumpURL) {
		YAHOO.util.Event.onDOMReady(function() {
			if(finish.match(/^\d\d\d\d-\d\d-\d\d/)) {
		
				
				var parts = finish.split(" ");
				
				var now = new Date();
				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(now.getTime() - d.getTime() < 0) {
					if(document.cookie.indexOf(cookie + "=true") != -1) {
						return;
					} else {
						var winWidth = window.innerWidth ? window.innerWidth : (document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth);
						var winHeight = window.innerHeight ? window.innerHeight : (document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight);
						
						var tempImg = document.createElement("img");
						tempImg.path = imgPath;
						
						tempImg.onload = function() {
							if(winWidth / winHeight > this.width / this.height) {
								if(winHeight < this.height + 100) {
									imgPath = 'http://www.teichiku.co.jp/script/original/ctrl_image.php%3Fsrc=' + imgPath + '%26height=' + (winHeight - 100);
								}
							} else {
								if(winWidth < this.width + 100) {
									imgPath = 'http://www.teichiku.co.jp/script/original/ctrl_image.php%3Fsrc=' + imgPath + '%26width=' + (winWidth - 100);
								}
							}
							var body = document.getElementsByTagName("BODY");
							var insertPoint = document.getElementById("header");
							
							var div = document.createElement("div");
							div.setAttribute("id", id);
							
							var hr = document.createElement("hr");
							if(YAHOO.env.ua.ie != 0) {
								if(jumpURL != null) {
									div.innerHTML = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="100%" height="100%"><param name="allowScriptAccess" value="sameDomain" /><param name="movie" value="' + swfname + '" /><param name="quality" value="high" /><param name="wmode" value="transparent"><param name="FlashVars" value="setTime=' + setTime + '&imgPath=' + imgPath + '&jumpURL=' + jumpURL + '" /></object>';
								} else {
									div.innerHTML = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="100%" height="100%"><param name="allowScriptAccess" value="sameDomain" /><param name="movie" value="' + swfname + '" /><param name="quality" value="high" /><param name="wmode" value="transparent"><param name="FlashVars" value="setTime=' + setTime + '&imgPath=' + imgPath + '" /></object>';
								}
							} else {
								var wrapper = document.createElement("div");
								var embed = document.createElement("embed");
								
								embed.setAttribute("src", swfname);
								embed.setAttribute("quality", "high");
								embed.setAttribute("wmode", "transparent");
								embed.setAttribute("width", "100%");
								embed.setAttribute("height", "100%");
								if(jumpURL != null) {
									embed.setAttribute("FlashVars", 'setTime=' + setTime + '&imgPath=' + imgPath + '&jumpURL=' + jumpURL);
								} else {
									embed.setAttribute("FlashVars", 'setTime=' + setTime + '&imgPath=' + imgPath);
								}
								embed.setAttribute("allowScriptAccess", "sameDomain");
								embed.setAttribute("type", "application/x-shockwave-flash");
								embed.setAttribute("pluginspage", "http://www.macromedia.com/go/getflashplayer");
								
								wrapper.appendChild(embed);
								div.appendChild(wrapper);
							}
							div.appendChild(hr);
							body[0].insertBefore(div, insertPoint);
							div.style.height = winHeight + "px";
							
							if(0 < YAHOO.env.ua.ie && YAHOO.env.ua.ie < 7) {
								window.attachEvent('onscroll',  CtrlADFlash.fixed);
								window.attachEvent('onresize',  CtrlADFlash.fixed);
							}
							
							var limit = new Date();
							limit.setTime(limit.getTime() + (1000 * 60 * 60 * 24 * days));
							limitGMT = limit.toGMTString();
							document.cookie = cookie + "=true;expires=" + limitGMT + ";";
						}
						tempImg.setAttribute("src", imgPath);
					}
				}
			}
		});
	},
	
	'remove' : function(id) {
		target = document.getElementById(id);
		target.parentNode.removeChild(target);
		if(0 < YAHOO.env.ua.ie && YAHOO.env.ua.ie < 7) {
			window.detachEvent('onscroll',  CtrlADFlash.fixed);
			window.detachEvent('onresize',  CtrlADFlash.fixed);
		}
	},
	
	'fixed' : function() {
		if(document.getElementById("ad-flash")) {
			var target = document.getElementById("ad-flash");
			target.style.top = CtrlADFlash.getScroll() + "px";
			target.style.height = "100%";
		}
	},
	
	'getScroll' : function() {
		return document.body.scrollTop || document.documentElement.scrollTop;
	}
}


//############################//
//## トピックスコントロール ##//
//############################//

function ddClose() {
if (document.getElementById){
    var topics = document.getElementById("topics");
    var ddTags = topics.getElementsByTagName("DD");
    
    for(var i = 0; i < ddTags.length; i ++) {
        if( ddTags[i].firstChild.nodeName == "EM") {
            var temp = ddTags[i];
            while (temp.nodeName != "DT") {
                temp = temp.previousSibling;
            }
            temp.style.fontWeight = "bold";
            temp.title= "タイトル左のアイコンをクリックすると情報の開閉ができます。";
            var imgTag = temp.firstChild;
            while (imgTag.nodeName != "IMG") {
                imgTag = imgTag.firstChild;
            }
            imgTag.alt = "詳細を閉じる（javascript使用）";
            imgTag.title = "詳細を閉じる（javascript使用）";
            imgTag.src = "./img/basic/icon_minus.gif";
            imgTag.parentNode.onclick = function() {
                openCloseDD(this);
                return false;
            }

            while (temp != null) {
                if (temp.nodeName == "DD") {
                    temp.style.display = "block";
                    i++;
                }
                temp = temp.nextSibling;
            }
            i--;
        } else if(ddTags[i].className != "date") {
            ddTags[i].style.display = "none";
            var  temp = ddTags[i];
            while (temp.nodeName != "DT") {
                temp = temp.previousSibling;
            }
            temp.style.fontWeight = "normal";
            temp.title="タイトル左のアイコンをクリックすると情報の開閉ができます。";
            
            var imgTag = temp.firstChild;
            while (imgTag.nodeName != "IMG") {
                imgTag = imgTag.firstChild;
            }
            imgTag.alt = "詳細を開く（javascript使用）";
            imgTag.title = "詳細を開く（javascript使用）";
            imgTag.src = "./img/basic/icon_plus.gif";
            imgTag.parentNode.onclick = function() {
                openCloseDD(this);
                return false;
            }

        }
    }
}
}

function openCloseDD(obj) {
if (document.getElementById){
    while (obj.nodeName != "IMG") {
        obj = obj.firstChild;
    }
    var target = obj.parentNode;
    while (target.nodeName != "DT") {
        target = target.parentNode;
    }
    
    while(target != null) {
        if (target.nodeName == "DT") {
            var s1 = target.style.fontWeight;
            if (opera || opera9) {
                if (s1 != 700) {
                    target.style.fontWeight = "bold";
                } else {
                    target.style.fontWeight = "normal";
                }
            } else {
                if (s1 != "bold") {
                    target.style.fontWeight = "bold";
                } else {
                    target.style.fontWeight = "normal";
                }
            }
        } 
        if (target.nodeName == "DD" && target.className != "date") {
            var s2 = target.style.display;
            if (s2 != "block") {
                target.style.display = "block";
                obj.alt = "詳細を閉じる（javascript使用）";
                obj.title = "詳細を閉じる（javascript使用）";
                obj.src = "./img/basic/icon_minus.gif";
            } else {
                target.style.display = "none";
                obj.alt = "詳細を開く（javascript使用）";
                obj.title = "詳細を開く（javascript使用）";
                obj.src = "./img/basic/icon_plus.gif";
            }
            target = target.nextSibling;
        } else {
            target = target.nextSibling;
        }
    }
}
}

//########################//
//## トピックス注意書き ##//
//########################//

function drawTopicsInfo() {
if (document.getElementById){
        document.write('<p class="note">各トピックタイトル左のアイコンをクリックすると情報の開閉ができます。</p>');
}
}

//####################################//
//## ディスコグラフィーアイテム選択 ##//
//####################################//

function openCloseDiscography(target) {
if (document.getElementById){
    var dl = document.getElementsByTagName("DL");
    var re = new RegExp(target, "i");
    var temp = 0;
        
    while(dl.item(temp) !== null) {
        if(dl.item(temp).className.search(re) != -1 || target == "all") {
            dl.item(temp).style.display = "block";
        } else {
            dl.item(temp).style.display = "none"
        }
        temp++;
    }
    setTimeout(fixedObj('ctrl',getMarginTop('ctrl'), 5, 'icon-info'), 1);
}
}

//##############################//
//## スケジュールアイテム選択 ##//
//##############################//

function openCloseTABLE(target) {
if (document.getElementById){
	var schedule = document.getElementById("schedule");
    var table = schedule.getElementsByTagName("TABLE");
    var temp = 0;
    
    while(table.item(temp) !== null) {
        
        if(table.item(temp).id == target || target == "all") {
            table.item(temp).style.display = "block";
        } else {
            table.item(temp).style.display = "none"
        }
        temp++;
    }
    setTimeout(fixedObj('ctrl',getMarginTop('ctrl'), 5, 'memo'), 1);
}
}

//####################################################################//
//## IE6 XP 用 メイリオ適用 XHTML1.1 こっそりlang属性付加します関数 ##//
//####################################################################//
function xpIE6() {
if (document.getElementById){
	if(ie) {
		var temp;
		
		if(temp = document.getElementById("topicpath")) {
			temp.setAttribute("lang", "ja");
		}
		if(temp = document.getElementById("release-info")) {
			temp.setAttribute("lang", "ja");
		}
		if(temp = document.getElementById("icon-info")) {
			temp.setAttribute("lang", "ja");
		}
		if(temp = document.getElementById("notice")) {
			temp.setAttribute("lang", "ja");
		}
		if(temp = document.getElementById("menu")) {
			temp.setAttribute("lang", "ja");
		}
		return;
	} else {
		return;
	}
}
}


//########################################//
//## 指定したアイテムをウインドウに固定 ##//
//########################################//

function fixedItem() {
if (document.getElementById){
	
	for(var i = 0; i < arguments.length; i++) {
		var obj = arguments[i].split("/");
		
		if(obj.length == 2) {
			var target = obj[0];
			var end = obj[1];
		} else if(obj.length > 3) {
			var target = obj[0];
			var end = null;
		} else {
			var target = obj;
			var end = null;
		}
		var marginTop = getMarginTop(target);
		
		setTimeout(fixedObj(target, marginTop, 5, end), 1);
		
		if(!macIE) {
			if(!ie && !ie7) {
				window.addEventListener('scroll', fixedObj(target, marginTop, 5, end), false);
			} else {
				window.attachEvent('onscroll',  fixedObj(target, marginTop, 5, end));
			}
		}
	}
}
}

function fixedObj(targetID, marginTopFromBody, space, endID) {
	return function() {
		//限界縦画面サイズ（これより小さいとスクロールさせない）
		if(targetID == "jacket") {
			if(endID != null) {
				var jacket = document.getElementById(targetID);
				var imgs = jacket.getElementsByTagName("IMG");
				var imgsHeight = 12; //リミットオブジェクトに対する上部余白
				for(var i = 0; i < imgs.length; i++) {
					imgsHeight += imgs[i].height;
					imgsHeight += 4;
				}
				var limit = imgsHeight;
			} else {
				return;
			}
		} else {
			var limit = document.getElementById(targetID).offsetHeight + 20;
		}
		var winHeight = getHeight();
		
		if(winHeight > limit) {
			var obj = document.getElementById(targetID);
			var scrY = getScroll();
			
			if(targetID == "jacket") {
				if(endID != null) {
					if(endID != "more-info") {
						var limitHeight = getMarginTop(endID);
					} else {
						var temp = document.getElementById(endID);
						var h3Tags = temp.getElementsByTagName("H3");
						h3Tags[0].id = "temp";
						var limitHeight = getMarginTop("temp");
					}
					if(scrY - (marginTopFromBody - space) > 0) {
						if(scrY + imgsHeight  < limitHeight) {
							obj.style.marginTop = scrY - (marginTopFromBody - space) + "px";
						} else {
							obj.style.marginTop = limitHeight - imgsHeight - (marginTopFromBody - space) + "px";
						}
					} else {
						obj.style.marginTop = 0 + "px";
					}
				}
			} else {
				var limitHeight = getMarginTop(endID);

				if(scrY - (marginTopFromBody - space) > 0) {
					if(scrY + limit  < limitHeight) {
						obj.style.top = scrY - (marginTopFromBody - space) + "px";
					} else {
						obj.style.top = limitHeight - limit - (marginTopFromBody - space) + "px";
					}
				} else {
					obj.style.top = 0 + "px";
				}
			}
		}
	}
}

//##########################################################//
//## 対象オブジェクトの BODYからの トップマージン取得関数 ##//
//##########################################################//
function getMarginTop(id) {
	
	var obj = document.getElementById(id);
	var marginTop = obj.offsetTop;
	if(!ie7) {
		while(obj.offsetParent.nodeName != "BODY") {
			obj = obj.offsetParent;
			marginTop += obj.offsetTop;
		}
	} else {
		while(obj.offsetParent.nodeName != "HTML") {
			obj = obj.offsetParent;
			marginTop += obj.offsetTop;
		}
	}
	obj = obj.offsetParent;
	marginTop += obj.offsetTop;

	return marginTop;
}

//##########################################//
//## ブラウザの縦の表示領域サイズ取得関数 ##//
//##########################################//
function getHeight() {
    if(ie7 || firefox) {
        return document.documentElement.clientHeight;
    } else if(ie || opera || opera9) {
        return document.body.clientHeight;
    } else if(safari) {
        return window.innerHeight;
    } else {
        return 0;
    }
}

//##########################//
//## スクロール幅取得関数 ##//
//##########################//
function getScroll() {
    if(ie7) {
        return document.documentElement.scrollTop;
    } else if(ie || macIE || netscape) {
        return document.body.scrollTop;
    } else if(safari || firefox || omniweb || opera || opera9) {
        return window.pageYOffset;
    } else {
        return 0;
    }
}

//##########################//
//## ウインドウスクロール ##//
//##########################//

function pageScroll() {
    var scroll = 1;
    var scrY = getScroll();
    if(scroll < 50 && scrY && scrY != null) {
        scrY = (scrY > 3) ? Math.ceil(scrY * 0.2) : 1;
        scroll++;
        scrollBy(0, -scrY);
        setTimeout("pageScroll()", 20);
    } else {
        scrollTo(0, 0);
        scroll = 1;
    }
}

//##############################################//
//## ディスコグラフィーのコントローラ表示関数 ##//
//##############################################//

function drawCtrl(page) {
	if(page == 'discography') {
		document.write('<div id="ctrl">');
		document.write('<h2>表示コントロール</h2>');
		document.write('<ul>');
		document.write('<li class="all"><a href="#all" onkeypress="document.focus(); openCloseDiscography(\'all\'); return false;" onclick="openCloseDiscography(\'all\'); return false;">ALL</a></li>');
		document.write('<li><a href="#album" onkeypress="document.focus(); openCloseDiscography(\'album\'); return false;" onclick="openCloseDiscography(\'album\'); return false;">Album</a></li>');
		document.write('<li><a href="#single" onkeypress="document.focus(); openCloseDiscography(\'single\'); return false;" onclick="openCloseDiscography(\'single\'); return false;">Single</a></li>');
		document.write('<li><a href="#dvd" onkeypress="document.focus(); openCloseDiscography(\'dvd\'); return false;" onclick="openCloseDiscography(\'dvd\'); return false;">DVD</a></li>');
		document.write('<li><a href="#audio" onkeypress="document.focus(); openCloseDiscography(\'audio\'); return false;" onclick="openCloseDiscography(\'audio\'); return false;">DVD-Audio</a></li>');
		document.write('<li><a href="#etc" onkeypress="document.focus(); openCloseDiscography(\'etc\'); return false;" onclick="openCloseDiscography(\'etc\'); return false;">etc</a></li>');
		document.write('</ul>');
		document.write('</div>');
		document.write('<hr />');
	} else if(page == 'schedule'){
		document.write('<div id="ctrl">');
		document.write('<h2>表示コントロール</h2>');
		document.write('<ul>');
		document.write('<li class="all"><a href="#all" onkeypress="document.focus(); openCloseTABLE(\'all\'); return false;" onclick="openCloseTABLE(\'all\'); return false;">ALL</a></li>');
		document.write('<li><a href="#regular" onkeypress="document.focus(); openCloseTABLE(\'regular\'); return false;" onclick="openCloseTABLE(\'regular\'); return false;">Regular</a></li>');
		document.write('<li><a href="#web" onkeypress="document.focus(); openCloseTABLE(\'web\'); return false;" onclick="openCloseTABLE(\'web\'); return false;">Web</a></li>');
		document.write('<li><a href="#tv" onkeypress="document.focus(); openCloseTABLE(\'tv\'); return false;" onclick="openCloseTABLE(\'tv\'); return false;">TV</a></li>');
		document.write('<li><a href="#radio" onkeypress="document.focus(); openCloseTABLE(\'radio\'); return false;" onclick="openCloseTABLE(\'radio\'); return false;">Radio</a></li>');
		document.write('<li><a href="#magazine" onkeypress="document.focus(); openCloseTABLE(\'magazine\'); return false;" onclick="openCloseTABLE(\'magazine\'); return false;">Magazine</a></li>');
		document.write('<li><a href="#etc" onkeypress="document.focus(); openCloseTABLE(\'etc\'); return false;" onclick="openCloseTABLE(\'etc\'); return false;">etc</a></li>');
		document.write('<li><a href="#event" onkeypress="document.focus(); openCloseTABLE(\'event\'); return false;" onclick="openCloseTABLE(\'event\'); return false;">Live / Event</a></li>');
		document.write('</ul>');
		document.write('</div>');
		document.write('<hr />');
	}
}

//####################################//
//## macIE テーブルボーダーバグ回避 ##//
//####################################//
function autoClick() {
	if(macIE) {
		openCloseTABLE('all');
	}
}

//###################################//
//## Opera9 表示バグ対応スクリプト ##//
//###################################//
function delMark() {
    if(opera9) {
        window.onscroll = function(e) {
            var list = document.getElementById("list");
            changeWidth(list, 564);
            setTimeout("changeWidth(list, 565)", 1);
        }
    }
}
function changeWidth(obj, width) {
    obj.style.width = width + "px";
}

//################################//
//## 閲覧人数カウントプログラム ##//
//################################//
var WhoIsOnline = {
	'option' : {
		'repeatID' : setTimeout("", 30000)
	},
	
	'init' : function() {
		var that = this;
		
		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) {
					//成功
				} else {
					//失敗
				}
			} else {
				//取得中
			}
		}
		
		if(location.href.match(/^http:/)) {
			this.option.repeatID = this.open(message);
		}
	},
	
	'open' : function(xmlhttp) {
		var that = this;
		
		try {
			var dummyTime = (new Date()).getTime();
			
			xmlhttp.open('GET', location.protocol + "//www.teichiku.co.jp/script/analyze/who_is_online.php?url=" + encodeURIComponent(location.href.replace(/index\.(html|php)/, "")) + "&t=" + dummyTime, true);
			xmlhttp.send(null);
			
			return setTimeout(function() {
				that.option.repeatID = that.open(xmlhttp);
			}, 30000);
		} catch(e) {
			
		}
	}
};

