
//因IE會自動的調整列印大小，而列印出字體很小的內容(因Iframe1200)。所以需使用window.onbeforeprint()
//但FireFox會認為錯誤，所以使用windows.onbeforeprint=function的方式
function prePrint(){top.document.getElementById("nibiFrame").width = "620px";}
function postPrint(){top.document.getElementById("nibiFrame").width = "1200px";}
window.onbeforeprint=function(){prePrint();}
window.onafterprint=function(){postPrint();}


//啟動內文DIV的滑動
function start(href,kNode){
    if (kNode!=null) changeColor(kNode);
	if(document.action != "on"){
		document.maxLeft = 900;
		document.minLeft = 210;
		openDiv(href); //先更換網頁再滑入
	}
}


//DIV滑出
function openDiv(href) {
		document.action = "on";
		if(document.getElementById('box3').style.left == "900px"){
			document.getElementById("rFrame").src = href; //更換網頁
			document.nowhref = href;
			closeDiv();
			}
		else{
			if(href != document.href){
				document.minLeft += 30;
				document.getElementById('box3').style.left = document.minLeft + "px";
				setTimeout(function(){openDiv(href);},30);}
			else{
				document.action = "off";}
		}
}

//DIV滑入
function closeDiv() {
	if(document.getElementById('box3').style.left == "210px"){
		document.action = "off";
		}
	else{
		document.maxLeft -= 30;
		document.getElementById('box3').style.left = document.maxLeft +"px";
		setTimeout(function(){closeDiv();},30);}
}

//更換目錄上被選取內容的顏色
function changeColor(kNode){
    //取消原有的顏色
    var uli = document.getElementsByTagName('a');
    for(var i = 0; i < uli.length; i++)uli[i].removeAttribute("style");

    var isInternetExplorer = navigator.appName.indexOf("Microsoft") != -1;//版本不同方法不同
    while (kNode.nodeName == "LI")
    {
    if (isInternetExplorer) kNode.childNodes[0].style.setAttribute("cssText","color:#7a6336")
    else kNode.childNodes[0].setAttribute("style","color:#7a6336;");
    kNode = kNode.parentNode.parentNode;
    } 
}


//列印文章選取(IE和FF的判斷不同)
function printIt(){
	if(document.getElementById("rFrame").src=="" || document.getElementById("rFrame").src=="http://www.nibico.com.tw/knowledge/knowledge.aspx")
		alert("您未選擇要列印的文章");
	else{
		window.frames['rFrame'].focus();
		window.frames['rFrame'].print();
	}
}

//Menu的控管
var knowledge = {
    init: function(){
        var uls = document.getElementsByTagName('ul');
        for(var i = 0; i < uls.length; i++){
            if(uls[i].className.search(/\bknowledge\b/) == -1) continue;
            var menu = uls[i];
            var subMenus = menu.getElementsByTagName('ul');
            for(var j = 0; j < subMenus.length; j++){
                var parentLI = subMenus[j].parentNode;
                parentLI.hasSubMenu = true;
                if(menu.className.search(/\bonClick\b/) !=-1){
                    addEvent(parentLI, 'click', knowledge.click, false);
                    parentLI.getElementsByTagName('a')[0].href="#"
                }else{
                    addEvent(parentLI, 'mouseout', knowledge.getMoutFor(parentLI), false);
                    addEvent(parentLI, 'mouseover', knowledge.getMoverFor(parentLI), false);
                }
                parentLI.getElementsByTagName('a')[0].className += " subMenu";
            }
        }
    },
    
    getMoverFor:function(node){
        return function(){knowledge.mOver(node);};
    },
    
    getMoutFor:function(node){
        return function(){knowledge.mTimeout(node);};
    },
    
    mOver: function(targetElement){
        var target = targetElement;
        clearTimeout(target.timeout);
        for(var i = 0; i < target.childNodes.length; i++){
            var node = target.childNodes[i];
            if(node.nodeName.toLowerCase() == 'ul'){
                target.getElementsByTagName('a')[0].className += ' click';
                target.className += ' click';
                node.className += ' click';
            }
        }
    },
    
    mTimeout: function(targetElement){
        var target = targetElement;
        target.timeout = setTimeout(function(){knowledge.mOut(target);}, 100);
    },
    
    mOut:function(target){
        for(var i = 0; i < target.childNodes.length; i++){
            var node = target.childNodes[i];
            if(node.nodeName.toLowerCase() == 'ul'){
                target.getElementsByTagName('a')[0].className = target.getElementsByTagName('a')[0].className.replace(/click/g, '');
                node.className = node.className.replace(/click/g, '');
                target.className = target.className.replace(/click/g, '');
            }
        }
    },
    
    click:function(e){
        if(window.event){
            window.event.cancelBubble = true;
        }
        if(e && e.stopPropagation){
            e.stopPropagation();
        }
        var target = (window.event)? window.event.srcElement : (e)? e.target : null;
        
        if(!target || !(target = knowledge.getTarget(target, 'li')))return;
        
        if(target.getElementsByTagName('a')[0].className.search(/\bclick\b/) == -1){
            knowledge.mOver(target);
        }else{
            knowledge.mOut(target);
        }
    },
    
    getTarget: function(target, elm){
        if(target.nodeName.toLowerCase() != elm && target.nodeName.toLowerCase() != 'body'){
            return knowledge.getTarget(target.parentNode, elm);
        }else if(target.nodeName.toLowerCase() == 'body'){
            return null;
        }else{
            return target;
        }
    }
}
    
function addEvent(elm, evType, fn, useCapture){  //cross-browser event handling for IE5+, NS6+, and Mozilla/Gecko 
	if(elm.addEventListener){
		elm.addEventListener(evType, fn, useCapture);
		return true;
	}else if(elm.attachEvent){
		var r = elm.attachEvent('on' + evType, fn);
		return r;
	}else{
		elm['on' + evType] = fn;
	}
}

addEvent(window, 'load', knowledge.init, false);
