function addLoadListener(fn) {
  if (typeof window.addEventListener != 'undefined')  {
    window.addEventListener('load', fn, false);
  }
  else if (typeof document.addEventListener != 'undefined')  {
    document.addEventListener('load', fn, false);
  }
  else if (typeof window.attachEvent != 'undefined')  {
    window.attachEvent('onload', fn);
  }
  else  {
    var oldfn = window.onload;
    if (typeof window.onload != 'function') {
      window.onload = fn;
    }
    else {
      window.onload = function() {
        oldfn();
        fn();
      };
    }
  }
}

var currentTextSytleSheet = "", currentContrastStyleSheet = "";
var fsTitle = "";

function $GetElementById() {
  var elements = new Array();
  for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (typeof element == 'string')
      element = document.getElementById(element);

    if (arguments.length == 1) 
      return element;

    elements.push(element);
  }
  return elements;
}

function allEnabledSheets() {
  aes = [];
  sheets = getAllSheets();
  n=0;
  for (var i = 0; i< sheets.length;i++) {
    if ((sheets[i].title != '')&& (sheets[i].disabled==false)) {
      aes[n] = sheets[i].title;
      n++;
    }
  }
  return aes;
}

function chgStyle (styleSheet) {

  as = getAllSheets();

  for(var i=0;i<fontStylesheets.length;i++) {
    if (styleSheet==fontStylesheets[i]) {
      for(var n=0;n<fontStylesheets.length;n++) {
        for (var m=0;m<as.length;m++) {
          if (as[m].title==fontStylesheets[n]){
            as[m].disabled=true;
          }
        }
      }
    }
  }
 
  for(var i=0;i<contrastStylesheets.length;i++) {
    if (styleSheet==contrastStylesheets[i]) {
      for(var n=0;n<contrastStylesheets.length;n++) {
        for (var m=0;m<as.length;m++) {
          if (as[m].title==contrastStylesheets[n]){
            as[m].disabled=true;
          }
        }
      }
    }
  }
  curActive = allEnabledSheets();
  argStr = styleSheet;
  for(var i=0;i<curActive.length;i++) {
    argStr += ", "+curActive[i];
  }
  changeStyle(curActive,styleSheet);
}

function isIE() {
    version=0
    if (navigator.appVersion.indexOf("MSIE")!=-1){
        temp=navigator.appVersion.split("MSIE");
        version=parseFloat(temp[1]);
        return true;
    }
    if (version<=8.0 && version !=0) { 
      return true;
    }
    return false;
}
var fontStylesheets = [
                       'Normal Fonts',
                       'Medium Fonts',
                       'Large Fonts',
                       'X-Large Fonts'
                      ];

var contrastStylesheets = [
                            'Normal Contrast',
                            'High Contrast',
                          ];
                          
function incTextSize() {
  as = getAllSheets();

  for(var b=0;b<fontStylesheets.length;b++) {
    for (var p=0;p<as.length;p++) {
      if (!as[p].disabled && as[p].title==fontStylesheets[b]){
        fsTitle = as[p].title;
      }
    }
  }
  n=false;
  for(var i=0;i<fontStylesheets.length;i++) {
    if (fsTitle==fontStylesheets[i]) {
      if (i<(fontStylesheets.length-1)) { m=1;}else{m=0;}
      n=i+m;
    }
  }
  if (n==false) { n=3; }
  chgStyle(fontStylesheets[n]);
}

function decTextSize() {
  as = getAllSheets();
  for(var b=0;b<fontStylesheets.length;b++) {
    for (var p=0;p<as.length;p++) {
      if (!as[p].disabled && as[p].title==fontStylesheets[b]){
        fsTitle = as[p].title;
      }
    }
  }
  n=false;
  for(var i=0;i<fontStylesheets.length;i++) {
    if (fsTitle==fontStylesheets[i]) {
      if (i>0) { m=-1;}else{m=0;}
      n=i+m;
    }
  }
  if (n===false) { n=1; }
  chgStyle(fontStylesheets[n]);
}

function getActiveStyleSheet() {
var i, a;
 for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
  if(a.getAttribute("rel").indexOf("style") != -1
  && a.getAttribute("title")
  && !a.disabled) return a.getAttribute("title");
  }
  return null;
}

function getAllSheets() {
	if( !window.ScriptEngine && navigator.__ice_version ) { return document.styleSheets; }
	if( document.getElementsByTagName ) { var Lt = document.getElementsByTagName('link'), St = document.getElementsByTagName('style');
	} else if( document.styleSheets && document.all ) { var Lt = document.all.tags('LINK'), St = document.all.tags('STYLE');
	} else { return []; } for( var x = 0, os = []; Lt[x]; x++ ) {
		var rel = Lt[x].rel ? Lt[x].rel : Lt[x].getAttribute ? Lt[x].getAttribute('rel') : '';
		if( typeof( rel ) == 'string' && rel.toLowerCase().indexOf('style') + 1 ) { os[os.length] = Lt[x]; }
	} for( var x = 0; St[x]; x++ ) { os[os.length] = St[x]; } return os;
}

function getAllSheetsInIFrame( frame ) {
    if( !window.ScriptEngine && navigator.__ice_version ) { return frame.styleSheets; }
	if( document.getElementsByTagName ) { var Lt = frame.getElementsByTagName('link'), St = frame.getElementsByTagName('style'); } 
	else if( document.styleSheets && document.all ) { var Lt = frame.all.tags('LINK'), St = frame.all.tags('STYLE'); } 
	else { return []; } 
	for( var x = 0, os = []; Lt[x]; x++ ) {
		var rel = Lt[x].rel ? Lt[x].rel : Lt[x].getAttribute ? Lt[x].getAttribute('rel') : '';
		if( typeof( rel ) == 'string' && rel.toLowerCase().indexOf('style') + 1 ) { os[os.length] = Lt[x]; }
	} 
	for( var x = 0; St[x]; x++ ) { os[os.length] = St[x]; } return os;
}

function getStyleType( style ) {
    var i;
    for ( i = 0; i < fontStylesheets.length; i++ )
        if ( fontStylesheets[i] == style ) { return "text"; }
    for ( i = 0; i < contrastStylesheets.length; i++ )
        if ( contrastStylesheets[i] == style ) { return "contrast"; }
        
    return "";
}

function changeStyle() {
	window.userHasChosen = window.MWJss;
	for( var x = 0, ss = getAllSheets(); ss[x]; x++ ) {
		if( ss[x].title ) { ss[x].disabled = true; }
		for( var y = 0; y < arguments.length; y++ ) {
            if( ss[x].title == arguments[y] ) {
                updateCurrentSytleVariable( ss[x].title );
                for ( var i = 0; fontStylesheets[i]; i++ )
                    if ( arguments[y] == fontStylesheets[i] ) { currentTextSytleSheet = fontStylesheets[i]; }
                ss[x].disabled = false;
                rememberStyle('styleStore',10);
            }
        }
    }
}

function updateCurrentSytleVariable( value ) {
    var i;
    for ( i = 0; i < fontStylesheets.length; i++ )
        if ( fontStylesheets[i] == value ) { currentTextSytleSheet = value; }
        
    for ( i = 0; i < contrastStylesheets.length; i++ ) {    
        if ( contrastStylesheets[i] == value ) { currentContrastStyleSheet = value; }
    }
}

function rememberStyle( cookieName, cookieLife ) {
  for( var viewUsed = false, ss = getAllSheets(), x = 0; window.MWJss && MWJss[x] && ss[x]; x++ ) {
    if( ss[x].disabled != MWJss[x] ) { viewUsed = true; break; }
  }
  if( !window.userHasChosen && !viewUsed ) { return; }

  for( var x = 0, outLine = '', doneYet = []; ss[x]; x++ ) {
   if( ss[x].title && ss[x].disabled == false && !doneYet[ss[x].title] ) {
     doneYet[ss[x].title] = true;
     outLine += ( outLine ? ' MWJ ' : '' ) + escape( ss[x].title );
   }
  }
  if( ss.length ) {
    document.cookie = escape( cookieName ) + '=' + escape( outLine ) + ( cookieLife ? ';expires=' + new Date( ( new Date() ).getTime() + ( cookieLife * 86400000 ) ).toGMTString() : '' ) + ';path=/';
  }
}

function useStyleAgain( cookieName ) {
	for( var x = 0; x < document.cookie.split( "; " ).length; x++ ) {
		var oneCookie = document.cookie.split( "; " )[x].split( "=" );
		if( oneCookie[0] == escape( cookieName ) ) {
			var styleStrings = unescape( oneCookie[1] ).split( " MWJ " );
			for( var y = 0, funcStr = ''; styleStrings[y]; y++ ) { funcStr += ( y ? ',' : '' ) + 'unescape( styleStrings[' + y + '] )'; }
			eval( 'changeStyle(' + funcStr + ');' ); break;
	}
 }
 window.MWJss = [];
 for( var ss = getAllSheets(), x = 0; ss[x]; x++ ) { MWJss[x] = ss[x].disabled; }
}

