
var debug = false;

function rotateToNextFontSize() {
	var i;
	var allUniqueCssTitles = getAllUniqueStyleSheetTitlesSansPrint();
	var activeIndex = findValueInArray(getActiveStyleSheetTitle(), allUniqueCssTitles);
	
	if(debug) alert("main: getActiveStyleSheetTitle->"+getActiveStyleSheetTitle()+", activeIndex="+activeIndex+", getCssDirection()="+getCssDirection());
	
	activeIndex += getCssDirection();
	
	// Put activeIndex back in a valid range in case the user modified something
	if(activeIndex > allUniqueCssTitles.length-1) activeIndex = allUniqueCssTitles.length-1;
	else if(activeIndex < 0) activeIndex = 0;
	
	if(debug) alert(allUniqueCssTitles[activeIndex]);
	
	setActiveStyleSheet(allUniqueCssTitles[activeIndex]);
	
	/* Set the direction of the font changer */
	if (activeIndex == allUniqueCssTitles.length-1){
		setCssDirection(-1);
		if(debug) alert("main: Heading down now");
	}
	else if(activeIndex == 0){
		setCssDirection(1);
		if(debug) alert("main: Heading up now");
	}
	else {
		if(debug) alert("main: activeIndex="+activeIndex+", allUniqueCssTitles.length-1="+(allUniqueCssTitles.length-1)+" no change in direction");
	}
	
	processIncreaseButton();
}

function setCssDirection(direction){
	if(direction==1)
		createCookie("direction", "up", 365);
	else 
		createCookie("direction", "down", 365);
}

function getCssDirection() {
	if(readCookie("direction")=="down") return -1;
	return 1;
}

function setPrintMode() { 
	var linkArray = document.getElementsByTagName("link");
	var returnArray = new Array();
	
	for(i=0; (a = linkArray[i]); i++) {
		if(a.getAttribute("rel").indexOf("style")!=-1 
				&& a.getAttribute("title") == "print") {
			createCookie("formerCSS", getActiveStyleSheetTitle(), 365);
			setActiveStyleSheet(a.getAttribute("title"));
			return;
		}
	}
}

function returnFromPrintMode() {
	setActiveStyleSheet( readCookie("formerCSS") );
}

function getAllStyleSheets() {
	var linkArray = document.getElementsByTagName("link");
	var returnArray = new Array();
	
	for(i=0; (a = linkArray[i]); i++) {
		if(a.getAttribute("rel").indexOf("style")!=-1 
				&& a.getAttribute("title") 
				&& (!a.getAttribute("media")
						|| a.getAttribute("media").indexOf("print")==-1)) {
			returnArray.push(a);
		}
	}
	
	// alert("returnArray = " + returnArray);
	return returnArray;
}

function getAllUniqueStyleSheets() {
	var allStyleSheets = getAllStyleSheets();
	var allCssTitles = new Array();
	var allCss = new Array();
	
	for (var i=0; i<allStyleSheets.length; ++i) {
		
		if ( -1 == findValueInArray(allStyleSheets[i].getAttribute("title"), allCssTitles )) {
			allCssTitles.push(allStyleSheets[i].getAttribute("title"));
			allCss.push(allStyleSheets[i]);
		}
	}
	
	// alert("allCss = " + allCss);
	return allCss;
}

function getAllUniqueStyleSheetTitles() {
	var returnArray = new Array();
	var allUnique = getAllUniqueStyleSheets();
	
	for (var i=0; i<allUnique.length; ++i) {
		returnArray.push(allUnique[i].getAttribute("title"));
	}
	
	return returnArray;
}

function getAllUniqueStyleSheetTitlesSansPrint() {
	var returnArray = new Array();
	var allUnique = getAllUniqueStyleSheets();
	
	for (var i=0; i<allUnique.length; ++i) {
		if (allUnique[i].getAttribute("title")!="print") returnArray.push(allUnique[i].getAttribute("title"));
	}
	
	return returnArray;
}

function findValueInArray(needle, haystack) {
	var debug = false;
	
	for (var i=0; i<haystack.length; ++i) {
		if (haystack[i]==needle) return i;
	}
	
	return -1;
}

function setActiveStyleSheet(title) {
	var i, a, main;
	
	for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
		if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
			a.disabled = true;
			
			if(a.getAttribute("title") == title) {
				a.disabled = false;
			}
		}
	}
}

function getActiveStyleSheetTitle() {
	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 getPreferredStyleSheet() {
	var i, a;
	
	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")
		) return a.getAttribute("title");
	}
	
	return null;
}

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 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;
}

function processIncreaseButton(){
	// alert("getCssDirection() = " + getCssDirection());
	if (getCssDirection()<0) {
		showInline( getRawObject("decreaseOption") );
		hide( getRawObject("increaseOption") );
	}
	else {
		showInline( getRawObject("increaseOption") );
		hide( getRawObject("decreaseOption") );
	}
	
	return true;
}

function styleSwitcherOnLoad() {
	var cookie = readCookie("style");
	var title = cookie ? cookie : getPreferredStyleSheet();
	setActiveStyleSheet(title);  
	processIncreaseButton();
}

//jses_addEvent(window, "onload", styleSwitcherOnLoad);
/*
 * window.onload = function(e) { styleSwitcherOnLoad(); }
 * window.onload = function(e) { var cookie = readCookie("style"); var title = cookie ? cookie : getPreferredStyleSheet(); setActiveStyleSheet(title); }
 */

function startDown() {
	var title = getActiveStyleSheetTitle();
	createCookie("style", title, 365);
}

window.onunload = function(e) {
	var title = getActiveStyleSheetTitle();
	createCookie("style", title, 365);
}

var cookie = readCookie("style");
var title = cookie ? cookie : getPreferredStyleSheet();
setActiveStyleSheet(title);

//added 05-15-06
function MM_findObj(n, d) { // v4.01
	var p,i,x;
	
	if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
		d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
	}
	
	if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	
	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	
	if(!x && d.getElementById) x=d.getElementById(n);
	
	return x;
}
