/**************************************************************************************
--------------------------------------------------------------------------
Göteborgs IT Konsult AB (GOTIT AB)										
--------------------------------------------------------------------------
Funktioner som används för hantering av css och förändring av objekt's attribut.
Script-filen skall alltid föregås av filen general.js för identifering av 
webbläsare.

Innehåll: (anpassade för NS4+ och IE4+)
1. ShowObj(obj)		
2. HideObj(obj)	
3. GetStatus(obj)		
4. GetObjStyle(obj)				
5. ObjExist(obj)				
6. SetFontSize(obj,size)					
7. SetColor(obj,color)			
8. SetBgColor(obj,color)	
9. SetSize(obj,width,height)
10. GetMouseX()
11. GetMouseY()
12. GetObjValue(obj)

Innehåll: (anpassade för NS6+ och IE4+)
1. SetText(obj,color)		
2. MoveObj(obj,top,left)
3. GetTop(obj)
4. GetLeft(obj)
5. SetTop(obj,top)
6. SetLeft(obj,left)
7. Scroll(obj,speed,maxleft, maxtop,step)
8. NoScroll()
9. StepKontroll(obj,maxleft,maxtop,step)
**************************************************************************************
-------------------------------------------------------------------------
Senast ändrad: 021002
-------------------------------------------------------------------------
*/
/* 
För full funktionalitet av nedanstående två klasser så måste style-klassen 
för objektet ha följande attribut:
	visibility:hidden;
	position:absolute;
	
 ShowObj (Visar objektet som skickas in som parameter)
 Inparameter: objektet t ex onmouseover="ShowObj(this);"
 Returnerar: */
function ShowObj(obj){
	if (ObjExist(obj))
		GetObjStyle(obj).visibility=visible;
}
/* HideObj (Döljer objektet som skickas in som parameter kontroll)
 Inparameter: objektet t ex onmouseout="HideObj(this);"
 Returnerar: */
function HideObj(obj){
	if (ObjExist(obj))
		GetObjStyle(obj).visibility=hidden;
}
/* GetStatus (Ger besked om ett objekt är synligt eller ej.)
Inparameter: objektet
Retunerar:TRUE om objektet är synligt och FALSE om det är dolt.
*/
function GetStatus(obj){
	if (ObjExist(obj)){
		if (GetObjStyle(obj).visibility==visible)
			return true
		else
			return false
	}			
}
/* GetObjStyle (Hämtar den browser-specifika sträng som nyttjas för att kunna 
								modifiera ett objekts attribut)
 Inparameter: objektet 
 Returnerar: */
function GetObjStyle(obj){
	if (ns4)
		return document.layers[obj];
	else if (ns6)
		return document.getElementById(obj).style;
	else if ((ie4) || (ie5))
		return document.all[obj].style;
}
/* ObjExist (Kontrollerar om objektet existerar)
 Inparameter: objektet 
 Returnerar: true eller false */
function ObjExist(obj){
	if (ns4)
		return eval("document.layers."+obj);
	else if (ns6)
		return document.getElementById(obj);
	else if ((ie4) || (ie5))
	  return document.all[obj];
}
//Sätter font-storlek på ett objekt
function SetFontSize(obj,size){
	if (ObjExist(obj)){
		if (ns4)
			document.layers[obj].fontSize=size +'px';
		else if ((ns6) || (ie4) || (ie5))
			GetObjStyle(obj).fontSize=size +'px';
	}
}
//Sätter textfärgen på ett objekt
function SetColor(obj,color){
	if (ObjExist(obj)){
		if (ns4)
			document.layers[obj].color=color;
		else if ((ns6) || (ie4) || (ie5))
			GetObjStyle(obj).color=color;
	}
}
//Sätter bakgrundsfärgen på ett objekt
function SetBgColor(obj,color){
	if (ObjExist(obj)){
		if (ns4)
			GetObjStyle(obj).bgColor=color;
		else if ((ns6) || (ie4) || (ie5))
			GetObjStyle(obj).backgroundColor=color;
	}
}
//Sätter bredd och höjd på inskickat objekt.
function SetSize(obj,width,height){
	if (ObjExiste(obj)){
	 	GetObjStyle(obj).width=width +'px';
	 	GetObjStyle(obj).height=height +'px';
	}
}
//Retunerar x-position för musmarkören
function GetMouseX(e){
	return (ns4 || ns6)?e.layerX:event.offsetX;
}
//Retunerar x-position för musmarkören
function GetMouseY(e){
	return (ns4 || ns6)?e.layerY:event.offsetY;
}
/****  NEDANSTÅENDE FUNKTIONER FUNGERERAR ENDAST I NS6+ och IE4+  ****/

//Funktionen tilldelar ett objekt medskickad textmassa. 
//Å,Ä,Ö,å,ä och ö kan ej nyttjas i medskickad textmassa.
function SetText(obj,text){
	if (ObjExist(obj) && (ns6) || (ie4) || (ie5))
		document.getElementById(obj).innerHTML = text;
}
//Flyttar objekt genom addera medskickade värden till nyvarande position.
function MoveObj(obj,top,left){
	var x,y;
	if (ns6 || ie4 || ie5 ){	
		x=GetTop(obj);
		y=GetLeft(obj);
		x=parseInt(x)+parseInt(top);
		y=parseInt(y)+parseInt(left);
		SetTop(obj,x);
		SetLeft(obj,y);
	}
}
//Retunerar top-attributet för aktuellt objekt.
function GetTop(obj){
	if (ns6)
		return document.getElementById(obj).style.top;
	else if (ie4 || ie5)
		return document.all[obj].style.pixelTop;
}
//Retunerar left-attributet för aktuellt objekt.
function GetLeft(obj){
	if (ns6)
		return document.getElementById(obj).style.left;
	else if (ie4 || ie5)
		return document.all[obj].style.pixelLeft;
}
//Tilldelare top-attributet för aktuellt objektet med medskickat värde
function SetTop(obj,top){
	if (ns6)
		document.getElementById(obj).style.top=top;
	else if (ie4 || ie5)
		document.all[obj].style.top=top;
}
//Tilldelare left-attributet för aktuellt objektet med medskickat värde
function SetLeft(obj,left){
	if (ns6)
		document.getElementById(obj).style.left=left;
	else if (ie4 || ie5)
		document.all[obj].style.left=left;
}
/*
Scrollar objekt till angiven plats (x- och y-koordinater)
speed (heltal) sätts till den väntetid som skall gälla innan nästa position skall sättas
step (heltal) är antalet pixlar som objektet skall flyttas. Måste vara delbart med 
maxleft och maxtop.
För kontroll om step är möjlig att nyttja mot nuvarande och önskad position kan funktionen
StepKontroll(obj,maxleft,maxtop,step) användas innan Scroll-funktionen anropas.
*/
var scrollTim;
function Scroll(obj,speed,maxleft,maxtop,step){
	if (ObjExist(obj) && (ns6) || (ie4) || (ie5)){
		if (parseInt(GetLeft(obj)) < maxleft){
			MoveObj(obj,0,step);		
		}
		else if (parseInt(GetLeft(obj)) > maxleft){
			MoveObj(obj,0,(step*-1));
		}
		if (parseInt(GetTop(obj)) < maxtop){
			MoveObj(obj,step,0);		
		} 
		else if (parseInt(GetTop(obj)) > maxtop){
			MoveObj(obj,(step*-1),0);				
		}
		if (parseInt(GetTop(obj)) != maxtop || parseInt(GetLeft(obj)) != maxleft){
			scrollTim=setTimeout("Scroll('"+obj+"',"+speed+","+maxleft+","+maxtop+","+step+");",speed);
		}
		else{
			NoScroll();
		}
	}
}
//Avbryter objekt i rörelse
function NoScroll(){
	clearTimeout(scrollTim)
}
//Funktion för kontroll om antalet steg som är angivet stämmer med nuvarande och ansökad position
function StepKontroll(obj,maxleft,maxtop,step){
	var LeftDiff, TopDiff;
	LeftDiff=(parseInt(GetLeft(obj))-parseInt(maxleft));
	TopDiff=(parseInt(GetTop(obj))-parseInt(maxtop));
	if (LeftDiff<0)
		LeftDiff=LeftDiff*-1;
	if (TopDiff<0)
		TopDiff=TopDiff*-1;
	if ((LeftDiff%step)==0 && (TopDiff%step)==0)
		return true;
	else
		return false;
}

