/// <reference path="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"/>
//<![CDATA[
/* STH: 2010-08-30 jQuery Startup code */

jQuery(function () {
  addBrowserVersionClassToPage();
  landdistrikter2010LayoutFixes();
  ensureCorrectPrintURL();
});

function addBrowserVersionClassToPage() {
  /// <summary>This code adds browser class information to the HTML element (for instance: "msie_6 msie"). It also adds three global variables with browser information</summary>
  /// <summary>window['sBrowser'], window['sBrowserVersion'], window['fBrowserVersion'] and window['fBrowserSubVersion']</summary>
  if(typeof jQuery!='undefined') {
    var sBrowser = 'unknown', sBrowserVersion, fBrowserVersion, fBrowserSubVersion=0;
    sBrowser = jQuery.browser.toString();
    sBrowserVersion=jQuery.browser.version.toString();
    var i=sBrowserVersion.indexOf('.');
    fBrowserVersion=parseFloat(sBrowserVersion.substr(0,i));
    if(i!= -1) {
      fBrowserSubVersion=(sBrowserVersion.substr(i+1,sBrowserVersion.length).replace(new RegExp('\\.','ig'),''));
      fBrowserSubVersion=parseFloat('0.'+fBrowserSubVersion)
    }
    for(a in jQuery.browser) {
      if (a!='version') {
        sBrowser = a;
        break;
      }
    }
    fBrowserVersion=fBrowserVersion+fBrowserSubVersion;
    sBrowserVersion=sBrowser+'_'+fBrowserVersion.toString().replace(new RegExp('\\.','ig'),'_');
    jQuery('html').addClass(sBrowserVersion);
    jQuery('html').addClass(sBrowser);

    // Save to global variables so that other scripts can access this information
    window['sBrowser']=sBrowser;
    window['sBrowserVersion']=sBrowserVersion;
    window['fBrowserVersion']=fBrowserVersion;
    window['fBrowserSubVersion']=fBrowserSubVersion;
  }
}

// Nyt layout fixes
var _spaces=new RegExp('( |&nbsp;|\n|\u0009|\u000d|\u000a)','ig');
var $this;
function landdistrikter2010LayoutFixes() {

  // Remove any non-visible elements from DOM tree
  //jQuery('body *:hidden').not('#subpage_topcon *').remove()

  jQuery('div p[last()] a').addClass('last');

  jQuery('a[href^="mailto"]').addClass('mailto');

  // Anvendes til at sætte "empty" eller "notEmpty"
  var isIE6=(jQuery.browser.msie&&parseFloat(jQuery.browser.version)<7);
  if(!isIE6) {
    setClassDependingOnRegExpTest('.redtextDarkgreen, p, div, .TxtModDiv a',_spaces);
  }
  // 2010-09-13 setClassDependingOnRegExpTest('h2.h2', _spaces);
  //setClassDependingOnRegExpTest('#navcontainerA0 li', _spaces);

  // 2010-09-13 setClassDependingOnDelegateTest('a', hasTitle, 'hasTitle', 'noTitle');

  addFirstLast('.area48 #pg_col1 .bred #spalte2 > .picModTxt > .ParagraphText > .empty, .listNyhedsoversigt li');

  // For at kunne style gammelt indhold til nyt layout tilføjes indexseret klasser til visse elementer
  addIndexClassToElements('.pg_11>div, .area48 .right_con_content>.infobox_con','#streg'); // Højre kolonne
  //addIndexClassToElements('#topboks5>.hojreBoks>.paragraphText>p', '#streg');
  addIndexClassToElements('.hojreBoks>.paragraphText>p, .Black_header.notEmpty, #subpage_topcon>div>*, .infobox_con .hr','#streg');
  addIndexClassToElements('#pg1>div, #pg1 h1','#streg');






  jQuery('#development a').first().click(function () {
    var b=jQuery('body');
    if(jQuery(this).text()=='gammelt layout') {
      jQuery(this).text('nyt layout');
      b.removeClass('area48');
      b.addClass('oldLayout');
      if(jQuery('#subpage_topcon').css('display')=='block') {
        jQuery('#subpage_topcon').data('visible','true')
        jQuery('#subpage_topcon').css('display','none');
      }
    } else {
      jQuery(this).text('gammelt layout')
      b.removeClass('oldLayout');
      b.addClass('area48');
      if(jQuery('#subpage_topcon').data('visible')) {
        jQuery('#subpage_topcon').css('display','block');
      }
    }
  })

  jQuery('#development ul li a').each(function () {
    var $this=jQuery(this);
    var rand=parseInt(Math.random()*1000)*parseInt(Math.random()*1000);
    var sHref=$this.attr('href');
    if(sHref.indexOf(sPAGEID)> -1) {
      $this.addClass('current');
    }
    $this.attr('href',sHref+'&random='+rand);

  })

  if ($('html.msie').length!=0) {
    jQuery('hr.hr, hr').replaceWith('<div class="hr"></div>')
  }
};

function addIndexClassToElements(sSelector,sSelectorNotToInclude) {
  jQuery(sSelector).not(sSelectorNotToInclude).each(function (i) {
    jQuery(this).addClass('index'+i);
  })
}

function hasTitle() {
  return this.attr('title')!='';
}


/* STH: 2010-09-02
The selector finds a number of elements. Each element will then be passed to fDelegate, which will return true|false.
A classname will be assigned for each case - sTrueClass or sFalseClass
*/
function setClassDependingOnDelegateTest(sSelector,fDelegate,sTrueClass,sFalseClass) {
  var sTrueClass=(typeof sTrueClass=='undefined')?'true':sTrueClass;
  var sFalseClass=(typeof sFalseClass=='undefined')?'false':sFalseClass;
  $(sSelector).each(function () {
    $this=$(this);
    var bResult=fDelegate.apply($this);
    _addClassDependingOnResult($this,bResult,sTrueClass,sFalseClass);
  });
}

/* STH: 2010-08-31
Used to assign one of two CSS classes to elements which match the sSelector (a CSS/XPATH/JQuery selector)
- First elements are found using the selector
- the HTML of each element will be replaced using a given RegExp. Any found expression will be replaced with "nothing"
- lastly based on the length of the result of the replacement is checked for it's length.
length = 0: "sTrueClass" will be added to the class of the element, a default exists: "empty"
length != 0: "sFalseClass" will be added to the class of the element, a default exists: "notEmpty"
*/
function setClassDependingOnRegExpTest(sSelector,oRegExp,sTrueClass,sFalseClass) {
  var sTrueClass=(typeof sTrueClass=='undefined')?'empty':sTrueClass;
  var sFalseClass=(typeof sFalseClass=='undefined')?'notEmpty':sFalseClass;
  $(sSelector).each(function () {
    $this=$(this);
    var result=$this.html().replace(oRegExp,'');
    var bResult=(result.length==0);
    _addClassDependingOnResult($this,bResult,sTrueClass,sFalseClass);
  });
}

/* STH: 2010-08-31
Depending on the true|false value of bResult the jQuerified element $this will be assigned the sTrueClass|sFalseClass if it does not have it in advance.
sTrueClass defaults to "true"
sFalseClass defaults to "false"
*/
function _addClassDependingOnResult($this,bResult,sTrueClass,sFalseClass) {
  var sTrueClass=(typeof sTrueClass=='undefined')?'true':sTrueClass;
  var sFalseClass=(typeof sFalseClass=='undefined')?'false':sFalseClass;
  var sApplyClass=(bResult)?sTrueClass:sFalseClass;
  !$this.hasClass(sApplyClass)?$this.addClass(sApplyClass):'';
}

function addFirstLast(oSelector) {
  var oElements=jQuery(oSelector).not('script, :hidden');
  oElements.first().addClass('first');
  oElements.last().addClass('last');
}

var bAlert=true;
function alert(s) {
  if(s) {
    if(bAlert) {
      bAlert=confirm(s);
    }
  }
}




//]]>


function ensureCorrectPrintURL() {
  /// <summary>If we are on a printerfriendly page, it sometimes occur that "&" has been converted into "&amp;" in the URL. This makes the printfunction of DW not work.</summary>
  /// <summary>This code fixes this problem</summary>
  try {
    var sURL = document.location.toString().toLowerCase();
    var sAllreadyConverted = '&converted=1';
    if (sURL.indexOf('printerfriendly')!=-1 && sURL.indexOf(sAllreadyConverted)==-1) {
      var oAmp = new RegExp('&amp;', 'ig');
      var sNewURL = sURL.replace(oAmp, '&');
      if (sNewURL!=sURL) {
        document.location = sNewURL+sAllreadyConverted;
      }
    }
  } catch (e) {
  }
}
