/*==================== 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;}
}


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

//Ä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
	//alert('nix');
	return false;
    }
} // changeObjectPositionStyle




var numMenus = 80; //= Högsta nummer på lager som ska döljas.
var menuId;
var lastLayer;


/*================ Hide all layers  ====================*/
function hideAllMenus() {
ifVisibleHide('tell_a_friend');
//counter= lägsta nummer på lager som ska gömmas
for(counter = 1; counter <= numMenus; counter++) { 
	changeObjectVisibility('Layer' + counter, 'hidden');	
}
//Enskilda sub+sub lager med höga nummer:
changeObjectVisibility('Layer111', 'hidden');
}


/*================ Hide all layers exept arguments ====================*/
function hideAllMenusExept(stay, staysub) {
for(counter = stay; counter <= (stay+10); counter++) { 
	if (stay != counter && staysub != counter) {
	changeObjectVisibility('Layer' + counter, 'hidden');
	}
}
//Enskilda sub+sub lager med höga nummer:
changeObjectVisibility('Layer111', 'hidden');
lastLayer = null;
}

/*==================== Show some argument layers =================*/
function show(ett) {
//if (lastLayer) {hideAllMenusExept(lastLayer-1);}
for (var i=0; i<show.arguments.length; i++) {
menuId = 'Layer' + show.arguments[i];
if(changeObjectVisibility(menuId, 'visible')) {
continue;
} else {
brake;
}
}
lastLayer = ett; /* = Första argumentet */
}

/*==================== Show-hide some argument layers =================*/
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')) {
	/*Speciell scroll för Konstnärsmenyn*/
	if (ett == 3) {scrollWindowNiceTo(0,80);}
if (i==0){lastLayer = ett;} /* = Första argumentet */
continue;
} else {
brake;
}
}
}
}

/*==================== Hide some argument layers =================*/
function hide() {
for (var i=0; i<hide.arguments.length; i++) {
menuId = 'Layer' + hide.arguments[i];
if(changeObjectVisibility(menuId, 'hidden')) {
lastLayer = null;
continue;
} else {
brake;
}
}
}



/* Varna för gamla Explorervarianter*/
function warnMSIE6() {
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)) {
	//HÂrdkodat, försök hitta ett generiskt system...
	if (
	changeObjectPositionStyle('meny', 'absolute') 
	&& changeObjectPositionStyle('logo', 'absolute')
	&& changeObjectPositionStyle('skaf_logo', 'absolute')
	&& changeObjectPositionStyle('cinoa_logo', 'absolute')
	&& changeObjectPositionStyle('footer', 'absolute')
	) {
		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 högre, alternativt använda en annan webläsare.\n\nSorry, Explorer 6.0 is not compatible with these pages.\nPlease, upgrade to version 7.0 or heigher, or consider using an alternaive browser.')
	}  else {
return true;
	}
}
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 högre, alternativt använda en annan webläsare.')
}

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

/* ====================== TIMER ====================== */
var wait = 0;
var stopClock;

function startClock(){
if (!stopClock) {
		//document.frm.clock.value = wait;//Visa i ett formfält
		setTimeout("startClock()", 1000);//millisekunder
        wait++;
}
}


/* ============= Scrolla ett fönster med lite finess ============= */
//Initiera globala variabler
var xx = 0, yy = 0;
var millisec_delay = 50;
var horizont = 0, vertical = 0;
var xup = 1, yup = 1, stopp;
var scrollOf_X = 0, scrollOf_Y = 0;



// Initiera scrollningen
function scrollWindowNiceTo(hh,vv) {
	if (xx < 100) {xx = 100;}
	if (yy < 100) {yy = 100;}
	horizont = hh;
	vertical = vv;
	
	//alert(getScrollXY()); /* Använd för att bestämma minsta nedscrollning (scrollOf_Y) där funktionen inte ger onödig scrollning */
	getScrollXY();
	if (scrollOf_Y > 210) {
	startScrollUp();	
	} else if (scrollOf_Y != vertical) { 
	scrollWindowNice();
	}
}

//Mjukstarta scrollningen uppÂt
function startScrollUp() {
	
		if (xup < xx) {stop_X = xx + 2 * horizont;}
		else {stop_X = 2 * xup + horizont;}
		
		if (yup < yy) {stop_Y = yy + 2 * vertical;}
		else {stop_Y = 2 * yup + vertical;}
		
		
	//if (xup < 30 || yup < 30)  {
	getScrollXY();
	if (scrollOf_X > stop_X || scrollOf_Y > stop_Y)  {
		xup = Math.floor(xup * 2); 
		yup = Math.floor(yup * 2);
	setTimeout('startScrollUp()', millisec_delay);
	window.scrollBy(-xup,-yup);
	}
	//else {getScrollXY(); alert(yup + ' scroll=' + scrollOf_Y + ' stop_Y=' + stop_Y); scrollWindowNice();/*För att kolla slutpunkt för scrollningen*/
	else {scrollWindowNice();
	xup = 1; yup = 1;
	}
}

// Utför scrollningen som bromsar in mot mÂlet
function scrollWindowNice() {
	if (xx > 0 || yy > 0)  {
		xx = Math.floor(xx / 1.3); 
		yy = Math.floor(yy / 1.3);
	setTimeout('scrollWindowNice()', millisec_delay);
	window.scrollTo(xx + horizont,yy + vertical);
	}
	//else {alert(vertical);} /*För att kolla angivet mÂl för scrollningen*/
}

// Ta reda pÂ aktuellt scrolläge
function getScrollXY() {
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrollOf_Y = window.pageYOffset;
    scrollOf_X = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrollOf_Y = document.body.scrollTop;
    scrollOf_X = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrollOf_Y = document.documentElement.scrollTop;
    scrollOf_X = document.documentElement.scrollLeft;
  }
  return [ scrollOf_X, scrollOf_Y ];
}
/* ============= /Scrolla ett fönster med lite finess ============= */

/* ========================== Opacity funktioner =====================*/
var start = 0;
var stopp = 100;
function fadeIn(objekt) {
FadeOpacity(objekt, start, stopp, 600, 25);
}
/*
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) {
//Se till att objektet syns, annars syns ju inte toningen.
changeObjectVisibility(elemId, 'visible')
//onoff för att inte dubblera funktionen och kolla dessutom att elementet finns, annars blir elem null i SetOpacity()
if (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 - varannanfunktion för visa/göm
if (delta > 0) {
stopp = 0;
start = 100;
} else {
stopp = 100;
start = 0;
}
}
}

//Gömmer ett objekt, endast om det är synligt, ställer om så att fadning blir till synlighet
function ifVisibleHide(objectId) {
var objectStyle = getStyleObject(objectId);
if (objectStyle.visibility == 'visible'){
changeObjectVisibility(objectId, 'hidden');
stopp = 100;
start = 0;
}
}
/* ========================== Opacity funktioner =====================*/


/* ================== Tell-a-friend script ====================== */
//var initialsubj="Tips om en sida hos Mollbrinks Konst AB";
//var initialmsg="En sida jag tyckte kunde intressera dig: "+window.location;
var good;

function checkEmailAddress(field) {
var goodEmail = field.value.match(/\b(^(\S+@).+((\.com)|(\.net)|(\.edu)|(\.mil)|(\.gov)|(\.org)|(\.info)|(\.sex)|(\.biz)|(\.aero)|(\.coop)|(\.museum)|(\.name)|(\.pro)|(\..{2,2}))$)\b/gi);
var no_commas = field.value.match(/,/); //Godta endast EN adress
 if (goodEmail && no_commas == undefined) {
good = true;
}
else {
alert('Ett fel fanns i någon e-postadress, \neller du skrev in flera adresser i samma fält.\n\nSnälla, skriv EN giltig e-postadress i varje fält!');
field.focus();
field.select();
good = false;
   }
}

var back_url = window.location;
function mailThisUrl() {
good = false
checkEmailAddress(document.eMailer.to_email);
if (good) {
checkEmailAddress(document.eMailer.from_email);
}
if (good) {
var to_email = document.eMailer.to_email.value;
var from_email = document.eMailer.from_email.value;
//window.location = "mailto:"+document.eMailer.email.value+"?subject="+initialsubj+"&body="+document.title+" "+u;
//window.location = "mailto:"+document.eMailer.email.value+"?subject="+initialsubj+"&body="+initialmsg
//window.location = "tip-a-friend.php?"+to_email+','+from_email+','+initialsubj+','+initialmsg+','+back_url+','+'Skickat av: '+from_email;
 window.location = "tip-a-friend.php?"+to_email+','+from_email+','+back_url;
  }
}
/* ================== /Tell-a-friend script ====================== */

