﻿/*
Author : Audi
http://audi.tw
Date:Sep 2008, v0.2
歡迎應用於無償用途散播，並請勿移除本版權宣告
*/
var bVer=parseInt(navigator.appVersion);
var bName=navigator.appName.toLowerCase();
var _agent=navigator.userAgent.toLowerCase();

_slideMenu_ie6  	= (_agent.indexOf("msie 6.0") != -1);
_slideMenu_ie7  	= (_agent.indexOf("msie 7.0") != -1);

_slideMenu_isIE = (_slideMenu_ie6 || _slideMenu_ie7);

function slideMenu(id){
	this.id=id;
	this.menu=document.getElementById(id);
	this.submenu=this.menu.getElementsByTagName("span");
	this.speed=2;
	this.delay=30;
	this.onloadFuns=window.onload;
}

slideMenu.prototype.init=function(){
	var pointer=this, a, c;

	for(var i=0; i<this.submenu.length; i++) {
		eval('this.submenu['+i+'].'+this.handler+'=function(){pointer.collapseOther(this.parentNode);pointer.slide(this.parentNode);}');
	}

	if (this.autoexpand){
		window.onload=function(){
			if(pointer.onloadFuns!=null && typeof pointer.onloadFuns=='function') {
				pointer.onloadFuns();
			}
			pointer.highlight();
		}
    }
}

slideMenu.prototype.highlight=function(){
	var currentLink=(_slideMenu_isIE)?window.location.toString().toLowerCase():window.location.pathname.toString().toLowerCase();
	var alink=document.getElementById(this.id).getElementsByTagName('a');
	for (var i=0;i<alink.length;i++){
		var path=alink[i].getAttribute('href').toLowerCase();
		if (!/\//.test(path)){
			var currentLink=currentLink.substring(currentLink.lastIndexOf('/')+1,currentLink.length);
		}
		if (path==currentLink){
			alink[i].className=this.currentStyle;
			alink[i].parentNode.className=this.currentStyle;
			this.expandMenu(alink[i].parentNode.parentNode);
			break;
		}
	}
}

slideMenu.prototype.slide=function(submenu){
	var smenu=submenu.getElementsByTagName('ul')[0];
	if (typeof smenu=='undefined'){
		this.collapseOther();
	}else{
		if (smenu.className=='collapsed'){
			this.expandMenu(smenu);
		}
		if (smenu.className=='expand'){
			this.collapseMenu(smenu);
		}
	}
}

slideMenu.prototype.expandMenu=function(submenu){
	var cHeight=0;
	var cHeight_pre=cHeight;
	var li=submenu.getElementsByTagName("li");
	for (var i=0;i<li.length;i++){
		cHeight+=li[i].offsetHeight;
	}

	var slideBy=Math.round(this.speed*li.length);

	var pointer=this;
	var interval=setInterval(function() {
		var newHeight=submenu.offsetHeight+slideBy;
		if (newHeight<cHeight){
			submenu.style.height=newHeight+'px';
		}else {
			clearInterval(interval);
			submenu.style.height=cHeight+'px';
			submenu.className='expand';
			pointer.collapseOther(submenu);
		}
	}, pointer.delay);
}


slideMenu.prototype.collapseMenu=function(submenu){
	var cHeight=0;
	var li=submenu.getElementsByTagName("li");


	var slideBy=Math.round(this.speed*li.length);
	var delay=Math.max(Math.round(this.delay/li.length),1);

	var pointer=this;
	var interval=setInterval(function() {
		var newHeight=submenu.offsetHeight-slideBy;
		if (newHeight>cHeight){
			submenu.style.height=newHeight+'px';
		}else {
			clearInterval(interval);
			submenu.style.height=cHeight+'px';
			submenu.className='collapsed';
		}
	}, delay);
}

slideMenu.prototype.collapseOther=function(submenu){
	var smenu;
	for (var i=0;i< this.submenu.length;i++){
		smenu=this.submenu[i].parentNode.getElementsByTagName('ul')[0];
		if (typeof smenu!='undefined'){
			if (smenu!=submenu && smenu.className=='expand'){
				this.collapseMenu(smenu);
			}
		}
	}
}


function expandCurrentLink(){
	var currentLink=(_slideMenu_isIE)?window.location.toString().toLowerCase():window.location.pathname.toString().toLowerCase();
	var alink=document.getElementById(_slideMenu_ID).getElementsByTagName('a');
	for (var i=0;i<alink.length;i++){
		if (alink[i].getAttribute('href').toLowerCase()==currentLink){
			alink[i].parentNode.className='current';
			_slideMenu_ID.expandMenu(alink[i].parentNode.parentNode);
			break;
		}
	}
}

// JavaScript Document
function addEvent(obj, evType, fn){
	if (obj.addEventListener){
		obj.addEventListener(evType, fn, false);
		return true;
	} else if (obj.attachEvent){
		var r = obj.attachEvent("on"+evType, fn);
		return r;
	} else {
		return false;
	}
}
