
function MM_findObj(n, d) { //v4.0
var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
	d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function ShowHideAllSpecialTags(hide)
{
	//This should only be done on IE, since it's only that one causing problems
	//Detect IE5.5+
	version=0
	if (navigator.appVersion.indexOf("MSIE")!=-1)
	{
		temp = navigator.appVersion.split("MSIE")
		version=parseFloat(temp[1])
	}
	if (version>=5.5) //NON IE browser will return 0
	{
		ShowHidetags("select", hide);
	}
	//ShowHidetags("object", hide); //Hide objects in all browsers (FF 2.0.0.9 causes the same problem as IE)
}

function ShowHidetags(tagname, hide)
{
	tags = document.getElementsByTagName(tagname);
	
	for(i=0;i<tags.length;i++)
	{
	//alert(tags[i].style.visibility);
		tags[i].style.visibility = hide ? "hidden" : "visible";
	}
}

function MM_showHideLayers() 
{ //v3.0
	var i,p,v,obj,args=MM_showHideLayers.arguments;
	var anyVisible = false;
	for (i=0; i<(args.length-2); i+=3) 
		if ((obj=MM_findObj(args[i]))!=null) 
		{ 
			v=args[i+2];
			if (obj.style) 
			{ 
				v=(v=='show') ? 'visible' : (v='hide') ? 'hidden' : v; 
				obj=obj.style; 
			}
			anyVisible = v=='visible' || anyVisible;
			obj.visibility=v; 
		}
		ShowHideAllSpecialTags(anyVisible);
}

function tmt_findObj(n){
	var x,t; if((n.indexOf("?"))>0&&parent.frames.length){t=n.split("?");
	x=eval("parent.frames['"+t[1]+"'].document.getElementById('"+t[0]+"')");
	}else{x=document.getElementById(n)}return x;
}

function MM_timelinePlay(tmLnName, myID) 
{ //v1.2
	var i,j,tmLn,props,keyFrm,sprite,numKeyFr,firstKeyFr,propNum,theObj,firstTime=false;
	if (document.MM_Time == null) 
		MM_initTimelines(); //if *very* 1st time
	tmLn = document.MM_Time[tmLnName];
	if (myID == null) 
	{ 
		myID = ++tmLn.ID; 
		firstTime=true;
	}//if new call, incr ID
	if (myID == tmLn.ID) 
	{ //if Im newest
		setTimeout('MM_timelinePlay("'+tmLnName+'",'+myID+')',tmLn.delay);
		fNew = ++tmLn.curFrame;
		for (i=0; i<tmLn.length; i++) 
		{
			sprite = tmLn[i];
			if (sprite.charAt(0) == 's') 
			{
				if (sprite.obj) 
				{
					numKeyFr = sprite.keyFrames.length; 
					firstKeyFr = sprite.keyFrames[0];
					if (fNew >= firstKeyFr && fNew <= sprite.keyFrames[numKeyFr-1]) 
					{//in range
						keyFrm=1;
						for (j=0; j<sprite.values.length; j++) 
						{
							props = sprite.values[j]; 
							if (numKeyFr != props.length) 
							{
								if (props.prop2 == null) 
									sprite.obj[props.prop] = props[fNew-firstKeyFr];
								else
									sprite.obj[props.prop2][props.prop] = props[fNew-firstKeyFr];
							}
							else 
							{
								while (keyFrm<numKeyFr && fNew>=sprite.keyFrames[keyFrm]) 
									keyFrm++;
								if (firstTime || fNew==sprite.keyFrames[keyFrm-1]) 
								{
									if (props.prop2 == null) 
										sprite.obj[props.prop] = props[keyFrm-1];
									else
										sprite.obj[props.prop2][props.prop] = props[keyFrm-1];
								}
							}
						}
					}
				}
			} 
			else if (sprite.charAt(0)=='b' && fNew == sprite.frame) 
				eval(sprite.value);
			if (fNew > tmLn.lastFrame) 
				tmLn.ID = 0;
		}
	}
}

function MM_timelineStop(tmLnName) 
{ //v1.2
	if (document.MM_Time == null) 
		MM_initTimelines(); //if *very* 1st time
	if (tmLnName == null)  //stop all
		for (var i=0; i<document.MM_Time.length; i++) 
			document.MM_Time[i].ID = null;
	else 
		document.MM_Time[tmLnName].ID = null; //stop one
}

function MM_timelineGoto(tmLnName, fNew, numGotos) //Decides whether to show or hide layers
{ //v2.0
	var i,j,tmLn,props,keyFrm,sprite,numKeyFr,firstKeyFr,lastKeyFr,propNum,theObj;
	if (document.MM_Time == null) 
		MM_initTimelines(); //if *very* 1st time
	tmLn = document.MM_Time[tmLnName];
	if (numGotos != null)
		if (tmLn.gotoCount == null) 
			tmLn.gotoCount = 1;
		else if (tmLn.gotoCount++ >= numGotos) 
		{
			tmLn.gotoCount=0; 
			return;
		}
	jmpFwd = (fNew > tmLn.curFrame);
	for (i = 0; i < tmLn.length; i++) 
	{
		sprite = (jmpFwd)? tmLn[i] : tmLn[(tmLn.length-1)-i]; //count bkwds if jumping back
		if (sprite.charAt(0) == "s") 
		{
			numKeyFr = sprite.keyFrames.length;
			firstKeyFr = sprite.keyFrames[0];
			lastKeyFr = sprite.keyFrames[numKeyFr - 1];
			if ((jmpFwd && fNew<firstKeyFr) || (!jmpFwd && lastKeyFr<fNew)) 
				continue; //skip if untouchd
			for (keyFrm=1; keyFrm<numKeyFr && fNew>=sprite.keyFrames[keyFrm]; keyFrm++);
			for (j=0; j<sprite.values.length; j++) 
			{
				props = sprite.values[j];
				if (numKeyFr == props.length) 
					propNum = keyFrm-1 //keyframes only
				else 
					propNum = Math.min(Math.max(0,fNew-firstKeyFr),props.length-1); //or keep in legal range
				if (sprite.obj != null) 
				{
					if (props.prop2 == null) 
						sprite.obj[props.prop] = props[propNum];
					else 
						sprite.obj[props.prop2][props.prop] = props[propNum];
				}
			}
		}
		else if (sprite.charAt(0)=='b' && fNew == sprite.frame) 
			eval(sprite.value);
	}
	tmLn.curFrame = fNew;
	if (tmLn.ID == 0) 
		eval('MM_timelinePlay(tmLnName)');
}

function setClass(dot, elm, over)
{
	menulayer = null;
	//menulayerdot = null;
	if(navigator.appVersion.indexOf("MSIE 5")>-1 && navigator.appVersion.indexOf("Mac")>-1) //Leave mac alone, otherwise the design dies
		return;
	if(dot)
	{
		menulayer = elm.nextSibling;
		//menulayerdot = elm;
	}
	else
	{
		menulayer = elm;
		//menulayerdot = elm.previousSibling;
	}
	menulayer.className		= (over) ? "menulayeritemover"		: "menulayeritem";
	//menulayerdot.className	= (over) ? "menulayeritemdotover"	: "menulayeritemdot";
}

function P7_Snap() 
{ //v2.62 by PVII

	var x,y,ox,bx,oy,p,tx,a,b,k,d,da,e,el,args=P7_Snap.arguments;
	a=parseInt(a);
	for (k=0; k<(args.length-3); k+=4)
	{	
		if ((g=MM_findObj(args[k]))!=null)
		{
			el = eval(MM_findObj(args[k+1]));
			a = parseInt(args[k+2]);
			b=parseInt(args[k+3]);
			x=0;
			y=0;
			ox=0;
			oy=0;
			p="";
			tx=1;
			da="document.all['"+args[k]+"']";
			if(document.getElementById) 
			{
				d="document.getElementById('"+args[k]+"')";
				if(!eval(d)) 
				{
					d="document.getElementsByName('"+args[k]+"')[0]";	
					if(!eval(d)) 
					{
						d = da;
					}
				}
			}
			else if(document.all) 
			{
				d = da;
			} 
			
			if (document.all || document.getElementById) 
			{
				while (tx==1) 
				{
					p+=".offsetParent";
					if(eval(d+p)) 
					{
						x+=parseInt(eval(d+p+".offsetLeft"));
						y+=parseInt(eval(d+p+".offsetTop"));
					}
					else
					{
						tx=0;
					}
				}
				ox=parseInt(g.offsetLeft);
				oy=parseInt(g.offsetTop);
				var tw=x+ox+y+oy;
				if(tw==0 || (navigator.appVersion.indexOf("MSIE 4")>-1 && navigator.appVersion.indexOf("Mac")>-1)) 
				{
					ox=0;
					oy=0;
					if(g.style.left)
					{
						x=parseInt(g.style.left);
						y=parseInt(g.style.top);
					}
					else
					{
						var w1=parseInt(el.style.width);
						bx = (a<0) ? -5-w1 : -10;
						a = (Math.abs(a)<1000) ? 0 : a;
						b = (Math.abs(b)<1000) ? 0 : b;
						x=document.body.scrollLeft + event.clientX + bx;
						y=document.body.scrollTop + event.clientY;
					}
				}
			}
			else if (document.layers) 
			{
				x=g.x;
				y=g.y;
				var q0=document.layers,dd="";
				for(var s=0;s<q0.length;s++) 
				{
					dd='document.'+q0[s].name;
					if(eval(dd+'.document.'+args[k])) 
					{
						x+=eval(dd+'.left');
						y+=eval(dd+'.top');
						
						break;
					}
				}
			}
			if(el) 
			{
				e = (document.layers) ? el : el.style;
				var xx=parseInt(x+ox+a),yy=parseInt(y+oy+b-7);
				if(navigator.appName=="Netscape" && parseInt(navigator.appVersion)>4)
				{
					xx+="px";
					yy+="px";
				}
				if(navigator.appVersion.indexOf("MSIE 5")>-1 && navigator.appVersion.indexOf("Mac")>-1)
				{ 
					xx+=parseInt(document.body.leftMargin)-10;
					yy+=parseInt(document.body.topMargin)-16;
					xx+="px";
					yy+="px";
					
				}
				if(navigator.appName=="Opera" && navigator.appVersion.indexOf("8.0")>-1)
				{
					xx+= 3;
					yy+= 2;
				}
				e.left=xx;
				e.top=yy;
				e.position = "absolute";
				//window.status = el.style.position + " :: " + el.tagName + " :: " + el.id;
			}
		}
	}
//	if(el)
//		window.status = el.left + " :: " + el.style.position + " :: " + el.id + " :: " + el.style.top + " :: " + el.tagName;
} 

function MM_initTimelines() 
{ //v4.0
	//MM_initTimelines() Copyright 1997 Macromedia, Inc. All rights reserved.
	var ns = navigator.appName == "Netscape";
	var ns4 = (ns && parseInt(navigator.appVersion) == 4);
	var ns5 = (ns && parseInt(navigator.appVersion) > 4);
	document.MM_Time = new Array(1);
	document.MM_Time[0] = new Array(1);
	document.MM_Time["Timeline1"] = document.MM_Time[0];
	document.MM_Time[0].MM_Name = "Timeline1";
	document.MM_Time[0].fps = 15;
	document.MM_Time[0][0] = new String("behavior");
	document.MM_Time[0][0].frame = 9;
	document.MM_Time[0][0].value = "MM_showHideLayers('Layer15','','hide','Layer14','','hide','Layer13','','hide','Layer12','','hide','Layer11','','hide','Layer10','','hide','Layer9','','hide','Layer8','','hide','Layer7','','hide','Layer6','','hide','Layer5','','hide','Layer4','','hide','Layer3','','hide','Layer2','','hide','Layer1','','hide')";
	document.MM_Time[0].lastFrame = 9;
	for (i=0; i<document.MM_Time.length; i++) 
	{
		document.MM_Time[i].ID = null;
		document.MM_Time[i].curFrame = 0;
		document.MM_Time[i].delay = 1000/document.MM_Time[i].fps;
	}
}

function MM_swapImgRestore() { //v3.0
var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
	var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
	if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.0
var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
	d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

//Here we have functions for the dropdown
function SetCSSClass(classN, element)
{
	element.className = classN;
}
function DisplayAllSubDivs(parent, force)
{
	if(parent.childNodes[parent.childNodes.length-1].style.display!="none" || force) //It should only display when forced, otherwise time should be extended only
		ManipDivs(parent, true);
}
function HideAllSubDivsExceptFirst(parent)
{
	ManipDivs(parent, false);
}

function InvertSubDivs(parent)
{
	if(parent.childNodes == null) return;
	if(parent.childNodes[parent.childNodes.length-1].style.display=="none")
		DisplayAllSubDivs(parent);
	else
		HideAllSubDivsExceptFirst(parent);
}
var myTimeout;
function resetTimeoutToDisappear(parent)
{
	myTimeout = window.setTimeout("HidingAllMenus()", 2000);
}

function HidingAllMenus(parent)
{
	HideAllSubDivsExceptFirst(document.getElementById("Networks"));//this is hardcoded
}

function ManipDivs(parent, display)
{

	if(display) //then the parent should be set absolute
	{
		if(myTimeout) window.clearTimeout(myTimeout);
		var xPos = findPosX(parent);
		var yPos = findPosY(parent);
		parent.style.position = "absolute";
		parent.style.left	= xPos+"px"
		parent.style.top	= yPos+"px"
	}
	else
	{
		parent.style.position = "relative";
		parent.style.left	= 0+"px"
		parent.style.top	= 0+"px"
	
	}
	if(parent.childNodes == null) return;
	for(i=0;i < parent.childNodes.length;i++)
	{
		node = parent.childNodes[i];
		if(node==null) continue;
		if(node.tagName=="DIV") 
		{
			if(i==0)
				continue;
			else if(!display)
				node.style.display="none";
			else
				node.style.display="inline";
		}
	}
}

function MoveDivsRight()
{
return;
	if(navigator.appVersion.indexOf("MSIE 5")>-1 && navigator.appVersion.indexOf("Mac")>-1) //don't care
	{
		//Here we display the original dropdown instead
		el = document.getElementById("Networks_location_dropdown");
		if(el!=null)
		{
			el.style.display="inline";
			el.style.visibility = "visible";
		}
		//Remove networks div
		el = document.getElementById("Networks");
		
		if(el != null)
		{
			el.parentElement.removeChild(el);
		}
		return;
	}
	AllDivs = document.getElementsByTagName("div");
	if(AllDivs == null)
		return;
	for(i=0;i<AllDivs.length;i++)
	{
		div = AllDivs[i];
		if(div == null || div.id == "") continue;
		loc = document.getElementById(div.id + "_location");
		if(loc == null) continue;
		
		
		div.style.left = findPosX(loc)+"px";
		yp = findPosY(loc);
		if(navigator.appName=="Opera" && navigator.appVersion.indexOf("8.0")>-1)
			yp += 3;
		div.style.top = yp+"px";
		div.style.visibilty = "visible";
		div.style.display = "inline"
		loc.style.visibility = "hidden"; 
		loc.style.display="none";
	}
}
function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}
//Dropdown functions end here

function GetWeekNumber(year,month,day){
    //lets calc weeknumber the cruel and hard way :D
    //Find JulianDay 
    month += 1; //use 1-12
    var a = Math.floor((14-(month))/12);
    var y = year+4800-a;
    var m = (month)+(12*a)-3;
    var jd = day + Math.floor(((153*m)+2)/5) + 
                 (365*y) + Math.floor(y/4) - Math.floor(y/100) + 
                 Math.floor(y/400) - 32045;      // (gregorian calendar)
    //var jd = (day+1)+Math.Round(((153*m)+2)/5)+(365+y) + 
    //                 Math.round(y/4)-32083;    // (julian calendar)
    
    //now calc weeknumber according to JD
    var d4 = (jd+31741-(jd%7))%146097%36524%1461;
    var L = Math.floor(d4/1460);
    var d1 = ((d4-L)%365)+L;
    NumberOfWeek = Math.floor(d1/7) + 1;
    return NumberOfWeek;        
}
function GetWeekNumberFromDate2( date )
{
	return GetWeekNumber(date.getFullYear(), date.getMonth(), date.getDate());
}
function GetWeekNumberFromDate( date )
{ 
  date = new Date( Date.UTC( date.getFullYear(), date.getMonth(), date.getDate() ) ); 
  var IsoDayOfWeek = date.getDay()==0? 7: date.getDay(); // Søndag = 7 
  date.setDate( date.getDate() + 4 - IsoDayOfWeek ); // Ændre til nærmeste torsdag 
  var DayOfYear = ( date.getTime() - Date.UTC( date.getFullYear(), 0, 1 )) / 864e5; 
  var week = Math.floor( DayOfYear / 7 ) + 1; 
  return week; 
} 
