//This file contains JavaScript functionality related to stylesheet management for http://www.projecttree.com
//This code maybe reused and modified so long as this note remains here
//Copyright 2003-2004 Mike Radin

var stylelist = new Array();
stylelist[0] = "projecttree.css";
stylelist[1] = "alternate.css";
var stylepath = "./css/"; //path to the stylesheets
var defaultstyle = 0; //if some sort of a problem in encountered, the script will set the style to the value stored under this index in the stylelist array

var maxtextsize = 15;
var mintextsize = 12;
var maxtitlesize = 17;
var mintitlesize = 14;

function togglestyle(sheetid, sheetname, resize){
	var linkelement;
	if(sheetid){
		for(var i = 0; (linkelement = document.getElementsByTagName("link")[i]); i++) {
			if(linkelement.getAttribute("rel").indexOf("style") != -1 && linkelement.media == "screen"){
				if(linkelement.href != stylelist[sheetid]){ linkelement.href = stylepath + stylelist[sheetid]; }
			}
		}
	}else if(sheetname){
		for(var i = 0; i < stylelist.length; i++){
			if(sheetname == stylelist[i]){ togglestyle(i, null); break; }
			if((j+1) == stylelist.length){ togglestyle(defaultstyle, null, resize); break; }
		}
	}else{
		for(var i = 0; (linkelement = document.getElementsByTagName("link")[i]); i++) {
			if(linkelement.getAttribute("rel").indexOf("style") != -1 && linkelement.media == "screen"){
				for(var j = 0; j < stylelist.length; j++){
					exp = new RegExp(stylelist[j]);
					var result = exp.exec(linkelement.href);
					if(result == stylelist[j]) { linkelement.href = stylepath + stylelist[(++j%stylelist.length)]; break; }
				}
			}
		}
	}
	if(resize != 0){ resizesectioncontrols(); }//this is needed to fix problems of switching the stylesheet after the font size was changed
	return;
}
function getstyleid(){//returns the id of the currently loaded stylesheet as referenced by the stylelist array, if the currently loaded stylesheet is not on the list, the value of defaultstyle is returned
	var linkelement;
	for(var i = 0; (linkelement = document.getElementsByTagName("link")[i]); i++) {
		if(linkelement.getAttribute("rel").indexOf("style") != -1 && linkelement.media == "screen"){
			break;
		}
	}

	for(var j = 0; j < stylelist.length; j++){
		exp = new RegExp(stylelist[j]);
		var result = exp.exec(linkelement.href);
		if(result == stylelist[j]) { return j; }
		if((j+1) == stylelist.length){ return defaultstyle }
	}
}
//the first toggle call will not know the font size since, that information is in the stylesheet and will set the text to mintextsize and mintitlesize
function togglefontsize(offset, resize){
	//general text size
	var fontsize = parseInt(document.getElementById('page').style.fontSize);
	if((fontsize + 1) <= maxtextsize){ fontsize++; }
	else{ fontsize = mintextsize; }
	if(offset){ fontsize = (mintextsize + parseInt(offset)); }
	document.getElementById('page').style.fontSize = (fontsize) + "px";
	//page title size
	var fontsize = parseInt(document.getElementById('page_title').style.fontSize);
	if((fontsize + 1) <= maxtitlesize){ fontsize++; }
	else{ fontsize = mintitlesize; }
	if(offset){ fontsize = (mintitlesize + parseInt(offset)); }
	document.getElementById('page_title').style.fontSize = (fontsize) + "px";
	//section title & control size
	if(resize != 0){ resizesectioncontrols(fontsize); }
	return;
}
//returns comma separated list of font offset with in the range, technically it only needs to return one number since they move in tandem
function getfontsize(){
	var fontsize;
	var textsize = parseInt(document.getElementById('page').style.fontSize);
	if(textsize){ fontsize = "" + Math.abs(textsize - mintextsize); }
	else{ fontsize = 0; }
	textsize = parseInt(document.getElementById('page_title').style.fontSize);
	if(textsize){ fontsize = fontsize + "," + Math.abs(textsize - mintitlesize); }
	else{ fontsize =  fontsize + ",0"; }
	return fontsize;
}
function storestylepref(){
	var fontpref = getfontsize();
	var stylepref = getstyleid();
	var pref = stylepref + "," + fontpref;
	
	var date = new Date();
    date.setTime(date.getTime()+(30*24*60*60*1000));//set cookie to expire in 30 days
    var expires = "expires="+date.toGMTString();
	document.cookie = "pt_pref=" + pref + ";" + expires;
	return;
}
function loadstylepref(){
	var pref = getcookieparam(parsecookie(), "pt_pref");
	if(pref){
		var prefs = pref.split(",");
		togglestyle(prefs[0], null, 0);
		togglefontsize(prefs[1], 0);
		resizesectioncontrols();
	}else{ resizesectioncontrols(); }
	return;
}
