/* ©Webgraph, www.webgraph.se tel:0293-55055, Sweden */
/* Senast Šndrad:06-01-17 */


/* <!-- meny syntax: 
onclick="{return stay=2, staysub=21, !showMenu('3', event);}" 
onClick="show(3,2)"
--> */
/* <!-- för lager som inte ska stänga andra vid klick: onClick="event.cancelBubble = true;" --> */

// Visa layer: onclick="return !showMenu('10', event);"

function getStyleObject(objectId) {
    // cross-browser function to get an object's style object given its id
    if(document.getElementById && document.getElementById(objectId)) {
	// W3C DOM
	return document.getElementById(objectId).style;
    } else if (document.all && document.all(objectId)) {
	// MSIE 4 DOM
	return document.all(objectId).style;
    } else if (document.layers && document.layers[objectId]) {
	// NN 4 DOM.. note: this won't find nested layers
	return document.layers[objectId];
    } else {
	return false;
    }
} // getStyleObject

function changeObjectVisibility(objectId, newVisibility) {
    // get a reference to the cross-browser style object and make sure the object exists
    var styleObject = getStyleObject(objectId);
    if(styleObject) {
	styleObject.visibility = newVisibility;
	return true;
    } else {
	// we couldn't find the object, so we can't change its visibility
	return false;
    }
} // changeObjectVisibility

function moveObject(objectId, newXCoordinate, newYCoordinate) {
    // get a reference to the cross-browser style object and make sure the object exists
    var styleObject = getStyleObject(objectId);
    if(styleObject) {
	styleObject.left = newXCoordinate;
	styleObject.top = newYCoordinate;
	return true;
    } else {
	// we couldn't find the object, so we can't very well move it
	return false;
    }
} // moveObject

/*================ Open a new browserwindow  ==================*/
var url;
function mySmallWindow(url) {
open(url,'','heigt=400,width=600,screenX=100,screenY=100');
}
/*================ /Open a new browserwindow  ==================*/


/*================ Get a random value between 1 and 10 ==================*/
function getRandomInteger() {
var randomNum;
randomNum = (Math.random() * 10);
/*Divide with appropriate randomNumber to limit randomNumbers lower than 10:
(/1.06=9; /1.18=8; /1.4=7; /1.55=6; /2=5; /2.5=4; /3=3; /4.1=2;)*/
randomNum = (randomNum / 3);
//if (randomNum < 1) {randomNum = 1;}
//else {
return Math.round(randomNum); 
//}
//document.write("The random rounded value is " + randomNum);
}
/*================ /Get a random value between 1 and 10 ==================*/


// ********************************
// application-specific functions *
// ********************************
var numMenus = 10; //= Högsta nummer på lager som ska döljas.
var menuId;
var lastlayer;


/*================ Hide all layers  ====================*/
function hideAllMenus() {
onoff = 1;
//counter= lägsta nummer på lager som ska gömmas
for(counter = 1; counter <= numMenus; counter++) { 
	changeObjectVisibility('Layer' + counter, 'hidden');	
	//Fade till osynlighet 
	//FadeOpacity('Layer' + counter, 100, 0, 1000, 25);
	
}
//setTimeout("andHideAllGood ()", 1000);
}

/*================= andHideAllGood ===================*/
function andHideAllGood (stay, staysub) {
	for(counter = 1; counter <= numMenus; counter++) { 
	if (stay != counter && staysub != counter) {
	changeObjectVisibility('Layer' + counter, 'hidden');	
	}
}
}

/*================ Hide all layers exept arguments ANVÄNDS INTE HÄR ====================*/
function hideAllMenusExept(stay, staysub) {
onoff = 1;
//alert('exept');
for(counter = 1; counter <= (stay+numMenus); counter++) { 
	if (stay != counter && staysub != counter && lastlayer != stay) {
	//changeObjectVisibility('Layer' + counter, 'hidden');
	//Fade till osynlighet
	//FadeOpacity('Layer' + counter, 100, 0, 500, 25);
	FadeOpacity('Layer' + lastlayer, 100, 0, 500, 25);
	}
}
setTimeout("andHideAllGood ("+stay+")", 1000);
}

/*==================== Show some argument layers =================*/
function show(ett) {
onoff=1;
if (lastlayer != ett) {
hide(lastlayer); 
}

for (var i=0; i<show.arguments.length; i++) {
menuId = 'Layer' + show.arguments[i];
	if(changeObjectVisibility(menuId, 'visible')) {
	//fade till synlighet
	FadeOpacity('Layer' + ett, 0, 100, 200, 25);
	continue;
 	} else {
 	return false;
 	}
}
lastlayer = ett;

}

/*==================== Hide some argument layers =================*/
function hide(ett) {
for (var i=0; i < hide.arguments.length; i++) {
menuId = 'Layer' + hide.arguments[i];
if(changeObjectVisibility(menuId, 'hidden')) {
//lastLayer = null;
continue;
} else {
return false;
}
//Fadefunktionen gömmer också lagret när fadningen ut är avslutad [se FadeOpacityStep() ]
//FadeOpacity(menuId, 100, 0, 800, 25);
}
}

/*==================== Show-hide some argument layers ANVÄNDS INTE HÄR  =================*/
function showHide(ett) {
hideAllMenus();
for (var i=0; i<showHide.arguments.length; i++) {
menuId = 'Layer' + showHide.arguments[i];
getStyleObject(menuId);
if (lastLayer == showHide.arguments[i]) { /* Varannanfunktion för första argumentet (=klickat lager) */
lastLayer = null;
changeObjectVisibility(menuId, 'hidden');
} else {
if(changeObjectVisibility(menuId, 'visible')) {
if (i==0){lastLayer = ett;} /* = Första argumentet */
continue;
} else {
return false;
}
}
}
}

//document.onclick = hideAllMenus;
/* Det här lagret kana behövas på sida för att kunna klicka ned alla menyer
/* <div id=contentdiv style="position: absolute; left: 0; top: 0;"></div> */




function changePosStyle(objectId, newPosStyle) {
    // get a reference to the cross-browser style object and make sure the object exists
    var styleObject = getStyleObject(objectId);
    if(styleObject) {
	styleObject.position = newPosStyle;
	return true;
    } else {
	// we couldn't find the object, so we can't change its visibility
	return false;
    }
} // changeObjectVisibility


/*Används inte?*/
// function posStyle(ett) {
// for (var i=0; i<showHide.arguments.length; i++) {
// menuId = 'Layer' + showHide.arguments[i];
// getStyleObject(menuId);
// if (lastLayer == showHide.arguments[i]) { /* Varannanfunktion för första argumentet (=klickat lager) */
// lastLayer = null;
// changePosStyle(menuId, 'fixed');
// } else {
// if(changePosStyle(menuId, 'absolute')) {
// if (i==0){lastLayer = ett;} /* = Första argumentet */
// continue;
// } else {
// return false;
// }
// }
// }
// }

//Ändra typ av position (fixed, absolute, relative...)
function changeObjectPositionStyle(objectId, newPosStyle) {
    // get a reference to the cross-browser style object and make sure the object exists
    var styleObject = getStyleObject(objectId);
    if(styleObject) {
	styleObject.position = newPosStyle;
	return true;
    } else {
	// we couldn't find the object, so we can't change its visibility
	return false;
    }
} // changeObjectPositionStyle

//Samla objekt efter classtillhörighet
function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp('(^|\\\\s)'+searchClass+'(\\\\s|$)');
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	
	return classElements;
} //getElementsByClass

//Avgör om en class ska visas eller ej
function changeClassDisplayStyle(searchClass, newDisplayStyle) {
	//Samla in alla object som tillhör classen
	classElements = getElementsByClass(searchClass);
	
	for(num = 0; num < classElements.length; num++) { 
	
    var styleObject = classElements[num].style;
    if(styleObject) {
	styleObject.display = newDisplayStyle;

    } 
    }
    
} // changeClassDisplayStyle


/*==================== För exempelvis sökrutor =================*/

/*Sätter ett värde pÂ ett input-objekt och även färg.
Exempel pÂ anrop:
onload="setValue('terms', 'Sök bara pÂ Kustguide','#999','#FFF');"
onFocus="setValue('terms', 'Sök bara pÂ Kustguide','#999','#FFF');"
*/
function setValue(field_id,val,col,bg) {
	//if (!document.getElementById(field_id).value) {
	document.getElementById(field_id).value=val;
	document.getElementById(field_id).style.color=col;
	document.getElementById(field_id).style.background=bg;
	//}
}
function setBackground(field_id,bg) {
	if (!document.getElementById(field_id).value) {document.getElementById(field_id).style.background=bg;}
}


/* Varna för gamla Explorervarianter*/
function warnMSIE7(objectclass) {
var browser=navigator.appName;
var b_version=navigator.appVersion;
var version=parseFloat(b_version);
var re1 = /MSIE 7\.0/i;
var re2 = /MSIE 6\.0/i;
var re3 = /MSIE 5\.0/i;

// document.write("Browser name: "+ browser)
// document.write("<br>")
// document.write("Browser version: "+ b_version)

if (re1.test(b_version)) {
	//Hårdkodat, försök hitta ett generiskt system...
	if (changeClassDisplayStyle(objectclass, 'none') ) {
		return true;
	}  else {
alert('Tyvärr kan din Explorer inte ge fullständig rättvisa till de här sidorna.\nDu bör uppgradera till version 8.0 eller använda en annan browser.')
	}
}
if (re2.test(b_version) || re3.test(b_version)) {
alert('Tyvärr kan din Explorer inte ge fullständig rättvisa till de här sidorna.\nDu bör uppgradera till version 8.0 eller använda en annan browser.')
}

}
/* /Varna för gamla Explorervarianter*/

/* Stoppa gamla Explorervarianter*/
function stopMSIE6() {
var browser=navigator.appName;
var b_version=navigator.appVersion;
var version=parseFloat(b_version);
var re1 = /MSIE 6\.0/i;
var re2 = /MSIE 5\.0/i;

//document.write("Browser name: "+ browser)
//document.write("<br>")
//document.write("Browser version: "+ b_version)

if (re1.test(b_version)) {
alert('Tyvärr kan Explorer 6.0 inte ge fullständig rättvisa till de här sidorna.\nDu bör uppgradera till version 7.0 eller använda en annan browser.');
return false;
	}
if (re2.test(b_version)) {
alert('Tyvärr kan Explorer 5.0 inte ge fullständig rättvisa till de här sidorna.\nDu bör uppgradera till version 7.0 eller använda en annan browser.');
return false;
}

}
/* /Stoppa gamla Explorervarianter*/

/* Redirect gamla Explorervarianter*/
function redirectMSIE6(thislink) {
var browser=navigator.appName;
var b_version=navigator.appVersion;
var version=parseFloat(b_version);
var re1 = /MSIE 6\.0/i;
var re2 = /MSIE 5\.0/i;

//document.write("Browser name: "+ browser)
//document.write("<br>")
//document.write("Browser version: "+ b_version)

if (re1.test(b_version)) {
parent.window.location = thislink;
return true;
	}
if (re2.test(b_version)) {
parent.window.location = thislink;
return true;
}

}
/* /Redirect gamla Explorervarianter*/



// Ändra textstorlek på en sida med de här länkarna
//Text <a href="javascript:decreaseFontSize();">-</a> / <a href="javascript:increaseFontSize();">+</a>
var min=9;
var max=20;
function increaseFontSize() {
   var p = document.getElementsByTagName('body');
   for(i=0;i<p.length;i++) {
      if(p[i].style.fontSize) {
         var s = parseInt(p[i].style.fontSize.replace("px",""));
      } else {
         var s = 12;
      }
      if(s!=max) {
         s += 1;
         setCookie('font_size',s,10); //Sista siffran är dagar tills coockien dör
      }
      p[i].style.fontSize = s+"px"
   }
}
function decreaseFontSize() {
   var p = document.getElementsByTagName('body');
   for(i=0;i<p.length;i++) {
      if(p[i].style.fontSize) {
         var s = parseInt(p[i].style.fontSize.replace("px",""));
      } else {
         var s = 12;
      }
      if(s!=min) {
         s -= 1;
         setCookie('font_size',s,10); //Sista siffran är dagar tills coockien dör
      }
      p[i].style.fontSize = s+"px"
     
   }   
}


//ÄNDRA TEXTSTORLEK MED VARAKTIGHET MOTSVARANDE COOCKIENS
// onLoad="ceckCookie();"

//CHECKCOOCKIE
function checkCookie() {
	
size=getCookie('font_size');
 //alert(size + ' T');

if (size!=null && size!="") {
 var p = document.getElementsByTagName('body');	
	for(i=0;i<p.length;i++) {
		p[i].style.fontSize = size + "px";
		}
	} 
}



//SETCOOCKIE
function setCookie(c_name,value,expiredays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}


//GETCOOCKIE
function getCookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=");
  if (c_start!=-1)
    { 
    c_start=c_start + c_name.length+1; 
    c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length;
    return unescape(document.cookie.substring(c_start,c_end));
    } 
  }
return "";
}


/* BOKMÄRKE DENNA SIDA, ÄVEN I RAMAR
 EN LÄNK SOM DENNA ELLER LIKNADE BEHÖVS PÅ SIDAN:
 <a href="javascript:bookmark_us('http://<?php echo($_SERVER["PHP_SELF"]) ?>','<?php echo($thisTitle) ?>')">Bokmärk den här sidan!</a>
<a href="javascript:bookmark_us('http://www.adress.se','titel')">Bokmärk den här sidan!</a> */

function bookmark_us(url, title){

if (window.sidebar) // firefox
    window.sidebar.addPanel(title, url, "");
else if(window.opera && window.print){ // opera
    var elem = document.createElement('a');
    elem.setAttribute('href',url);
    elem.setAttribute('title',title);
    elem.setAttribute('rel','sidebar');
    elem.click();
} 
else if(document.all)// ie
    window.external.AddFavorite(url, title);
}


/* Notera Explorer och ändra opacitet på ett objekt med två metoder.
Värdet varieras mellan 1 - 10, där 10 är ogenomskinligt. 
Funktionen anropas så här i t.ex. en bild-tag: onMouseOver = "opacity(this,8);" */
function opacity(it, Q) {
var browser=navigator.appName;
var re1 = /Explorer/i;

if (re1.test(browser)) {
	it.filters.alpha.opacity=Q*10;
} else {
	it.style.opacity=Q/10;
	}
}
/* /Notera Explorer och ändra opacitet på ett objekt  med två metoder */

/* ========================== BILDSPEL ======================= */
/*placeholder = <img src="bildspel/1.jpg" name='Bildspel'> */
var fart = 800; //tusendelar av en sekund
var Bild = new Array();
var Antal = 57; //Antal bilder i katalogen "bildspel", där första bilden ska heta "1.jpg"

for (i = 0; i < Antal; i++){
var bildnr = i+1;
Bild[i] = 'bildspel/' + bildnr +'.jpg';
}

var a = 0;
var b = Bild.length;

var laddaBild = new Array();
for (i = 0; i < b; i++){
   laddaBild[i] = new Image();
   laddaBild[i].src = Bild[i];
}

var onoff = 0;
var block = 0;
function onOff() {
if (onoff == 1) {
onoff = 2;
block = 1;
setTimeout('removeBlock()', fart); // Förhindrar att det blir dubbla setTimeout för fadning, som i så fall ger bildfladder
} else if (block == 0) {
onoff =1;
}
}
function removeBlock() {
	block = 0;
}

function Off() { 
if (onoff == 1) {
onoff = 2;
block = 1;
setTimeout('removeBlock()', fart); // Förhindrar att det blir dubbla setTimeout för fadning, som i så fall ger bildfladder
} else {
onoff =0;
}
}

function drivBildspel() {
if (onoff == 1) {
   a++;
   if (a > (b-1)) a=0; 
	document.images.Bildspel.src = laddaBild[a].src;
	FadeOpacity('Bildspel', 10, 100, 1000, 25 );
	setTimeout('drivBildspel()', fart);
	setTimeout("FadeOpacity('Bildspel', 100, 10, 1000, 25 )", fart - 1000);
}
}

function backaBildspel() {
SetOpacity(document.getElementById('Bildspel'), 100);
if (onoff != 2) {
	a--;
   if (a < 0) a = Antal;
   document.images.Bildspel.src = laddaBild[a].src;
   } 
 }
 
function mataBildspel() {
SetOpacity(document.getElementById('Bildspel'), 100);
if (onoff != 2) {
	a++;
   if (a > (b-1)) a=0; 
   document.images.Bildspel.src = laddaBild[a].src;
   } 
 }
 
/* ========================== /BILDSPEL ======================== */
/* ========================== Opacity funktioner =====================*/
/*
FadeOpacity() requires 5 parameters to define the animation:
elemId
The id attribute of the DOM object (or HTML entity) to animate.
fromOpacity
The starting opacity for the animation.
toOpacity
The ending opacity of the animation. This is the opacity the element will have when the animation ends.
time
The time the animation should take, in milliseconds. This should be divisible by the frames per second or it will 
be rounded to the next highest number that is divisible.
fps
The frames per second for the animation. A higher fps value means a smoother animation, but opacity changes can 
be processor-intensive on larger elements, so you could lower this if needed. 8 - 12 fps is a good quality setting.
*/
function SetOpacity(elem, opacityAsInt) {
	var opacityAsDecimal = opacityAsInt;
	
	if (opacityAsInt > 100)
		opacityAsInt = opacityAsDecimal = 100; 
	else if (opacityAsInt < 0)
		opacityAsInt = opacityAsDecimal = 0; 
	
	opacityAsDecimal /= 100;
	if (opacityAsInt < 1)
		opacityAsInt = 1; // IE7 bug, text smoothing cuts out if 0
	
	elem.style.opacity = opacityAsDecimal;
	elem.style.filter  = "alpha(opacity=" + opacityAsInt + ")";
}

function FadeOpacity(elemId, fromOpacity, toOpacity, time, fps) {
//onoff för att inte dubblera funktionen och kolla dessutom att elementet finns, annars blir elem null i SetOpacity()
if (onoff == 1 && document.getElementById(elemId)) {
	var steps = Math.ceil(fps * (time / 1000));
	var delta = (toOpacity - fromOpacity) / steps;
	
	FadeOpacityStep(elemId, 0, steps, fromOpacity, delta, (time / steps));
	}
}

function FadeOpacityStep(elemId, stepNum, steps, fromOpacity, delta, timePerStep) {
    SetOpacity(document.getElementById(elemId), Math.round(parseInt(fromOpacity) + (delta * stepNum)));

    if (stepNum < steps) {
        setTimeout("FadeOpacityStep('" + elemId + "', " + (stepNum+1) + ", " + steps + ", " + fromOpacity + ", " + delta + ", " + timePerStep + ");", timePerStep);
} else {
//Toningen slut - göm objekt som tonats ut
if (delta < 1) {
//alert(elemId +":\n" +fromOpacity +'-' + delta);
changeObjectVisibility(elemId, 'hidden');
}
}
}
/* ========================== Opacity funktioner =====================*/

