/*
-------------------------------------------------------------------------
DFM2HTML v1.8 JavaScript Library

Copyright 2003-2007 Jörg Kiegeland. All rights reserved.

This javascript library is generated by the DFM2HTML tool.
You may adapt this script for your Web pages, provided these opening credit
lines (down to the lower dividing line) are kept intact.
You may not reprint or redistribute this code without permission.

Visit http://www.dfm2html.com
-------------------------------------------------------------------------  
*/

var SlideTimer; //used for sliding and for menu display delay
var LinkTimer; //used for delayed menu popup
var ToOpen; //menuitem for which to open submenu next
var glSelCompo; //element over which mouse overs 
var TailSubMenu; //deepest opened submenu
var glEventObj; //manage event bubbling
var IsSliding; //TailSubMenu just sliding?
var IE=navigator.appName=="Microsoft Internet Explorer";

function UpdateImm(Self) {
	var oldvis=Self.style.visibility; //IE doesnt update immediately, force update
	Self.style.visibility="hidden";
	Self.style.visibility=oldvis;
}

function OpenMenu() {
	var Self=ToOpen;
	ToOpen=null;
	if (Self.style.display!="none") return;
	TailSubMenu=Self;
	if (!Self.IsInline) {
		var ox=Number(Self.getAttribute("menuleft"));;
		var oy=Number(Self.getAttribute("menutop"));
		for (var p=Self.FParentMenuItem; p && p!=Self.offsetParent; p=p.offsetParent) {
			oy+=p.offsetTop;
			ox+=p.offsetLeft;
		}
		Self.style.top=oy+"px";
		Self.style.left=ox+"px";
		Self.style.position="absolute";
	}
	if (Self.filters) {
		if (Self.filters.blendTrans) Self.filters.blendTrans.Apply();
		if (Self.filters.revealTrans) Self.filters.revealTrans.Apply();
	}

	Self.style.display = "";

	if (Self.FSlide) {
		IsSliding=true;
		Self.OriWidth=Self.style.width;
		Self.OriHeight=Self.style.height; 
		Self.offsetWidth;Self.offsetHeight;//for KHTML
		Self.oriy=Self.offsetHeight;
		Self.style.width=(Self.offsetWidth-Self.fpadw)+"px";
		Self.style.height="0px";
		Self.style.overflow="hidden";
		Self.cheight=0;
		SlideTimer=setInterval("SlideNotify();",10);
	}                                                       
	setTimeout("if (TailSubMenu) UpdateImm(TailSubMenu);",1);

	if (Self.filters) {
		if (Self.filters.blendTrans) Self.filters.blendTrans.Play();
		if (Self.filters.revealTrans) Self.filters.revealTrans.Play();
	}
	Self.FParentMenuItem.parentNode.FOpenMenuItem=Self.FParentMenuItem;
	//CheckDesignState ?
}

function glCheckClose(CloseItem) {
	//clearTimeout(LinkTimer);//if (!IsSliding) clearTimeout(Timer);

	var p=TailSubMenu;
	while (p) {
		TailSubMenu=p;
		if (VirParent(TailSubMenu,ToOpen)) {
			if (IsSliding) {
				RestoreSlide();
			}
			break;
		}
		if (!ToOpen && VirParent(TailSubMenu,glSelCompo) && !(CloseItem && VirParent(CloseItem,TailSubMenu))) break;

		if (p.FSlide && p.cheight!=0 && !(ToOpen && !ToOpen.IsInline)){
		if (TailSubMenu.IsInline) {
			if (IsSliding) clearInterval(SlideTimer);
			IsSliding=true;
			TailSubMenu.style.width=(TailSubMenu.offsetWidth-TailSubMenu.fpadw)+"px";
			TailSubMenu.style.overflow="hidden";
			SlideTimer=setInterval("SlideUpNotify();",10);
			return;
		} else if (IsSliding) return;
                }

		p.style.display = "none";
		if (IsSliding) {
			RestoreSlide();
		}
		TailSubMenu=null;
		p.FParentMenuItem.parentNode.FOpenMenuItem=null;
		CheckDesignState(p.FParentMenuItem);
		p=p.FParentMenuItem.parentNode;
		for (p; p && !p.FParentMenuItem ; p=p.parentNode);
	}
	if (!IsSliding && ToOpen) OpenMenu();
}

function RestoreSlide() {
        	TailSubMenu.style.width=TailSubMenu.OriWidth;
		TailSubMenu.style.height=TailSubMenu.OriHeight;
		//TailSubMenu.style.overflow="visible";
		clearInterval(SlideTimer);
		IsSliding=false;
}

function SlideNotify() {
	TailSubMenu.cheight=TailSubMenu.cheight+TailSubMenu.FSlidePixel;
        TailSubMenu.style.height=TailSubMenu.cheight+"px";
	if (TailSubMenu.offsetHeight>=TailSubMenu.oriy) {
		RestoreSlide();
		if (ToOpen) glCheckClose;
		if (IE) setTimeout("if (TailSubMenu) UpdateImm(TailSubMenu);",1);
	}
}

function SlideUpNotify() {
	TailSubMenu.cheight=Math.max(TailSubMenu.cheight-TailSubMenu.FSlidePixel,0);
	TailSubMenu.style.height=TailSubMenu.cheight+"px";
	if (TailSubMenu.cheight==0) {
		clearInterval(SlideTimer);
		glCheckClose();
	} 
}

function UpdateOver(Self,IsOver,Clicked) {
if (!(glEventObj && RealParent(Self,glEventObj))) {
	var _glSelCompo=glSelCompo;
	glSelCompo=null;
	if (IsOver) glSelCompo=Self;

	if (Self.FSubMenu && Self.FSubMenu.getAttribute("clicktoopen")) {
		if (Self.FSubMenu && Self.FSubMenu.style.display!="none") {
			if (Clicked) glCheckClose(Self);
		} else
		if (Clicked || Self.FSubMenu && Self.FSubMenu.getAttribute("resumeopen") && IsOver && Self.parentNode.FOpenMenuItem) {
			ToOpen=Self.FSubMenu;
			glCheckClose();
		}
	} else {
		Self.IsDown=Clicked;
		if (IsOver) ToOpen=Self.FSubMenu;
		if (Clicked) glCheckClose(); else
		if (IsOver && glSelCompo.FSubMenu/* && !IsSliding*/) {
			clearTimeout(LinkTimer);
			LinkTimer=setTimeout("glCheckClose();",glSelCompo.FSubMenu.FReactionTime);
		}
	}
	if (_glSelCompo==glSelCompo) _glSelCompo=null;
	if (_glSelCompo) CheckDesignState(_glSelCompo);

	if (Self.parentNode.FOpenMenuItem) CheckDesignState(Self.parentNode.FOpenMenuItem);
	CheckDesignState(Self);
}
glEventObj=Self;
}

function CheckDesignState(Self) {
	var base=Self.getAttribute("cbase");
    if (base==null || base=="") return;
	var s=base+"_nm";

	IsDown=(Self.getAttribute("down") ||
		Self.FPC && Self.FPC.FURLAnchor==Self && !Self.getAttribute("notifurl") || 
		Self.getAttribute("ifover") && Self==glSelCompo ||
		!Self.FSubMenu && Self.IsDown && !Self.getAttribute("notifmouse") || 
		Self.FSubMenu && Self.FSubMenu.style.display!="none" && !Self.getAttribute("notifmenu") &&
		!(glSelCompo && Self!=glSelCompo && Self.parentNode==glSelCompo.parentNode/* && !glSelCompo.FParentMenuItem*/));

		
	if (Self==glSelCompo && !(IsDown && Self.getAttribute("noover"))) {
		 if (IsDown) 
		 		s+=" "+base+"_dn"+" "+base+"_ov"+" "+base+"_od"+" dn ov od"; else
				s+=" "+base+"_ov"+" ov";
	} else
	if (IsDown) s+=" "+base+"_dn"+" dn";

	if (s==Self.className) return;

	var blend= Self.filters && s!=base+"_nm" && Self.childNodes.length<=1;
	if (blend) {
		if (Self.filters.blendTrans) Self.filters.blendTrans.Apply();
		if (Self.filters.revealTrans) Self.filters.revealTrans.Apply();
	}
	Self.className=s;
	if (blend) {
		if (Self.filters.blendTrans) Self.filters.blendTrans.Play();
		if (Self.filters.revealTrans) Self.filters.revealTrans.Play();
	} 
	adjPos(Self);
	//Self.parentNode.style.display  = "none";Self.parentNode.style.display  = "block";//NS6 and Moz1.3 for z-index
}

function GotoSlide(n) {
	n.style.display="block";
	var act=n.parentNode.act;
	if (act && act!=n) {
		n.offsetHeight;act.offsetHeight;//for KHTML
		var diff=n.offsetHeight-act.offsetHeight;
		act.style.display="none";
		var h;
		for (var p=n.offsetParent; p && p.style && !(p.style.top && p.style.bottom) && !(p.style.overflow=="scroll" || p.style.overflow=="auto"); p=p.offsetParent)
		{h=p.style.height.replace(/px/,""); if (isNaN(h) || !h) break; p.style.height=Number(h)+diff+"px";}
	}
	n.parentNode.act=n;
}

function MouseOutEvent() {
	UpdateOver(this,false,false);
}

function MouseOverEvent() {
	if (glSelCompo!=this) UpdateOver(this,true,false);
}

function MouseDownEvent() {
	if (IE && (this.style.overflow=="scroll" || this.style.overflow=="auto")){
		var t=document.body.createTextRange();
		t.moveToElementText(this);
		var d=document.selection.createRange();
		if (d.parentElement().tagName!="INPUT" && d.parentElement().tagName!="TEXTAREA" && d.compareEndPoints("StartToStart",t)==-1) document.selection.empty();
	}
	UpdateOver(this,true,true);
	return true;
}


function ChildPos(c) {
	for (var i=0; i<=c.parentNode.childNodes.length-1; i++) if (c.parentNode.childNodes[i]==c) return i;
} 

function VirParent(p,c) {
	for (c; c ; c=(c.FParentMenuItem?c.FParentMenuItem:c.parentNode)) if (p==c) return true;
	return false;
} 
function RealParent(p,c) {
	for (c=c.parentNode; c ; c=c.parentNode) if (p==c) return true;
	return false;
} 

function MouseUpEvent() {
	if (this.FLastPage) {
		var z=((ChildPos(this.FLastPage)<ChildPos(this.FLinkPage))?-1:1);
		var v=ChildPos(this.FPC.act);
		var n=this.FLinkPage;
		if (v*z>=ChildPos(this.FLinkPage)*z && v*z<ChildPos(this.FLastPage)*z) n=this.FPC.childNodes[v+z];
		if (n.nodeType!=1) n=this.FPC.childNodes[v+z+z];
		GotoSlide(n);
	} else
	if (this.FLinkPage) GotoSlide(this.FLinkPage);
	Linked(this);
	UpdateOver(this,true,false);
}

function ResizeEvent() {
	var p=(this==window?document.body:this);
	adjPos(p);
	for (var c=p.firstChild; c!=null; c=c.nextSibling) adjPos(c);
	if (this==document.body) {
		var x=0;
		var y=0;	
		for (var c=p.firstChild; c!=null; c=c.nextSibling) if (c.offsetLeft!=null) {
			x=Math.max(x,c.offsetLeft+c.offsetWidth);
			y=Math.max(y,c.offsetTop+c.offsetHeight);
		}
		document.body.style.width=Math.max(0,x-getNumber(document.body.currentStyle.paddingRight)-getNumber(document.body.currentStyle.paddingLeft))+"px";
		document.body.style.height=Math.max(0,y-getNumber(document.body.currentStyle.paddingTop)-getNumber(document.body.currentStyle.paddingBottom))+"px";
	}
}

function adjPos(e) {
	if (!e.style) return;
	var p=(e.parentNode==document.body?e.parentNode.parentNode:e.parentNode);
	if (e.centerH) e.style.left=Math.max(0,p.clientWidth/2-(e.offsetWidth+mb(e,'Left')+mb(e,'Right'))/2);
	if (e.dynWidth) e.style.width=Math.max(1,p.clientWidth-mb(e,'Left',true)-mb(e,'Right',true)+(-getNumber(e.currentStyle.left)-getNumber(e.currentStyle.right)));
	if (e.dynBlockWidth) e.style.width=Math.max(1,p.clientWidth-mb(e,'Left',true)-mb(e,'Right',true)+(-getNumber(e.parentNode.currentStyle.paddingLeft)-getNumber(e.parentNode.currentStyle.paddingRight)));
	if (e.dynHeight) e.style.height=Math.max(1,p.clientHeight-mb(e,'Top',true)-mb(e,'Bottom',true)+(-getNumber(e.currentStyle.top)-getNumber(e.currentStyle.bottom)));
	if (e.dynLeft) e.style.left=p.clientWidth-mb(e,'Left')-mb(e,'Right')-e.offsetWidth+(-getNumber(e.currentStyle.right));
	if (e.dynTop) e.style.top=p.clientHeight-mb(e,'Top')-mb(e,'Bottom')-e.offsetHeight+(-getNumber(e.currentStyle.bottom));
}

function Linked(Self){
	if (Self.FPC) {
		var OldAnchor=Self.FPC.FURLAnchor;
		Self.FPC.FURLAnchor=Self;
		if (OldAnchor) CheckDesignState(OldAnchor);
	}
	//UpdateOver(Self,true,false);
	CheckDesignState(Self);
}

function scrollFragment(sv) {
	var v=document.getElementById(sv.substr(sv.indexOf("#")+1));
	if (v) {v.scrollIntoView(true); if (v.parentNode==document.body) window.scrollTo(v.offsetLeft,v.offsetTop); }
}

function getNumber(n) {
	var h=n.replace(/px/,""); if (isNaN(h) || !h) return 0; return Number(h);
}

function isPx(n) {
	var h=n.replace(/px/,""); return !isNaN(h) && h;
}

function mb(e,s,p) {
	return getNumber(e.currentStyle.getAttribute("margin"+s))+(!p||e.type=="button"||e.type=="submit"||e.type=="reset"||e.tagName=="SELECT"?0:(e.currentStyle.getAttribute("border"+s+"Style")!="none"?getNumber(e.currentStyle.getAttribute("border"+s+"Width")):0)+getNumber(e.currentStyle.getAttribute("padding"+s)));
}

function init() {

var everything=document.all;
if (!everything) everything=document.getElementsByTagName("*");
for(var i=0; i<everything.length; i++) {

	var e=everything[i];
	if (e.nodeType!=1) continue;
	var s=e.tagName;
	if (!IE && (e.getAttribute("scroll")=="yes" || e.getAttribute("scrolling")=="yes")) {
		e.style.overflowX="auto";
		e.style.overflowY="scroll";
	}
	if (IE) {
		e.onresize=ResizeEvent; 
		e.centerH=e.style.marginLeft=="auto" && e.style.marginRight=="auto";
		e.dynWidth=!e.centerH && isPx(e.currentStyle.left) && isPx(e.currentStyle.right);
		e.dynBlockWidth=e.style.position=="relative" && !isPx(e.currentStyle.width);
		e.dynHeight=isPx(e.currentStyle.top) && isPx(e.currentStyle.bottom);
		e.dynLeft=!isPx(e.currentStyle.left) && isPx(e.currentStyle.right);
		e.dynTop=!isPx(e.currentStyle.top) && isPx(e.currentStyle.bottom);
		adjPos(e);
	}
	if (!(s=="IMG" || s=="img" || s=="A" || s=="a" || s=="DIV" || s=="div" || s=="BODY" || s=="body" || s=="BUTTON" || s=="button" || s=="INPUT" || s=="input")) continue;
	//if (window.opera && e.style && e.style.right && e.style.left) 
	//	e.style.right=getNumber(e.style.right)-getNumber(window.getComputedStyle(e.parentNode,"").paddingLeft)-getNumber(window.getComputedStyle(e.parentNode,"").paddingRight)+"px";
	if (s=e.getAttribute("cbottom")) e.style.bottom=Number(s);
	if (s=e.getAttribute("parentmenuitem")) {
		e.FParentMenuItem=document.getElementById(s);
		if (!e.FParentMenuItem) continue;
		e.FParentMenuItem.FSubMenu=e;
		if (s=e.getAttribute("padw")) {e.fpadw=Number(s); e.FSlide=true;}
		e.IsInline=e.FParentMenuItem && e.parentNode==e.FParentMenuItem.parentNode && e.parentNode!=document.body;
		if (s=e.getAttribute("slidepixel")) e.FSlidePixel=Number(s); else e.FSlidePixel=1;
		if (s=e.getAttribute("reactiontime")) e.FReactionTime=Number(s); else e.FReactionTime=1;
	}
       	e.onmouseout=MouseOutEvent;
	e.onmouseover=MouseOverEvent;
	e.onmousedown=MouseDownEvent;
	e.onmouseup=MouseUpEvent;

	if ((s=e.getAttribute("target")) && s.substr(0,1)!="_") e.FPC=document.getElementById(s);
	if (s=e.getAttribute("linkpage")) { e.FLinkPage=document.getElementById(s); e.FPC=e.FLinkPage.parentNode;}
	if (s=e.getAttribute("lastpage"))   e.FLastPage=document.getElementById(s);
	if (e.getAttribute("pageselected")) GotoSlide(e);
	if (e.getAttribute("linked")) Linked(e);
}

if (window.opera){
	var ori_onload=document.body.onload;
	document.body.onload = function (){
		top.document.body.style.display="none";
		top.document.body.style.display="";
		if (ori_onload) ori_onload();
	}
	document.body.onresize = function (){
		document.body.style.display="none";
		document.body.style.display="";
	}
}

if (IE) document.body.style.display="";

scrollFragment(document.URL);

var p=document.prel; if(!p){p=new Array();document.prel=p}var i;for(i=0; i<init.arguments.length; i++) {p[i]=new Image; p[i].src=init.arguments[i]; } //preload images

}

if (IE) { document.body.style.display="none"; }
