myStyle = "style_" + document.domain;

function setActiveStyleSheet( title, refresh ) {
	var list = title.split( ',' );
	for( i = 0; i < list.length; i++ ) setActiveStyleSheetOne( list[i], refresh );
}

function setActiveStyleSheetOne( title, refresh ) {
	var i, a, main, cktitle, ckmode;
	var mode = title.split( '_' );
	for( i = 0; ( a = document.getElementsByTagName( "link" )[i] ); i++ ) {
		if( a.getAttribute( "rel" ).indexOf( "style" ) != -1
		&& a.getAttribute( "title" )
		) {
			cktitle = a.getAttribute( "title" );
			ckmode = cktitle.split( '_' );
			if( mode[0] != ckmode[0] ) continue;
			if( refresh ) a.disabled = true;
			if( a.getAttribute( "title" ) == title ) a.disabled = false;
		}
	}
}

function getActiveStyleSheet( cookie ) {
	var i, a, title, cktitle, ckmode, defaults;
	title = new Array();
	defaults = cookie;
	for( i = 0; ( a = document.getElementsByTagName( "link" )[i] ); i++ ) {
		if( a.getAttribute( "rel" ).indexOf( "style" ) != -1
		&& a.getAttribute( "title" )
		&& !a.disabled
		) {
			cktitle = a.getAttribute( "title" );
			ckmode = cktitle.split( '_' );
			defaults[ckmode[0]] = cktitle;
		}
	}
	for( i in defaults ) title.push( defaults[i] );
	return title.join( ',' );
}

function getPreferredStyleSheet( cookie ) {
	var i, a, title, cktitle, ckmode, defaults;
	title = new Array();
	defaults = new Object();
	for( i = 0; ( a = document.getElementsByTagName( "link" )[i] ); i++ ) {
		if(a.getAttribute( "rel" ).indexOf( "style" ) != -1
		&& a.getAttribute( "rel" ).indexOf( "alt" ) == -1
		&& a.getAttribute( "title" )
		) {
			cktitle = a.getAttribute( "title" );
			ckmode = cktitle.split( '_' );
			if( ckmode[1] == "default" || !defaults[ckmode[0]] ) defaults[ckmode[0]] = cktitle;
		}
	}
	for( var key in cookie ) defaults[key] = cookie[key];
	for( i in defaults ) title.push( defaults[i] );
	return title.join( ',' );
}

function createCookie( name, value, days ) {
	if( days ) {
		var date = new Date();
		date.setTime( date.getTime() + ( days *24*60*60*1000 ) );
		var expires = "; expires=" + date.toGMTString();
	}
	else expires = "";
	document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie( name ) {
	var ret = new Object();
	var cookie;
	var nameEQ = name + "=";
	var ca = document.cookie.split( ";" );
	for( var i = 0; i < ca.length; i++ ) {
		var c = ca[i];
		while( c.charAt(0) == " " ) c = c.substring( 1, c.length );
		if( c.indexOf( nameEQ ) == 0 ) {
			cookie = c.substring( nameEQ.length, c.length );
			break;
		}
	}
	if( cookie ) {
		var tmp = cookie.split( ',' );
		var ckmode;
		for( var i = 0; i < tmp.length; i++ ) {
			ckmode = tmp[i].split( '_' );
			if( !ckmode[0] || !ckmode[1] ) continue;
			ret[ckmode[0]] = tmp[i];
		}
	}
	return ret;
}

function loadStyleSheet() {
	var cookie = readCookie( myStyle );
	var title = getPreferredStyleSheet( cookie );
	setActiveStyleSheet( title, 0 );
}

function unloadStyleSheet() {
	var cookie = readCookie( myStyle );	
	var title = getActiveStyleSheet( cookie );
	createCookie( myStyle, title, 365 );
}

addEventSet( window, "load", loadStyleSheet );
addEventSet( window, "unload", unloadStyleSheet );

cookie = readCookie( myStyle );
title = getPreferredStyleSheet( cookie );
setActiveStyleSheet( title, 1 );

