var sDivName = "";
var isMapZoomed = false;
var oPrintQueue = null;
var oPrintObj = null;
var iPrintTop = 0;
var sPrintId = ""
var sLang = "";
var bLogin = false;
var sLangTemp = "";		
var sPage     = "";		//The results page (region/site/event/routes/packages)
////////////////////////////////////////////////////////////////////////////////////////////////////
//Called by page onLoad event... use this to set up menus
function setMenus(s, sSubPage) {
	sLang = s;
	preLoadImages();
	if (sSubPage != null)  {
		loadPage(sSubPage);
//reset the global var sReg when lang toggling
		if (sSubPage.indexOf("area=") > 0) 
			sReg = sSubPage.substring(  sSubPage.indexOf("area=") +5, 
			sSubPage.indexOf("&", sSubPage.indexOf("area=")) );
	}
	else
		loadPage("./getIntro.asp?lang=" + sLang);
	loadMenu("xmlFrame0", "riel_Menu", "all", 120);
	loadMenu('xmlFrame1', 'boniface_Menu', 'Boniface', 120);
	loadMenu('xmlFrame2', 'vital_Menu', 'Vital', 120);
	loadMenu('xmlFrame3', 'norbert_Menu', 'Norbert', 120);		
//Set up the two print objects
	oPrintQueue = document.createElement("div");
	oPrintQueue.style.visibility = "hidden";
	oPrintQueue.style.display = "none";
	oPrintQueue.style.position = "absolute";
	oPrintQueue.setAttribute("id", "printQueue");
	oPrintQueue.setAttribute("name", "queuename");
	oPrintQueue = document.getElementsByTagName("body")[0].appendChild(oPrintQueue);
	getElem("printQueue").innerHTML = "";

	oPrintObj = document.createElement("div");
	oPrintObj.style.visibility = "hidden";
	oPrintObj.style.display = "none";
	oPrintObj.style.position = "absolute";
	oPrintObj.setAttribute("id", "printpage");
	oPrintObj.setAttribute("name", "printname");
	oPrintObj = document.getElementsByTagName("body")[0].appendChild(oPrintObj);
	getElem("printpage").innerHTML = "";
//For Editing:
	if (bLogin == true) {	
		document.onkeypress = stopBack;
		document.onclick = clearMouseSelect;
	}
}
////////////////////////////////////////////////////////////////////////////////////////////////////
function preLoadImages() {
	im = new Image(25, 26);
	im.src = "./riel_img/side_arrow.jpg";
	im = new Image(25, 26);
	im.src = "./riel_img/down_arrow.jpg";
}
////////////////////////////////////////////////////////////////////////////////////////////////////
//Creates a Querystring from Iframe src and calls toggle.asp... used to switch lang of visible page
function toggleLang() {
	str = getElem("xmlFrame4").src;
	sFile = str.substr(0, str.indexOf("?"));
	sFile = sFile.substr(sFile.lastIndexOf("/")+1) + "&";
	if (str.indexOf("aspfile") > 0)
		str = str.substr(str.indexOf("?")+1);
	else
		str = "aspfile=" + sFile + str.substr(str.indexOf("?")+1);
	if (document.all) {
		top.location.href = "./toggle.asp?" + str ;
		getElem("idLang").setAttribute("href", "./toggle.asp?" + str );
		return true;
	}
	else {
		top.location.href = "./toggle.asp?" + str ;
		return false;
	}
}
////////////////////////////////////////////////////////////////////////////////////////////////////
//Sets up the url for writing a menu
//Give Parameters:
//	**id**   of parent element (div, span, whatever)
//	NameFragment of region
//	MaxWidth of generated menu
//	Language (either "fr" or "en")
function loadMenu(sFrame, sId, sRegion, i) {
	var url	= "menuWriter.asp?menustyle=menu&menuitemstyle=menuitem&parent=" +  sId + "&maxwidth=" + i +
		 "&region=" + sRegion + "&lang=" + sLang + "&frame=" + sFrame; 
	var oFrame = getElem(sFrame);
	oFrame.src = url;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
//This function will get modified to load results into div or whatever
function loadPage(url) {
	isMapZoomed = false;
	if (url != "") {
		if (url.indexOf("edit=") > 0)
			getElem("xmlFrame4").src = url;
		else
			if (bLogin)
		 		getElem("xmlFrame4").src = url + "&edit=true";
			else
		 		getElem("xmlFrame4").src = url + "&edit=false";

	}
	sSelectedRegion = "";
}
///////////////////////////////////////////////////////////////////////////////////////////////////
//Called by ASP: Gets passed HTML fragment, the parent containerid of the template, and the templateid
function addHTMLToDoc(sHTML, sIdContainer, sIdTemplate) {
	if (!bLogin) {
		switch (sIdContainer) {
			case "siteListDiv": sPage = "sitelist";
				break;
			case "siteDiv": sPage = "site";
				break;
			case "regionDiv": sPage = "region";
				break;
			case "eventsDiv": sPage = "events";
				break;
			case "routesDiv": sPage = "routes";
				break;
			case "packagesDiv": sPage = "packages";
				break;
			case "linksDiv" : sPage = "links";
				break;
		}
	}

	if (bLogin) {
		bIsNew = false;
		if (sDivName != sIdContainer)
			sLangTemp = "";
	}
	sDivName = sIdContainer;
	setDivVisible(sIdContainer);
	getElem("introSubDiv").innerHTML = sHTML;
//For Editing environment
	if (bLogin && !document.all) {
		try { 
			bInEditMode = false; 
			makeEditable(sIdContainer);
		}
		catch(e) {
		}
		document.onkeypress = stopBack;
		document.onclick = clearMouseSelect;
	}
	if (getElem("rielAll"))
	    getElem("mapnav").getElementsByTagName("img")[0].src = "./riel_img/nav_cover.jpg";
	return false;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
function getElem(str) {
	return (document.all) ? document.all[str] : document.getElementById(str);
}
///////////////////////////////////////////////////////////////////////////////////////////////////
//Returns a style property value (if it's a number) for element with id=sId
function getStyle(obj, sProp) {
	var iTemp;
	if (obj.currentStyle) 
		iTemp = parseInt(obj.currentStyle[sProp]);
	else if (window.getComputedStyle)
		iTemp =  parseInt(window.getComputedStyle(obj, null).getPropertyValue(sProp));
	else
		iTemp =  parseInt(document.defaultView.getComputedStyle(obj, null).getPropertyValue(sProp));
	if (isNaN(iTemp))
		iTemp = 0;
	return iTemp;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
//Toggles the display of description in "sitelist" and toggled the arrow image
function showHideData(sId, sArrowParentId) {
	if (getElem(sId).style) {
		if (getElem(sId).style.display == "none") {
			getElem(sId).style.display = "";
			getElem(sArrowParentId).getElementsByTagName("img")[0].src = "./riel_img/down_arrow.jpg";
		}
		else {
			getElem(sId).style.display = "none";
			getElem(sArrowParentId).getElementsByTagName("img")[0].src="./riel_img/side_arrow.jpg";		
		}
	}
	else {
		getElem(sId).style.display = "";
		getElem(sArrowParentId).getElementsByTagName("img")[0].src = "./riel_img/down_arrow.jpg";
	}
}
///////////////////////////////////////////////////////////////////////////////////////////////////
//Returns the the inner code of sTag in sDoc
//*Update this to get the nth element
function getTagText(sDoc, sTag) {
	sEndTag = "<\/" + sTag + ">";
	sStartTag = "<" + sTag;
	iStartPos = sDoc.indexOf(">", sDoc.indexOf(sStartTag)) + 1;
	iEndPos   = sDoc.indexOf(sEndTag);
	if (iStartPos > -1 && iEndPos > -1)
		return sDoc.substring(iStartPos, iEndPos);
	return "";
}
///////////////////////////////////////////////////////////////////////////////////////////////////
//Stop event propagation
function stopProp(e) {
	if (document.all)
		window.event.cancelBubble = true;
	else
		e.stopPropagation();
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
//Sets the visibility of the Region, site, and sitelist layers
function setDivVisible(str) {
	getElem("introSubDiv").style.display = "";
	getElem("introDiv").style.display = "";
	if (str == "siteListDiv" || str == "siteDiv" || str == "regionDiv")
		getElem("mapnav").getElementsByTagName("img")[0].src = "./riel_img/map_navigator.jpg";
	else
		getElem("mapnav").getElementsByTagName("img")[0].src = "./riel_img/nav_cover.jpg";
	if (!bLogin) {
		if (str == "siteDiv") {
			getElem("prDiv2").style.display = "";
			getElem("prDiv1").style.display = "none";
		}
		else if (str == "searchDiv" || str == "introDiv") {
			getElem("prDiv1").style.display = "none";
			getElem("prDiv2").style.display = "none";
		}
		else {
			getElem("prDiv1").style.display = "";
			getElem("prDiv2").style.display = "none";
		}
	}
	getElem("eventsDiv").style.display = "none";
	getElem("linksDiv").style.display = "none";
	getElem("packagesDiv").style.display = "none";
	getElem("routesDiv").style.display = "none";
	if (str == "eventsDiv" || str == "linksDiv" || str == "packagesDiv" || str == "routesDiv") 
		getElem(str).style.display = "";
//Editing mode stuff:
	if (bLogin){
		getElem("editDiv").style.display        = "";
		getElem("imageUploadDiv").style.display = "none";
		getElem("editEventDate").style.display  = "none";
		getElem("editEvPaLin").style.display    = "none";	
		getElem("editSite").style.display       = "none";
		getElem("editTown").style.display       = "none";
		getElem("editSiteTypesDD").style.display = "none";
		getElem("lindiv").style.display = "none";
		getElem("evdiv").style.display = "none";
		getElem("packdiv").style.display = "none";
	if (str == "introDiv" || str == "routesDiv" || str == "searchDiv" || str == "contactDiv" || str == "siteListDiv")
			getElem("formatButtonDiv").style.display = "none";
		else
			getElem("formatButtonDiv").style.display = "";
		if (str == "siteDiv") {
			if (bIsNew)
				getElem("editSiteTypesDD").style.display = "";
			getElem("editSite").style.display       = "";
			getElem("imageUploadDiv").style.display = "";
			if (sLang == "en") 
				getElem("imgFrame").src = "./templates/uploadImgTempl_en.htm";
			else
				getElem("imgFrame").src = "./templates/uploadImgTempl_fr.htm";
//			getElem("imgFrame").contentWindow.document.getElementsByTagName("form")[0].focus();
		}
		else if (str == "regionDiv") {
			getElem("editTown").style.display       = "";
//		getElem("imageUploadDiv").style.display 	= "none";
			getElem("imgFrame").contentWindow.document.getElementsByTagName("form")[0].focus();
		}
		if ( (str == "packagesDiv" || str == "linksDiv" || str == "eventsDiv") && bIsNew)
			getElem("editEvPaLin").style.display   = "";
		if (str == "eventsDiv" && bIsNew )
			getElem("editEventDate").style.display = "";
		if  (str == "linksDiv") 
			getElem("lindiv").style.display = "";
		else if  (str == "eventsDiv" ) 
			getElem("evdiv").style.display = "";
		else if  (str == "packagesDiv") {
			if (sLang == "en") 
				getElem("imgFrame").src = "./uploadImgTempl_en.asp";
			else
				getElem("imgFrame").src = "./uploadImgTempl_fr.asp";
			getElem("imageUploadDiv").style.display = "";
//			getElem("imgFrame").contentWindow.document.getElementsByTagName("form")[0].focus();
			getElem("packdiv").style.display = "";	
		}
	}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////
//Called by map hotspot onmouseover/out events.... shows the name of the hotspot or clears text on out
function showSiteName(sName, bFlag) {
	if (bFlag)
		getElem("siteNameDiv").innerHTML = sName;
	else
		getElem("siteNameDiv").innerHTML = "";
}
///////////////////////////////////////////////////////////////////////////////////////////////////////
//Used to print site/sitelist etc. results
function printInfo(sDiv, bPrint, bQueue, sPg) {
	var o;
//Set dialogue text
	if (sLang == "en") {
		sQueueNotice = "Selection added.";
		sPrintConfirm = "Print Item(s) Now?";
	}
	else {
		sQueueNotice = "Votre selections a été ajoutée.";
		sPrintConfirm = "Imprimer la selection maintenant ?";
	}
	if (bQueue) {
//Add Map and site divs
		m = getElem("map").cloneNode(true);
		s = getElem(sDiv).cloneNode(true);
		m.setAttribute("id", "map" + parseInt(Math.random()*10000));
		s.setAttribute("id", "site" + parseInt(Math.random()*10000));
		m.setAttribute("name", "mapname" + parseInt(Math.random()*10000));
		s.setAttribute("name", "sitename" + parseInt(Math.random()*10000));
//Safari Hack:
		if (navigator.userAgent.toLowerCase().indexOf("afari") > 0) {
//deal with visible sitelist desctriptions:
			if (sPage == "sitelist") {
				for (i = 0; i < getElem(sDiv).getElementsByTagName("div").length; i++) {
					if ( getElem(sDiv).getElementsByTagName("div")[i].style.display == "")
						s.getElementsByTagName("div")[i].style.display = "";
				}
			}
//Set Map Pos
			for (i = 0; i < getElem("map").getElementsByTagName("div").length; i++) {
				if (getElem("map").getElementsByTagName("div")[i].id == "map_container") {
					m.getElementsByTagName("div")[i].style.left = 
						getElem("map").getElementsByTagName("div")[i].offsetLeft;
					m.getElementsByTagName("div")[i].style.top = 
						getElem("map").getElementsByTagName("div")[i].offsetTop;
					m.getElementsByTagName("div")[i].style.width = 
						getElem("map").getElementsByTagName("div")[i].offsetWidth;
					m.getElementsByTagName("div")[i].style.height = 
						getElem("map").getElementsByTagName("div")[i].offsetHeight;
					if (m.getElementsByTagName("div")[i].getElementsByTagName("img").length > 0 ) {
					m.getElementsByTagName("div")[i].getElementsByTagName("img")[0].style.width = 
						getElem("map").getElementsByTagName("div")[i].getElementsByTagName("img")[0].offsetWidth;
					m.getElementsByTagName("div")[i].getElementsByTagName("img")[0].style.height = 
						getElem("map").getElementsByTagName("div")[i].getElementsByTagName("img")[0].style.height;			}
				}
			}
		}
		stripIDs(m);
		stripIDs(s);
		m.style.left = "0px";
		s.style.left = "0px";
		m.style.top = "0px";
		s.style.top = "0px";
		m.style.position = "relative";
		s.style.position = "relative";
		if (sPage == "site") {
			getElem("printQueue").appendChild(m);
			getElem("printQueue").appendChild(s);
			alert(sQueueNotice);
		}
		else {
			getElem("printpage").appendChild(m);
			getElem("printpage").appendChild(s);
		}
	}
//Do this for actual printing
	if (bPrint) {
//Append styles to frame, and add DOM tree to iframe body
		if (getElem("xmlFrame4").contentWindow)  {
			if (document.all) 
				getElem("xmlFrame4").contentWindow.document.createStyleSheet("riel_styles.css");
			else {
				lnk = getElem("xmlFrame4").contentWindow.document.createElement("link");
				lnk.setAttribute("href", "riel_styles.css");
				lnk.setAttribute("rel", "stylesheet");
				lnk.setAttribute("type", "text/css");
			  getElem("xmlFrame4").contentWindow.document.getElementsByTagName("head")[0].appendChild(lnk);
			}
			o = getElem("xmlFrame4").contentWindow.document.getElementsByTagName("body")[0];
		}
		else if (getElem("xmlFrame4").contentDocument)  {
			lnk = getElem("xmlFrame4").contentDocument.createElement("link");
			lnk.setAttribute("href", "riel_styles.css");
			lnk.setAttribute("rel", "stylesheet");
			lnk.setAttribute("type", "text/css");
			getElem("xmlFrame4").contentDocument.getElementsByTagName("head")[0].appendChild(lnk);
//			o = getElem("xmlFrame4").contentDocument.getElementsByTagName("body")[0];
			o = window.frames["xmlFrame4"].document; //getElementsByTagName("body")[0];
		}
		o.innerHTML = "";
		if (sPg == "siteDiv")
			oTmp = getElem("printQueue").cloneNode(true);
		else
			oTmp = getElem("printpage").cloneNode(true);
		oTmp.style.visibility = "visible";
		oTmp.style.display = "";
		oTmp.id = "prn" + parseInt(Math.random()*10000);
		o.innerHTML = oTmp.innerHTML;
//Print it.
		if (confirm(sPrintConfirm)) {
			window.frames["xmlFrame4"].focus();
			window.frames["xmlFrame4"].printIt();
			if (sPg == "siteDiv")
				getElem("printQueue").innerHTML = "";
			else
				getElem("printpage").innerHTML = "";;
		}
	}
}
function showImg(i) {
	getElem("introSubDiv").innerHTML = "<img src='" + i + "'>";
	setDivVisible("introDiv");
}

function stripIDs(obj) {
	var j;
	for (j = 0; j < obj.childNodes.length; j++) {	
		if (obj.childNodes[j].id != "")
			obj.childNodes[j].id = "";
		if (obj.childNodes[j].hasChildNodes())
			stripIDs(obj.childNodes[j]);
	}
}
		
	
