var GCookieMinToLive = 20;	// cookie life in minutes
var GcurPageLC;				// current page filename
// GcontentLang (current content language) is defined in functions.inc.php
var Gurl = location.href;
var GlinkWin = null;
var GnavTimer = null;
var GoMainMenu = null;
var GCurrMainMenu = "def";	 // current main menu item id
var Gpref = "";				 // path prefix to get back to top level (eg. ../../)
var GelTarget = null;		 // mouseover target element
var GnavResetTimer = null;	 // mouseover timer
var GnavReset = 620;		    // mouseover timeout
var GnavDelayTimer = null;	 	// mouseout delay timer
var GnavDelay = 320;		    // mouseout timeout

// -------- nav functions --------

// menuItem constructor
function menuItem (sMenuID, sElemID, sText, sLang, sClassName, oPrevItem, sFolder1, sDefaultFile1) {	
	this.menuID = sMenuID; this.elemID = sElemID; this.text = sText;  this.lang = sLang; this.sClassName = sClassName;
	this.prevItm = oPrevItem; this.nxtItem = null;
	this.folder1 = sFolder1; this.defFile1 = sDefaultFile1; 
	var folderList = sFolder1;
	var defFileList = sDefaultFile1;
	var argv = menuItem.arguments;
	var argc = argv.length;
	for (var i=8; i<argc; i+=2) {folderList += "^" + argv[i-1]; defFileList += "^" + argv[i];}
	this.aFolder = folderList.split("^"); this.aFile = defFileList.split("^");
	if (oPrevItem != null) oPrevItem.setNxtItem(this);
	menuItem.prototype.setNxtItem = function (oItem) {this.nxtItem = oItem;}
}

// Highlight current main menu item and show secondary nav 
//	secondary nav div id = <main menu item id>_2
//	for main menu items with no secondary navs, show div def-2, which is just a blank line
function showSecNav(elMainMenu) {
	var oNav;
	var mainNavNodes = document.getElementById("mainNav").getElementsByTagName("li");
	for (var i=0; i<mainNavNodes.length; i++) {
		oNav = mainNavNodes.item(i);
		if (oNav == elMainMenu) {oNav.className = "curMainCat";}
		else oNav.className = "";
	}
	var secNavNodes = document.getElementById("secNav").getElementsByTagName("div");
	var showChildID = "";
	if (elMainMenu != null) showChildID = elMainMenu.id + "_2";
	if (!document.getElementById(showChildID)) showChildID = "def-2";	// seconday nav not found, default to def-2
	for (i=0; i<secNavNodes.length; i++) {
		oNav = secNavNodes.item(i);
		if (oNav.id == showChildID) {oNav.style.display = "block";}
		else oNav.style.display = "none";
	}
	if (showChildID == "def-2") {
		document.getElementById("secNav").className = "noItems";	// no background color
	}
	else {
		document.getElementById("secNav").className = "hasItems";
	}
}

// get current main menu id based on current page's folder+filename
function getCurrMainMenuID() {
	if (GcurPageLC == "") GcurPageLC = "index.php";			// homepage
	var oTmp =  GoMainMenu;
	var curCat = null;
	var curCatFromFile = null;
	var aFolder, aFile;	
	while (oTmp != null) {
		aFolder = oTmp.aFolder;
		aFile = oTmp.aFile;
		for (var i=0; i<aFolder.length; i++) {	
			if (aFolder[i] != "") {
				if (Gurl.indexOf(aFolder[i]) != -1) {curCat = oTmp; break;}
			}
			else if (GcurPageLC == aFile[i].toLowerCase()) curCatFromFile = oTmp;
		}
		if (curCat != null) break;
		oTmp = oTmp.nxtItem;
	}
	if (curCat != null) return curCat.elemID;
	else if (curCatFromFile != null) return curCatFromFile.elemID;
	else return null;
}

// display main and secondary navs
function wrtNavs(lvl, sSecMenuID) {
	Gpref = "";		// global, defined at top
	for (var i=1;i<=lvl;i++) Gpref = Gpref + "../";
	wrtTopBanner(GcontentLang); 
	document.writeln('<div id="nav">');
	wrtMainNav(); wrtSecNav(sSecMenuID); 
	document.writeln('</div>');
	
	if (sSecMenuID != "") {
		var pos = sSecMenuID.indexOf("_");
		GCurrMainMenu = sSecMenuID.substr(0,pos);	// if sSecMenuId = 'about_facilities', this is set to 'about'
	}
	
	showSecNav(document.getElementById(GCurrMainMenu));
}

function getPageInLang(sFilename, sNewLang, sOldLang) {
	if (sFilename == "") sFilename = "index.php";
	var sDash_lang_pos = sFilename.indexOf("_" + sOldLang + ".");
	var sGotoFile = sFilename.substr(0, sDash_lang_pos) + "_" + sNewLang + "." + getFileExt(sFilename);
	return sGotoFile;
}

function gotoPageInLang(sFilename, sNewLang) {
	if (sNewLang == GcontentLang) return;
	setCookie("userLang", sNewLang, GCookieMinToLive, "/");	
	location.href = getPageInLang(sFilename, sNewLang, GcontentLang);
}

// display top banner (before navs)
function wrtTopBanner() {

	var str1 = '<div id="customizerLine"><div id="customizers">Text Size: &nbsp;';
	
	// text size selector
	for (var i=1; i<=3; i++) {
		str1 += "<span id='sampleFntShell" + i + "' class='pointer'><span class='content-TextSize-" + i + "' onclick='chgTextSize(" + i + ");'> A</span></span>&nbsp;";
	}
	
	str1 += "</div>";	// end div customizers
	str1 += '<br class="clearB" /></div>';	// end div customizerLine
	
	str1 += '<div id="topBanner">';
	var homepage = "index_" + GcontentLang + ".php";
	str1 += '<a href="' + Gpref + homepage + '"><img src="' + Gpref + 'images/topBanner_01.jpg" alt="" /></a><img src="' + Gpref + 'images/topBanner_02.jpg" alt="" />';
	str1 += '</div>';	// end div topBanner
	document.writeln(str1);
}

// init text size based on cookie val
function initTextSize() {setTextSize(getCookie("textSize"));}

// set text size
function setTextSize(intFontNum) {
	if (intFontNum == null) intFontNum = 1;
	intFontNum = parseInt(intFontNum);
	var el = document.getElementById("wrap0");
	el.className = "content-TextSize-" + intFontNum;
	for (var i=1; i<=3; i++) {
		if (i == intFontNum) document.getElementById("sampleFntShell" + i).className = "textSizeOn pointer";
		else document.getElementById("sampleFntShell" + i).className = "textSizeOff pointer";
	}
}

// change text size; update cookie
function chgTextSize(intFontNum) {
	setTextSize(intFontNum);
	setCookie("textSize", intFontNum, GCookieMinToLive, "/");
}

// display main nav
function wrtMainNav() {
	var str1 = '<div id="mainNav"><ul>';
	var oTmp = GoMainMenu;
	while (oTmp != null) {
		str1 += '<li id="' + oTmp.elemID + '"';
		if (oTmp.elemID == GCurrMainMenu) str1 += ' class="curMainCat"';		
		str1 += '><a href="' + Gpref + oTmp.aFolder[0] + oTmp.aFile[0] + '">';
		if (oTmp.sClassName != "") str1 += '<span class="' + oTmp.sClassName + '">';		
		if (oTmp.lang != "") str1 += '<span class="' + oTmp.lang + '">';		
		str1 += oTmp.text;
		if (oTmp.lang != "") str1 += '</span>';
		if (oTmp.sClassName != "") str1 += '</span>';
		str1 += '</a></li>\n';
		oTmp = oTmp.nxtItem;
	}
	document.writeln(str1 + '</ul></div>');
}

// write out one secondary nav
// parameters:
//		oMenu - a menu object
//		strSecMenuID - if a page is not directly accessible from the secondary nav, specify the secondary nav menu ID to link it to one
function wrtSecMenu(oMenu, strSecMenuID) {
	var oTmp = oMenu;
	var str1 = "";
	var isCurPage;
	var strPartialPath;
	var GurlLC = Gurl.toLowerCase();
	var isFirstItem = true;
	while (oTmp != null) {
		isCurPage = false;
		strPartialPath = (oTmp.aFolder[0] + oTmp.aFile[0]).toLowerCase();
		if (GurlLC.indexOf(strPartialPath) >= 0) isCurPage = true;	
		if (!isCurPage) {
			if (strSecMenuID != "") {
				if (strSecMenuID == oTmp.menuID) isCurPage = true;
			}
		}
		str1 += '<li';
		if (isFirstItem) str1 += ' id="firstItm"';
		if (isCurPage) str1 += ' class="curSecPage"';	
		//if (oTmp.elemID != "") str1 += ' id="' + oTmp.elemID + '"'
		str1 += '><a href="' + Gpref + oTmp.aFolder[0] + oTmp.aFile[0] + '">';		
		if (oTmp.sClassName != "") str1 += '<span class="' + oTmp.sClassName + '">';
		if (oTmp.lang != "") str1 += '<span class="' + oTmp.lang + '">';		
		str1 += oTmp.text;
		if (oTmp.lang != "") str1 += '</span>';	
		if (oTmp.sClassName != "") str1 += '</span>';
		str1 += '</a></li>\n';		
		oTmp = oTmp.nxtItem;
		isFirstItem = false;
	}
	//alert(str1);			///***testing
	document.writeln(str1);
}

// Build main menu
//*** add one 'oItem = new menuItem' line for each main menu item
function bldMainMenu() {
	var oItem;
	if (GcontentLang == "e") {
		var oMenu = new menuItem("", "def", "Home", "eng", "", null, "", "index_e.php");
		oItem = new menuItem("", "about", "About Us", "eng", "", oMenu, "about/", "location_e.php");
		oItem = new menuItem("", "montessori", "About Montessori", "eng", "", oItem, "mon/", "methods_e.php");
		oItem = new menuItem("", "programs", "Programs", "eng", "", oItem, "pgm/", "programs_e.php");
		oItem = new menuItem("", "calendar", "Calendar", "eng", "", oItem, "", "calendar_e.php");
		oItem = new menuItem("", "admissions", "Admissions", "eng", "", oItem, "admissions/", "defAdm_e.php");
		oItem = new menuItem("", "gallery", "Gallery", "eng", "", oItem, "gallery/", "gallery_e.php");
		//oItem = new menuItem("", "forms", "Forms", "eng", "", oItem, "forms/", "forms_e.php");
	}
	else {
		//var oMenu = new menuItem("", "def", "Home_chin", "chin", "", null, "", "index_c.php");
		//oItem = new menuItem("", "location", "About", "chin", "", oMenu, "about/", "location_c.php");
	}
	return oMenu;
}

// write out all secondary navs, but do not display them yet.
function wrtSecNav(strSecMenuID) {
	document.writeln('<div id="secNav">');
	document.writeln('<div id="def-2"><ul><li>&nbsp;</li></ul></div>');
	document.writeln('<div id="about_2"><ul>'); wrtSecMenu(bldSecMenu_about(), strSecMenuID, GcontentLang); document.writeln('</ul></div>');
	document.writeln('<div id="montessori_2"><ul>'); wrtSecMenu(bldSecMenu_montessori(), strSecMenuID, GcontentLang); document.writeln('</ul></div>');
	document.writeln('<div id="programs_2"><ul>'); wrtSecMenu(bldSecMenu_programs(), strSecMenuID, GcontentLang); document.writeln('</ul></div>');
	document.writeln('</div>');
}

//*** for each main menu item that has subitems, add a function here, like the one below

// build secondary nav for category ABOUT
function bldSecMenu_about() {
	var oItem;
	var oMenu = new menuItem("about_location", "", "Location / Contact Info", "eng", "", null, "about/", "location_e.php");
	oItem = new menuItem("about_facilities", "", "Facilities", "eng", "", oMenu, "about/", "facilities_e.php");
	oItem = new menuItem("about_careers", "", "Careers", "eng", "", oItem, "about/", "careers_e.php");
	return oMenu;
}

// build secondary nav for category MONTESSORI
function bldSecMenu_montessori() {
	var oItem;
	var oMenu = new menuItem("montessori_outcomes", "", "Teaching Method", "eng", "", null, "mon/", "methods_e.php");
	oItem = new menuItem("montessori_methods", "", "Outcomes", "eng", "", oMenu, "mon/", "outcomes_e.php");
	oItem = new menuItem("montessori_alumni", "", "Notable Alumni", "eng", "", oItem, "mon/", "alumni_e.php");
	return oMenu;
}

// build secondary nav for category PROGRAMS
function bldSecMenu_programs() {
	var oItem;
	var oMenu = new menuItem("programs_list", "", "Program List", "eng", "", null, "pgm/", "programs_e.php");
	oItem = new menuItem("programs_preschool", "", "Pre-Casa Program (N2)", "eng", "", oMenu, "pgm/", "precasa_e.php");
	oItem = new menuItem("programs_preschool", "", "Preschool Casa Program (K1-K3)", "eng", "", oItem, "pgm/", "preschool_e.php");
	return oMenu;
}

function mainMouseOver(e) {
	GelTarget = YAHOO.util.Event.getTarget(e);
	if (GnavDelayTimer != null) {clearTimeout(GnavDelayTimer); GnavDelayTimer = null;}
	GnavDelayTimer = setTimeout("doMainMouseOver()", GnavDelay);
}

function doMainMouseOver() {
	if (GnavResetTimer != null) {clearTimeout(GnavResetTimer); GnavResetTimer = null;}
	if (GnavDelayTimer != null) {clearTimeout(GnavDelayTimer); GnavDelayTimer = null;}
	while (GelTarget.id != "mainNav") {
	    if (GelTarget.nodeName.toLowerCase() == "li") {showSecNav(GelTarget); break;}
		else GelTarget = GelTarget.parentNode;
	}
}
function navMouseOver(e) {if (GnavResetTimer != null) {clearTimeout(GnavResetTimer); GnavResetTimer = null;}}
function navMouseOut(e) {
	if (GnavResetTimer == null) GnavResetTimer = setTimeout("resetNav()", GnavReset);
	if (GnavDelayTimer != null) {clearTimeout(GnavDelayTimer); GnavDelayTimer = null;}
}
function resetNav() {GnavResetTimer = null; showSecNav(document.getElementById(GCurrMainMenu));}

function getFilename(url) {
	var quesPos = url.indexOf("?");
	if (quesPos == -1) quesPos = url.length + 1;
	var localURL = url.substring(0,quesPos);
	localURL = localURL.substring(localURL.lastIndexOf("/")+1);
	return localURL;
}

function getFilenameLC(url) {
	return getFilename(url).toLowerCase();
}

function getFileExt(url) {
	var sFilename = getFilename(url);			
	var iTmpPos = sFilename.lastIndexOf(".");
	return sFilename.substr(iTmpPos+1, sFilename.length);
}

// -------- end of nav functions --------

function searchIt() {location.href = Gpref + "search.php";}

GcurPageLC = getFilenameLC(Gurl);
GoMainMenu = bldMainMenu();
GCurrMainMenu = getCurrMainMenuID();
YAHOO.util.Event.on("mainNav", "mouseover", mainMouseOver);
YAHOO.util.Event.on("nav", "mouseover", navMouseOver);
YAHOO.util.Event.on("nav", "mouseout", navMouseOut);