// JavaScript Document

//highlight region on map
// syntaks for browsing:  onmouseover="showHideRegion(regioncode);" onmouseout="showHideRegion(regioncode);"
// syntaks for  multi area select:  onclick="showHideRegion(regioncode);" 

function showHideRegion(regioncode) {
 regionlayer=document.getElementById(regioncode);
//alert (regionlayer.style.display);
 if (regionlayer.style.display != "block") { regionlayer.style.display = "block"; } 
 else { regionlayer.style.display = "none"; }
   
}


// Modificeret udgave af MM_showHideLayers: bruger display:none i stædet for visibility:hidden
function MM_showHideLayers() { //v9.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) 
  with (document) if (getElementById && ((obj=getElementById(args[i]))!=null)) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'block':(v=='hide')?'none':v; }
    obj.display=v; }
}


// Dansommer PoshHouseList til kort
function writeHouseList(){

houseNumArray = new Array("A4036","A4038","A5070","A5071","B1001","B1005","B1012","B3345","B4003","B4039","B5001","B5025","B5054","B6003","B6012","B6317","C1060","C2010","C2213","C2215","C2330","C3010","C4004","C5043","C6059","C6442","C7451","D1061","D2014","D2110","D7010","E1148","E1300","E1301","E2008","E4002","E4107","E5005","E5008","E7016","G3021");
for(i=0; i<houseNumArray.length; i++)
 {
 document.write("<a href=\"javascript:VisHusPopup(\'" + houseNumArray[i] + "\')\" class=\"marker\" id=\"" + houseNumArray[i] + "\" onMouseOver=\"MM_showHideLayers(\'img_" + houseNumArray[i] + "\',\'\',\'show\')\" onMouseOut=\"MM_showHideLayers(\'img_" + houseNumArray[i] + "\',\'\',\'hide\')\" >" + houseNumArray[i].slice(0,2) + "-" + houseNumArray[i].slice(2,8) + "<img id=\"img_" + houseNumArray[i] + "\" src=\"/pic/100/" + houseNumArray[i].slice(0,3) + "/" + houseNumArray[i] + "A.jpg\" /></a>");
 }
}



// JavaScript Document


function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function showHideLayers() { //v6.0
  var i,p,v,obj,args=showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=4) 
  {
  if ((content=MM_findObj(args[i]))!=null) 
   {if (content.style){content=content.style , content.display=(content.display!='block')?'block':'none';}
   }
  if ((img=MM_findObj(args[i+1]))!=null)  
   {if (img.className, args[i+2]!=null , args[i+3]!=null){img.className=(img.className!=args[i+3])?args[i+3]:args[i+2];}
   }  
  }
}

function closeAll()
 {
 alert('test');
 var mysheet=document.styleSheets[0]
 var myrules=mysheet.cssRules? mysheet.cssRules: mysheet.rules
 for (i=0; i<myrules.length; i++)
  {
  if(myrules[i].selectorText.toLowerCase()=="div.clickable div.moduleContentArea")
   { //find "a:hover" rule
   targetrule=myrules[i]
   break;
   }
  }
 }
 

// Copyright © 2001 by Apple Computer, Inc., All Rights Reserved.
//
// You may incorporate this Apple sample code into your own code
// without restriction. This Apple sample code has been provided "AS IS"
// and the responsibility for its operation is yours. You may redistribute
// this code, but you are not permitted to redistribute it as
// "Apple sample code" after having made changes.

// ugly workaround for missing support for selectorText in Netscape6/Mozilla
// call onLoad() or before you need to do anything you would have otherwise used
// selectorText for.

var ugly_selectorText_workaround_flag = false;
var allStyleRules;
// code developed using the following workaround (CVS v1.15) as an example.
// http://lxr.mozilla.org/seamonkey/source/extensions/xmlterm/ui/content/XMLTermCommands.js
function ugly_selectorText_workaround() {
 if((navigator.userAgent.indexOf("Gecko") == -1) ||
    (ugly_selectorText_workaround_flag)) {
  return; // we've already been here or shouldn't be here
 }
 var styleElements = document.getElementsByTagName("style");
 
 for(var i = 0; i < styleElements.length; i++) {
  var styleText = styleElements[i].firstChild.data;
  // this should be using match(/\b[\w-.]+(?=\s*\{)/g but ?= causes an
  // error in IE5, so we include the open brace and then strip it
  allStyleRules = styleText.match(/\b[\w-.]+(\s*\{)/g);
 }

 for(var i = 0; i < allStyleRules.length; i++) {
  // probably insufficient for people who like random gobs of 
  // whitespace in their styles
  allStyleRules[i] = allStyleRules[i].substr(0, (allStyleRules[i].length - 2));
 }
 ugly_selectorText_workaround_flag = true;
}


// setStyleById: given an element id, style property and 
// value, apply the style.
// args:
//  i - element id
//  p - property
//  v - value
//
function setStyleById(i, p, v) {
 var n = document.getElementById(i);
 n.style[p] = v;
}

// getStyleById: given an element ID and style property
// return the current setting for that property, or null.
// args:
//  i - element id
//  p - property
function getStyleById(i, p) {
 var n = document.getElementById(i);
 var s = eval("n.style." + p);

 // try inline
 if((s != "") && (s != null)) {
  return s;
 }

 // try currentStyle
 if(n.currentStyle) {
  var s = eval("n.currentStyle." + p);
  if((s != "") && (s != null)) {
   return s;
  }
 }
 
 // try styleSheets
 var sheets = document.styleSheets;
 if(sheets.length > 0) {
  // loop over each sheet
  for(var x = 0; x < sheets.length; x++) {
   // grab stylesheet rules
   var rules = sheets[x].cssRules;
   if(rules.length > 0) {
    // check each rule
    for(var y = 0; y < rules.length; y++) {
     var z = rules[y].style;
     // selectorText broken in NS 6/Mozilla: see
     // http://bugzilla.mozilla.org/show_bug.cgi?id=51944
     ugly_selectorText_workaround();
     if(allStyleRules) {
      if(allStyleRules[y] == i) {
       return z[p];
      }   
     } else {
      // use the native selectorText and style stuff
      if(((z[p] != "") && (z[p] != null)) ||
         (rules[y].selectorText == i)) {
       return z[p];
      }
     }
    }
   }
  }
 }
 return null;
}

// setStyleByClass: given an element type and a class selector,
// style property and value, apply the style.
// args:
//  t - type of tag to check for (e.g., SPAN)
//  c - class name
//  p - CSS property
//  v - value
var ie = (document.all) ? true : false;

function setStyleByClass(t,c,p,v){
//alert("I'm called!");
 var elements;
// if(t == '*') {
  // '*' not supported by IE/Win 5.5 and below
//  elements = (ie) ? document.all : document.getElementsByTagName('*');
// } else {
  elements = document.getElementsByTagName(t);
// }
 for(var i = 0; i < elements.length; i++){
  var node = elements.item(i);
  for(var j = 0; j < node.attributes.length; j++) {
   if(node.attributes.item(j).nodeName == 'class') {
    if(node.attributes.item(j).nodeValue == c) {
     eval('node.style.' + p + " = '" +v + "'");
    }
   }
  }
 }
 
}





// getStyleByClass: given an element type, a class selector and a property,
// return the value of the property for that element type.
// args:
//  t - element type
//  c - class identifier
//  p - CSS property
function getStyleByClass(t, c, p) {
 // first loop over elements, because if they've been modified they
 // will contain style data more recent than that in the stylesheet
 var elements;
 if(t == '*') {
  // '*' not supported by IE/Win 5.5 and below
  elements = (ie) ? document.all : document.getElementsByTagName('*');
 } else {
  elements = document.getElementsByTagName(t);
 }
 for(var i = 0; i < elements.length; i++){
  var node = elements.item(i);
  for(var j = 0; j < node.attributes.length; j++) {
   if(node.attributes.item(j).nodeName == 'class') {
    if(node.attributes.item(j).nodeValue == c) {
     var theStyle = eval('node.style.' + p);
     if((theStyle != "") && (theStyle != null)) {
      return theStyle;
     }
    }
   }
  }  
 }
 // if we got here it's because we didn't find anything
 // try styleSheets
 var sheets = document.styleSheets;
 if(sheets.length > 0) {
  // loop over each sheet
  for(var x = 0; x < sheets.length; x++) {
   // grab stylesheet rules
   var rules = sheets[x].cssRules;
   if(rules.length > 0) {
    // check each rule
    for(var y = 0; y < rules.length; y++) {
     var z = rules[y].style;
     // selectorText broken in NS 6/Mozilla: see
     // http://bugzilla.mozilla.org/show_bug.cgi?id=51944
     ugly_selectorText_workaround();
     if(allStyleRules) {
      if((allStyleRules[y] == c) ||
         (allStyleRules[y] == (t + "." + c))) {
       return z[p];
      }   
     } else {
      // use the native selectorText and style stuff
      if(((z[p] != "") && (z[p] != null)) &&
         ((rules[y].selectorText == c) ||
          (rules[y].selectorText == (t + "." + c)))) {
       return z[p];
      }
     }
    }
   }
  }
 }

 return null;
}

// setStyleByTag: given an element type, style property and 
// value, and whether the property should override inline styles or
// just global stylesheet preferences, apply the style.
// args:
//  e - element type or id
//  p - property
//  v - value
//  g - boolean 0: modify global only; 1: modify all elements in document
function setStyleByTag(e, p, v, g) {
 if(g) {
  var elements = document.getElementsByTagName(e);
  for(var i = 0; i < elements.length; i++) {
   elements.item(i).style[p] = v;
  }
 } else {
  var sheets = document.styleSheets;
  if(sheets.length > 0) {
   for(var i = 0; i < sheets.length; i++) {
    var rules = sheets[i].cssRules;
    if(rules.length > 0) {
     for(var j = 0; j < rules.length; j++) {
      var s = rules[j].style;
      // selectorText broken in NS 6/Mozilla: see
      // http://bugzilla.mozilla.org/show_bug.cgi?id=51944
      ugly_selectorText_workaround();
      if(allStyleRules) {
       if(allStyleRules[j] == e) {
        s[p] = v;
       }   
      } else {
       // use the native selectorText and style stuff
       if(((s[p] != "") && (s[p] != null)) &&
          (rules[j].selectorText == e)) {
        s[p] = v;
       }
      }

     }
    }
   }
  }
 }
}

// getStyleByTag: given an element type and style property, return
// the property's value
// args:
//  e - element type
//  p - property
function getStyleByTag(e, p) {
 var sheets = document.styleSheets;
 if(sheets.length > 0) {
  for(var i = 0; i < sheets.length; i++) {
   var rules = sheets[i].cssRules;
   if(rules.length > 0) {
    for(var j = 0; j < rules.length; j++) {
     var s = rules[j].style;
     // selectorText broken in NS 6/Mozilla: see
     // http://bugzilla.mozilla.org/show_bug.cgi?id=51944
     ugly_selectorText_workaround();
     if(allStyleRules) {
      if(allStyleRules[j] == e) {
       return s[p];
      }   
     } else {
      // use the native selectorText and style stuff
      if(((s[p] != "") && (s[p] != null)) &&
         (rules[j].selectorText == e)) {
       return s[p];
      }
     }

    }
   }
  }
 }


 // if we don't find any style sheets, return the value for the first
 // element of this type we encounter without a CLASS or STYLE attribute
 var elements = document.getElementsByTagName(e);
 var sawClassOrStyleAttribute = false;
 for(var i = 0; i < elements.length; i++) {
  var node = elements.item(i);
  for(var j = 0; j < node.attributes.length; j++) {
   if((node.attributes.item(j).nodeName == 'class') ||
      (node.attributes.item(j).nodeName == 'style')){
      sawClassOrStyleAttribute = true;
   }
  }
  if(! sawClassOrStyleAttribute) {
   return elements.item(i).style[p];
  }
 }
}


