/*--------------------------------------------------------------------------*
 *  
 *  StyleSwitch
 *  
 *  MIT-style license. 
 *  
 *  2008 Mk-T
 *  http://mk-t-lab.com/
 *  
 *--------------------------------------------------------------------------*/

(function(){
	var init = function(){
		var style = "block";
		var reg = new RegExp("styleswitch" + "([0-9]+)", "i");
		var links = document.getElementsByTagName("link");
		var list = [];
		for(var i = 0,l = links.length, n = 0; i < l; i++){
			if(links[i].id.match(reg)){
				var current = readCookie(links[i].id);
				if( current ){
					styleSwitch(document.getElementById(links[i].id) , current);
				}
				list[n] = getElementsByClassName(links[i].id);
				for(var j = 0, jl = list[n].length; j < jl; j++){
					list[n][j].style.display = style;
					list[n][j].li = list[n][j].getElementsByTagName("li");
					for(var k = 0, kl = list[n][j].li.length; k < kl; k++){
						list[n][j].li[k].target = links[i].id;
						list[n][j].li[k].style.cursor = "pointer";
						addEvent(list[n][j].li[k], "click", bridge);
					}
				}
				n++;
			}
		}
	}
	function bridge(e){
		styleSwitch(document.getElementById(this.target), this.className);
	}
	function styleSwitch(elm, cls){
		var href = elm.href;
		var file = href.substring( href.lastIndexOf("/") + 1, href.length);
		elm.href = href.replace(file, cls + ".css");
		createCookie(elm.id, cls, 365);
	}
	//cookie code by http://www.quirksmode.org/js/cookies.html
	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 var expires = "";
		document.cookie = name+"="+value+expires+"; path=/";
	}
	function readCookie(name) {
		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) return c.substring(nameEQ.length,c.length);
		}
		return null;
	}
	var addEvent = (function() {
		if ( window.addEventListener ) {
			return function(el, type, fn) {
				el.addEventListener(type, fn, false);
			};
		} else if ( window.attachEvent ) {
			return function(el, type, fn) {
				var f = function() {
					fn.call(el, window.event);
				};
				el.attachEvent("on"+type, f);
			};
		} else {
			return function(el, type, fn) {
				el["on"+type] = fn;
			};
		}
	})();
	var getElementsByClassName = (function(){
		if(document.getElementsByClassName){
			return function(className, pElement){
				return (pElement||document).getElementsByClassName(className);
			};
		}else{
			return function(className, pElement){
				var d = document, nodes = [], item;
				var cls, items = (pElement || d).getElementsByTagName("*");
				for(var i = 0, l = items.length; i < l; i++){
					item = items[i];
					if(item.className){
						cls = item.className.split(/\s+/);
						for(var k = 0, kl = cls.length; k < kl; k++){
							if(cls[k]==className){
								nodes[nodes.length] = item; break;
							}
						}
					}
				}
				return nodes.length > 0 ? nodes : null;
			};
		}
	})();
	addEvent(window,"load",init);
})();