﻿/*
    A slide menu implementation.
    Author: Iap, Singuan （iapyeh@gmail.com)
    Date: Jan, 2008
    Authorize To: 譯通
    Version: 1.0
*/
var debugLineCount = 0;
var debugMode = 0;
var doAdjuectLins = 0;
var targetFrame = 'ContentFrame';
function debug(s){
    if (!debugMode){return}
    debugLineCount += 1
    document.getElementById('debug').innerHTML += debugLineCount+': '+s+"<br/>";
}
function clearDebug(){
    if (!debugMode){return}
    debugLineCount = 0;
    document.getElementById('debug').innerHTML = '';
}
/* cross-browser version of attachEvents */
function attachEvent(obj,eventName,func){
    var isIE=document.all;
    if (isIE){
        obj.attachEvent(eventName,func);
    }
    else{
        eventNames={'onclick':'click','onreadystatechange':'readystatechange'}
	if (eventName == 'onclick')
		obj.onclick = func;
	else
        	obj.addEventListener(eventNames[eventName],func,false);
    }
}

var menuItemCounter=0;
var slidemenuChildren = {};
var slidemenuRoot=[];
var menuItemRect=[];
var bottomLevel = 0;
function findSubItems(parentObj){
    var children=[];
    //alert(parentObj.children)
    for (var i=0;i<parentObj.children.length;i++){
        var d = parentObj.children[i];
        if (d.className.indexOf('slidemenuItemLevel')==0){
            menuItemCounter += 1;
            var menuId='menu'+menuItemCounter;
            d.setAttribute('slidemenuId',menuId);
            d.setAttribute('id',menuId);
            var level = parseInt(d.className.substr(18,1));
            var c = findSubItems(d);
            if (c.length){
                children.push([d,c])
                slidemenuChildren[menuId]=c;
            }
            else{
                children.push([d,null]);
                slidemenuChildren[menuId]=[];
            }
        }
    }
    return children;
}
/* expand */
function getSiblingItems(item){
    var parent = item.getAttribute('parentItem')
    var _sibling = [];
    var sibling = [];
    if (parent){
        _sibling = slidemenuChildren[parent.getAttribute('slidemenuId')];
    }
    else{
        //for (var i=0;i<slidemenuRoot.length;i++){
        //    _sibling.push(slidemenuRoot[i][0]);
        //}
        _sibling = slidemenuRoot;
    }
    for (var i=0;i<_sibling.length;i++){
        sibling.push(_sibling[i][0]);
    }
    return sibling;
}
var expandedItems=[];
var lastExpanded;
var _expanding = 0;
function expand(item){
    if (lastExpanded == item) {return};
    // restore last expanding state
    _expanding = 1;    
    var id = item.getAttribute('id');
    var cmd = "expand2('"+id+"')";
    if (lastExpanded && (item.getAttribute('level') <= lastExpanded.getAttribute('level'))){
        var steps = lastExpanded.getAttribute('level') - item.getAttribute('level')  + 1
        collapse(steps);
        setTimeout(cmd,0);
    }
    else{
        setTimeout(cmd,0);
    }
    setTimeout('_expanding = 0',1500); // invoke the next expanding 1.5 seconds later
}
function expand2(itemId){
    var item = document.getElementById(itemId);
    var children =  slidemenuChildren[itemId];
    for (var i=0;i<children.length;i++){
        var child = children[i][0];    
        child.style.display="block";
    }
    if (!children[0]){/*leaf reachd*/return;}
    var rect = children[0][0].getBoundingClientRect();
    var height = rect.bottom - rect.top;
    var childrenHeight = children.length * height;    
    // move down the sibling items of the clicked item
    var sibling = getSiblingItems(item);
    var index;
    for (var i=0;i<sibling.length;i++){
        if (sibling[i]==item){
            index = i;
            break;
        }
    }
    // move down the sibling items of the parent item of clicked item
    //if (index < sibling.length - 1){
    
    moveExpandedDown(childrenHeight);
    
    //alert(temp);
    //}
    var expandedItem = [[],[]]; // 0 for siblings, 1 for sub-items
    for (var i=index+1;i<sibling.length;i++){
        expandedItem[0].push([sibling[i],parseInt(sibling[i].style.top)]);
        moveTop(sibling[i].getAttribute('id'),childrenHeight+parseInt(sibling[i].style.top));
    }
    
    // show the sub items
    var top = item.getBoundingClientRect().bottom;
    
    //adjust here for different layout
    //var offset = item.getAttribute('level') <2 && 6 || 0;// spacer
    var offset = 0;
    
    for (var i=0;i<children.length;i++){
        var child = children[i][0];
        expandedItem[1].push(child);
        //child.style.position="absolute";
        child.style.top =(i+1) * height + offset;
        child.style.visibility="visible";
        //child.style.display="block";
        if (child.getAttribute('level')==bottomLevel){
            fadeIn(child.getAttribute('id'),0)
        }
    }
    if (children.length){
        var top1 = parseInt(children[children.length-1][0].style.top);
        var top2 = parseInt(slidemenuRoot[slidemenuRoot.length-1][0].style.top)
        var top = Math.max(top1,top2);
        if (top > minFrameHeights[0]){
            //debug(children[children.length-1][0].getAttribute('title')+','+minFrameHeights[0]+','+top)
            minFrameHeights[0] = top
        }
        
    }
    expandedItems.push(expandedItem);
    //alert(expandedItem);
    
    lastExpanded = item;
    setContentFrameHeight();

}
function collapse(steps){
    for (var i=0;i <steps;i++){
        if (expandedItems.length){
            var expandedItem=expandedItems.pop();   
            // move down sibling
            for (var j=0;j<expandedItem[0].length;j++){
                var obj = expandedItem[0][j][0];
                var top = expandedItem[0][j][1];
                obj.style.top = top;
            }
            // hide subitems
            var itemHeight = 0;
            for (var j=0;j<expandedItem[1].length;j++){
                var e = expandedItem[1][j].getBoundingClientRect();
                itemHeight = (e.bottom - e.top);
                if (expandedItem[1][j].getAttribute('level')==bottomLevel){
                    //fadeOut(expandedItem[1][j].getAttribute('id'),100);
                    expandedItem[1][j].style.visibility="hidden";
                }
                else{
                    expandedItem[1][j].style.visibility="hidden";
                }
            }
            // Move the expanded item up to fill the space which were set to be hidden
            delta = -1 * (expandedItem[1].length * itemHeight);
            moveExpandedDown(delta)
        }
    }
}
function  moveExpandedDown(delta){
    var offset = 20;
    //var temp = [];
    var bottom=0;

    for (var i=0;i < expandedItems.length;i++){
        var expandedItem=expandedItems[i];
        for (var j=0;j<expandedItem[0].length;j++){
            obj = expandedItem[0][j][0];
            var pos = expandedItem[0][j][1];
            var top = parseInt(obj.style.top)+delta;
            //alert(obj.getAttribute('title')+':'+parseInt(obj.style.top)+','+parseInt(obj.scrollTop)+','+delta);
            obj.style.top = top;
            //temp.push(obj.getAttribute('title'));
            //bottom = obj.clientTop+obj.clientHeight + 20; // 25=height of item
            //debug(obj.getAttribute('title')+obj.style.top+','+obj.clientTop)
            bottom = top;
        }
    }
    // Adjuect the frame height
    if (expandedItems && minFrameHeights[0]<(bottom+offset)){
        //debug(minFrameHeights[0]+'->'+(bottom+offset))
        minFrameHeights[0] = bottom + offset;
        setContentFrameHeight();
    }
}
function moveTop(objId,endTop,interval){
    if (interval==null){interval=20};
    var obj = document.getElementById(objId);
    var top = parseInt(obj.style.top);
    if (top != endTop){
        var delta = Math.max(1,(endTop-top)/2.0);
        obj.style.top = top + delta;
        var cmd="moveTop('"+objId+"',"+endTop+")";
        setTimeout(cmd,interval)
    }
}
function fadeIn(objId,opacity){
    if (opacity==null){opacity=0};
    opacity = Math.min(100,opacity);
    var obj = document.getElementById(objId);    
    //obj.style.visibility = "visible";
    obj.style.filter = "alpha(style=0,opacity="+opacity+")";
    //obj.style.filter = "alpha(style=0,opacity=100)";
    if (opacity<100){
        var cmd = "fadeIn('"+objId+"',"+(opacity+10)+")";
        setTimeout(cmd,25)
    }
    else{
        //
    }
}
function fadeOut(objId,opacity){
    if (opacity==null){opacity=100};
    opacity = Math.max(0,opacity);
    var obj = document.getElementById(objId);    
    obj.style.filter = "alpha(style=0,opacity="+opacity+")";
    if (opacity > 0){
        obj.style.visibility = "visible";
        var cmd = "fadeOut('"+objId+"',"+(opacity-10)+")";
        setTimeout(cmd,10)
    }
    else{
        obj.style.visibility = "hidden";
    }
}

function findAllFrames(parent){
    var frames=[];
    for (var i=0;i<parent.window.frames.length;i++){
        frames.push(parent.window.frames[i]);
        if (parent.window.frames[i].frames.length){
            var subframes=getAllFrames(parent.window.frames[i])
            for (var j=0;j<subframes.length;j++){
                frames.push(subframes[j])
            }
        }
    }
    return frames;
}


function findFrame(framename){
    if (framename==null) {framename='ContentFrame';}
    var frames = findAllFrames(top);
    var got = false;
    for (var i=0;i<frames.length;i++){
        if (frames[i].name ==framename){
            return frames[i]
        }
        else if (frames[i].document.frames&&frames[i].document.frames.length){
            var jFrames = frames[i].document.frames;
            for (var j=0;j<jFrames.length;j++){
                // the later part is for phone images menu to work
                if (!(jFrames[j].name == framename || jFrames[j].frameElement.getAttribute('id') == framename )){continue}
                got = jFrames[j]
                break
            }
            if (got){
                return got
            }
        }
    }
    return null;
}

function setContentUrl(href,framename){
    if (href.indexOf('http://')==0 || href.indexOf('https://')==0){
        window.open(href)
    }
    else{
        //setTimeout('refreshBanner()',1000)
        if (!framename){framename=targetFrame}
        //var href='product_sample.html'
        var f = findFrame(framename)
        f.location.href=href;
    }
}
/* event handlers */
function Level1Clicked(evt){
    evt.cancelBubble=true;
    var src = evt.srcElement?evt.srcElement:evt.target;
    var id = src.getAttribute('slidemenuId');
    while (!id){
        src = src.parentNode;
        id = src.getAttribute('slidemenuId');
    }
    var children = slidemenuChildren[id];
    if (children.length){
        evt.cancelBubble=true;
        expand(src);
    }
    else if (src.getAttribute('href')){
        evt.cancelBubble=true;
        setContentUrl(src.getAttribute('href'))
    }
    else{
        evt.cancelBubble=true;
        for (var i=0;i<src.childNodes;i++){
            var c = src.childNodes[i];
            if (c.getAttribute('href')){
                setContentUrl(c.getAttribute('href'))
                break
            }
        }
    }    
}
function Level2Clicked(evt){
    var src = evt.srcElement?evt.srcElement:evt.target;
    var id = src.getAttribute('slidemenuId');
    while (!id){
        src = src.parentNode;
        id = src.getAttribute('slidemenuId');
    }
    var children = slidemenuChildren[id];
    if (children.length){
        evt.cancelBubble=true;
        expand(src);
    }
    else if (src.getAttribute('href')){
        evt.cancelBubble=true;
        setContentUrl(src.getAttribute('href'))
    }
    else{
        evt.cancelBubble=true;
        for (var i=0;i<src.childNodes;i++){
            var c = src.childNodes[i];
            if (c.getAttribute('href')){
                setContentUrl(c.getAttribute('href'))
                break
            }
        }
    }    
}
function Level3Clicked(evt){
    var src = evt.srcElement;
    var id = src.getAttribute('slidemenuId');
    while (!id){
        src = src.parentNode;
        id = src.getAttribute('slidemenuId');
    }
    var children = slidemenuChildren[id];
    if (children.length){
        evt.cancelBubble=true;
        expand(src);
    }
    else if (src.getAttribute('href')){
            evt.cancelBubble=true;
            setContentUrl(src.getAttribute('href'))
    }
    else{
        evt.cancelBubble=true;    
        for (var i=0;i<src.childNodes;i++){
            var c = src.childNodes[i];
            if (c.getAttribute('href')){
                evt.cancelBubble=true;
                setContentUrl(c.getAttribute('href'))
                break
            }
        }        
    }  
}
function Level4Clicked(evt){
    var src = evt.srcElement;
    var id = src.getAttribute('slidemenuId');
    while (!id){
        src = src.parentNode;
        id = src.getAttribute('slidemenuId');
    }
    var children = slidemenuChildren[id];
    if (children.length){
        evt.cancelBubble=true;
        expand(src);
    }
    else if (src.getAttribute('href')){
            evt.cancelBubble=true;
            setContentUrl(src.getAttribute('href'))
    }
    else{
        evt.cancelBubble=true;    
        for (var i=0;i<src.childNodes;i++){
            var c = src.childNodes[i];
            if (c.getAttribute('href')){
                evt.cancelBubble=true;
                setContentUrl(c.getAttribute('href'))
                break
            }
        }        
    }  
}
function ItemMouseover(evt){
    evt.cancelBubble=true;
    var src = evt.srcElement;
    var id=src.getAttribute('slidemenuId');
    while (!id){
        src = src.parentNode;
        id = src.getAttribute('slidemenuId');
    }
    src.className +="Over";
    var href = src.getAttribute('href')
    var title = src.getAttribute('title')
    if (href) {status = href }
    else{ status = '請點選['+title+']以開啟下層選項' }
    if (src.getAttribute('href')){
        // last level
        src.style.cursor="hand";
    }
}
function ItemMouseout(evt){
    evt.cancelBubble=true;
    var src = evt.srcElement;
    var id=src.getAttribute('slidemenuId');
    while (!id){
        src = src.parentNode;
        id = src.getAttribute('slidemenuId');
    }
    src.className = src.className.substr(0,19)
    src.style.cursor="auto";
    //status = src.className    
}

/* Assign events */
function walk(node,level,parentItem){
    var handlers=[0,Level1Clicked,Level2Clicked,Level3Clicked,Level4Clicked]    
    for (var i=0;i<node.length;i++){
        var obj = node[i][0];
        var children = node[i][1]
        obj.setAttribute('parentItem',parentItem)
        if (children != null){
            walk(children,level+1,obj)
        }
        attachEvent(obj,'onclick',handlers[level+1]);
        attachEvent(obj,'onmouseover',ItemMouseover);
        attachEvent(obj,'onmouseout',ItemMouseout);
        obj.setAttribute('level',level+1);        
        if (level>=1){
            // Initialization
            obj.style.position="absolute";
            obj.style.top=0;
            obj.style.left =0;
            //obj.style.visibility="hidden";
            obj.style.display="none";
            //if (level>=2){alert(obj.innerHTML);}
        }
        bottomLevel = Math.max(bottomLevel,level+1);
    }
}

function initSlidemenu(_targetFrame){
    if (_targetFrame){targetFrame = _targetFrame}
    var sm0=document.getElementById('slidemenu');
    slidemenuRoot = findSubItems(sm0);
    walk(slidemenuRoot,0,null)
    /* initial level 1 menuitems */
    var rect = sm0.getBoundingClientRect();
    var top = rect.top + document.getElementsByTagName('body')[0].scrollTop;
    var left = rect.left;
    var height = parseInt((rect.bottom - rect.top) / slidemenuRoot.length);
    //height = 26;
    menuItemRect = {'top':top,'left':left,'height':height,'width':rect.right-rect.left}
    for (var i=0;i<slidemenuRoot.length;i++){
        var obj = slidemenuRoot[i][0];
        obj.style.position="absolute";
        obj.style.top = top + height * i;
        obj.style.left = left;
    }
    sm0.style.height = (rect.bottom-rect.top);
    //sm0.style.position="absolute"; 
    
    /* Other initializtion */
    //attachEvent(document.frames('ContentFrame'),'onreadystatechange',adjectContentFrameLength)
    //alert(document.frames('ContentFrame').onreadystatechange);
}
//setTimeout("initSlidemenu()",2000);
function _countLines(s){
    var lineCount=0;
    for (i=0;i<s.length;i++){
        if (s.charCodeAt(i)==13){
            lineCount+=1
        }
    }
    return lineCount;
}
/* Adjuect the iframe height by its content */
var minFrameHeights = [0,0];// for <slidemenu> and <content frame>
function setContentFrameHeight(){
    //if (bottom > minFrameHeight){minFrameHeight = bottom} // make sure frame height taller than the menu
    var f = top.document.frames('ContentFrame');    
    //var bottom = document.getElementById('slidemenu').offsetHeight;
    //bottom += offset;
    //var rect = document.getElementById('slidemenu').getBoundingClientRect();
    //minFrameHeights[0]= (rect.bottom - rect.top)+50;
    //alert(minFrameHeights[0])    
    /*
    var rect = {'bottom':0,'top':0}
    if (lastExpanded){
        rect = lastExpanded.getBoundingClientRect();
        alert(rect.bottom);
    }*/
    if (0 && slidemenuRoot){    
        var rect = slidemenuRoot[slidemenuRoot.length-1][0].getBoundingClientRect()
        var m = Math.max((rect.bottom-rect.top),minFrameHeights[0],minFrameHeights[1])
    }
    else{
        var m = Math.max(minFrameHeights[0],minFrameHeights[1])    
    }
    //alert(m+','+(rect.bottom-rect.top)+','+minFrameHeights[0]+','+minFrameHeights[1])
    // "document.getElementsByTagName('body')[0].offsetHeight" is the visible area of body
    //alert(document.getElementsByTagName('body')[0].offsetHeight+','+minFrameHeights[0]+','+minFrameHeights[1]);
    //var m = Math.max(document.getElementsByTagName('body')[0].offsetHeight-5,m);
    if (m < 600){m=600}
    f.frameElement.style.height =  m + 'px'
}
var defaultContentWidth=300;
var suggestedContentWidth=defaultContentWidth;
function AdjustFrameWidth(){
    /* Adjuest width */
    var f = document.frames('ContentFrame');
    var w = f.document.getElementsByTagName('body')[0].offsetWidth;
    if (w<defaultContentWidth){
        w = defaultContentWidth;
    }
    else{
        // 
        var rc = document.getElementById('RightConer')
        var rect = rc.getBoundingClientRect();
        var top = rect.bottom;
        var left = rect.left+50;
        //alert(rect.top+','+rect.bottom);
        /*
        if (!document.getElementById('switchContentWidth')){
            var div = '<div id="switchContentWidth" style="position:absolute;width:10px;height:10px;background-color:red;top:'+top+'px;left:'+left+'px"><input type="button" value="&gt;" onclick="setContentFrameWidth()"></div>'
            document.body.insertAdjacentHTML("beforeEnd",div)
        }
        */
        suggestedContentWidth = w;
        //w = defaultContentWidth;
    }
    f.frameElement.style.width = w + 'px'
}
function setContentFrameWidth(){
    var f = document.frames('ContentFrame');
    var w = parseInt(f.frameElement.style.width)
    if (w==defaultContentWidth){
        w = suggestedContentWidth;
    }
    else{
        w = defaultContentWidth;
    }
    f.frameElement.style.width = w + 'px'
}
// onload event handler of iframe

function adjustContentFrameLength(evt,framename){
    return;
    if (!framename){framename="ContentFrame"}
    var f = document.frames('ContentFrame'); 
    try{
        if (f.document.readyState=="complete"){
            var fbody=f.document.getElementsByTagName('body')[0];
            var hspace = fbody.lastChild.previousSibling.getBoundingClientRect().bottom;
            var offset = 50;
            var height = offset + hspace;            
            minFrameHeights[1]=Math.max(500,Math.min(height,800));
            setContentFrameHeight()
            //AdjustFrameWidth();
            if (doAdjuectLins) {adjustLinks(evt);}
        }
    }
    catch(e){
        alert(e);
        //f.frameElement.height= '800px';
        minFrameHeights[1]=800;
        setContentFrameHeight()
    }
}
/* Do a depth-first search for itme by title */
function _searchMenuItem(children,title){
    //var item = topItem[0];
    //if (item.getAttribute('title') == title) return item;
    //var children = topItem[1];
    for (var i=0;i<children.length;i++){
        var cItem = children[i][0];
        //alert(cItem.getAttribute('title')+' = '+title)
        if (cItem.getAttribute('title').indexOf(title)==0){return children[i]}
        var cChildren = children[i][1];
        if (cChildren){
            var cChild = _searchMenuItem(cChildren,title);
            if (cChild[0]){return cChild};
        }
    }
    return [null,null];
}
/* Expand the slidemenu to item of titles A/B/C */
var expandingQueue = []; // temporary array to submitting expanding
function expandToItem(children,titles){
    var deepestItem = null;
    for(var j=0;j<titles.length;j++){
        //alert('searching'+titles[j]+children.length);
        var child = _searchMenuItem(children,titles[j])
        if (child[0]){
            var item = child[0];
            deepestItem = item;
            expandingQueue[expandingQueue.length] =item;
            children = child[1];
            if (!children) {break}
        }
        else{
            /* exhausted the item searching*/
            //status = titles[j]+'not found'
            break;
        }
    }
    setTimeout('_expandExpandingQueue()',100)
    return deepestItem;
}
/* co-function of expandToItem */
function _expandExpandingQueue(){
    if (expandingQueue.length){
        if (!_expanding){
            var item = expandingQueue.shift();
            expand(item);
        }
        setTimeout('_expandExpandingQueue()',300)
    }
}
/* Set the content frame from url. (for index_a.html, index_b.html to link) */
function setFrameSrc(defaultUrl){
    if (slidemenuRoot.length==0){
        setTimeout('setFrameSrc("'+defaultUrl+'")',1000)
        return
    }
    setTimeout("initBanner()",5000)   
    var href = location.href;
    var urls = href.split('?');
    var parts = urls[0].split('/');
    if (parts[parts.length-1].indexOf('index_customer')>=0 || parts[parts.length-1].indexOf('index_enterprise')>=0){
        if (urls.length>1){
            var url = urls.splice(1,urls.length-1).join('?');
        }
        else if (defaultUrl){
            var url = defaultUrl;
        }
        if (! ( url.indexOf('http')==0 | url.indexOf('topic')==0 )){
            // local connection,expands slide menu
            var titles = url.split('/');
            deepestItem = expandToItem(slidemenuRoot,titles);
            //alert(deepestItem)
            if (deepestItem){
                url = deepestItem.getAttribute('href');
                //alert(deepestItem.getAttribute('title'))
            }
        }
        // update frame's src
        document.frames('ContentFrame').frameElement.src = url;
    }
    //refreshBanner();

}
/* adjust links */
function adjustLinks(evt){
    var f = document.frames('ContentFrame');    
    var links = f.document.links;
    //alert(location.href);
    var myHost=location.href.split('/')[2]
    for (var i=0;i<links.length;i++){
        var href= links[i].href;
        var urlParts = href.split('/');
        if (urlParts[2]!=myHost){
            links[i].target="_blank";
        }
    }
    //walkHtml() /* remove "center" style */
}
/* remove "center" style */
function walkHtml(node){
    if (!node){
        // exclude "loading.html"
        if (document.frames('ContentFrame').frameElement.src.indexOf('loading.html')>=0){ return }
        node = document.frames('ContentFrame').document.body;
    }
    if (!node.children){return}
    for (var i=0;i<node.children.length;i++){
        child = node.children[i]
        /*
        if (child.tagName == 'DIV'){ 
            if (child.style.textAlign.toString()=='center'){
                child.style.textAlign = 'left';
                child.style.fontSize='18px'
            }
        }
        */
        /* excluding table's tags */
        if (!(child.tagName == 'TH' || child.tagName=='TD' || child.tagName=='TR' || child.tagName == 'TABLE')){
            child.style.textAlign = 'left';
        }
        /* do not followup td, th */        
        if ((child.tagName == 'TH' || child.tagName=='TD')){
            walkHtml(child)
        }
        else{
            walkHtml(child)
        }
        
    }
}
/* banners */
function dig(root,tagName){
    for (var i=0;i<root.children.length;i++){
        if (root.children[i].tagName==tagName){return root.children[i]}
        else{
            var t = dig(root.children[i],tagName);
            if (t) {return t}
        }
    }
    return 0
}
var banners=[];
function initBanner(bannerId){ 
    if (!bannerId) {bannerId='_Banners'}
    if (!banners.length){    
        var banner = document.getElementById(bannerId);
        for (var i=0;i<banner.children.length;i++){
            var child = banner.children[i];
            if (child.tagName=='A'){
                var existed = 0;
                for (var j=0;j<banners.length;j++){
                    if (banners[j].href == child.href) {
                        existed = 1;
                        break
                    }
                }
                if (existed==0) {
                    banners[banners.length] = child;
                }
            }
        }

    }
}
function refreshBanner(){ 
    if (!banners){setTimeout('refreshBanner()',1000);return}
    var banner = document.getElementById('Banner')
    var a = dig(banner,'A')
    var j = 0;
    for (var i=0;i<banners.length;i++){
        if (banners[i].href == a.href) { j = i+1;break }
    }
    j = j%banners.length;
    //alert(j)
    // copy banner
    var currentBanner = banners[j];    
    var currentImage = dig(banners[j],'IMG')
    a.href = currentBanner.href;
    a.innerHTML = currentImage.outerHTML;
}
