var cc = {
	platform: {
		isMobile: false,
		isAndroid: false,
		isIPhone: false,
		isWindows: false,
		isMac: false,
		isIE: false,
		isChrome: false,
		isSafari: false,
		isOpera: false,
		isFirefox: false,
		
		load: function() {
			var ua = navigator.userAgent.toLowerCase();
			
			//ie determined in script tag
			if (ua.indexOf("chrome") >= 0) cc.platform.isChrome = true;
			if (ua.indexOf("safari") >= 0) cc.platform.isSafari = true;
			if (ua.indexOf("opera") >= 0) cc.platform.isOpera = true;
			if (ua.indexOf("firefox") >= 0) cc.platform.isFirefox = true;
			if (ua.indexOf("android") >= 0) cc.platform.isAndroid = true;
			if (ua.indexOf("iphone") >= 0 || ua.indexOf("ipod") >= 0) cc.platform.isIPhone = true;
			if (ua.indexOf("mac os") >= 0) cc.platform.isMac = true;
			if (ua.indexOf("windows") >= 0) cc.platform.isWindows = true;
			cc.platform.isMobile = (screen.width < 640 || cc.platform.isAndroid || cc.platform.isIPhone);
		}
	},
	
	loadAll: function() {
		var cssval;
		
		cc.platform.load();
	
		cssval = cc.getCookie("cssclass");
		if (cssval == null || (cssval != "Normal CSS" && cssval != "Mobile CSS")) {
			cssval = "Normal CSS";
			if (cc.platform.isMobile) cssval = "Mobile CSS";
		}
		cc.setStylesheet(cssval);
	},
	
	switchStylesheet: function(newtitle) {
		cc.setStylesheet(newtitle);
		cc.finishStylesheet();
	},

	setStylesheet: function(newtitle) {
		var csslink;

		if (newtitle == null) {
			if (cc.getStylesheet() == "Normal CSS") newtitle = "Mobile CSS";
			else newtitle = "Normal CSS";
		}
		for(var i = 0; (csslink = document.getElementsByTagName("link")[i]); i++) {
			if(csslink.getAttribute("rel").indexOf("style") != -1 && csslink.getAttribute("title")) {
				csslink.disabled = true;
				if(csslink.getAttribute("title") == newtitle) csslink.disabled = false;
			}
		}
		cc.setCookie("cssclass", newtitle, 28);
	},

	finishStylesheet: function() {
		var nojsanchor, nojsspan, newtitle;
	
		newtitle = cc.getStylesheet();
		nojsanchor = document.getElementById("footer_nojslink");
		nojsspan = document.getElementById("footer_nojstext");
		if (nojsanchor != null && nojsspan != null) {
			while (nojsspan.hasChildNodes()) nojsspan.removeChild(nojsspan.childNodes[0]);
			nojsspan.appendChild(document.createTextNode(newtitle == "Normal CSS" ? "Click here to view the mobile version of this site." : "Click here to view the full version of this site."));
			nojsanchor.href = "javascript:cc.switchStylesheet('" + (newtitle == "Normal CSS" ? "Mobile CSS" : "Normal CSS") + "')";
		}
		nojsspan = document.getElementById("mobile_explanation");
		nojsanchor = document.getElementById("mobile_explanation_link");
		if (nojsspan != null && nojsanchor != null) {
			while (nojsspan.hasChildNodes()) nojsspan.removeChild(nojsspan.childNodes[0]);
			while (nojsanchor.hasChildNodes()) nojsanchor.removeChild(nojsanchor.childNodes[0]);
			if (newtitle == "Mobile CSS") {
				nojsspan.appendChild(document.createTextNode("You are currently viewing the mobile version of this site.  To switch to the full version, "));
				nojsanchor.appendChild(document.createTextNode("click here."));
			}
		}
	},

	getStylesheet: function() {
		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;
	},

	acceptsCookies: function() {
		document.cookie = "cyancookiecheck=true; path=/";
		var cookies = document.cookie;
		if (cookies.indexOf("cyancookiecheck") >= 0) return true;
		else return false;
	},

	setCookie: function(name, value, days) {
		var expire;
	
		if (days > 0) {
			expire = new Date();
			expire.setDate(expire.getDate() + days);
		} else expire = null;
		document.cookie = name + "=" + escape(value) + (expire == null ? "" : ";expires=" + expire.toGMTString()) + ";path=/";
	},

	getCookie: function(name) {
		var cookielist, cookie;
	
		cookielist = document.cookie.split(";");
		for (var i = 0; i < cookielist.length; i++) {
			cookie = cookielist[i];
			while (cookie.charAt(0) == " ") cookie = cookie.substring(1);
			if (cookie.indexOf(name + "=") == 0) return unescape(cookie.substring(name.length + 1));
		}
		return null;
	},

	createAnchor: function(newid, newhref, newclassname) {
		var a = document.createElement("a");
		if (newid && newid.length > 0) a.id = newid;
		if (newhref && newhref.length > 0) a.href = newhref;
		if (newclassname && newclassname.length > 0) a.className = newclassname;
		return a;
	},

	createSpan: function(newtext, newid, newclassname) {
		var sp = document.createElement("span");
		if (newid && newid.length > 0) sp.id = newid;
		if (newclassname && newclassname.length > 0) sp.className = newclassname;
		if (newtext && newtext.length > 0) sp.appendChild(document.createTextNode(newtext));
		return sp;
	},

	createImage: function(newid, newsrc, newclassname, newwidth, newheight, newtitle, newalt) {
		var image = document.createElement("img");
		if (newid && newid.length > 0) image.id = newid;
		if (newsrc && newsrc.length > 0) image.src = newsrc;
		if (newclassname && newclassname.length > 0) image.className = newclassname;
		if (newwidth) image.width = newwidth;
		if (newheight) image.height = newheight;
		if (newtitle && newtitle.length > 0) image.title = newtitle;
		if (newalt && newalt.length > 0) image.alt = newalt;
		return image;
	}
}