/* グローバルナビゲーション
------------------------------------------------------------------------------*/

  function showLAYERoj(oj){
    if(!!oj) oj.visibility='visible'    //e4,e5,e6,n4,n6,n7,m1,o6,o7,s1用
  }

  //--layNameで指定したオブジェクトを返す(必ずonload後に実行すること)
  function getLayStyleOj(layName){  
    if(document.getElementById)         //e5,e6,n6,n7,m1,o6,o7,s1用
      return document.getElementById(layName).style
    else if(document.all)               //e4用
      return document.all(layName).style
    else if(document.layers)            //n4用
      return document.layers[layName]
  }
  function hideLAYER(layName){
    if(document.getElementById)         //e5,e6,n6,n7,m1,o6,o7,s1用
      document.getElementById(layName).style.visibility='hidden'
    else if(document.all)               //e4用
      document.all(layName).style.visibility='hidden'
    else if(document.layers)            //n4用
      document.layers[layName].visibility='hide'
  }



/*--------------------------------------
/  TreeSidebar
/  (Customed for Eidai Co.,Ltd.)
/  作成者：j,iida
/  作成日：2007/5/20
/  更新日：2007/5/30
/  (C)TAKEDA DESIGN ROOM
/--------------------------------------*/


/* Class: TreeSidebar (サイドバー)
------------------------------------------------------------------------------*/

function TreeSidebar(id, name)
{
	this.id   = id;
	this.name = name;
	this.cls  = null;
	this.el   = null;
	this.flag = null;
	this.domain = null;
	this.path = null;
	
	this.c_open   = 'cat_open';
	this.c_close  = 'cat_close';
	this.c_nolist = 'cat_nolist';
	this.c_head   = 'cat_head';
	this.c_foot   = 'cat_foot';
	this.c_btn    = 'cat_btn';
	this.c_clear  = 'cat_clear';
	
	this.c_lastli = 'cat_lastli';
	this.c_endli  = 'endli';
	
	this.init = function()
	{
		var ul = null;
		var li = null;
		var em = null;
		var cat = null;
		var cft = null;
		var btn = null;
		var clr = null;
		var act = null;
		var num = -1;
		var chl = null;
		
		var endli = null;
		
		this.el = document.getElementById(this.id);
		
		if ( this.el != null ) {
			
			this.cls = this.el.className;
			
			this.flag = this.getcookie();
			if (this.flag == null) {
				this.flag = new Array();
			}
			
			ul = this.el.getElementsByTagName('UL')[0];
			
			for (var i=0; i<ul.childNodes.length; i++) {
				li = ul.childNodes[i];
				if (li.tagName == 'LI') {
					num ++;
					if (li.getElementsByTagName('UL').length == 0) {
						li.className = this.c_nolist;
					}
					else if (this.flag[num] == 1) {
						li.className = this.c_open;
					}
					else {
						li.className = this.c_close;
						this.flag[num] = 0;
					}
					
					em = li.getElementsByTagName('EM')[0];
					
					cat = document.createElement('DIV');
					cft = document.createElement('DIV');
					cat.className = this.c_head;
					cft.className = this.c_foot;
					
					em.parentNode.replaceChild(cat, em);
					
					btn = document.createElement('A');
					btn.setAttribute('href', 'javascript:void(0);');
					act = this.name + '.click(this,' + num + ');';
					
					if (li.getElementsByTagName('UL').length > 0) {
						if (document.documentElement.getAttribute("style")
						== document.documentElement.style) {
							// for MSHTML
							btn.setAttribute('onclick', new Function(act));
						}
						else {
							btn.setAttribute('onclick', act);
						}
						// Last <LI>
						chl = li.getElementsByTagName('LI');
						chl[chl.length-1].className = this.c_lastli;
					}
					btn.className = this.c_btn;
					
					clr = document.createElement('DIV');
					clr.className = this.c_clear;
					
					cat.appendChild(btn);
					cat.appendChild(em);
					cat.appendChild(clr);
					
					li.appendChild(cft);
				}
			}
			
			// <Show all list>
			this.el.style.visibility = 'visible';
		}
	};
	this.click = function(btn_el, btn_num)
	{
		if (btn_el.parentNode.parentNode.className == this.c_close) {
			btn_el.parentNode.parentNode.className = this.c_open;
			this.flag[btn_num] = 1;
		}
		else {
			btn_el.parentNode.parentNode.className = this.c_close;
			this.flag[btn_num] = 0;
		}
		this.setcookie(this.flag);
	};
	this.getcookie = function()
	{
		if (document.cookie.length > 0) {
			var tmp1 = document.cookie.split('; ');
			for (var i=0; i<tmp1.length; i++) {
				var tmp2 = tmp1[i].split('=');
				if (tmp2.length > 1) {
					if (tmp2[0] == this.cls) {
						var tmp3 = tmp2[1].split(',');
						return tmp3;
					}
				}
			}
		}
		return null;
	};
	this.setcookie = function( flag_array )
	{
		var cookie_msg = this.cls + '=' + flag_array.toString() + ';';
		
		if (this.domain.length > 0) {
			cookie_msg += ' domain=' + this.domain + ';';
		}
		if (this.path.length > 0) {
			cookie_msg += ' path=' + this.path + ';';
		}
		document.cookie = cookie_msg;
	};
	
	return this;
}


window.onload = function(){
	
	LeftMenu = new TreeSidebar("sidearea", "LeftMenu");
	LeftMenu.domain = "eidai.com";
	LeftMenu.path   = "/";
	
	LeftMenu.init();
};




/* パンくずナビゲーション設定01
------------------------------------------------------------------------------*/

fd = new Object();
fd.onDomReady = function() {
        CodeHighlighter.init();
        for(var module in this) {
                if(this[module].onDomReady) this[module].onDomReady();
        }
}
/* Animated miniTabs */
fd.miniTab = {
        currentTab:     null,
        activeTab:      null,
        destX:          0,
        destW:          0,
        t:              0,
        b:              0,
        c:              0,
        d:              20,
        animInterval:   null,
        sliderObj:      null,
        aHeight:        0,
        
        onDomReady: function() {
                if(!document.getElementById || !document.getElementById("nav")) return;

                var ul          = document.getElementById("nav");
                var liArr       = ul.getElementsByTagName("li");
                var aArr        = ul.getElementsByTagName("a");

                var href        = document.location.href;

                for(var i = 0; i < aArr.length; i++) {
                        if( aArr[i].className && aArr[i].className.search("current") != -1) {
                                fd.miniTab.activeTab = fd.miniTab.currentTab = i;
                                break;
                        }
                }

                // Dont do anything if there's no current tab
                if(fd.miniTab.currentTab == null) return;

                for(var i = 0, li; li = liArr[i]; i++) {
                        liArr[i].onmouseover = aArr[i].onfocus = function(e) {
                                var pos = 0;
                                var elem = this.nodeName == "LI" ? this : this.parentNode;
                                while(elem.previousSibling) {
                                        elem = elem.previousSibling;
                                        if(elem.tagName && elem.tagName == "LI") pos++;

                                }
                                fd.miniTab.initSlide(pos);
                        }
                }

                ul.onmouseout = function(e) {
                        fd.miniTab.initSlide(fd.miniTab.currentTab);
                };

                for(var i = 0; i < aArr.length; i++) {
                        aArr[i].className = i == fd.miniTab.activeTab ? "current" : "";
                        aArr[i].style.borderBottom  = "0px";
                }

                fd.miniTab.slideObj                = ul.parentNode.appendChild(document.createElement("div"));
                fd.miniTab.slideObj.appendChild(document.createTextNode(String.fromCharCode(160)));
                fd.miniTab.slideObj.id             = "animated-tab";
                fd.miniTab.slideObj.style.top      = 0;
                fd.miniTab.slideObj.style.left     = (ul.offsetLeft) + "px";
                fd.miniTab.slideObj.style.width    = aArr[fd.miniTab.activeTab].offsetWidth + "px";
                fd.miniTab.aHeight                 = aArr[fd.miniTab.activeTab].offsetHeight;

                fd.miniTab.initSlide(fd.miniTab.activeTab, true);

                var intervalMethod = function() { fd.miniTab.slideIt(); }
                fd.miniTab.animInterval = setInterval(intervalMethod,10);
        },

        onUnload: function() {
                clearInterval(fd.miniTab.animInterval);
                fd.miniTab.animInterval = null;
        },

        initSlide: function(pos, force) {
                if(!force && pos == fd.miniTab.activeTab) return;
                fd.miniTab.activeTab = pos;
                fd.miniTab.initAnim();
        },

        initAnim: function() {
                var ul          = document.getElementById("nav");
                var liArr       = ul.getElementsByTagName("li");
                var aArr        = ul.getElementsByTagName("a");
                fd.miniTab.destX = parseInt(liArr[fd.miniTab.activeTab].offsetLeft + ul.offsetLeft) + 6;
                fd.miniTab.destW = parseInt(liArr[fd.miniTab.activeTab].getElementsByTagName("a")[0].offsetWidth) - 6;
                fd.miniTab.t = 0;
                fd.miniTab.b = fd.miniTab.slideObj.offsetLeft;
                fd.miniTab.c = fd.miniTab.destX - fd.miniTab.b;
                fd.miniTab.bW = fd.miniTab.slideObj.offsetWidth;
                fd.miniTab.cW = fd.miniTab.destW - fd.miniTab.bW;

                fd.miniTab.slideObj.style.top = (ul.offsetTop + liArr[fd.miniTab.activeTab].offsetTop - 8) + "px";
        },

        slideIt:function() {
                var ul          = document.getElementById("nav");
                var liArr       = ul.getElementsByTagName("li");
                var aArr        = ul.getElementsByTagName("a");

                // Has the browser text size changed?
                if(fd.miniTab.aHeight != aArr[fd.miniTab.activeTab].offsetHeight) {
                        fd.miniTab.initAnim();
                        fd.miniTab.aHeight = aArr[fd.miniTab.activeTab].offsetHeight;
                };

                if(fd.miniTab.t++ < fd.miniTab.d) {
                        var x = fd.miniTab.animate(fd.miniTab.t,fd.miniTab.b,fd.miniTab.c,fd.miniTab.d);
                        var w = fd.miniTab.animate(fd.miniTab.t,fd.miniTab.bW,fd.miniTab.cW,fd.miniTab.d);

                        fd.miniTab.slideObj.style.left = parseInt(x) + "px";
                        fd.miniTab.slideObj.style.width = parseInt(w) + "px";
                } else {
                        fd.miniTab.slideObj.style.left = fd.miniTab.destX + "px";
                        fd.miniTab.slideObj.style.width = fd.miniTab.destW +"px";
                }
        },

        animate: function(t,b,c,d) {
                if ((t/=d/2) < 1) return c/2*t*t + b;
                return -c/2 * ((--t)*(t-2) - 1) + b;
        }
}


/* パンくずナビゲーション設定02
------------------------------------------------------------------------------*/

var CodeHighlighter = { styleSets : new Array };

CodeHighlighter.addStyle = function(name, rules) {
        // using push test to disallow older browsers from adding styleSets
        if ([].push) this.styleSets.push({
                name : name,
                rules : rules,
                ignoreCase : arguments[2] || false
        });
}

CodeHighlighter.init = function() {
        if (!document.getElementsByTagName) return;
        if ("a".replace(/a/, function() {return "b"}) != "b") return; // throw out Safari versions that don't support replace function
        // throw out older browsers

        var codeEls = document.getElementsByTagName("CODE");
        // collect array of all pre elements
        codeEls.filter = function(f) {
                var a =  new Array;
                for (var i = 0; i < this.length; i++) if (f(this[i])) a[a.length] = this[i];
                return a;
        }

        var rules = new Array;
        rules.toString = function() {
                // joins regexes into one big parallel regex
                var exps = new Array;
                for (var i = 0; i < this.length; i++) exps.push(this[i].exp);
                return exps.join("|");
        }

        function addRule(className, rule) {
                // add a replace rule
                var exp = (typeof rule.exp != "string")?String(rule.exp).substr(1, String(rule.exp).length-2):rule.exp;
                // converts regex rules to strings and chops of the slashes
                rules.push({
                        className : className,
                        exp : "(" + exp + ")",
                        length : (exp.match(/(^|[^\\])\([^?]/g) || "").length + 1, // number of subexps in rule
                        replacement : rule.replacement || null
                });
        }

        function parse(text, ignoreCase) {
                // main text parsing and replacement
                return text.replace(new RegExp(rules, (ignoreCase)?"gi":"g"), function() {
                        var i = 0, j = 1, rule;
                        while (rule = rules[i++]) {
                                if (arguments[j]) {
                                        // if no custom replacement defined do the simple replacement
                                        if (!rule.replacement) return "<span class=\"" + rule.className + "\">" + arguments[0] + "</span>";
                                        else {
                                                // replace $0 with the className then do normal replaces
                                                var str = rule.replacement.replace("$0", rule.className);
                                                for (var k = 1; k <= rule.length - 1; k++) str = str.replace("$" + k, arguments[j + k]);
                                                return str;
                                        }
                                } else j+= rule.length;
                        }
                });
        }

        function highlightCode(styleSet) {
                // clear rules array
                var parsed;
                rules.length = 0;

                // get stylable elements by filtering out all code elements without the correct className
                var stylableEls = codeEls.filter(function(item) {return (item.parentNode.className.indexOf(styleSet.name)>=0)});

                // add style rules to parser
                for (var className in styleSet.rules) addRule(className, styleSet.rules[className]);

                // replace for all elements
                for (var i = 0; i < stylableEls.length; i++) {
                        // EVIL hack to fix IE whitespace badness if it's inside a <pre>
                        if (/MSIE/.test(navigator.appVersion) && stylableEls[i].parentNode.nodeName == 'PRE') {
                                stylableEls[i] = stylableEls[i].parentNode;

                                parsed = stylableEls[i].innerHTML.replace(/(<code[^>]*>)([^<]*)<\/code>/i, function() {
                                        return arguments[1] + parse(arguments[2], styleSet.ignoreCase) + "</code>"
                                });
                                parsed = parsed.replace(/\n( *)/g, function() {
                                        var spaces = "";
                                        for (var i = 0; i < arguments[1].length; i++) spaces+= "&nbsp;";
                                        return "\n" + spaces;
                                });
                                parsed = parsed.replace(/\t/g, "&nbsp;&nbsp;&nbsp;&nbsp;");
                                parsed = parsed.replace(/\n(<\/\w+>)?/g, "<br />$1").replace(/<br \/>[\n\r\s]*<br \/>/g, "<p><br></p>");

                        } else parsed = parse(stylableEls[i].innerHTML, styleSet.ignoreCase);

                        stylableEls[i].innerHTML = "&#160;" + parsed.replace(/^\s+|\s+$/g, "");
                }
        }

        // run highlighter on all stylesets
        for (var i in this.styleSets) highlightCode(this.styleSets[i]);
}

CodeHighlighter.addStyle("javascript",{
        comment : {
                exp  : /(\/\/[^\n]*\n)|(\/\*[^*]*\*+([^\/][^*]*\*+)*\/)/
        },
        brackets : {
                exp  : /\(|\)/
        },
        string : {
                exp  : /'[^']*'|"[^"]*"/
        },
        keywords : {
                exp  : /\b(arguments|break|case|continue|default|delete|do|else|false|for|function|if|in|instanceof|new|null|return|switch|this|true|typeof|var|void|while|with)\b/
        },
        global : {
                exp  : /\b(toString|valueOf|window|element|prototype|constructor|document|escape|unescape|parseInt|parseFloat|setTimeout|clearTimeout|setInterval|clearInterval|NaN|isNaN|Infinity)\b/
        }
});

CodeHighlighter.addStyle("css", {
        comment : {
                exp  : /\/\*[^*]*\*+([^\/][^*]*\*+)*\//
        },
        keywords : {
                exp  : /@\w[\w\s]*/
        },
        selectors : {
                exp  : "([\\w-:\\[.#][^{};>]*)(?={)"
        },
        properties : {
                exp  : "([\\w-]+)(?=\\s*:)"
        },
        units : {
                exp  : /([0-9]+)(em|en|px|%|pt)\b/,
                replacement : "$1<span class=\"$0\">$2</span>"
        },
        urls : {
                exp  : /url\([^\)]*\)/
        }
});

CodeHighlighter.addStyle("html", {
        comment : {
                exp: /&lt;!\s*(--([^-]|[\r\n]|-[^-])*--\s*)&gt;/
        },
        tag : {
                exp: /(&lt;\/?)([a-zA-Z]+\s?)/,
                replacement: "$1<span class=\"$0\">$2</span>"
        },
        string : {
                exp  : /'[^']*'|"[^"]*"/
        },
        attribute : {
                exp: /\b([a-zA-Z-:]+)(=)/,
                replacement: "<span class=\"$0\">$1</span>$2"
        },
        doctype : {
                exp: /&lt;!DOCTYPE([^&]|&[^g]|&g[^t])*&gt;/
        }
});


/* 別ウインドウ
------------------------------------------------------------------------------*/
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
