ROOT = "http://localhost/prod/";
SECTION =  "home";
DEFAULT_OFFSET = [-22,3];
I_OFFSET = DEFAULT_OFFSET;
I = false;
LOADING = "<img src='img/loader.gif' />&nbsp loading";
BANNER_H = 160;
CLASS = null;
SEMESTER_DATES = ["2008-01-01","2008-05-31"];
JSON = "";
DEFAULT_ERR_MSG = "I apologize, the content requested is not currently available. Either it has been relocated or the website is being updated.";
PHOTOS = false;

function loadScript(filename) {
	var js = document.createElement("script");
	js.setAttribute("type","text/javascript");
	js.setAttribute("src", filename);
	document.getElementsByTagName("head")[0].appendChild(js);
}

function loadStyle(filename) {
	var css = document.createElement("link");
	css.setAttribute("rel", "stylesheet");
	css.setAttribute("type", "text/css");
	css.setAttribute("href", filename);
	document.getElementsByTagName("head")[0].appendChild(css);
}

function gotoBookmark()
{
	var bookmark = location.hash.substring(1);
	var elm = el("menuItem_"+bookmark);
	if (bookmark && bookmark != "" && bookmark != "home")
		section(bookmark,false,elm);
}

function section(id,indicator,elm)
{
	fixHeight(["yui-main","main-content"]);
//	YAHOO.util.Dom.addClass("indicator","hidden");
	var noHeaderAction = false;
/*
	if (indicator)
		I = true;
	else
		I = false;
*/
/*	if (id == "math" && SECTION != "math")
		collapseHeader();
	else if (id != "math" && SECTION == "math")
		expandHeader();
	else
		noHeaderAction = true;*/
	SECTION = id;
	hilite(elm);
	fetchSidebar(id);
	elm.blur();
/*
	if (noHeaderAction && I)
		showIndicator();
*/
	el("sidebar").className = "yui-b";
	YAHOO.util.Dom.addClass("sidebar",SECTION);
}

function collapseHeader()
{
	var attributes = {
		height:{to:0}
	};
	var anim = new YAHOO.util.Anim("banner",attributes,1);
/*
	if (I)
		anim.onComplete.subscribe(showIndicator);
*/
	anim.onComplete.subscribe(function(){
		YAHOO.util.Dom.setStyle("banner","visibility","hidden");
	});
	anim.animate();
}

function expandHeader()
{
	YAHOO.util.Dom.setStyle("banner","visibility","visible");
	var attributes = {
		height:{to:BANNER_H}
	};
	var anim = new YAHOO.util.Anim("banner",attributes,1);
/*
	if (I)
		anim.onComplete.subscribe(showIndicator);
*/
	anim.animate();
}

function init_indicator()
{
	YAHOO.util.Event.onContentReady("leftMenu",showIndicator);
}

showIndicator = function()
{
	YAHOO.util.Event.onContentReady("leftMenu", function(){
		var li = el("leftMenu").getElementsByTagName("li")[0];
		var pos = offset(YAHOO.util.Dom.getXY(li));
		YAHOO.util.Dom.removeClass("indicator","hidden");
		YAHOO.util.Dom.setXY("indicator",pos);
	});
}

function moveIndicator(id)
{
	YAHOO.util.Event.onContentReady("indicator",function(){
		var pos = offset(YAHOO.util.Dom.getXY(id));
		var attributes = {points:{to:pos}};
		var anim = new YAHOO.util.Motion("indicator",attributes, 0.6, YAHOO.util.Easing.easeOut);
		anim.animate();
	});
}

function offset(pos)
{
	pos[0] += I_OFFSET[0];
	pos[1] += I_OFFSET[1];
	return pos;
}

function fetchSidebar(id)
{
	var path = (id == "home") ? "" : id+"/";
	Ajax.startRequest(path+"sidebar.php","sidebar",fetchMainContent);
	el("main-content").innerHTML = "";
}

function fetchMainContent(subid,menuitem)
{
	if(typeof request == "undefined")
		var request = false;
	if (typeof menuitem != "undefined" && menuitem !== true && menuitem !== false)
		hLiteSidebarItem(menuitem);
	fixHeight(["yui-main","main-content"]);
	var dir = (SECTION == "home") ? "" : SECTION+"/";	
	var f = [];
	if (typeof subid == "undefined" || subid == "")
	{
		switch (SECTION)
		{
			case "home":
				subid = "default";
				break;
			case "run":
				subid = "training";
				break;
			case "math":
				subid = "home";
				break;
			case "resume":
				subid = "objective";
				break;
			case "photos":
				subid = "gallery";
				break;
			default:
				break;
		}
	}

	var path = dir+subid;
	if (subid.indexOf("class=") != -1)
	{
		subid = subid.slice(subid.indexOf("class=") + 6);
		CLASS = subid;
	}
	else 
		if (subid.indexOf(".php") != -1) 
			subid = subid.slice(0, subid.indexOf(".php"));
		else 
			path += ".php";
/*
	if (I)
		moveIndicator(subid);
*/
	if (subid != "prealgebra" && subid != "algebra" && subid != "geometry")
		f.push(resetHeight);
	var target = "main-content";
	var json = false;
	if (path.indexOf("getGdata") != -1)
	{
		path += "&fDate="+SEMESTER_DATES[0]+"&lDate="+SEMESTER_DATES[1];
		f.push(init_calendar);
		target = false;
		json = true;
	}
	Ajax.startRequest(path,target,f,json);
}

function hLiteSidebarItem(elm)
{
	var items = el("leftMenu").getElementsByTagName("li");
	for (var i = 0; i < items.length; i++)
	{
		YAHOO.util.Dom.removeClass(items[i], "selectedItem");
//		YAHOO.util.Dom.setStyle(items[i], "background-color","transparent");
	}
	YAHOO.util.Dom.addClass(elm,"selectedItem");
/*	if (YAHOO.util.Dom.hasClass(elm.parentNode,"hlite"))
	{
		// animate highlight
	    var anim = new YAHOO.util.ColorAnim(elm, {
			backgroundColor: {to: '#CCDCB0'}
		},.3 ); 
		anim.animate();
	}	
*/
}

function init_calendar()
{
	el("main-content").innerHTML = "<div id='yCal'/>";
	var config = {
		start_weekday:1,
		locale_weekdays:"1char",
		hide_blank_weeks:true
	}
	YAHOO.util.Event.onContentReady("yCal",function(){
		CAL = new YAHOO.widget.Calendar("yCal","yCal", config);
		parseJSON();
		CAL.addWeekdayRenderer(1,hideDay);
		CAL.addWeekdayRenderer(7,hideDay);
		CAL.render();
		fixCal();
		CAL.changePageEvent.subscribe(fixCal);
		resetHeight();
	});
}

function parseJSON()
{
	gCal = YAHOO.lang.JSON.parse(JSON);
	gCalLookup = {};
	for (var i = 0; i < gCal.entries.length; i++)
	{
		CAL.addRenderer(gCal.entries[i].start,function(date,cell){
			var d = CAL.buildDayLabel(date);
			var index = getEventIndex(date);
			var e = gCal.entries[index];
			var label = e.title;
			cell.innerHTML = "<a class='selector'>"+d+"<div onclick='showLesson("+index+")' onmouseover=\"this.className='hover'\" onmouseout=\"this.className=''\">"+label+"</div></a>";
			return YAHOO.widget.Calendar.STOP_RENDER;
		});
	}
}

function showLesson(index)
{
	if (typeof POPUP == "undefined" || POPUP == null)
	{
		POPUP = new YAHOO.widget.Panel("popup",{
			width:400,
			visible:false,
			draggable:false,
			close:true,
			fixedcenter:true,
			modal:true,
			underlay:"none"
		});
		POPUP.render(document.body);
	}
	POPUP.setHeader("Lesson Summary");
	var lessonSummary = getSummary(index);
	POPUP.setBody(lessonSummary);
	POPUP.setFooter("");
	POPUP.render();
	POPUP.show();
}

function getSummary(index)
{
	var e = gCal.entries[index];
	var rval = "<table><tr><th>Date:</th><td>"+gCal.entries[index].start+"</td></tr><tr><th>Topics:</th><td>"+e.title+"</td></tr>";
	var str = e.details.replace(/\n/g,"");
	var details = str.split(";");
	for (var i = 0; i < details.length; i++) {
		if (details[i] != "") {
			var subdetails = details[i].split("::");
			rval += "<tr><th>" + subdetails[0] + ":</th><td>";
			if (subdetails[0] == "Homework") {
				var url = subdetails[1].split("|");
				if (url[1]) {
					var prefix = "math/" + CLASS + "/";
					rval += "<a href='" + prefix + url[1] + "' target='_blank'>" + url[0] + "</a>";
				}
				else
					rval += subdetails[1] + "</td></tr>";
			}
			else if (subdetails[0] == "Files" || subdetails[0] == "Links") {
				var urls = subdetails[1].split("|");
				for (var j = 0; j < urls.length; j++) {
					var prefix = (subdetails[0] == "Files") ? "math/" + CLASS + "/" : "http://";
					var urlInfo = urls[j].split(",");
					rval += "<a href='" + prefix + urlInfo[1] + "' target='_blank'>" + urlInfo[0] + "</a>";
					if (j < urls.length - 1) 
						rval += "<br/>";
				}
				rval += "</td></tr>";
			}
			else 
				rval += subdetails[1] + "</td></tr>";
		}
	}
	
	rval += "</table>";
	return rval;
}

function getEventIndex(date)
{
	var rval = false;
	var d = date.getMonth()+1+"/"+date.getDate()+"/"+date.getFullYear();
	for (var i = 0; i < gCal.entries.length; i++)
	{
		if (gCal.entries[i].start == d)
		{
			rval = i;
			i = gCal.entries.length;
		}
	}
	return rval;
}

function hideDay(date,cell)
{
	YAHOO.util.Dom.addClass(cell,"hidden");
	return YAHOO.widget.Calendar.STOP_RENDER;
}

function fixCal()
{
	var weekdays = YAHOO.util.Dom.getElementsByClassName("calweekdaycell");
	var cells = [weekdays];
	var top = YAHOO.util.Dom.getElementsByClassName("calcelltop");
	cells.push(top);
	var bottom = YAHOO.util.Dom.getElementsByClassName("calcellbottom");
	cells.push(bottom);
	for (var i = 0; i < 3; i++)
	{
		cells[i][5].className = "hidden";
		cells[i][6].className = "hidden";
	}
	var counter = 0;
	for (i = 0; i < 5; i++)
		if (YAHOO.util.Dom.hasClass(top[i],"oom"))
			counter++;
	if (counter == 5)
		top[0].parentNode.className = "hidden";
	counter = 0;
	for (i = 0; i < 5; i++)
		if (YAHOO.util.Dom.hasClass(bottom[i],"oom"))
			counter++;
	if (counter == 5)
		bottom[0].parentNode.className = "hidden";
}

function changeCursor(type)
{
	var i = el("indicator");
	if (type == "none")
	{
		YAHOO.util.Dom.addClass("indicator", "hidden");
		I = false;
	}
	else
	{
		I = true;
		if (typeof type == "undefined" || type == "")
			var type = "orange";
		switch (type)
		{
			case "dots":
				i.innerHTML = "<img src='img/dots.gif'/>";
				YAHOO.util.Dom.setStyle(i,"backgroundColor","white");
				YAHOO.util.Dom.setStyle(i,"width",40);
				I_OFFSET = [DEFAULT_OFFSET[0]-25,DEFAULT_OFFSET[1]+2];
				break;
			case "orange":
			default:
				I_OFFSET = DEFAULT_OFFSET;
				i.innerHTML = "";
				YAHOO.util.Dom.setStyle(i,"backgroundColor","#FF6701");
				YAHOO.util.Dom.setStyle(i,"width","15px");
				break;
		}
	}
	
	
	
}

function fixHeight(elmIds)
{
	if (typeof elmIds == "object")
		var r = YAHOO.util.Dom.getRegion(elmIds[0]);
	else
		var r = YAHOO.util.Dom.getRegion(elmIds);
	var h = r.bottom-r.top;
	YAHOO.util.Dom.setStyle(elmIds,"height",h+"px");	
}

function resetHeight()
{
	YAHOO.util.Dom.setStyle(["yui-main","main-content"],"height","");
}

function init()
{
	removeJsAlert();
	gotoBookmark();
//	init_gData();
}

function removeJsAlert()
{
	var n = el("descr");
	n.innerHTML = "";
	n.className = "";
}

function showDescr(elm)
{
	YAHOO.util.Dom.addClass(elm.parentNode,"hover");
	if (n = elm.parentNode.getElementsByTagName("span")[0])
		el("descr").innerHTML = n.innerHTML;
}

function hideDescr(elm)
{
	YAHOO.util.Dom.removeClass(elm.parentNode,"hover");
	el("descr").innerHTML = "";
	
}

function hilite(elm)
{
	var items = el("menubar").getElementsByTagName("li");
	for (var i = 0; i < items.length; i++)
		YAHOO.util.Dom.removeClass(items[i],"activeTab");
	YAHOO.util.Dom.addClass(elm.parentNode,"activeTab");
}

function el(id)
{
	return document.getElementById(id);
}