
function fninit()
{
	SetLogo();
	SetLastModifiedShown();
	SetPageTitles();
	SetStatusBar();
	CloseAllMenus();
	HideAllPanes();
	SelectMenu(null);

	ShowHomePane(true);	
	//ShowPane("Pm9",true);
	
	//animate opening image
	var pmHome = document.getElementById("PmHome");
	var tags = pmHome.getElementsByTagName("IMG");
	for(var i=0;i<tags.length;i++){
			tags[i].className="Filtered";
			if(tags[i].filters.length>0){
				tags[i].filters[0].Apply();
			}
			tags[i].style.display="block";
			tags[i].style.visibility="";
			if(tags[i].filters.length>0){			
				tags[i].filters[0].Play();
			}
	}
}

function SetLogo()
{
	var logodiv = document.getElementById("imglogo");
	if(logodiv){
		LoadAllImageURLs(logodiv);
	}
}

function SetLastModifiedShown()
{
	var LMDs = document.getElementsByName("LastModifiedDateShown");
	var LMD = GetParam("LastModifiedDate");
	if(LMD){
		for(var i=0;i<LMDs.length;i++){
			LMDs[i].innerHTML = LMD;	
		}
	}
}

function SetPageTitles()
{
	document.title = GetUserParam("PageTitle");
	document.getElementById("PageTitleHolder").innerHTML = GetUserParam("PageTitle");
	document.getElementById("PageSubTitleHolder").innerHTML = GetUserParam("PageSubTitle");	
}

function SetStartImages()
{

}

function SetStatusBar()
{
	window.status = GetUserParam("StatusbarText");
}

function GoHome()
{
	location.href = GetParam("HomeURL");
} 

function HideAllPanes()
{
	var childs = _getChildNodes(document.getElementById("PaneArea"));
		
	var i;
	for(i=0;i < childs.length; i++){
		childs[i].style.display="none";
	}
}

function ShowPane(Name,bShow)
{
	if(!document.getElementById(Name)) return;

	if(bShow){

		///////////////////////////////
		//Added as of V2 to download external pages
		///////////////////////////////

		if(IsLinkedPage(Name)){
		
			if(!IsLinkedPageLoaded(Name)){
				LoadLinkedPage(Name);
				return;
			}
		}
		///////////////////////////////
		
		document.getElementById(Name).style.display="block";
		LoadAllPaneImageURLs(Name);
	}
	else{
		document.getElementById(Name).style.display="none";	
	}
}


function GetLinkedPageNode(PaneName)
{
	var paneobj = document.getElementById(PaneName);
	if(!paneobj) return null;
	
	var objLinkedPage = _getElementsByNameFromNode(paneobj,"SPAN","LinkedPage");
	if(objLinkedPage.length>0){
		return objLinkedPage[0];
	}
	else{
		return null;
	}
}

function GetLinkedPageSrc(PaneName)
{
	var paneobj = document.getElementById(PaneName);
	if(!paneobj) return null;
	
	var objLinkedPageSrc = _getElementsByNameFromNode(paneobj,"SPAN","LinkedPageSrc");
	if(objLinkedPageSrc.length>0){
		return objLinkedPageSrc[0];
	}
	else{
		return null;
	}
}

function GetLinkedPageIsLoadedNode(PaneName)
{
	var paneobj = document.getElementById(PaneName);
	if(!paneobj) return null;
	
	var objLinkedPageIsLoaded = _getElementsByNameFromNode(paneobj,"SPAN","LinkedPageIsLoaded");
	if(objLinkedPageIsLoaded.length>0){
		return objLinkedPageIsLoaded[0];
	}
	else{
		return null;
	}
}

function GetLinkedPageContentNode(PaneName)
{
	var paneobj = document.getElementById(PaneName);
	if(!paneobj) return null;
	
	var objLinkedPageContent = _getElementsByNameFromNode(paneobj,"SPAN","LinkedPageContent");
	if(objLinkedPageContent.length>0){
		return objLinkedPageContent[0];
	}
	else{
		return null;
	}
}

function IsLinkedPage(PaneName)
{
	if(GetLinkedPageNode(PaneName)){
		return true;
	}
	else{
		return false;
	}
}

function IsLinkedPageLoaded(PaneName)
{
	var elmLinkedPageIsLoaded = GetLinkedPageIsLoadedNode(PaneName);
	if(!elmLinkedPageIsLoaded) return false;
	
	if(elmLinkedPageIsLoaded.innerHTML == "true"){
		return true;
	}
	else{
		return false;
	}
}
var gSelectedLinkedPane = "";

function LoadLinkedPage(PaneName)
{
	//alert("Loading " + PaneName);
	gSelectedLinkedPane = PaneName;

	var elmLinkedPageSrc = GetLinkedPageSrc(PaneName);
	if(!elmLinkedPageSrc) return;

	document.getElementById("DFrame").src=elmLinkedPageSrc.innerHTML;
}

function OnDFrameLoaded()
{
	var panename = 	gSelectedLinkedPane;
	if(panename == "") return;

	var objPane = document.getElementById(panename);
	if(!objPane) return;
	
	if(document.getElementById("DFrame").src){

		var elmLinkedPageIsLoaded = GetLinkedPageIsLoadedNode(panename);
		if(!elmLinkedPageIsLoaded) return false;
		elmLinkedPageIsLoaded.innerHTML = "true";
	
		var elmLinkedPageContent = GetLinkedPageContentNode(panename);
		if(!elmLinkedPageContent) return;
		elmLinkedPageContent.innerHTML = document.getElementById("DFrame").contentWindow.document.body.innerHTML;
			
		objPane.style.display="block";
		
		LoadAllPaneImageURLs(panename);
	
	}
}

function GetPaneShown()
{
	var childs = _getChildNodes(document.getElementById("PaneArea"));
	for(var i=0;i < childs.length; i++){
		if(childs[i].style.display == "block"){
			return childs[i];
		}
	}
	return null;
}

function ShowHomePane(bShow)
{
	ShowPane("PmHome",bShow);
}

function CloseAllMenus()
{
	var menus = document.getElementsByName("Menu");
	if(!menus) return;
	for(var i=0;i<menus.length;i++){
		var submenu = _getChildNodes(menus[i])[1];
		submenu.style.display = "none";		
	}
}

function ToggleSubMenu(objParent)
{
	var submenu = _getChildNodes(objParent)[1];
	if(!submenu) return;
	
	if(_getChildNodes(submenu).length == 0) return;
	
	if(submenu.style.display == "none"){
		submenu.style.display = "block";
	}
	else{
		submenu.style.display = "none";
	}

}

function ExpandSubMenu(objParent,bExpand)
{
	var submenu = _getChildNodes(objParent)[1];
	if(bExpand){
		submenu.style.display = "block";
	}
	else{
		submenu.style.display = "none";
	}
}
	
function HighLight(e, obj,bHighLight)
{
	_cancleBubble(e,true);
	SetStatusBar();

	if(!bHighLight && obj.className == "MenuItemHighLight"){
		obj.className = "MenuItem";
		return;
	}
	if(bHighLight && obj.className == "MenuItem"){
		obj.className = "MenuItemHighLight";
		return;
	}
	
	if(!bHighLight && obj.className == "SubMenuItemHighLight"){
		obj.className = "SubMenuItem";
		return;
	}
	if(bHighLight && obj.className == "SubMenuItem"){
		obj.className = "SubMenuItemHighLight";
		return;
	}
}

function OnMenuSelect(e,obj)
{
	
	_cancleBubble(e,true);
	
	if(OnlyOneMenuOpen()){
		CloseAllMenus();
	}

	ToggleSubMenu(obj);
	var menuitem = _getChildNodes(obj)[0];
	HideAllPanes();
	SelectMenu(menuitem);			

	if( document.getElementById("P" + menuitem.id) != null){
		ShowPane("P" + menuitem.id,true);
	}
}

function OnSubMenuSelect(e,obj)
{
	_cancleBubble(e,true);

	HideAllPanes();
	ShowPane("P" + obj.id,true);
	SelectMenu(obj);
}

function SelectMenu(obj)
{
	//unselect all

	var menus = document.getElementsByName("Menu");
	if(!menus) return;

	for(var i=0;i<menus.length;i++){
		//reset menu selection
		_getChildNodes(menus[i])[0].className = "MenuItem";
		
		var submenu = _getChildNodes(menus[i])[1];
		for(var j=0; j<_getChildNodes(submenu).length;j++){
			//reset submenu selection
			_getChildNodes(submenu)[j].className = "SubMenuItem";		
		}
	}

	if(obj){
		if(IsMenuItem(obj)){
			obj.className = "MenuItemSelected";		
		}
		if(IsSubMenuItem(obj)){
			obj.className = "SubMenuItemSelected";
		}
	}
}

function SelectMenuFromName(e,Name)
{

	var obj = document.getElementById(Name);
	if(!obj) return;

	if(IsMenuItem(obj)){
		OnMenuSelect(e,obj.parentNode);		
	}
	if(IsSubMenuItem(obj)){
		if(OnlyOneMenuOpen()){
			CloseAllMenus();
		}
		ExpandSubMenu(obj.parentNode.parentNode,true);
		OnSubMenuSelect(e,obj);
	}

}


function IsMenuItem(element)
{
	if(	element.className == "MenuItem" || element.className == "MenuItemHighLight" || element.className == "MenuItemSelected"){// it is a menu item
		return true;
	}
	return false;
}

function IsSubMenuItem(element)
{
	if(	element.className == "SubMenuItem" || element.className == "SubMenuItemHighLight" || element.className == "SubMenuItemSelected"){// it is a menu item
		return true;
	}
	return false;
}

function GetEditorVersion()
{
	return GetParam("EditorVersion");
}

function OnlyOneMenuOpen()
{
	if(GetUserParam("OnlyOneMenuOpen") == "true"){
		return true;
	}
	else{
		return false;
	}
}

function NewUniqueID()
{
	var id = GetParam("MyUniqueID");
	id++;
	//alert(id);
	SetParam("MyUniqueID",id);
	return "cv__" + id;
}
function GetParam(Name)
{
	var param = document.getElementById(Name);
	if(param){
		return param.innerHTML;
	}
	return null;
}

function SetParam(Name,Value)
{
	var param = document.getElementById(Name);
	if(param){//found it, overwrite
		param.innerHTML = Value;
	}
	else{//does not exist, create it
		var params = document.getElementById("Params");
		var div = document.createElement("DIV");
		div.id = Name;
		div.innerHTML = Value;
		params.appendChild(div);
	}
}

function RemoveParam(Name)
{
	var param = document.getElementById(Name);
	if(param){
		param.parentNode.removeChild(param);
	}
}

function GetUserParam(Name)
{
	var userparam = document.getElementById(Name);
	if(userparam){
		return userparam.innerHTML;
	}
	return null;
}

function SetUserParam(Name,Value)
{
	var userparam = document.getElementById(Name);
	if(userparam){//found it, overwrite
		userparam.innerHTML = Value;
	}
	else{//does not exist, create it
		var userparams = document.getElementById("UserParams");
		var div = document.createElement("DIV");
		div.id = Name;
		div.innerHTML = Value;
		userparams.appendChild(div);
	}
	
}

function RemoveUserParam(Name)
{
	var userparam = document.getElementById(Name);
	if(userparam){
		userparam.parentNode.removeChild(userparam);
	}
}

function GetUserParamsLength()
{
	var userparams = document.getElementById("UserParams");
	if(!userparams) return 0;
	return _getChildNodes(userparams).length;
}

function GetUserParamsNameByIndex(index)
{
	if(index < 0 || index >= GetUserParamsLength()){
		return null;
	}
	var userparams = document.getElementById("UserParams");
	return _getChildNodes(userparams)[index].id;
}

function GetUserParamsValueByIndex(index)
{
	if(index < 0 || index >= GetUserParamsLength()){
		return null;
	}
	var userparams = document.getElementById("UserParams");
	return _getChildNodes(userparams)[index].innerHTML;
}

function CreateImageURLStorageID(Name)
{
	return "IMGURL"+Name;
}

function UnCreateImageURLStorageID(Name)
{
	var prefix = "IMGURL";
	return Name.substr(prefix.length);
}


function StoreAllImageURLs()//used when saving a site
{
	//misuse the StoreAllPaneImageURLs in order to store the logo in the same manner
	StoreAllPaneImageURLs("imglogo");
	
	var panes = _getChildNodes(document.getElementById("PaneArea"));
	for(var i=0; i<panes.length; i++){//for each pane
		StoreAllPaneImageURLs(panes[i].id);		
	}
	

	//now clean up any unused img url storages
	var ImageList = document.getElementById("ImageList");
	if(!ImageList) return;
	var ImageURLs = _getChildNodes(ImageList);
	for(var j=0;j<ImageURLs.length;j++){//for each image url
		var imgtag = document.getElementById(UnCreateImageURLStorageID(ImageURLs[j].id));
		if(!imgtag){ //doesn't exist anymore
			//alert("Removing: " + ImageURLs[j].id);
			RemoveImageURL(ImageURLs[j].id);
		}
	}

}

function StoreAllPaneImageURLs(Name)
{
	//remove all the src attribs from the IMG tags and save them in the image list
	var pane = document.getElementById(Name);
	if(!pane) return;
	var tags = pane.getElementsByTagName("IMG");
	for(var j=0;j<tags.length;j++){//for each tag
			
		if(tags[j].id == ""){//new image
			tags[j].id = NewUniqueID();//new ID
			//alert("Setting: " + CreateImageURLStorageID(tags[j].id) + ", " + tags[j].src);
			SetImageURL(CreateImageURLStorageID(tags[j].id),tags[j].src);
		}
		else{//should already be there....
			if(tags[j].src){//but may not be loaded yet
				//alert("Setting existing: " + CreateImageURLStorageID(tags[j].id) + ", " + tags[j].src);
				SetImageURL(CreateImageURLStorageID(tags[j].id),tags[j].src);
			}
		}
		tags[j].removeAttribute("src");

	}
}


function RemoveAllPaneImageURLs(Name)//used when a pane is deleted
{
	//find all the src attribs from the IMG tags and remove them from the image list
	var pane = document.getElementById(Name);
	if(!pane) return;
	var tags = pane.getElementsByTagName("IMG");
	for(var j=0;j<tags.length;j++){//for each tag
		if(tags[j].id != ""){//it has an id
			RemoveImageURL(CreateImageURLStorageID(tags[j].id));
		}
	}
}

function LoadAllPaneImageURLs(Name)
{
	//Set the src attribs from the IMG tags.Get them from the image list
	var pane = document.getElementById(Name);
	if(!pane) return;
	LoadAllImageURLs(pane);
}

function LoadAllImageURLs(ParentElm)
{
	if(!ParentElm) return;

	var tags = ParentElm.getElementsByTagName("IMG");
	for(var j=0;j<tags.length;j++){//for each tag
		if(tags[j].id != ""){
			//alert(GetImageURL(CreateImageURLStorageID(tags[j].id)));
			tags[j].src = GetImageURL(CreateImageURLStorageID(tags[j].id));
		}
	}
}

function GetImageURL(Id)
{
	var ImageURL = document.getElementById(Id);
	if(ImageURL){
		return ImageURL.innerHTML;
	}
	return "";
}

function SetImageURL(Name,Value)
{
	//The src property of the IMG tag will always return a full path if it was not set by code
	//by assumption we strip the filename and create a relative path.
	for(var i=Value.length-1; i>=0; i--){
		if(Value.charAt(i) == '/' || Value.charAt(i) == '\\'){
			break;
		}
	}
	if(i>=0){
		Value = Value.substr(i+1);
	}
	Value = "Imgs/" + Value;


	var ImageURL = document.all(Name);
	if(ImageURL){//found it, overwrite
		ImageURL.innerText = Value;
	}
	else{//does not exist, create it
		var ImageList = document.all("ImageList");
		ImageList.insertAdjacentHTML("beforeEnd","<DIV id=" + Name + ">" + Value + "</DIV>");
	}
}

function RemoveImageURL(Name)
{
	var ImageURL = document.all(Name);
	if(ImageURL){
		ImageURL.removeNode(true);
	}
}

//////////////////////////////////////////////////////
//
//	Image Rotator
//
//////////////////////////////////////////////////////

//function GetImgFromImgSpan(objSpan)
//{
//	if(objSpan.id != "IRImage") return null;
//	var imgtags = objSpan.getElementsByTagName("IMG");
//	for(var i=0;i<imgtags.length;i++){
//		return imgtags[i];
//	}
//	return null;
//}

function NewImage(obj,direction)
{
	if(obj.id != "IRImages"){
		return;
	}
	
	var imgspans = _getElementsByNameFromNode(obj,"SPAN","IRImage");
	if(!imgspans) return;
	
	var lastdisplayed = -1;
	for(var i=0;i<imgspans.length;i++){//hide them all...
		
		if(imgspans[i].style.display == "block"){
			imgspans[i].style.display = "none";
			lastdisplayed = i;
		}
	}	
	
	var newdisplay = 0;
	if(direction=="up"){
		if(lastdisplayed == -1 || lastdisplayed == imgspans.length-1){
			newdisplay = 0;
		}
		else{
			newdisplay = lastdisplayed + 1;
		}
	}
	
	if(direction=="down"){
		if(lastdisplayed == -1){
			newdisplay = 0;
		}
		else if(lastdisplayed == 0){
			newdisplay = imgspans.length-1;
		}
		else{
			newdisplay = lastdisplayed - 1;
		}
	}
	imgspans[newdisplay].style.display = "block";
}

function ChangeImage(e,obj,bForward)
{
	var ir=obj;
	var bFound=false;
	while( !bFound && ir){//walk the tree up
		if(ir.id){
			if(ir.id == "IR"){
				bFound=true;
			}
			else{
				ir = ir.parentNode;
			}			
		}
		else{
			ir = ir.parentNode;
		}
	}

	if(!bFound) return;
	
	var irimages = _getElementsByNameFromNode(ir,'SPAN','IRImages');
	if(irimages.length > 0){
		if(bForward){
			NewImage(irimages[0],"up");
		}
		else{
			NewImage(irimages[0],"down");
		}
	}
}



//////////////////////////////////////////////////////
//
//	Pretty Print
//
//////////////////////////////////////////////////////

function OnPrettyPrint(e,objSource)
{

	var objPane = GetPaneShown();
	if(objPane){
		var ppwindow = window.open("","PrettyPrintWindow","",true);	
		ppwindow.document.write(objPane.outerHTML);
		ppwindow.document.createStyleSheet("mysite.css");
		ppwindow.document.execCommand("Print");
	}
}
