var bs_styleswitch = {
	config : {
		titleprefix : 'fontsize',
		chooserid : 'styleswitcher',
		displaychooser : false,
		cssfiles : [],
		enableiframe : true
		}
	,	
	setSwitcherClass : function (){
		var c = readCookie('stylesheet');
		var s = readCookie('stylesheetinvertstate');
		var n = readCookie('stylesheetinvert');
		if( bs_styleswitch.hasConfiguration() ){
			bs_styleswitch.setConfig();
			bs_styleswitch.activateLinks();
			if( bs_styleswitch.config.enableiframe ){
				bs_styleswitch.addIframeLoader();
				}
			}
		if (c) {
			bs_styleswitch.switchStylesheet(c);
			}
		if (n) {
			bs_styleswitch.switchStylesheetInvert(n);
			}
		if( bs_styleswitch.config.displaychooser ) {
			dspDiv(bs_styleswitch.config.chooserid , 'block'); 
			}
		}
	,
	addEvent : function ( obj, type, fn ){
   		if (obj.addEventListener) {
      		obj.addEventListener( type, fn, false );
   			} 
		else if (obj.attachEvent) {
      		obj["e"+type+fn] = fn;
      		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
      		obj.attachEvent( "on"+type, obj[type+fn] );
  		 }
	}
	,
	addIframeLoader : function (){
		var aryIFr = document.getElementsByTagName('iframe');
		for(i = 0; i < aryIFr.length; i++ ){
			var obj = aryIFr[i];
			var oldOnload = obj.onload.toString();
			bs_styleswitch.addEvent(obj, 'load', bs_styleswitch.checkParentStyle);
			if( oldOnload.indexOf('resizeIFrame(') != -1 ){
				try{
					var s = oldOnload.indexOf('resizeIFrame(');
					var e = oldOnload.indexOf(';', s);
					var newOnload = new Function(oldOnload.slice(s, e+1));
					bs_styleswitch.addEvent(obj, 'load', newOnload);
					
					}
				catch(e){}	
				}
			}
		}
	,
	checkParentStyle : function (){
		var c = readCookie('stylesheet');
		if (c) {
			bs_styleswitch.switchStyleSheetIFrame(c);
			}
		}
	,
	setConfig : function (){
		var c = styleswitch_config;
		if( typeof(c.titleprefix) != 'undefined' ){
			bs_styleswitch.config.titleprefix = c.titleprefix;
			}
		if( typeof(c.chooserid) != 'undefined' ){
			bs_styleswitch.config.chooserid = c.chooserid;
			}
		if( typeof(c.displaychooser) != 'undefined' ){
			bs_styleswitch.config.displaychooser = c.displaychooser;
			}
		if( typeof(c.cssfiles) != 'undefined' ){
			bs_styleswitch.config.cssfiles = c.cssfiles;
			}
		if( typeof(c.enableiframe) != 'undefined' ){
			bs_styleswitch.config.enableiframe = c.enableiframe;
			}
		}
	,
	hasConfiguration : function (){
		var hasConf = true;
		if( typeof(styleswitch_config) == 'undefined' ){
			hasConf = false;
			}
		return hasConf;
		}
	,
	createStylesheets : function(){
		for(var i=0; i<bs_styleswitch.config.cssfiles.length; i++){
			var newTitle = i+1;
			newTitle = bs_styleswitch.config.titleprefix+newTitle.toString();
			bs_styleswitch.createStyleSheetByName(newTitle);
			}
		}
	,
	createStyleSheetByName : function(sName){
		var configItem = sName.replace(bs_styleswitch.config.titleprefix, '');
		if(!isNaN(configItem)){
			var fileref=document.createElement("link");
				fileref.setAttribute("rel", "alternate stylesheet");
  				fileref.setAttribute("type", "text/css");
				fileref.setAttribute("media", "screen");
  				fileref.setAttribute("href", bs_styleswitch.config.cssfiles[configItem-1]);
				fileref.setAttribute("title", sName);
				if (typeof fileref != "undefined"){
					document.getElementsByTagName("head")[0].appendChild(fileref);
				}
			}
		}
	,
	activateLinks : function (){
		for(var i=0; i<bs_styleswitch.config.cssfiles.length; i++){
			var newTitle = i+1;
			newTitle = bs_styleswitch.config.titleprefix+newTitle.toString();
			bs_styleswitch.acticateLink(newTitle);
			}
		}
	,
	acticateLink : function (e){
		var el = document.getElementById(e);
		if(el != null ){
			el.onclick = function(){
				bs_styleswitch.switchStylesheet(e);
				return false;
				};
			}
		}
	,
	switchStylesheet : function (styleName){
		var a,i;
		var s = readCookie('stylesheetinvert');
		var hasEl = false;
		var lastTry = false;
		if(arguments.length>1){

			lastTry = arguments[1];
			}
		for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
			if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("rel").indexOf("alternate") != -1 && a.getAttribute("title") && a.getAttribute("title") != s) {
				a.disabled = true;
 				if(a.getAttribute("title") == styleName) {
					a.disabled = false;
					hasEl = true;
					}
				}
			}
		if(!lastTry && !hasEl && bs_styleswitch.hasConfiguration()){
			bs_styleswitch.createStyleSheetByName(styleName);
			bs_styleswitch.switchStylesheet(styleName, true);
			}	
			
		if(bs_styleswitch.hasConfiguration() && bs_styleswitch.config.enableiframe){
			bs_styleswitch.switchStyleSheetIFrame(styleName);
		
			}
		bs_styleswitch.styleHighlight(styleName);
		createCookie('stylesheet', styleName, 365);
		}
	,
	switchStyleSheetIFrame : function (styleName){
		var a,i;
		var s = readCookie('stylesheetinvert');
		var hasEl = false;
		var lastTry = false;
		var aryIFr = document.getElementsByTagName('iframe');
		try{
		if(arguments.length>1){
			lastTry = arguments[1];
			}
		
		for(i = 0; i < aryIFr.length; i++ ){
			var objFrame = aryIFr[i];
			var obj = (objFrame.contentDocument) ? objFrame.contentDocument : (objFrame.contentWindow) ? objFrame.contentWindow.document : (window.frames && window.frames[aID]) ? window.frames[aID].document : (objFrame.document) ? objFrame.document : null;	
			hasEl = false;	
			for(i=0; (a = obj.getElementsByTagName("link")[i]); i++) {
				if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("rel").indexOf("alternate") != -1 && a.getAttribute("title") && a.getAttribute("title") != s) {
					a.disabled = true;
 					if(a.getAttribute("title") == styleName) {
						a.disabled = false;
						hasEl = true;
						}
					}
				}
			if(!hasEl && !lastTry){
				//
				var configItem = styleName.replace(bs_styleswitch.config.titleprefix, '');
				if(!isNaN(configItem)){
					var fileref=document.createElement("link");
					fileref.setAttribute("rel", "alternate stylesheet");
  					fileref.setAttribute("type", "text/css");
					fileref.setAttribute("media", "screen");
  					fileref.setAttribute("href", bs_styleswitch.config.cssfiles[configItem-1]);
					fileref.setAttribute("title", styleName);
					if (typeof fileref != "undefined"){
						obj.getElementsByTagName("head")[0].appendChild(fileref);
						}
					}
				bs_styleswitch.switchStyleSheetIFrame(styleName, true);
				}
			}
		}
		catch(e){}
		}
	,
	styleHighlight : function (newStyle){
		var a = getElementsByClassName('styleswitcher_active');
		for(var i = 0; i < a.length; i++){
			a[i].className = a[i].className.replace(/styleswitcher_active/,"");
			}
		getE(newStyle).className += 'styleswitcher_active';
		}
	,
	switchStylesheetInvert: function (styleName){
		var a, state = true;
		var s = readCookie('stylesheetinvertstate');
		if(s != 'false' && s != 'undefined') {state = false; }
		for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
			if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("rel").indexOf("alternate") != -1 && a.getAttribute("title") && a.getAttribute("title") == styleName) {
				if(state) {
					a.disabled = true;
					getE(styleName).className += ' styleswitcherinvert_active';
					}
 				else{
					a.disabled = false;
					getE(styleName).className = getE(styleName).className.replace(/styleswitcherinvert_active/,"");
					}
				}
			}
		createCookie('stylesheetinvertstate', state, 365);
		createCookie('stylesheetinvert', styleName, 365);
		}	
	}
// Alte auftritte benutzen den Funktionsaufruf ohne namespace
var switchStylesheet = bs_styleswitch.switchStylesheet;

addLoadEvent(bs_styleswitch.setSwitcherClass);
