
//Lataa halutun kontrollin position esim. hiddenfieldissä säilytettävästä string-arvosta
function LoadCtrlPos(ctrlHiddenFieldStr)
{
	try
	{
		var ctrlStrPosData = ctrlHiddenFieldStr.split("=");
	
		if (ctrlStrPosData.length > 0)
		{	
			var ctrlId = ctrlStrPosData[0];
		
			if(ctrlStrPosData.length > 1)
			{
				var elem = document.getElementById(ctrlId);
				elem.scrollTop = parseInt(ctrlStrPosData[1]);
				
				//window.status += " Load Ctrl " + ctrlId + " Pos:" + ctrlStrPosData[1];
				
				if(elem.detachEvent)
					elem.detachEvent("onscroll", SaveCtrlScrollPositions); //Poistetaan ensin varmuuden vuoksi vanha (ei virh. vaikka epäonnistuisi)
				else if (elem.removeEventListener)//for mozilla support
					elem.removeEventListener("onscroll", SaveCtrlScrollPositions, false);

				if(elem.attachEvent)
					elem.attachEvent("onscroll", SaveCtrlScrollPositions);//Lisätään sitten uusi
				else if (elem.addEventListener)//for mozilla support
					elem.addEventListener("onscroll", SaveCtrlScrollPositions, false);
					
				

			}
		}
		return;
			
			
	}
	catch(exc)
	{
		//alert('Onscroll event attach not succesfull');
		return;
	}
		
}


//Palauttaa päivitetyn hiddenfieldiin talletettavan stringin
function SaveCtrlPos(ctrlHiddenFieldStr)
{
	try
	{
		var ctrlStrPosData = ctrlHiddenFieldStr.split("=");
		
	
		if (ctrlStrPosData.length > 0)
		{	
			var ctrlId = ctrlStrPosData[0];
		
			if(ctrlStrPosData.length > 1)
			{
				var elem = document.getElementById(ctrlId);
				
				if (elem.currentStyle.SaveScrollPos.toLowerCase() == "true")
				{
					//alert(ctrlId + "=" + elem.scrollTop);
					return ctrlId + "=" + elem.scrollTop;
				}
			}
		}
		
		return ctrlHiddenFieldStr;
			
			
	}
	catch(exc)
	{
		return ctrlHiddenFieldStr;
	}
		
}
//

//Supports also mozilla
function InitializeScrollPosHiddenField()
{
	if (!document || !document.getElementsByTagName || !document.getElementById)//document = null
		return "";
	
	var allColl = document.getElementsByTagName("*");
	
	if(allColl == null || !document.getElementById('ctl00_ScrollPositions'))
		return "";
		
	var oldHiddenFieldValue = document.getElementById('ctl00_ScrollPositions').value;
	var hiddenFieldValue = oldHiddenFieldValue;
	
	for(var i = 0; i < allColl.length; ++i)
	{
		if(allColl[i])
		{
			var currentStyleObj = allColl[i].currentStyle;
			
			//for mozilla support
			if(!currentStyleObj && document.defaultView && document.defaultView.getComputedStyle)
				currentStyleObj = document.defaultView.getComputedStyle(allColl[i], null);
				
			if (currentStyleObj && currentStyleObj.ScrollTop != null)
			{
				var elemId = allColl[i].id;
				if (oldHiddenFieldValue.indexOf(elemId) == -1) //Jos elementtiä ei löydy ennestään lisätään se
				{
				
					var scrollTopValue = currentStyleObj.ScrollTop;
					if( hiddenFieldValue != "" )
					{
						hiddenFieldValue += "," + elemId + "=" + scrollTopValue;
					}
					else
					{
						hiddenFieldValue = elemId + "=" + scrollTopValue;
					}
				}
	
			}
			
		}//if(allColl[i])		
		
	}
	
	document.getElementById('ctl00_ScrollPositions').value = hiddenFieldValue;
	
	return hiddenFieldValue;
}


// Lataa kontrollin scrollpositiot
function LoadCtrlScrollPositions()
{
	try
	{

		var hiddenFieldValue = document.getElementById('ctl00_ScrollPositions').value;
		hiddenFieldValue = InitializeScrollPosHiddenField();
		
		//window.status = "Load: " + hiddenFieldValue;
		
		//alert(hiddenFieldValue);
		
		var ctrlStrs = hiddenFieldValue.split(",");
		
		for(var i = 0; i < ctrlStrs.length; ++i)
		{
			LoadCtrlPos(ctrlStrs[i]);
		}

		return;
	}
	catch(exc)
	{
		window.status = 'Debug info: function LoadCtrlScrollPositions(), CtrlScrollPositionLoad failed!';
	}
}
//

// Lataa kontrollin scrollpositiot
function SaveCtrlScrollPositions()
{
	try
	{
		
		var hiddenFieldValue = document.getElementById('ctl00_ScrollPositions').value;
		
		//alert(hiddenFieldValue);
		
		if (hiddenFieldValue == "")
			return;
		
		var newHiddenFieldValue = "";
		
		var ctrlStrs = hiddenFieldValue.split(",");
		
		for(var i = 0; i < ctrlStrs.length; ++i)
		{
			if (i==0)
				newHiddenFieldValue = SaveCtrlPos(ctrlStrs[i]);
			else
			{
				newHiddenFieldValue += "," + SaveCtrlPos(ctrlStrs[i]);
				//alert(SaveCtrlPos(ctrlStrs[i]));
			}
			
			
		}
		document.getElementById('ctl00_ScrollPositions').value = newHiddenFieldValue;
		
		//window.status = "save: " + newHiddenFieldValue;
		
	}
	catch(exc)
	{
		//alert('Debug info: function SaveCtrlScrollPositions(), CtrlScrollPositionSave failed!');
	}
}
//

//Eventtien alustukset (ei toimi)
if(window && window.attachEvent)
	window.attachEvent("onload", LoadCtrlScrollPositions);//Lisätään sitten uusi
else if(window && window.addEventListener)
	window.addEventListener("onload", LoadCtrlScrollPositions, false);//Lisätään sitten uusi

//document.onpropertychange = SaveCtrlScrollPositions;
