﻿//Button-variables
//var buttonImgs = new Object;
var currentFocus = '';
var currentDown = '';


function getTWEvent(evt) {
	evt = (evt) ? evt : (window.event) ? window.event : null;
	evt.getTWKey = getTWKey;
	return evt;
}

function getTWKey() {
	var TWKey = (this.keyCode) ? this.keyCode : ((this.charCode) ? this.charCode : ((this.which) ? this.which : null));
	return TWKey;
}
function getTWSelectedText() {
	//alert('window.getSelection: ' + (window.getSelection) + '\ndocument.getSelection: ' + (document.getSelection) + '\ndocument.selection: ' + (document.selection) + '\nReturn: ' + new String((window.getSelection) ? window.getSelection().value : ((document.getSelection) ? document.getSelection().value : ((document.selection) ? document.selection.createRange().text : ''))))
	return new String((window.getSelection) ? window.getSelection().value : ((document.getSelection) ? document.getSelection().value : ((document.selection) ? document.selection.createRange().text : '')));
}

function chkStrLen(evt, str, len) {
	//In Firefox (with window.getSelection) the selection is deselected both before onkeypress and onkeydown, and can't be used.
	//var remainsSpace = (evt && evt.ctrlKey) || (window.getSelection) ? ((evt.getTWKey() in keyCodes) || (getObj(str).value.length < len)) : ((getObj(str).value.length - getTWSelectedText().length) < len);
	//IE for Mac don't like the in operator on arrays.
	var keyCodes = new Array(8,9,27,33,34,35,36,37,38,39,40,45,46,91,112,113,114,115,116,117,118,119,120,121,122,123);
	var remainsSpace = ((evt && evt.ctrlKey) || (window.getSelection)) ? ((inArray(parseInt(evt.getTWKey()), keyCodes)) || (getObj(str).value.length < len)) : ((getObj(str).value.length - getTWSelectedText().length) < len);

	if(!remainsSpace) {
		if(evt.preventDefault) {
			evt.preventDefault();
		}
		getObj(str).value = getObj(str).value.substr(0, len);
	}
	return remainsSpace;
}


function chkStrLenOnPaste(evt, objStr, len, doFillObj) {
	//In Firefox (with window.getSelection) the selection is deselected both before onkeypress and onkeydown, and can't be used, and there is no simple way to get clipboard data.
	var obj = getObj(objStr);
	var selection = getTWSelectedText();
	var remainsSpace;
	if(window.getSelection) {
		remainsSpace = (obj.value.length <= len);
	} else {
		var clpbrdText = window.clipboardData.getData('Text');
		if(obj.value.length - selection.length + clpbrdText.length > len) {
			if(doFillObj) {
				//alert(clpbrdText.slice(0, len - (obj.value.length - selection.length)));
				document.selection.createRange().text = clpbrdText.slice(0, len - (obj.value.length - selection.length));
				alert('Du försökte klistra in en för lång text, så den kortades ner till ' + len + ' tecken.');
			} else {
				alert('Du försökte klistra in en för lång text.');
			}
			remainsSpace = false;
		} else {
			remainsSpace = true;
		}
	}
	if(!remainsSpace && evt.preventDefault) {
		evt.preventDefault();
	}
	return remainsSpace;
}

//Use this to preload images:
function loadImage(src) {
	var img = new Image();
	img.src = src;
	return img;
}


/* Flash check *******************/
// 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 = 7;   // 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 flash7Installed = false;    // boolean. true if flash 7 is installed
var flash8Installed = false;    // boolean. true if flash 8 is installed
var maxVersion = 8;             // 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('flash7Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.7"))) \n');  
  document.write('flash8Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.8"))) \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%20Flash%202.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%20Flash%202.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;
      flash7Installed = flashVersion == 7;
      flash8Installed = flashVersion >= 8;
    }
  }
  	
	// 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 = 2;	
	
	// uncomment next line to display flash version during testing
	// alert("version detected: " + actualVersion);


	// we're finished getting the version. time to take the appropriate action

	if (actualVersion >= requiredVersion) { 		// user has a new enough version
		hasRightVersion = true;						// flag: it's okay to write out the object/embed tags later

		if (useRedirect) {							// if the redirection option is on, load the flash page
			if(jsVersion > 1.0) {					// need javascript1.1 to do location.replace
				window.location.replace(flashPage);	// use replace() so we don't break the back button
			} else {
				window.location = flashPage;		// otherwise, use .location
			}
		}
	} else {	// user doesn't have a new enough version.
	
		if (useRedirect) {		// if the redirection option is on, load the appropriate alternate page
			if(jsVersion > 1.0) {	// need javascript1.1 to do location.replace
				window.location.replace((actualVersion >= 2) ? upgradePage : noFlashPage);
			} else {
				window.location = (actualVersion >= 2) ? upgradePage : noFlashPage;
			}
		}
	}
}

detectFlash();	// call our detector now that it's safely loaded.	
/*********************************/


/* Tooltip-stuff ***********/
/* showTooltip(html, x, y) - use at onmouseover */
function showTooltip(html, x, y) {
//	setTooltip(html);
//	moveTooltip(x, y);
//	showObj('tooltipbox');
}
/* showTooltipAtCursor(evt, html) - use at onmouseover */
function showTooltipAtCursor(evt, html) 
{
//	setTooltip(html);
//	moveTooltipAtCursor(evt);
//	showObj('tooltipbox');
}

/* moveTooltip(x, y) */
function moveTooltip(x, y) {
//	var obj = getObj('tooltipbox');
//	obj.style.left = x + 'px';
//	obj.style.top = y + 'px';
}
/* native functions */
function setTooltip(html) {
//	setInnerHTML('tooltipbox', html);
}
function displayTooltip(html) {
//	showObj('tooltipbox');
}
/* /Tooltip-stuff ***********/


/* Even newer menu-stuff ***********/
var gdsMenuSiteRoot = '/'; //Coolmenus need this. The value is set correctly later.
var gdsMenuOldBgColors = new Array('', '', '', '', '', '', '', '');
var gdsMenuOldBgImages = new Array('', '', '', '', '', '', '', '');
var gdsMenuOldColor = '';
var gdsMenuElements = new Array('table', 'tr', 'lmarg', 'indent', 'limage', 'text', 'rimage', 'rmarg')
function gdsMenuOver(idBase, stylePart, table, tr, lmarg, indent, limage, text, rimage, rmarg) {
	var obj, value;
	for(var i=0; i<gdsMenuElements.length; i++) {
		obj = getObj(idBase + '_' + gdsMenuElements[i]);
		if(obj) {
			value = arguments[i + 2];
			switch(stylePart)
			{
			case 'backgroundColor':
				value = (value==''||value=='none'||typeof(value)=='undefined')?'':value;
				gdsMenuOldBgColors[i] = obj.style[stylePart]; //.backgroundColor;
				break;
			case 'color':
				gdsMenuOldColors[i] = obj.style[stylePart]; //.color;
				break;
			case 'backgroundImage':
				gdsMenuOldBgImages[i] = typeof(obj.style[stylePart])=='undefined'?'none':obj.style[stylePart];
				value = (value==''||value=='none'||typeof(value)=='undefined')?'none':'url(' + gdsMenuSiteRoot + value + ')';
				break;
			}
			obj.style[stylePart] = value; //trimString(value);
		}
	}
}
function gdsMenuOverColor(idBase, color) {
	var obj;
	obj = getObj(idBase + '_link');
	if(obj) {
		gdsMenuOldColor = obj.style.color;
		obj.style.color = color;
	}
}
function gdsMenuOut(idBase) {
	var obj;
	for(var i=0; i<gdsMenuElements.length; i++) {
		obj = getObj(idBase + '_' + gdsMenuElements[i])
		if(obj) {
			obj.style.backgroundColor = gdsMenuOldBgColors[i];
			obj.style.backgroundImage = gdsMenuOldBgImages[i];
		}
	}
	//obj = getObj(idBase + '_table');
	//if(obj) obj.style.backgroundImage = gdsMenuOldBgImage;
	obj = getObj(idBase + '_link');
	if(obj) obj.style.color = gdsMenuOldColor;
}

/* New menu-stuff ******************/
function menuAction(idBase, action, active, cssLevel) {
	var cn = 'menuLevel_' + cssLevel + (active==1?'_active':'') + (action=='over'?'_hover':'') ;
	getObj('menu_table_' + idBase).className = cn;
	getObj('menu_tr_' + idBase).className = cn;
	getObj('menu_td_' + idBase).className = cn;
	getObj('menu_a_' + idBase).className = cn;
}
function menuClick(idBase) {
	getObj('menu_a_' + idBase).click();
}

/* Old menu-stuff ******************/
function hover(what,menut,color) {
	getObj(what).style.cursor = 'pointer';
	changeColor(what,'over',color)
}

function out(what,menut,color) {
	getObj(what).style.cursor = 'default';
	changeColor(what,'out',color);
	window.status = ''
}

function hover(what,menut,color,href) {
	getObj(what).style.cursor = 'pointer';
	changeColor(what,'over',color);
	window.status = href
}

function hover_cal(what,href) {
	getObj(what).style.cursor = 'pointer';
	window.status = href
}

function out_cal(what) {
	getObj(what).style.cursor = 'default';
	window.status = ''
}

function clicked(what) {
	var el = getObj(what)
	if(el.click)
		el.click
	else
		location = el.href;
}

function changeColor(what,action,color) {
	if (action == 'over') {
		getObj(what).style.background = color;
	}
	if (action == 'out') {
		getObj(what).style.background = color;
	}
}
/* /Old menu-stuff *****************/


/* Dialogues ***********************/
function confirmJump(message, url)
{
	if(window.confirm(message))
		location = url;
}

/* Button-functions ****************/
function setButtonState(id, state)
{
	if(document.all || document.getElementById)
	{
		if(buttonImgs[state + '_l'])
			document.images[id + '_l'].src = buttonImgs[state + '_l'].src;
		if(buttonImgs[state + '_r'])
			document.images[id + '_r'].src = buttonImgs[state + '_r'].src;
		if (document.getElementById)
		{
			if(buttonImgs[state + '_m'])
				document.getElementById(id + '_m').style.backgroundImage = 'url(' + buttonImgs[state + '_m'].src + ')';
		}
		else if(document.all)
		{
			if(buttonImgs[state + '_m'])
				document.all[id + '_m'].background = buttonImgs[state + '_m'].src;
		}
	}
}

function button_over(id)
{
	if(currentDown == id)
	{
		setButtonState(id, 'down');
	}else{
		setButtonState(id, 'hover');
	}
}

function button_out(id)
{
	currentDown = '';
	if(currentFocus == id)
	{
		setButtonState(id, 'hover')
	}else{
		setButtonState(id, 'up')
	}
}

function button_down(id)
{
	currentDown = id;
	setButtonState(id, 'down');
}

function button_up(id)
{
	currentDown = '';
	setButtonState(id, 'hover');
}


function button_focus(id)
{
	currentFocus = id;
	if(currentDown == id)
	{
		setButtonState(id, 'down');
	}else{
		setButtonState(id, 'hover');
	}
}

function button_blur(id)
{
	currentFocus = '';
	setButtonState(id, 'up');
}

function button_click(id)
{
	clicked(id + '_a');
}
/***********************************/


/* Outline-functions ***************/
function getOutlineDiv(divId) {
	var obj = getObj(divId);
	if(obj == null) {
		obj = document.createElement("DIV");
		obj.id = divId;
		obj.style.position = 'absolute';
		obj.style.overflow = 'hidden';
		document.body.appendChild(obj);
		obj = getObj(divId);
		obj.setSize(1, 1);
		obj.setPosition(0, 0);
	}
	return obj;
}
function Outline(idBase) {
	this.idBase = idBase;
	this.T = null;
	this.R = null;
	this.B = null;
	this.L = null;
	this.create = outline_create;
	this.hide = outline_hide;
	this.show = outline_show;
	this.setBorderStyle = outline_setBorderStyle;
	this.outlineObj = outline_outlineObj;
}
function outline_hide() {
	this.T.hide(); this.R.hide(); this.B.hide(); this.L.hide();
	this.T.setSize(1, 1); this.R.setSize(1, 1); this.B.setSize(1, 1); this.L.setSize(1, 1); 
}
function outline_show() {
	this.T.show(); this.R.show(); this.B.show(); this.L.show();
}
function outline_setBorderStyle(borderStyle) {
	this.T.style.borderTop = borderStyle; this.R.style.borderRight = borderStyle; this.B.style.borderBottom = borderStyle; this.L.style.borderLeft = borderStyle;
}
function outline_create() {
	if(this.T==null) this.T = getOutlineDiv(this.idBase + 'T');
	if(this.R==null) this.R = getOutlineDiv(this.idBase + 'R');
	if(this.B==null) this.B = getOutlineDiv(this.idBase + 'B');
	if(this.L==null) this.L = getOutlineDiv(this.idBase + 'L');
}
function outline_outlineObj(id, borderStyle) {
	var area = getObj(id);
	this.create();
	this.hide();
	this.setBorderStyle(borderStyle);
	if(area) {
		if(id != '') {
			this.T.setPosition(area.getPageLeft() - 1, area.getPageTop() - 1); this.T.setSize(area.getWidth() + 2, 1);
			this.R.setPosition(area.getPageLeft() + area.getWidth(), area.getPageTop() - 1); this.R.setSize(1, area.getHeight() + 2);
			this.B.setPosition(area.getPageLeft() - 1, area.getPageTop() + area.getHeight()); this.B.setSize(area.getWidth() + 2, 1);
			this.L.setPosition(area.getPageLeft() - 1, area.getPageTop() - 1); this.L.setSize(1, area.getHeight() + 2);
			this.show();
		}
	}
}

var outline = new Outline('PCOutlineBox');
function clearOutline() {
	outline.hide();
}
function outlineArea(id) {
	outline.outlineObj(id, '1px #3333AA dashed');
}
/***********************************/
