 /*   	
	$Id: library.js 460 2007-02-22 12:02:58Z ral $
    Copyright (c) 2005 NILU
   
   	Author(s):
   
	Purpose:
*/

 String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); };
 
 function displayDescription(checkBoxSingle,hiddenField,spanField,spanField2,thisRow,tableRow,group)
 {
 
	var commentField = 'document.myForm.comment' + group;
	commentField = eval(commentField);
	var comment = '<br>' + commentField.value;
	var selName = 'description' + group;
	var current = 'document.myForm.' + selName + '.selectedIndex';
	current = eval(current);
	var value = 'document.myForm.' + selName + '.options[current].value';
	var text = 'document.myForm.' + selName + '.options[current].text';
	
	value = eval(value);
	text = eval(text);	
	
	if(checkBoxSingle.checked == true)
	{
		hiddenField.value = value + ';' + comment;
		spanField.innerHTML = text;
		spanField2.innerHTML = comment;
		tableRow.style.backgroundColor="#eeffee";				
	}
	else
	{
		hiddenField.value = "";
		spanField.innerHTML = "";
		spanField2.innerHTML = "";
		if(thisRow % 2)
		tableRow.style.backgroundColor="#fafafa";
		else
		tableRow.style.backgroundColor="#fefefe";							
	}	 
 }
 
    function writeGroup(group,recordCount,startRow)
 {	
	
	var start = startRow
	var end = recordCount;
 
	for(var i=start; i <= end;i++)
	{
		
		try
		{
		 	var checkBoxSingle = 'document.myForm.check_' + i + '_' + group;			
			var checkBoxGroup = 'document.myForm.checkGroup_' + group;
		 	var hiddenField = 'document.myForm.causeID_' + i + '_' + group;
			var spanField = 'document.all.spanText_' + i + '_' + group;
			var spanField2 = 'document.all.spanText2_' + i + '_' + group;
			var tableRow = 'field_' + i + '_' + group;
			tableRow = 'document.all.item("' + tableRow + '")'

			tableRow = eval(tableRow);
			hiddenField = eval(hiddenField);
			spanField = eval(spanField);
			spanField2 = eval(spanField2);
			checkBoxSingle = eval(checkBoxSingle);
			checkBoxGroup = eval(checkBoxGroup);
			
			if(checkBoxGroup.checked == false)
				checkBoxSingle.checked = false
			else
				checkBoxSingle.checked = true			
			
			displayDescription(checkBoxSingle,hiddenField,spanField,spanField2,i,tableRow,group);					
		}
		catch(e)
		{
			break;
		}			
	}
 }	 
 
    function singleReason(row,group)
 {	
	
 	// Single selectBox pr hour value 
	var checkBoxSingle = 'document.myForm.check_' + row + '_' + group;
 	var hiddenField = 'document.myForm.causeID_' + row + '_' + group;
	var spanField = 'document.all.spanText_' + row + '_' + group;
	var spanField2 = 'document.all.spanText2_' + row + '_' + group;
	var tableRow = 'field_' + row + '_' + group;
	tableRow = 'document.all.item("' + tableRow + '")'
	tableRow = eval(tableRow);
	hiddenField = eval(hiddenField);
	spanField = eval(spanField);
	spanField2 = eval(spanField2);
	checkBoxSingle = eval(checkBoxSingle);
	
	displayDescription(checkBoxSingle,hiddenField,spanField,spanField2,row,tableRow,group);

 }
 
    function fillFileType(type)
 {	
	document.myForm.typeNum.options.length = 0;
	
 	if(type == 'w')
	{
		for(var i=0; i < 53; i++)
		{
			document.myForm.typeNum.options[i] = new Option('Uke:' + (i+1),i+1);
		}
	}
	
	else
	{
		
		var monthArray = new Array();
		monthArray[0] = 'Januar';
		monthArray[1] = 'Februar';
		monthArray[2] = 'Mars';
		monthArray[3] = 'April';
		monthArray[4] = 'Mai';
		monthArray[5] = 'Juni';
		monthArray[6] = 'Juli';
		monthArray[7] = 'August';
		monthArray[8] = 'September';
		monthArray[9] = 'Oktober';
		monthArray[10] = 'November';
		monthArray[11] = 'Desember';
		
		for(var i=0; i < 12; i++)
		{
			document.myForm.typeNum.options[i] = new Option(monthArray[i],i+1);
		}
	}		
 }	 
 
 
    function isUnChecked(recordCount,groups)
 {	
	for(var i=1; i <= groups; i++)
	{	
		for(var j=1; j <= recordCount; j++)
		{	
			var checkBoxSingle = 'document.myForm.check_' + j + '_' + i;
			try
			{
				var checkBoxSingle = eval(checkBoxSingle)
				if(checkBoxSingle.checked == false)
				{
				return 1
				}
			}
			catch(e)
			{}
		}		
	}	
 }	 
 
 function doSdbSubmit(recordCount,groups)
 {	
	if(isUnChecked(recordCount,groups) == 1)
	alert("Du må merke av feltene for ALLE overskridelsene")
	else
	document.myForm.submit();
 }	
 
function removeFromExportList(){
	// This function removes (multiple) items from the export-list (RAL april 2005) 
	var formObj = document.forms[0];
	var aOptions = new Array();
	var iOption = 0;
	
	// Rebuild option list based on items NOT selected to be removed
	for (var i=0; i < formObj.selectedTimeSeries.options.length; i++)
		if ( !formObj.selectedTimeSeries.options[i].selected ){
			aOptions[iOption] = new Option( formObj.selectedTimeSeries.options[i].text, formObj.selectedTimeSeries.options[i].value );
			iOption++;
		} // End if

	// Clear existing options in order to rebuild
	for (var i=formObj.selectedTimeSeries.options.length; i >= 0; i--)
		formObj.selectedTimeSeries.options[i] = null;
	// Now rebuild the option list
	for (var i=0; i < iOption; i++){
		formObj.selectedTimeSeries.options[i] = aOptions[i];
		formObj.selectedTimeSeries.options[i].selected = true;
	} // End for
} // End function removeFromExportList()

function addToExport() 
{
    for (var Current=0;Current < document.myForm.timeserieID.options.length;Current++) 
	
	{
        if (document.myForm.timeserieID.options[Current].selected) 
		
		{
            for (var Current2=0;Current2 < document.myForm.selectedTimeSeries.options.length;Current2++) 
			
			{
				if(document.myForm.selectedTimeSeries.options[Current2].value == document.myForm.timeserieID.options[Current].value)
				{
					alert("Du har allerede valgt en eller fler av tidsseriene");
					
					return false;	
				}
			}
		
			var defaultSelected = true, selected = true;
			var placeName = document.myForm.cityID.options[document.myForm.cityID.selectedIndex].text;
			var stationName = document.myForm.stationID.options[document.myForm.stationID.selectedIndex].text;
			var componentName = document.myForm.timeserieID.options[Current].text;
			var thisText = placeName + ' -  ' + stationName + ' -  ' + componentName;
			var thisValue = document.myForm.timeserieID.options[Current].value;
            var optionName = new Option(thisText,thisValue,defaultSelected,selected);
            var length = document.myForm.selectedTimeSeries.length;
   			document.myForm.selectedTimeSeries.options[length] = optionName;
			
        }
    }
}

function markRowSelected(row)
{
	var tableRow = 'rowNum_' + row;
	var checkBox = 'document.myForm.checkBox_' + row;
	checkBox = eval(checkBox);
	tableRow = 'document.all.item("' + tableRow + '")'
	tableRow = eval(tableRow);
	
	if(checkBox.checked)
	tableRow.style.backgroundColor="#BBFFBB";
	else
	tableRow.style.backgroundColor="#FFFFFF";
}

var popUpWin=0;
function popUpWindow(URLStr, left, top, width, height)
{

  if(popUpWin)
  {
    if(!popUpWin.closed) popUpWin.close();
  }
  popUpWin = open(URLStr, 'popUpWin', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width='+width+',height='+height+',left='+left+', top='+top+',screenX='+left+',screenY='+top+'');
}

function Point(x,y) {  this.x = x; this.y = y; }
mouseLocation = new Point(-500,-500);
function getMouseLoc(e)
{
  if(!document.all)  //NS
  {
    mouseLocation.x = e.pageX;
    mouseLocation.y = e.pageY;
  }
  else               //IE
  {
    mouseLocation.x = event.x + document.body.scrollLeft;
    mouseLocation.y = event.y + document.body.scrollTop;
  }
  return true;
}


function arrayDeleteAt(myArr,position)
{
	var pre = myArr.slice(0,position);
	var post = myArr.slice(position+1, myArr.length);
	return pre.concat(post);
}

function arrayFind(myArr,myVal)
{
	var exist = -1;
	for (var i=0; i < myArr.length; i++){
	   if(myArr[i] == myVal){
	   	exist = i;
		break
	   }
	}
	return exist;
}

function sdbUpdate(timevalueID)
{	
	var IDArray = document.myForm.timevalueIDList.value.split(',');
	
	if(arrayFind(IDArray,timevalueID) == -1){
		document.myForm.timevalueIDList.value = IDArray +','+ timevalueID;
	}
	else
		document.myForm.timevalueIDList.value = arrayDeleteAt(IDArray,arrayFind(IDArray,timevalueID));	
}

function webdataUpdate(timevalueID)
{	
	var IDArray = document.myForm.timevalueIDList.value.split(',');
	if(arrayFind(IDArray,timevalueID) == -1)
	document.myForm.timevalueIDList.value = IDArray +','+ timevalueID
	else
	document.myForm.timevalueIDList.value = arrayDeleteAt(IDArray,arrayFind(IDArray,timevalueID))
}

function insertChangeList(timevalueID)
{	
	var IDArray = document.myForm.timevalueChangeIDList.value.split(',');
	if(arrayFind(IDArray,timevalueID) == -1)
	document.myForm.timevalueChangeIDList.value = IDArray +','+ timevalueID
	else
	document.myForm.timevalueChangeIDList.value = arrayDeleteAt(IDArray,arrayFind(IDArray,timevalueID))
}

function changeColor2(id,color)
{
	var tableRow = 'row_' + id;
	tableRow = 'document.all.item("' + tableRow + '")'
	tableRow = eval(tableRow);
	tableRow.style.backgroundColor = color;
}

function changeColor(row,color)
{
	var tableRow = 'row_' + row;
	tableRow = 'document.all.item("' + tableRow + '")'
	tableRow = eval(tableRow);
	tableRow.style.backgroundColor = color;
}


function jumpMenu(selObj,urlstring)
{	
	document.location=urlstring + selObj.options[selObj.selectedIndex].value;
}




// moock fpi [f.lash p.layer i.nspector]
// version: 1.3.5
// written by colin moock
// code maintained at: http://www.moock.org/webdesign/flash/detection/moockfpi/
// terms of use posted at: http://www.moock.org/terms/



// #############################################
// These are the user defined globals.
// Modify the following variables to customize the inspection behaviour.

var requiredVersion = 6;   // Version the user needs to view site (max 6, min 2)
var useRedirect = false;    // Flag indicating whether or not to load a separate
                           // page based on detection results. Set to true to
                           // load a separate page. Set to false to embed the
                           // movie or alternate html directly into this page.
                           
// Only set next three vars if useRedirect is true...
var flashPage = "movie.html"      // The location of the flash movie page
var noFlashPage = "noflash.html"  // Page displayed if the user doesn't have the
                                  // plugin or we can't detect it.
var upgradePage = "upgrade.html"  // Page displayed if we detect an old plugin
// #############################################



// *************
// Everything below this point is internal until after the BODY tag.
// Do not modify! Proceed to the BODY tag for further instructions.
// *************

// System globals
var flash2Installed = false;    // boolean. true if flash 2 is installed
var flash3Installed = false;    // boolean. true if flash 3 is installed
var flash4Installed = false;    // boolean. true if flash 4 is installed
var flash5Installed = false;    // boolean. true if flash 5 is installed
var flash6Installed = false;    // boolean. true if flash 6 is installed
var maxVersion = 6;             // highest version we can actually detect
var actualVersion = 0;          // version the user really has
var hasRightVersion = false;    // boolean. true if it's safe to embed the flash movie in the page
var jsVersion = 1.0;            // the version of javascript supported

// Check the browser...we're looking for ie/win
var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;    // true if we're on ie
var isWin = (navigator.appVersion.indexOf("Windows") != -1) ? true : false; // true if we're on windows

// This is a js1.1 code block, so make note that js1.1 is supported.
jsVersion = 1.1;

// Write vbscript detection on ie win. IE on Windows doesn't support regular
// JavaScript plugins array detection.
if(isIE && isWin){
  document.write('<SCR' + 'IPT LANGUAGE=VBScript\> \n');
  document.write('on error resume next \n');
  document.write('flash2Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.2"))) \n');
  document.write('flash3Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.3"))) \n');
  document.write('flash4Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.4"))) \n');
  document.write('flash5Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.5"))) \n');  
  document.write('flash6Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.6"))) \n');  
  document.write('</SCR' + 'IPT\> \n'); // break up end tag so it doesn't end our script
}

// Next comes the standard javascript detection that uses the 
// navigator.plugins array. We pack the detector into a function so it loads
// before we run it.

function detectFlash() {  
  // If navigator.plugins exists...
  if (navigator.plugins) {
    // ...then check for flash 2 or flash 3+.
    if (navigator.plugins["Shockwave Flash 2.0"]
        || navigator.plugins["Shockwave Flash"]) {

      // Some version of Flash was found. Time to figure out which.
      
      // Set convenient references to flash 2 and the plugin description.
      var isVersion2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
      var flashDescription = navigator.plugins["Shockwave Flash" + isVersion2].description;

      // DEBUGGING: uncomment next line to see the actual description.
      // alert("Flash plugin description: " + flashDescription);
      
      // A flash plugin-description looks like this: Shockwave Flash 4.0 r5
      // We can get the major version by grabbing the character before the period
      // note that we don't bother with minor version detection. 
      // Do that in your movie with $version or getVersion().
      var flashVersion = parseInt(flashDescription.charAt(flashDescription.indexOf(".") - 1));
     
      // We found the version, now set appropriate version flags. Make sure
      // to use >= on the highest version so we don't prevent future version
      // users from entering the site.
      flash2Installed = flashVersion == 2;    
      flash3Installed = flashVersion == 3;
      flash4Installed = flashVersion == 4;
      flash5Installed = flashVersion == 5;
      flash6Installed = flashVersion >= 6;
    }
  }
  
  // Loop through all versions we're checking, and
  // set actualVersion to highest detected version.
  for (var i = 2; i <= maxVersion; i++) {  
    if (eval("flash" + i + "Installed") == true) actualVersion = i;
  }
  
  // If we're on webtv, the version supported is 2 (pre-summer2000, 
  // or 3, post-summer2000). Note that we don't bother sniffing varieties
  // of webtv. You could if you were sadistic...
  if(navigator.userAgent.indexOf("WebTV") != -1) actualVersion = 3;  
  
  // DEBUGGING: uncomment next line to display flash version
  // alert("version detected: " + actualVersion);


  // We're finished getting the version on all browsers that support detection.
  // Time to take the appropriate action.

  // If the user has a new enough version...
  if (actualVersion >= requiredVersion) {
    // ...then we'll redirect them to the flash page, unless we've
    // been told not to redirect.
    if (useRedirect) {
      // Need javascript1.1 to do location.replace
      if(jsVersion > 1.0) {
        // It's safe to use replace(). Good...we won't break the back button.
        window.location.replace(flashPage);  
      } else {
        // JavaScript version is too old, so use .location to load
        // the flash page.
        window.location = flashPage;
      }
    }
    
    // If we got here, we didn't redirect. So we make a note that we should
    // write out the object/embed tags later.
    hasRightVersion = true;                
  } else {  
    // The user doesn't have a new enough version.
    // If the redirection option is on, load the appropriate alternate page.
    if (useRedirect) {
      // Do the same .replace() call only if js1.1+ is available.
      if(jsVersion > 1.0) {
        window.location.replace((actualVersion >= 2) ? upgradePage : noFlashPage);
      } else {
        window.location = (actualVersion >= 2) ? upgradePage : noFlashPage;
      }
    }
  }
}

detectFlash();  // call our detector now that it's safely loaded.